<?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>141106</bug_id>
          
          <creation_ts>2015-01-30 18:12:59 -0800</creation_ts>
          <short_desc>Implement ES6 Object.getOwnPropertySymbols</short_desc>
          <delta_ts>2015-04-04 07:33:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143146</dependson>
    
    <dependson>143276</dependson>
          <blocked>141279</blocked>
    
    <blocked>143375</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065746</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-01-30 18:12:59 -0800</bug_when>
    <thetext>Implement ES6 Object.getOwnPropertySymbols</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065749</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-01-30 18:24:41 -0800</bug_when>
    <thetext>One issue is that, it can expose property symbols of the target object.
Currently, JSC priviledge code uses *private* symbols. For example, in builtin/, @Object is used to extract builtin Object. Object.getOwnPropertySymbols(window) should not expose these private Symbols.

So, here&apos;s a roadmap.

1. Introduce a new flag to StringImpl*, which represents the target Symbol is truly private Symbol. (Maybe, isPrivate).
2. Rename JSObject::getOwnPropertyNames to JSObject::getOwnPropertyKeys to align to the ES6 spec, and accept EnumerationType parameter (String or Symbol).
3. May rename getPropertyNames to getPropertyKeys, Name is now used for representing String property in the ES6 spec.
4. Implement Object.getOwnPropertySymbols by leveraging this JSObject::getOwnPropertySymbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067371</commentid>
    <comment_count>2</comment_count>
      <attachid>246164</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-06 10:02:25 -0800</bug_when>
    <thetext>Created attachment 246164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067372</commentid>
    <comment_count>3</comment_count>
      <attachid>246164</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-06 10:03:47 -0800</bug_when>
    <thetext>Comment on attachment 246164
Patch

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

Added comments.

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        This conservative assumption doesn&apos;t break the callers.

Currently we doesn&apos;t rename `getOwnPropertyNames` to `getOwnPropertyKey` which is used in the ES6 draft spec.
If it&apos;s preferrable, I&apos;ll rename it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067494</commentid>
    <comment_count>4</comment_count>
      <attachid>246199</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-06 22:18:34 -0800</bug_when>
    <thetext>Created attachment 246199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067557</commentid>
    <comment_count>5</comment_count>
      <attachid>246213</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-07 12:56:49 -0800</bug_when>
    <thetext>Created attachment 246213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067563</commentid>
    <comment_count>6</comment_count>
      <attachid>246215</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-07 13:56:57 -0800</bug_when>
    <thetext>Created attachment 246215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067581</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-07 15:44:42 -0800</bug_when>
    <thetext>Gavin might be a good reviewer for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067582</commentid>
    <comment_count>8</comment_count>
      <attachid>246215</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-07 15:44:56 -0800</bug_when>
    <thetext>Comment on attachment 246215
Patch

Is adding a bit to StringImpl the best way to distinguish these? It seems a shame to have to build a feature into WTF just for this. It’s OK if there’s no other efficient way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067661</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-08 03:04:42 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 246215 [details]
&gt; Patch
&gt; 
&gt; Is adding a bit to StringImpl the best way to distinguish these? It seems a
&gt; shame to have to build a feature into WTF just for this. It’s OK if there’s
&gt; no other efficient way.

Thank you for adding reviewers and commenting on the patch.

StringImpl pointer is now used in PropertyTable directly.
So adding a status to StringImpl is the most efficient way. And if we add the flag to PropertyTable Key, the memory usage of PropertyTable is doubled. Or if we create some structure holding StringImpl* and status and strore it to PropertyTable, we need to refer StringImpl indirectly and additional heap allocation is needed.

One possible solution is storing a flag to StringImpl*&apos;s lower bit in PropertyTable (due to alignment, some space is reserved), but it seems that it&apos;s a little bit hacky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067671</commentid>
    <comment_count>10</comment_count>
      <attachid>246215</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-08 09:35:18 -0800</bug_when>
    <thetext>Comment on attachment 246215
Patch

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

Still not comfortable reviewing the whole thing, but I have a few more small comments.

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:38
&gt; +enum class EnumerationType {

I think we should combine both EnumerationMode and EnumerationType into a single integer with 3 orthogonal bits.

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:40
&gt; +    IncludeSymbol,
&gt; +    ExcludeSymbol

Should be Include/ExcludeSymbols, plural.

&gt; Source/WTF/wtf/text/StringImpl.h:386
&gt; +    ALWAYS_INLINE static Ref&lt;StringImpl&gt; createUniquePrivate()

I think this still needs the name empty in it, to specify that the unique private string will have a value of “empty string”.

&gt; Source/WTF/wtf/text/StringImpl.h:403
&gt;      static unsigned flagIsAtomic() { return s_hashFlagIsAtomic; }
&gt;      static unsigned flagIsUnique() { return s_hashFlagIsUnique; }
&gt; +    static unsigned flagIsPrivate() { return s_hashFlagIsPrivate; }

It’s worth noting that these three flags are not orthogonal. Atomic and Unique are mutually exclusive. Private can only be set if Unique is also set. So I think there are only 4 states here even though we are using 3 bits: 1) non-atomic, non-unique, non-private 2) atomic, 3) unique, 4) unique private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067851</commentid>
    <comment_count>11</comment_count>
      <attachid>246215</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-09 10:21:12 -0800</bug_when>
    <thetext>Comment on attachment 246215
Patch

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

Thank you for your comment!

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:38
&gt;&gt; +enum class EnumerationType {
&gt; 
&gt; I think we should combine both EnumerationMode and EnumerationType into a single integer with 3 orthogonal bits.

Ah, sounds nice.
What do you think introducing `class EnumerationMode` that wraps `unsigned flags` and provides `shouldSkipJSObject()`, `shouldIncludeSymbols()` and `shouldIncludeDontEnumProperties()` member functions?
I think it leverages type checks and cleans up predicate functions.

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:40
&gt;&gt; +    ExcludeSymbol
&gt; 
&gt; Should be Include/ExcludeSymbols, plural.

Thanks! I&apos;ll fix it.

&gt;&gt; Source/WTF/wtf/text/StringImpl.h:386
&gt;&gt; +    ALWAYS_INLINE static Ref&lt;StringImpl&gt; createUniquePrivate()
&gt; 
&gt; I think this still needs the name empty in it, to specify that the unique private string will have a value of “empty string”.

I&apos;ll fix it.

&gt;&gt; Source/WTF/wtf/text/StringImpl.h:403
&gt;&gt; +    static unsigned flagIsPrivate() { return s_hashFlagIsPrivate; }
&gt; 
&gt; It’s worth noting that these three flags are not orthogonal. Atomic and Unique are mutually exclusive. Private can only be set if Unique is also set. So I think there are only 4 states here even though we are using 3 bits: 1) non-atomic, non-unique, non-private 2) atomic, 3) unique, 4) unique private.

Sounds nice.
So I&apos;ll introduce 2-bit space to flags instead of 3-bit. And folding above 4 types here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067990</commentid>
    <comment_count>12</comment_count>
      <attachid>246215</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-09 22:26:33 -0800</bug_when>
    <thetext>Comment on attachment 246215
Patch

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

&gt; Source/WTF/wtf/text/StringImpl.h:797
&gt;      static const unsigned s_hashFlagIsAtomic = 1u &lt;&lt; 4;

And seeing the current implementation, `1u &lt;&lt; 2` case is missing. So we can drop this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068325</commentid>
    <comment_count>13</comment_count>
      <attachid>246384</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-11 04:27:55 -0800</bug_when>
    <thetext>Created attachment 246384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069732</commentid>
    <comment_count>14</comment_count>
      <attachid>246719</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-16 20:07:32 -0800</bug_when>
    <thetext>Created attachment 246719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069733</commentid>
    <comment_count>15</comment_count>
      <attachid>246719</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-16 20:08:08 -0800</bug_when>
    <thetext>Comment on attachment 246719
Patch

Updated the patch, ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071528</commentid>
    <comment_count>16</comment_count>
      <attachid>246719</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-23 21:14:37 -0800</bug_when>
    <thetext>Comment on attachment 246719
Patch

This should be behind the runtime flag, SymbolEnabled.
I&apos;ll update the revised patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072087</commentid>
    <comment_count>17</comment_count>
      <attachid>247333</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-25 10:23:27 -0800</bug_when>
    <thetext>Created attachment 247333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073083</commentid>
    <comment_count>18</comment_count>
      <attachid>247333</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-28 14:07:03 -0800</bug_when>
    <thetext>Comment on attachment 247333
Patch

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

I think we do want this feature, and this patch seems basically right to me.

I worry a little about how wordy the EnumerationMode::IncludeDontEnumPropertiesAndExcludeSymbols becomes with this change. And I also worry a little about the clarity about when we need to use Identifier::from vs. the Identifier constructor directly. With two functions that can take arguments of the same types but do different jobs, I think we need clearer naming than just “constructor” and “from”.

&gt; Source/JavaScriptCore/ChangeLog:104
&gt; +        In the a lot of place, `Identifier(VM*/ExecState*, StringImpl*)` constructor is used.
&gt; +        However, it&apos;s ambiguous because `StringImpl*` has 2 different meanings.
&gt; +        1) normal string, it is replacable with `WTFString` and 2) `uid`, which holds `isUnique` information to represent Symbols.
&gt; +        So we dropped `Identifier(VM*/ExecState*, StringImpl*)` and instead, introduced `Identifier::from(VM*/ExecState*, StringImpl*)`.
&gt; +        This function is used for 2) `uid`. So uniqueness of `StringImpl*` is saved.
&gt; +        To just construct `Identifier` from string type, we can use `Identifier(VM*/ExecState*, const WTFString&amp;)` instead.

Having two separate functions seems fine. But having one be the constructor and the other be named “from” does not make the difference between these functions clear at all. We need to name the functions to explain the difference in their behavior.

&gt; Source/JavaScriptCore/JavaScriptCore.order:-940
&gt; -__ZN3JSC9Structure29getPropertyNamesFromStructureERNS_2VMERNS_17PropertyNameArrayENS_15EnumerationModeE

No need to edit order files. These are generated files that need not be updated by hand. If you rebase this patch, feel free to omit the changes to this file.

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:44
&gt; +    inline EnumerationMode(EnumerationModeRepresentationTag tag)

The inline keyword here is not needed and should be omitted.

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:49
&gt; +    inline bool shouldIncludeDontEnumProperties() const

The inline keyword here is not needed and should be omitted.

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:54
&gt; +    inline bool shouldIncludeJSObjectPropertyNames() const

The inline keyword here is not needed and should be omitted.

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:59
&gt; +    inline bool shouldIncludeSymbols() const

The inline keyword here is not needed and should be omitted.

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:64
&gt; +    static inline EnumerationMode createThatSkipsJSObject(EnumerationMode mode)

The inline keyword here is not needed and should be omitted.

&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:70
&gt; +    inline explicit EnumerationMode(unsigned flags)

The inline keyword here is not needed and should be omitted.

&gt; Source/JavaScriptCore/runtime/Identifier.h:52
&gt; +    Identifier(ExecState* exec, const String&amp; s)
&gt; +        : Identifier(exec, s.impl())
&gt; +    {
&gt; +    }

Once a function becomes multi-line like this, we should move the implementation out of the class definition and just mark it inline explicitly instead. It should go into the IdentifierInlines.h file. The reason is that we want the class definition to be readable and give an overview of the class&apos;s behavior, and that is no longer true if we have lots of function bodies. This class already has a bit of a problem with that, but adding more function bodies will make it even worse.

&gt; Source/JavaScriptCore/runtime/Identifier.h:63
&gt; +    Identifier(VM* vm, const String&amp; s)
&gt; +        : Identifier(vm, s.impl())
&gt; +    {
&gt; +    }

Shouldn’t this have an assertion: !s.isUnique()?

&gt; Source/JavaScriptCore/runtime/Identifier.h:73
&gt; +    static Identifier from(VM* vm, StringImpl* uid)

I don’t think that “from” is a suitably clear function name to distinguish the version that works with unique strings from the version that prohibits unique strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073091</commentid>
    <comment_count>19</comment_count>
      <attachid>247333</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-28 14:25:03 -0800</bug_when>
    <thetext>Comment on attachment 247333
Patch

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

Thank you for your review!
For IncludeDontEnumPropertiesAndExcludeSymbols, what do you think of making ExcludeSymbols as default and drop its name from Enum. It makes IncludeDontEnumPropertiesAndExcludeSymbols to IncludeDontEnumProperties. And when including Symbols, IncludeDontEnumPropertiesAndIncludeSymbols is used.

&gt;&gt; Source/JavaScriptCore/ChangeLog:104
&gt;&gt; +        To just construct `Identifier` from string type, we can use `Identifier(VM*/ExecState*, const WTFString&amp;)` instead.
&gt; 
&gt; Having two separate functions seems fine. But having one be the constructor and the other be named “from” does not make the difference between these functions clear at all. We need to name the functions to explain the difference in their behavior.

That&apos;s reasonable.
So I suggest that, dropping public identifier constructor for String and expose 2 functions,
* Identifier::fromUid
* Identifier::fromString

What do you think of?

&gt;&gt; Source/JavaScriptCore/JavaScriptCore.order:-940
&gt;&gt; -__ZN3JSC9Structure29getPropertyNamesFromStructureERNS_2VMERNS_17PropertyNameArrayENS_15EnumerationModeE
&gt; 
&gt; No need to edit order files. These are generated files that need not be updated by hand. If you rebase this patch, feel free to omit the changes to this file.

Thanks! I&apos;ll rebase it without order file change.

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:44
&gt;&gt; +    inline EnumerationMode(EnumerationModeRepresentationTag tag)
&gt; 
&gt; The inline keyword here is not needed and should be omitted.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:49
&gt;&gt; +    inline bool shouldIncludeDontEnumProperties() const
&gt; 
&gt; The inline keyword here is not needed and should be omitted.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:54
&gt;&gt; +    inline bool shouldIncludeJSObjectPropertyNames() const
&gt; 
&gt; The inline keyword here is not needed and should be omitted.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:59
&gt;&gt; +    inline bool shouldIncludeSymbols() const
&gt; 
&gt; The inline keyword here is not needed and should be omitted.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:64
&gt;&gt; +    static inline EnumerationMode createThatSkipsJSObject(EnumerationMode mode)
&gt; 
&gt; The inline keyword here is not needed and should be omitted.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/EnumerationMode.h:70
&gt;&gt; +    inline explicit EnumerationMode(unsigned flags)
&gt; 
&gt; The inline keyword here is not needed and should be omitted.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/Identifier.h:52
&gt;&gt; +    }
&gt; 
&gt; Once a function becomes multi-line like this, we should move the implementation out of the class definition and just mark it inline explicitly instead. It should go into the IdentifierInlines.h file. The reason is that we want the class definition to be readable and give an overview of the class&apos;s behavior, and that is no longer true if we have lots of function bodies. This class already has a bit of a problem with that, but adding more function bodies will make it even worse.

Make sense. Moving the definition to IdentifierInline.h and marking it with inline keeps readability.
I&apos;ll fix it.

&gt;&gt; Source/JavaScriptCore/runtime/Identifier.h:63
&gt;&gt; +    }
&gt; 
&gt; Shouldn’t this have an assertion: !s.isUnique()?

Should insert it! Thx.

&gt;&gt; Source/JavaScriptCore/runtime/Identifier.h:73
&gt;&gt; +    static Identifier from(VM* vm, StringImpl* uid)
&gt; 
&gt; I don’t think that “from” is a suitably clear function name to distinguish the version that works with unique strings from the version that prohibits unique strings.

So I suggest the 2 functions.
* fromUid(VM* vm, StringImpl* uid)
It accepts unique id and non-unique id StringImpl*, but it keeps uniquness of StringImpl* held by Identifier.

* fromString(VM* vm, const String&amp;)
It just generates Identifier from String. It guaranteed that StringImpl* held by generated Identifier is not unique.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073123</commentid>
    <comment_count>20</comment_count>
      <attachid>247619</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-28 17:58:26 -0800</bug_when>
    <thetext>Created attachment 247619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073125</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-28 18:01:19 -0800</bug_when>
    <thetext>Attachment 247619 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:29:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:30:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:31:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:32:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 4 in 139 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073126</commentid>
    <comment_count>22</comment_count>
      <attachid>247620</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-28 18:07:38 -0800</bug_when>
    <thetext>Created attachment 247620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073926</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-03 18:51:03 -0800</bug_when>
    <thetext>Could any JavaScriptCore people take a look at this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073939</commentid>
    <comment_count>24</comment_count>
      <attachid>247620</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-03 20:06:53 -0800</bug_when>
    <thetext>Comment on attachment 247620
Patch

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

&gt; Source/JavaScriptCore/runtime/Identifier.h:64
&gt; +    template&lt;unsigned charactersCount&gt;
&gt; +    static Identifier fromString(VM*, const char (&amp;characters)[charactersCount]);
&gt; +    template&lt;unsigned charactersCount&gt;
&gt; +    static Identifier fromString(ExecState*, const char (&amp;characters)[charactersCount]);
&gt; +    static Identifier fromString(VM*, const LChar*, int length);
&gt; +    static Identifier fromString(VM*, const UChar*, int length);
&gt; +    static Identifier fromString(VM*, const String&amp;);
&gt; +    static Identifier fromString(ExecState*, AtomicStringImpl*);
&gt; +    static Identifier fromString(ExecState*, const AtomicString&amp;);
&gt; +    static Identifier fromString(ExecState*, const String&amp;);
&gt; +    static Identifier fromString(ExecState*, const char*);
&gt; +
&gt; +    static Identifier fromUid(VM*, StringImpl* uid);
&gt; +    static Identifier fromUid(ExecState*, StringImpl* uid);
&gt; +    static Identifier fromUid(const PrivateName&amp;);

You should have a beefy comment here to describe the difference, and how that difference is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073961</commentid>
    <comment_count>25</comment_count>
      <attachid>247836</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-03 21:19:15 -0800</bug_when>
    <thetext>Created attachment 247836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073962</commentid>
    <comment_count>26</comment_count>
      <attachid>247620</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-03 21:20:57 -0800</bug_when>
    <thetext>Comment on attachment 247620
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/Identifier.h:64
&gt;&gt; +    static Identifier fromUid(const PrivateName&amp;);
&gt; 
&gt; You should have a beefy comment here to describe the difference, and how that difference is used.

Thank you! I&apos;ve added comments here and updated the revised patch :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074359</commentid>
    <comment_count>27</comment_count>
      <attachid>247836</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-04 20:06:48 -0800</bug_when>
    <thetext>Comment on attachment 247836
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        This patch implements `Object.getOwnPropertySymbols`.
&gt; +        One technical issue is that, since we use private symbols (such as `@Object`) in the
&gt; +        privileged JS code in `builtin/`, they should not be exposed.
&gt; +        To distinguish them from the usual symbols, `StringImpl*` represents whether it&apos;s private or not.

Is this really the only way?  If it&apos;s just builtin symbols, then you could imagine maintaining a set of them.  Like, literally HashSet&lt;StringImpl*&gt; JSGlobalObject::m_privates.

Did you consider that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074370</commentid>
    <comment_count>28</comment_count>
      <attachid>247836</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-04 20:28:04 -0800</bug_when>
    <thetext>Comment on attachment 247836
Patch

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

Thank you for your review!

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        To distinguish them from the usual symbols, `StringImpl*` represents whether it&apos;s private or not.
&gt; 
&gt; Is this really the only way?  If it&apos;s just builtin symbols, then you could imagine maintaining a set of them.  Like, literally HashSet&lt;StringImpl*&gt; JSGlobalObject::m_privates.
&gt; 
&gt; Did you consider that?

Great pointing! Your suggestion looks very nice.
Marking private symbols with non-intrusive way has Pros/Cons.

Pros:
+ Dropping private information from StringImpl*, this is not essential information belongging to StringImpl* (btw, it doesn&apos;t reduce bit flag space since atomic &amp; unique flags still occupies 2bits)

Cons:
+ We need to filter private symbols with hash set lookups in the phase of adding property names to PropertyNamesArray. It looks costly.

After considering about these pros/cons, I think your suggestion looks very clean way.
And performance cost would be limited because we need to filter private symbols only when the target StringImpl* is unique and we need to IncludeSymbols. So this performance impact only affects on Object.getOwnPropertySymbols case.
What do you think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074405</commentid>
    <comment_count>29</comment_count>
      <attachid>247933</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-04 23:05:08 -0800</bug_when>
    <thetext>Created attachment 247933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074406</commentid>
    <comment_count>30</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-04 23:09:47 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Comment on attachment 247836 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247836&amp;action=review
&gt; 
&gt; Thank you for your review!
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt; &gt;&gt; +        To distinguish them from the usual symbols, `StringImpl*` represents whether it&apos;s private or not.
&gt; &gt; 
&gt; &gt; Is this really the only way?  If it&apos;s just builtin symbols, then you could imagine maintaining a set of them.  Like, literally HashSet&lt;StringImpl*&gt; JSGlobalObject::m_privates.
&gt; &gt; 
&gt; &gt; Did you consider that?
&gt; 
&gt; Great pointing! Your suggestion looks very nice.
&gt; Marking private symbols with non-intrusive way has Pros/Cons.
&gt; 
&gt; Pros:
&gt; + Dropping private information from StringImpl*, this is not essential
&gt; information belongging to StringImpl* (btw, it doesn&apos;t reduce bit flag space
&gt; since atomic &amp; unique flags still occupies 2bits)
&gt; 
&gt; Cons:
&gt; + We need to filter private symbols with hash set lookups in the phase of
&gt; adding property names to PropertyNamesArray. It looks costly.
&gt; 
&gt; After considering about these pros/cons, I think your suggestion looks very
&gt; clean way.
&gt; And performance cost would be limited because we need to filter private
&gt; symbols only when the target StringImpl* is unique and we need to
&gt; IncludeSymbols. So this performance impact only affects on
&gt; Object.getOwnPropertySymbols case.
&gt; What do you think of?

It&apos;s an interesting question.  I&apos;d like to hear ggaren&apos;s thoughts on this.  I&apos;m on the fence.  I like that your approach makes Object.getOwnPropertySymbols fast.  On the other hand, hash lookups can be made fast.  It&apos;s a tough call, so I&apos;d like to see what others think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074413</commentid>
    <comment_count>31</comment_count>
      <attachid>247836</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-04 23:42:21 -0800</bug_when>
    <thetext>Comment on attachment 247836
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt;&gt;&gt; +        To distinguish them from the usual symbols, `StringImpl*` represents whether it&apos;s private or not.
&gt;&gt;&gt; 
&gt;&gt;&gt; Is this really the only way?  If it&apos;s just builtin symbols, then you could imagine maintaining a set of them.  Like, literally HashSet&lt;StringImpl*&gt; JSGlobalObject::m_privates.
&gt;&gt;&gt; 
&gt;&gt;&gt; Did you consider that?
&gt;&gt; 
&gt;&gt; Great pointing! Your suggestion looks very nice.
&gt;&gt; Marking private symbols with non-intrusive way has Pros/Cons.
&gt;&gt; 
&gt;&gt; Pros:
&gt;&gt; + Dropping private information from StringImpl*, this is not essential information belongging to StringImpl* (btw, it doesn&apos;t reduce bit flag space since atomic &amp; unique flags still occupies 2bits)
&gt;&gt; 
&gt;&gt; Cons:
&gt;&gt; + We need to filter private symbols with hash set lookups in the phase of adding property names to PropertyNamesArray. It looks costly.
&gt;&gt; 
&gt;&gt; After considering about these pros/cons, I think your suggestion looks very clean way.
&gt;&gt; And performance cost would be limited because we need to filter private symbols only when the target StringImpl* is unique and we need to IncludeSymbols. So this performance impact only affects on Object.getOwnPropertySymbols case.
&gt;&gt; What do you think of?
&gt; 
&gt; It&apos;s an interesting question.  I&apos;d like to hear ggaren&apos;s thoughts on this.  I&apos;m on the fence.  I like that your approach makes Object.getOwnPropertySymbols fast.  On the other hand, hash lookups can be made fast.  It&apos;s a tough call, so I&apos;d like to see what others think.

And one more possible solution is, folding private bit into StringImpl* itself.
Like following code,

class PropertyName {
public:
    PropertyName = delete;

    static PropertyName* createPublicName(StringImpl* impl)
    {
        return reinterpret_cast&lt;PropertyName*&gt;(impl);
    }

    static PropertyName* createPrivateName(StringImpl* impl)
    {
        uintptr_t pointer = reinterpret_cast&lt;uintptr_t&gt;(impl);
        return reinterpret_cast&lt;PropertyName*&gt;(pointer | 0x1);
    }

    bool isPrivateName() const
    {
        return reinterpret_cast&lt;uintptr_t&gt;(this) &amp; 0x1;
    }

    void ref()
    {
        extractStringImpl()-&gt;ref();
    }

    bool hasOneRef() const
    {
        return extractStringImpl()-&gt;hasOneRef();
    }

    unsigned refCount() const
    {
        return extractStringImpl()-&gt;refCount();
    }

    void deref()
    {
        extractStringImpl()-&gt;deref();
    }

private:
    StringImpl* extractStringImpl() const
    {
        return reinterpret_cast&lt;StringImpl*&gt;(reinterpret_cast&lt;uintptr_t&gt;(this) &amp; ~(0x1ULL));
    }
};

And storing this PropertyName* into PropertyTable.

Pros:
1. Very efficient
2. Private bit is separated from StringImpl*

Cons:
1. A bit complicated implementation
2. Possibly large changes are required in JSC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075605</commentid>
    <comment_count>32</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-09 08:20:09 -0700</bug_when>
    <thetext>&gt; &gt; After considering about these pros/cons, I think your suggestion looks very
&gt; &gt; clean way.
&gt; &gt; And performance cost would be limited because we need to filter private
&gt; &gt; symbols only when the target StringImpl* is unique and we need to
&gt; &gt; IncludeSymbols. So this performance impact only affects on
&gt; &gt; Object.getOwnPropertySymbols case.
&gt; &gt; What do you think of?
&gt; 
&gt; It&apos;s an interesting question.  I&apos;d like to hear ggaren&apos;s thoughts on this. 
&gt; I&apos;m on the fence.  I like that your approach makes
&gt; Object.getOwnPropertySymbols fast.  On the other hand, hash lookups can be
&gt; made fast.  It&apos;s a tough call, so I&apos;d like to see what others think.

My intuition is that there is value in separating the concern of this ES feature out of a low-level class like StringImpl.

Also, I think the cost of a hash lookup in gathering symbol names is probably acceptable because:

(1) name iteration already requires us to hash-unique names in the prototype chain;

(2) the most important optimization in making name iteration fast is to cache the result in the structure.

That said, if a benchmark showed this hash lookup to be a problem, I would want to find a better solution, and I would consider putting bits in StringImpl as an option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075606</commentid>
    <comment_count>33</comment_count>
      <attachid>247933</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-09 08:20:39 -0700</bug_when>
    <thetext>Comment on attachment 247933
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        This patch implements `Object.getOwnPropertySymbols`.
&gt; +        One technical issue is that, since we use private symbols (such as `@Object`) in the
&gt; +        privileged JS code in `builtins/`, they should not be exposed.
&gt; +        To distinguish them from the usual symbols, checking the target `StringImpl*` is a not private name
&gt; +        before adding it into PropertyNameArray.

When is it possible to encounter a private symbol (like `@Object`) on an object?

I believe our implementation of builtins attempts to ensure that private symbols do not escape into any programmer-accessible namespace.

&gt; Source/JavaScriptCore/ChangeLog:39
&gt; +        + `Identifier::fromUid(VM*/ExecState*, StringImpl*)`.
&gt; +            This function is used for 2) `uid`. So uniqueness of `StringImpl*` is kept.

Should we start saying &quot;Symbol&quot; now instead of &quot;UID&quot;?

&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:524
&gt; +                    if (name-&gt;isUnique()) {
&gt; +                        if (!mode.shouldIncludeSymbols())
&gt; +                            continue;

This would read more clearly to me if the function on StringImpl were &quot;isSymbol&quot;.

Is there a difference between a symbol, a unique string, and a uid? Perhaps I am showing my own ignorance here.

If there is no difference -- and I think there is none -- let&apos;s pick just one name for this concept. After all, sometimes one has to review a patch after waking up at 6AM, and one&apos;s poor little brain can use all the help it can get. :)

&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:526
&gt; +                        if (exec-&gt;propertyNames().isPrivateName(name))
&gt; +                            continue;

Perhaps this can just be an ASSERT? See my comment above about preventing private names from escaping.

&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:545
&gt; +                    if (name-&gt;isUnique()) {
&gt; +                        if (!mode.shouldIncludeSymbols())
&gt; +                            continue;
&gt; +                        if (exec-&gt;propertyNames().isPrivateName(name))
&gt; +                            continue;
&gt; +                    }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075607</commentid>
    <comment_count>34</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-09 08:26:37 -0700</bug_when>
    <thetext>&gt; And one more possible solution is, folding private bit into StringImpl*
&gt; itself.
&gt; Like following code,
&gt; 
&gt; class PropertyName {

I think something like this might become desirable if the implementation of ES features related to property names adds even more features. For now, I think it might not be necessary to make such a large change.

For a bit of history on this subject, JavaScriptCore used to have its own string class, separate from StringImpl, and we worked hard to remove it, both for simplicity&apos;s sake, and to improve performance.

We could probably add back this PropertyName concept without harming performance -- but it would be nice not to have to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075610</commentid>
    <comment_count>35</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-09 08:52:18 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; My intuition is that there is value in separating the concern of this ES
&gt; feature out of a low-level class like StringImpl.
&gt; 
&gt; Also, I think the cost of a hash lookup in gathering symbol names is
&gt; probably acceptable because:
&gt; 
&gt; (1) name iteration already requires us to hash-unique names in the prototype
&gt; chain;
&gt; 
&gt; (2) the most important optimization in making name iteration fast is to
&gt; cache the result in the structure.
&gt; 
&gt; That said, if a benchmark showed this hash lookup to be a problem, I would
&gt; want to find a better solution, and I would consider putting bits in
&gt; StringImpl as an option.

Reasonable. OK, so, I&apos;ll take the way separating StringImpl and private bits.
Thank you :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075614</commentid>
    <comment_count>36</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-09 09:06:22 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; I think something like this might become desirable if the implementation of
&gt; ES features related to property names adds even more features. For now, I
&gt; think it might not be necessary to make such a large change.
&gt; 
&gt; For a bit of history on this subject, JavaScriptCore used to have its own
&gt; string class, separate from StringImpl, and we worked hard to remove it,
&gt; both for simplicity&apos;s sake, and to improve performance.
&gt; 
&gt; We could probably add back this PropertyName concept without harming
&gt; performance -- but it would be nice not to have to.

Sounds reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075628</commentid>
    <comment_count>37</comment_count>
      <attachid>247933</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-09 09:54:13 -0700</bug_when>
    <thetext>Comment on attachment 247933
Patch

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

Added comments.

&gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt;&gt; +        before adding it into PropertyNameArray.
&gt; 
&gt; When is it possible to encounter a private symbol (like `@Object`) on an object?
&gt; 
&gt; I believe our implementation of builtins attempts to ensure that private symbols do not escape into any programmer-accessible namespace.

I think, after landing Object.getOwnPropertySymbols, we can encounter with the following code without guarding isPrivateName check.

var global = ...;  // like (new Function(&quot;return this&quot;))()
var symbols = Object.getOwnPropertySymbols(global);

Correct?

&gt;&gt; Source/JavaScriptCore/ChangeLog:39
&gt;&gt; +            This function is used for 2) `uid`. So uniqueness of `StringImpl*` is kept.
&gt; 
&gt; Should we start saying &quot;Symbol&quot; now instead of &quot;UID&quot;?

Currently this Identifier::fromUid also accepts StringImpl* uid that represents normal string (which is used for the usual string (non-symbol) property name).
This is because in the current JSC implementation StringImpl* is held as &lt;Symbol|StringProperty&gt; type. So constructing Identifier for String/Symbol property from StringImpl* like Identifier::fromUid is useful.

&gt;&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:524
&gt;&gt; +                            continue;
&gt; 
&gt; This would read more clearly to me if the function on StringImpl were &quot;isSymbol&quot;.
&gt; 
&gt; Is there a difference between a symbol, a unique string, and a uid? Perhaps I am showing my own ignorance here.
&gt; 
&gt; If there is no difference -- and I think there is none -- let&apos;s pick just one name for this concept. After all, sometimes one has to review a patch after waking up at 6AM, and one&apos;s poor little brain can use all the help it can get. :)

Nice catch.
UID is different from Symbol beacuse it contains String property (It&apos;s &lt;String|Symbol&gt; id). But, isUnique is the same to isSymbol. So replacing isUnique with isSymbol makes the code clear.

&gt;&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:526
&gt;&gt; +                            continue;
&gt; 
&gt; Perhaps this can just be an ASSERT? See my comment above about preventing private names from escaping.

Right. Here, since the staticValues&apos; key is generated by String::fromUTF8(const char*), the string is not atomic &amp; unique. So here, there&apos;s no symbol.
I&apos;ll insert `ASSER(!name-&gt;isSymbol());` here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075700</commentid>
    <comment_count>38</comment_count>
      <attachid>248266</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-09 12:07:28 -0700</bug_when>
    <thetext>Created attachment 248266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075703</commentid>
    <comment_count>39</comment_count>
      <attachid>247933</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-09 12:14:49 -0700</bug_when>
    <thetext>Comment on attachment 247933
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:39
&gt;&gt;&gt; +            This function is used for 2) `uid`. So uniqueness of `StringImpl*` is kept.
&gt;&gt; 
&gt;&gt; Should we start saying &quot;Symbol&quot; now instead of &quot;UID&quot;?
&gt; 
&gt; Currently this Identifier::fromUid also accepts StringImpl* uid that represents normal string (which is used for the usual string (non-symbol) property name).
&gt; This is because in the current JSC implementation StringImpl* is held as &lt;Symbol|StringProperty&gt; type. So constructing Identifier for String/Symbol property from StringImpl* like Identifier::fromUid is useful.

Calling StringImpl* as uid is derived from the fact that this type is actually stored in PropertyTable.
So, maybe, UID&apos;s *unique* comes from the meaning: &quot;the uniqueness of Property name ID in PropertyTable&quot;.
Is it preferable to rename it to the other name? Personally, now I renamed `isUnique` to `isSymbol`, we can still use this &quot;unique&quot; meaning as &quot;the uniqueness of Property name ID&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075725</commentid>
    <comment_count>40</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-09 13:03:29 -0700</bug_when>
    <thetext>&gt; I think, after landing Object.getOwnPropertySymbols, we can encounter with
&gt; the following code without guarding isPrivateName check.
&gt; 
&gt; var global = ...;  // like (new Function(&quot;return this&quot;))()
&gt; var symbols = Object.getOwnPropertySymbols(global);
&gt; 
&gt; Correct?

I see.

I thought private names were simply implemented as a feature in the parser, which produced a constant node in the AST. But I was wrong: Private names are properties of the global object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075726</commentid>
    <comment_count>41</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-09 13:04:16 -0700</bug_when>
    <thetext>&gt; Calling StringImpl* as uid is derived from the fact that this type is
&gt; actually stored in PropertyTable.
&gt; So, maybe, UID&apos;s *unique* comes from the meaning: &quot;the uniqueness of
&gt; Property name ID in PropertyTable&quot;.

Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075968</commentid>
    <comment_count>42</comment_count>
      <attachid>248266</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-10 09:35:27 -0700</bug_when>
    <thetext>Comment on attachment 248266
Patch

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

OK, ready for review :)

&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:522
&gt; +                    ASSERT(!name-&gt;isSymbol());

Here, `staticValues` key is created by String::fromUTF8 and copied by isolatedCopy in JSClassRef.cpp. So it should not be symbol.

&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:535
&gt; +                    ASSERT(!name-&gt;isSymbol());

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076963</commentid>
    <comment_count>43</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-13 10:46:53 -0700</bug_when>
    <thetext>Can we get this reviewed? It is blocking Web Inspector Symbol support in bug 141279.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077030</commentid>
    <comment_count>44</comment_count>
      <attachid>248266</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-13 14:30:44 -0700</bug_when>
    <thetext>Comment on attachment 248266
Patch

Let&apos;s go with the HashSet of private symbols approach.  It&apos;s less intrusive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077128</commentid>
    <comment_count>45</comment_count>
      <attachid>248642</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-14 00:27:12 -0700</bug_when>
    <thetext>Created attachment 248642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077129</commentid>
    <comment_count>46</comment_count>
      <attachid>248642</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-14 00:33:48 -0700</bug_when>
    <thetext>Comment on attachment 248642
Patch

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

OK! I&apos;ve updated the patch that takes non-intrusive way.

&gt; Source/JavaScriptCore/builtins/BuiltinNames.h:95
&gt; +    return m_privateToPublicMap.find(uid) != m_privateToPublicMap.end();

`BuiltinNames` already has `m_privateToPublicMap` to provide the function `BuiltinNames::getPrivateName(const Identifier&amp; ident)`.
So all private symbols are already registered in this map :)
In this patch, we just leverage this existing map to query whether uid is private.

&gt; Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp:124
&gt; +                if (exec-&gt;propertyNames().isPrivateName(it-&gt;key.get()))

Use `isPrivateName` like this.
Private-ness is now held with non-intrusive way. HashMap in BuiltinNames (for getPrivateName function) manages all private symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077134</commentid>
    <comment_count>47</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-14 01:19:14 -0700</bug_when>
    <thetext>I&apos;ll rebaseline the patch with WebCore buildfix, but it&apos;s trivial.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077145</commentid>
    <comment_count>48</comment_count>
      <attachid>248648</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-14 06:51:24 -0700</bug_when>
    <thetext>Created attachment 248648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079165</commentid>
    <comment_count>49</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-22 11:54:38 -0700</bug_when>
    <thetext>Simply rebasing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079166</commentid>
    <comment_count>50</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-22 12:04:52 -0700</bug_when>
    <thetext>This new approach involves doing a hash lookup to check if a name is private on most uses of property enumeration.  When we suggested this less-intrusive approach, we made that suggestion under the assumption that:

1) It would lead to a smaller patch.

2) That hash lookup cost would only be incurred when using the new Object.getOwnPropertySymbols API.

It appears that your implementation is a very large patch and we pay the hash lookup in a lot of places.

Why can&apos;t you change it so that the only place that consults the hashmap is Object.getOwnPropertySymbols?  That is, get rid of the new enumeration modes.  Don&apos;t change any of that code.  Don&apos;t change Structure, JSSymbolTableObject, etc.  Just put the filtering in Object.getOwnPropertySymbols.

Would that work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079168</commentid>
    <comment_count>51</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-22 12:53:43 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; This new approach involves doing a hash lookup to check if a name is private
&gt; on most uses of property enumeration.  When we suggested this less-intrusive
&gt; approach, we made that suggestion under the assumption that:
&gt; 
&gt; 1) It would lead to a smaller patch.
&gt; 
&gt; 2) That hash lookup cost would only be incurred when using the new
&gt; Object.getOwnPropertySymbols API.
&gt; 
&gt; It appears that your implementation is a very large patch and we pay the
&gt; hash lookup in a lot of places.
&gt; 
&gt; Why can&apos;t you change it so that the only place that consults the hashmap is
&gt; Object.getOwnPropertySymbols?  That is, get rid of the new enumeration
&gt; modes.  Don&apos;t change any of that code.  Don&apos;t change Structure,
&gt; JSSymbolTableObject, etc.  Just put the filtering in
&gt; Object.getOwnPropertySymbols.
&gt; 
&gt; Would that work?

OK :) As the result of discussion on IRC, I&apos;ll change this to

1. Exclude Symbols functionality is shared. Implemented in JSObject::getOwnPropertyNames JSC APIs
2. Filtering private symbols functionality is implemented in objectConstructorGetOwnPropertySymbols</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079173</commentid>
    <comment_count>52</comment_count>
      <attachid>249205</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-22 13:36:32 -0700</bug_when>
    <thetext>Created attachment 249205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079177</commentid>
    <comment_count>53</comment_count>
      <attachid>249205</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-22 13:43:36 -0700</bug_when>
    <thetext>Comment on attachment 249205
Patch

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

Updated the patch.
Move hash lookups to ObjectConstructor.cpp.
After IRC discussion, I grep-ed tree and found several use of IncludeSymbols enumeration mode (Object.seal, Object.freeze, Object.defineProperties (Object.create), Object.isFrozen, Object.isSealed, Object.getOwnPropertySymbols)
However, all these use are placed in ObjectConstructor.cpp.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:233
&gt; +        if (impl-&gt;isSymbol() &amp;&amp; !exec-&gt;propertyNames().isPrivateName(impl))

Using hash lookup.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:380
&gt; +        if (propertyName.isSymbol() &amp;&amp; exec-&gt;propertyNames().isPrivateName(propertyName))

Using hash lookup for Object.defineProperties.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:430
&gt; +        if (propertyName.isSymbol() &amp;&amp; exec-&gt;propertyNames().isPrivateName(propertyName))

Using hash lookup for Object.seal.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:470
&gt; +        if (propertyName.isSymbol() &amp;&amp; exec-&gt;propertyNames().isPrivateName(propertyName))

Using hash lookup for Object.freeze.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:521
&gt; +        if (propertyName.isSymbol() &amp;&amp; exec-&gt;propertyNames().isPrivateName(propertyName))

Using hash lookup for Object.isSealed.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:554
&gt; +        if (propertyName.isSymbol() &amp;&amp; exec-&gt;propertyNames().isPrivateName(propertyName))

Using hash lookup for Object.isFrozen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079536</commentid>
    <comment_count>54</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-23 19:36:01 -0700</bug_when>
    <thetext>Could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080714</commentid>
    <comment_count>55</comment_count>
      <attachid>249205</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-27 13:04:48 -0700</bug_when>
    <thetext>Comment on attachment 249205
Patch

Let&apos;s split it into several patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080723</commentid>
    <comment_count>56</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-27 13:24:02 -0700</bug_when>
    <thetext>At first, I&apos;ve split it into Identifier &amp; StringImpl* changes.
https://bugs.webkit.org/show_bug.cgi?id=143146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081794</commentid>
    <comment_count>57</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-31 15:08:07 -0700</bug_when>
    <thetext>Next https://bugs.webkit.org/show_bug.cgi?id=143276</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082438</commentid>
    <comment_count>58</comment_count>
      <attachid>250032</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-02 19:59:29 -0700</bug_when>
    <thetext>Created attachment 250032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082440</commentid>
    <comment_count>59</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-02 20:05:45 -0700</bug_when>
    <thetext>Now, splitted 2 patches are landed.
So Object.getOwnPropertySymbols patch becomes fairly small :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082631</commentid>
    <comment_count>60</comment_count>
      <attachid>250032</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-03 11:21:50 -0700</bug_when>
    <thetext>Comment on attachment 250032
Patch

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

r=me with some fixes outlined below.

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        To distinguish them from the usual symbols, checking the target `StringImpl*` is a not private name

checking =&gt; check

&gt; Source/JavaScriptCore/builtins/BuiltinNames.h:97
&gt; +    return m_privateToPublicMap.find(uid) != m_privateToPublicMap.end();

You can use contains() here instead.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:383
&gt; +        if (propertyName.isSymbol() &amp;&amp; exec-&gt;propertyNames().isPrivateName(propertyName))

Since isPrivateName checks isSymbol, we shouldn&apos;t check at the call site. It&apos;s an optimization, which is an implementation detail.

This pattern repeats in a few places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082771</commentid>
    <comment_count>61</comment_count>
      <attachid>250032</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-04 07:29:55 -0700</bug_when>
    <thetext>Comment on attachment 250032
Patch

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

Thank you for your review!

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        To distinguish them from the usual symbols, checking the target `StringImpl*` is a not private name
&gt; 
&gt; checking =&gt; check

Thanks!

&gt;&gt; Source/JavaScriptCore/builtins/BuiltinNames.h:97
&gt;&gt; +    return m_privateToPublicMap.find(uid) != m_privateToPublicMap.end();
&gt; 
&gt; You can use contains() here instead.

Looks very nice :D

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:383
&gt;&gt; +        if (propertyName.isSymbol() &amp;&amp; exec-&gt;propertyNames().isPrivateName(propertyName))
&gt; 
&gt; Since isPrivateName checks isSymbol, we shouldn&apos;t check at the call site. It&apos;s an optimization, which is an implementation detail.
&gt; 
&gt; This pattern repeats in a few places.

OK. I&apos;ll fix these guards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082772</commentid>
    <comment_count>62</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-04 07:33:48 -0700</bug_when>
    <thetext>Committed r182343: &lt;http://trac.webkit.org/changeset/182343&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246164</attachid>
            <date>2015-02-06 10:02:25 -0800</date>
            <delta_ts>2015-02-06 22:18:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150207030222.patch</filename>
            <type>text/plain</type>
            <size>156995</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTRmOGYzYTE4MjBmZmM0ZjJjMjBkY2Q0MjBiNDYzOTUyMjk0NTQzLi43NjE4Nzc3YjFiMWY0NGI1
OGQzN2Y3MDVmNDhhODc1NGYxZmExZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTUtMDItMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGluL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIHRoaXMgcGF0Y2ggaW50cm9k
dWNlcyBgaXNQcml2YXRlYCBmbGFnIHRvIGBTdHJpbmdJbXBsYC4KKyAgICAgICAgSXQgcmVwcmVz
ZW50cyB0aGUgdGFyZ2V0IGBTdHJpbmdJbXBsYCBpcyB1c2VkIHRvIHJlcHJlc2VudCBwcml2YXRl
IHN5bWJvbHMuCisKKyAgICAgICAgV2UgbmV3bHkgYWRkZWQgYEVudW1lcmF0aW9uVHlwZWAgcGFy
YW1ldGVyIHRvIGBnZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Qgb2YgYEpTT2JqZWN0YC4KKyAg
ICAgICAgVGhpcyBwYXJhbWV0ZXIgY29udHJvbHMgd2hldGhlciB0aGUgbWV0aG9kIGNvbGxlY3Rz
IFN5bWJvbCBvciBub3QuCisgICAgICAgIFRoZSBkZWZhdWx0IHBhcmFtZXRlciBpcyBzZXQgdG8g
YEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbGAKKyAgICAgICAgYmVjYXVzZSBhIGxvdCBv
ZiBjYWxsZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1lQXJyYXlg
IGRvZXNuJ3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25zZXJ2YXRp
dmUgYXNzdW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAgICogQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAg
ICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLm9yZGVyOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6QnVpbHRpbk5hbWVzKToK
KyAgICAgICAgKiBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6cG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3Vu
dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgICog
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6
OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3Vt
ZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5
SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToKKyAgICAgICAgKiBy
dW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
Y3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0VudW1lcmF0aW9uTW9kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllcklubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6SWRlbnRpZmllcik6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVy
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0NhbGxlZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9u
bWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09O
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4
dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSYWNlKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jQWxsKToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpzdHJ1Y3R1cmVQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJveHk6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpnZXRTdHJ1
Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1i
b2xzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpT
Qzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2Vh
bCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0
cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OnB1YmxpY05hbWUpOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OmFzSW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldFByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
OgorCiAyMDE1LTAyLTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+IGFuZCBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVudCBhIGJhcmVib25lIFJlYWRhYmxlU3RyZWFt
IGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCA0M2RhZmJlYjU4Y2JkNjAwMjlmMjYxN2U4NDQ1MmI3ZDhiNzFlYjRl
Li43MGRlNzY2ZTA2MDEwNDMxYjI0OWVmOGRhYjIyN2Y2NDcxMzI2YTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDE1LTAyLTA2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
cyBhIG5ldyBmbGFnLCBgaXNQcml2YXRlYCB0byBgU3RyaW5nSW1wbGAuCisgICAgICAgIEl0IGlz
IHVzZWQgdG8gcmVwcmVzZW50IHRoYXQgdGhlIHRhcmdldCBzdHJpbmcgaXMgdXNlZCBmb3IgYSBw
cml2YXRlIChwcml2aWxlZ2VkKSBuYW1lLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1w
bC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKToKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVVbmlxdWVQcml2YXRlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Zmxh
Z0lzUHJpdmF0ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzUHJpdmF0ZSk6CisKIDIw
MTUtMDItMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4gYW5k
IFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGEgYmFyZWJvbmUgUmVhZGFibGVTdHJlYW0gaW50ZXJm
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MTBkMjczYTJlOTNkYjc1YjdiNGJlMzI1NGJiYTNkMTExMmM4
NS4uYzY4NjliOGRhM2NkNTQ5Njg1ZDViYjZmZDgzZDg0YjBmZjlkNWE4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU0IEBACisyMDE1LTAyLTA2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdHM6IGpzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuaHRtbAorICAgICAgICAg
ICAgICAganMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5odG1sCisgICAgICAgICAgICAgICBqcy9z
eW1ib2wtc2VhbC1hbmQtZnJlZXplLmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5bWJvbC13aXRo
LWpzb24uaHRtbAorCisgICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93
blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFy
eTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHls
ZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6
OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRTdHJ1Y3R1cmVQ
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRHZW5lcmlj
UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0UHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xv
Y2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAg
ICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6CisgICAgICAgIChfTlBOX0VudW1lcmF0ZSk6Cisg
ICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1l
QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2Fy
cmF5Lmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorCiAyMDE1LTAyLTA0ICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWEgaU9TXSBBZGQgYSBkZWJ1ZyBzZXR0
aW5nIHRvIGFsd2F5cyBzaG93IHRoZSBvcHRpbWl6ZWQgZnVsbHNjcmVlbiBidXR0b24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA3MWQ2ZWI3ZTFkYzQwYTRlODRiMmQ3ZTYyNzAwMWU2OTJmNDM4MWQxLi45MzQ5NWVh
YTg4MDRhZmExN2VhOWUxM2JlMDZjZjZjYjQxMDlmNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTUtMDItMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNO
UE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6OmVu
dW1lcmF0ZSk6CisgICAgICAgICogbWFjL1dlYktpdDIub3JkZXI6CisKIDIwMTUtMDItMDQgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGNvcHlpbmcg
c3RkOjpmdW5jdGlvbnMgYWNyb3NzIHRocmVhZHMgaW4gTmV0d29ya0NhY2hlU3RvcmFnZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCA2OTliYzQ0
NDY2NDExMjNlYjkxOTM1ZTA2ZDQzYTg4NDdiN2NhNTU1Li44Y2FkMTAzMzIzN2FiM2IwNWU2ODli
MmYyMDA1MzFjZWM4YjA4NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaApAQCAtMTg2LDcgKzE4Niw3IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3Qg
OiBwdWJsaWMgUGFyZW50IHsKIAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0
aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5k
ZXggOTlhMDlkZmVhMTBjMWNhMTNjMTU2Nzg3ZWIwN2FmODljYTQyNDYyMy4uMWNiNDM0NjA3MDkw
YWY2NTBlOTg3YTVlZTViMzYzYjkwMWZhZTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTQ5OCw3ICs0OTgs
NyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgotdm9pZCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1l
cmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7CiAgICAgSlNDb250ZXh0UmVmIGV4ZWNS
ZWYgPSB0b1JlZihleGVjKTsKQEAgLTUzMyw3ICs1MzMsNyBAQAogICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIFBhcmVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIFBhcmVudDo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUp
OwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcAppbmRleCAyMzRkMjQ4OGZmODkwYjhiZWU2OTdlZjU1YWE2ODAzODBh
MTgxYTQyLi4wYzVkYTZiYTJkNjFkM2RhZWM5YmIzNzg5MTEwNTA5MjBhYzg1OTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNjk4LDcgKzY5OCw3IEBA
IEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhv
YmplY3QpOwogICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgcHJvcGVydHlOYW1lcyA9IG5ldyBP
cGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5KHZtKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBhcnJh
eSh2bSk7Ci0gICAganNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMoanNP
YmplY3QsIGV4ZWMsIGFycmF5LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBqc09i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJy
YXksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5
bWJvbCk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5h
bWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCmluZGV4IDI2YmUwZWUyNzZlMGVlNWM4NmU2MTA5
OTlmMmQ0NzZiMGRkODA2ZGUuLjFlMTk0MTU1YTMxOTUwNjRiNzRjZTA3ZGQyYzY0MTJiYWNlYjJj
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRl
cgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKQEAgLTkz
OCw3ICs5MzgsNiBAQCBfX1pOM0pTQzVMTEludDM5ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRo
dW5rR2VuZXJhdG9yRVBOU18yVk1FCiBfX1pOM0pTQzVMTEludDQ0ZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3JFUE5TXzJWTUUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9u
MjNjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUVQTlNfOUV4ZWNTdGF0ZUVtCiBfX1pOSzNKU0M4SlNP
YmplY3QzZ2V0RVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRQotX19aTjNKU0M5U3Ry
dWN0dXJlMjlnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZUVSTlNfMlZNRVJOU18xN1Byb3Bl
cnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0MxN1Byb3BlcnR5TmFt
ZUFycmF5MTRhZGRLbm93blVuaXF1ZUVQTjNXVEYxMFN0cmluZ0ltcGxFCiBfX1pOM0pTQzE3UHJv
cGVydHlOYW1lQXJyYXlEMkV2CiBfX1pOM0pTQzhXYXRjaGRvZzVTY29wZUQxRXYKQEAgLTEzNTEs
OSArMTM1MCw2IEBAIF9fWk4zSlNDMTFQb3N0Zml4Tm9kZTExZW1pdFJlc29sdmVFUk5TXzE3Qnl0
ZWNvZGVHZW5lcmF0b3JFUE5TXzEwUmVnaXN0ZXJJREUKIF9fWk4zSlNDMTdCeXRlY29kZUdlbmVy
YXRvcjdlbWl0SW5jRVBOU18xMFJlZ2lzdGVySURFCiBfX1pOM0pTQzE0anNJc09iamVjdFR5cGVF
UE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzZKU0NlbGwxMWdldENhbGxEYXRh
RVBTMF9STlNfOENhbGxEYXRhRQotX19aTjNKU0M4SlNPYmplY3QxNmdldFByb3BlcnR5TmFtZXNF
UFMwX1BOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRp
b25Nb2RlRQotX19aTjNKU0M4SlNPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUFMwX1BOU185
RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQot
X19aTjNKU0M4SlNPYmplY3QyN2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQUzBfUE5TXzlF
eGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBf
X1pOM1dURjZWZWN0b3JJTjNKU0MxMElkZW50aWZpZXJFTG0yMEVOU18xNUNyYXNoT25PdmVyZmxv
d0VFMTVyZXNlcnZlQ2FwYWNpdHlFbQogX19aTjNKU0MxM2pzT3duZWRTdHJpbmdFUE5TXzJWTUVS
S04zV1RGNlN0cmluZ0UKIF9fWk4zSlNDOVN0cnVjdHVyZTE2YWxsb2NhdGVSYXJlRGF0YUVSTlNf
MlZNRQpAQCAtMTc0Myw3ICsxNzM5LDYgQEAgX19aTjNKU0NMMjBkYXRlUHJvdG9GdW5jR2V0VGlt
ZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0pTQzEySlNSb3BlU3RyaW5nMjByZXNvbHZlUm9wZVNs
b3dDYXNlOEVQaAogX19aTkszV1RGNlN0cmluZzhmb2xkQ2FzZUV2CiBfX1pOM1dURjEwU3RyaW5n
SW1wbDhmb2xkQ2FzZUV2Ci1fX1pOM0pTQzEwSlNGdW5jdGlvbjI3Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1l
QXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4
ZWNTdGF0ZUVOU183SlNWYWx1ZUUKIF9fWk4zSlNDMTFJbnRlcnByZXRlcjI0YWRkU3RhY2tUcmFj
ZUlmTmVjZXNzYXJ5RVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMUludGVy
cHJldGVyMTNnZXRTdGFja1RyYWNlRVBOU18yVk1FUk4zV1RGNlZlY3RvcklOU18xMFN0YWNrRnJh
bWVFTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRW0KQEAgLTI5NzAsNyArMjk2NSw2IEBAIF9f
Wk4zSlNDNXNoaWZ0SUxOU183SlNBcnJheTE0U2hpZnRDb3VudE1vZGVFMEVFRXZQTlNfOUV4ZWNT
dGF0ZUVQTlNfOEpTT2JqZWN0RWpqCiBfX1pOM0pTQzdKU0FycmF5MjZzaGlmdENvdW50V2l0aEFy
cmF5U3RvcmFnZUVqalBOU18xMkFycmF5U3RvcmFnZUUKIF9fWk4zSlNDTDE3YXJyYXlQcm90b0Z1
bmNQb3BFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzdKU0FycmF5M3BvcEVQTlNfOUV4ZWNTdGF0
ZUUKLV9fWk4zSlNDN0pTQXJyYXkyN2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpT
T2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVy
YXRpb25Nb2RlRQogX19aTjNKU0M1TGV4ZXJJdEUyNHBhcnNlRm91ckRpZ2l0VW5pY29kZUhleEV2
CiBfSlNPYmplY3RHZXRQcml2YXRlUHJvcGVydHkKIF9fWk5LM0pTQzIwSlNDYWxsYmFja09iamVj
dERhdGExOGdldFByaXZhdGVQcm9wZXJ0eUVSS05TXzEwSWRlbnRpZmllckUKQEAgLTM4MjksNyAr
MzgyMyw2IEBAIF9fWk4zSlNDM0RGRzE0U3BlY3VsYXRpdmVKSVQxOGNvbXBpbGVBcml0aE5lZ2F0
ZUVQTlMwXzROb2RlRQogX19aTjNKU0MyM01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uMTJuZWdhdGVE
b3VibGVFTlNfMTJYODZSZWdpc3RlcnMxM1hNTVJlZ2lzdGVySURFUzJfCiBfX1pOM0pTQzIzTWFj
cm9Bc3NlbWJsZXJYODZDb21tb245ZGl2RG91YmxlRU5TXzEyWDg2UmVnaXN0ZXJzMTNYTU1SZWdp
c3RlcklERVMyX1MyXwogX2N0aV9vcF9pbmMKLV9fWk4zSlNDMTJTdHJpbmdPYmplY3QxOWdldE93
blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0
eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDMTRnbG9iYWxGdW5jRXZh
bEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDOEpTT2JqZWN0MThjcmVhdGVBcnJheVN0b3JhZ2VF
Uk5TXzJWTUVqagogX29wZXJhdGlvbkNvbnZlcnRUaGlzCkBAIC00MTUwLDcgKzQxNDMsNiBAQCBf
X1pOM0pTQzExQ29waWVkU3BhY2UxNmRvbmVGaWxsaW5nQmxvY2tFUE5TXzExQ29waWVkQmxvY2tF
UFMyXwogX19aTjNKU0MxMUNvcHlWaXNpdG9yMTRjb3B5RnJvbVNoYXJlZEV2CiBfX1pOM0pTQzhK
U09iamVjdDE2Y29weUJhY2tpbmdTdG9yZUVQTlNfNkpTQ2VsbEVSTlNfMTFDb3B5VmlzaXRvckUK
IF9fWk4zSlNDMThHQ1RocmVhZFNoYXJlZERhdGExNmRpZEZpbmlzaENvcHlpbmdFdgotX19aTjNK
U0M5QXJndW1lbnRzMTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVj
U3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pO
M0pTQzhKU09iamVjdDZmcmVlemVFUk5TXzJWTUUKIF9fWk4zSlNDOVN0cnVjdHVyZThpc0Zyb3pl
bkVSTlNfMlZNRQogX19aTjNKU0M5U3RydWN0dXJlMTZmcmVlemVUcmFuc2l0aW9uRVJOU18yVk1F
UFMwXwpAQCAtNDI1MCw3ICs0MjQyLDYgQEAgX19aTjNKU0MxM0RhdGVQcm90b3R5cGUyNGdldE93
blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU4KIF9fWk4z
SlNDMjdnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3JJTlNfOEpTT2JqZWN0RUVFYlBOU185RXhl
Y1N0YXRlRVBLTlNfOUhhc2hUYWJsZUVQUzFfTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzE4UHJvcGVy
dHlEZXNjcmlwdG9yRQogX19aTjNKU0MyMkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUyN21hcmtSZXF1
aXJlZE9iamVjdHNJbnRlcm5hbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zV1RGOUJpdFZlY3Rv
cjdzZXRTbG93RVJLUzBfCi1fX1pOM0pTQzE4UmVnRXhwTWF0Y2hlc0FycmF5MTlnZXRPd25Qcm9w
ZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1l
QXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfSlNWYWx1ZUdldFR5cGUKIF9fWk4zSlNDMTNF
dmFsQ29kZUJsb2NrMTFyZXBsYWNlbWVudEV2CiBfX1pOM0pTQzEzRXZhbENvZGVCbG9jazE2Y29t
cGlsZU9wdGltaXplZEVQTlNfOUV4ZWNTdGF0ZUVQTlNfN0pTU2NvcGVFagpAQCAtNDM1NiwxNSAr
NDM0NywxMSBAQCBfX1pOM0pTQ0wyNmRhdGVQcm90b0Z1bmNTZXRVVENTZWNvbmRzRVBOU185RXhl
Y1N0YXRlRQogX29wZXJhdGlvbkVuc3VyZURvdWJsZQogX19aTjNKU0M4SlNPYmplY3QxNmVuc3Vy
ZURvdWJsZVNsb3dFUk5TXzJWTUUKIF9fWk4zSlNDNFlhcnIxMUludGVycHJldGVySXRFMjBiYWNr
dHJhY2tQYXJlbnRoZXNlc0VSTlMwXzhCeXRlVGVybUVQTlMyXzE4RGlzanVuY3Rpb25Db250ZXh0
RQotX19aTjNKU0M3SlNQcm94eTE2Z2V0UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185
RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQot
X19aTjNKU0MxOUpTU3ltYm9sVGFibGVPYmplY3QyN2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
c0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5T
XzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0NMMTdtYXRoUHJvdG9GdW5jQVNpbkVQTlNfOUV4
ZWNTdGF0ZUUKIF9fWk4zSlNDM0RGRzE0U3BlY3VsYXRpdmVKSVQxNHNwZWN1bGF0ZU90aGVyRU5T
MF80RWRnZUUKIF9fWk4zSlNDNlBhcnNlcklOU181TGV4ZXJJdEVFRTE4cGFyc2VXaXRoU3RhdGVt
ZW50SU5TXzEwQVNUQnVpbGRlckVFRU5UXzlTdGF0ZW1lbnRFUlM2XwogX19aTjNKU0MxMlN0cmlu
Z09iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFTlNfMTJQ
cm9wZXJ0eU5hbWVFCiBfX1pOM0pTQzlFeGVjU3RhdGUyMHJlZ0V4cFByb3RvdHlwZVRhYmxlRVBT
MF8KLV9fWk4zSlNDMTJSZWdFeHBPYmplY3QxNmdldFByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVj
dEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9u
TW9kZUUKLV9fWk4zSlNDMTJSZWdFeHBPYmplY3QyN2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
c0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5T
XzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0M5RXhlY1N0YXRlOWRhdGVUYWJsZUVQUzBfCiBf
X1pOM0pTQzlFeGVjU3RhdGUyMWFycmF5Q29uc3RydWN0b3JUYWJsZUVQUzBfCiBfX1pOM0pTQ0wx
OWFycmF5UHJvdG9GdW5jRXZlcnlFUE5TXzlFeGVjU3RhdGVFCkBAIC00NjkwLDcgKzQ2NzcsNiBA
QCBfX1pOM0pTQzlFeGVjU3RhdGUyMm51bWJlckNvbnN0cnVjdG9yVGFibGVFUFMwXwogX19aTjNK
U0M5RXhlY1N0YXRlMjJyZWdFeHBDb25zdHJ1Y3RvclRhYmxlRVBTMF8KIF9fWk4zSlNDOUV4ZWNT
dGF0ZTltYXRoVGFibGVFUFMwXwogX19aTjNKU0M5RXhlY1N0YXRlOWpzb25UYWJsZUVQUzBfCi1f
X1pOM0pTQzdKU1Byb3h5MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlF
eGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBf
X1pOM0pTQzlBcmd1bWVudHMyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0
RVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRv
ckUKIF9fWk4zSlNDOUFyZ3VtZW50czE3ZGVmaW5lT3duUHJvcGVydHlFUE5TXzhKU09iamVjdEVQ
TlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JF
YgogX19aTjNXVEY3SGFzaE1hcEl5TjNKU0MxNlNwYXJzZUFycmF5RW50cnlFTlNfN0ludEhhc2hJ
eUVFTlNfMjlVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0c0l5RUVOU18xMEhhc2hUcmFpdHNJ
UzJfRUVFNGZpbmRFUkt5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dFZhbHVlLmNwcAppbmRleCA3NmE3YjExMWE4ZDg3N2E2NzliNWM4YjhlODk2ZTFhN2IxYjZiOGFj
Li4xMjIxNWE1MTI1MmRiZDg2MWY0NGNkNjE1N2NmZTQwNGQxZDIwNzVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNyw3ICsxMzcs
NyBAQCBib29sIFNjcmlwdFZhbHVlOjppc0Z1bmN0aW9uKCkgY29uc3QKICAgICAgICAgUmVmPElu
c3BlY3Rvck9iamVjdD4gaW5zcGVjdG9yT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKHNjcmlwdFN0YXRlKTsKLSAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0
U3RhdGUsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBzY3Jp
cHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVy
YXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKICAgICAgICAgICAgIEpTVmFsdWUgcHJvcGVy
dHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNjcmlwdFN0YXRlLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA5Yjg4OTZiOTY4MDE0OTEz
ZjQ2YjMyYzQ4MGUwNTc4OTYzNzlkZmE0Li45YjYyZjhjN2YyMmRjNDQzOTY1YTMyNzUxNDE3NGYx
MDY3NDc2ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCkBAIC0zMSw3ICszMSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogICAgIAotI2RlZmlu
ZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUpLCBt
XyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZShBU0NJSUxp
dGVyYWwoIlN5bWJvbC4iICNuYW1lKSkpKQorI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFN
RVMobmFtZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRl
bnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZShQcml2YXRlTmFtZTo6Q3JlYXRlUHJpdmF0ZSkpKQor
I2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fU1lNQk9MUyhuYW1lKSAsIG1fIyNuYW1lKHZtLCAj
bmFtZSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1l
KEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLiIgI25hbWUpKSkpCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9OQU1FUyhuYW1lKSBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVy
IG1fIyNuYW1lIyNQcml2YXRlTmFtZTs7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElG
SUVSX0FDQ0VTU09SKG5hbWUpIFwKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0gXApAQCAtNDgsMTEgKzQ5LDE0IEBAIGNs
YXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgICAgIDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRl
bnRpZmllcnMtPmVtcHR5SWRlbnRpZmllcikKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxU
SU5fTkFNRVMpCisgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dF
TExfS05PV05fU1lNQk9MKElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAg
ICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9U
T19QVUJMSUNfRU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAg
ICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1C
T0woSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5U
UlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZ
X05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElT
RV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVy
KiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjQs
MTMgQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJF
X0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fSURFTlRJRklF
Ul9BQ0NFU1NPUikKIAogcHJpdmF0ZToKICAgICBJZGVudGlmaWVyIG1fZW1wdHlJZGVudGlmaWVy
OwogICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5f
TkFNRVMpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlf
TkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woREVDTEFSRV9CVUlMVElOX05BTUVTKQogICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGNvbnN0IElkZW50aWZpZXIqLCBJ
ZGVudGlmaWVyUmVwSGFzaD4gQnVpbHRpbk5hbWVzTWFwOwogICAgIEJ1aWx0aW5OYW1lc01hcCBt
X3B1YmxpY1RvUHJpdmF0ZU1hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wcml2YXRlVG9QdWJs
aWNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZS5oCmluZGV4IDlhOWRiMGJjNzBiOWYxMzVmNjVkZDJkNzk2ZGU2
NTI4OTZhZTBmYjEuLmM4MTg5YTI0NmE5MjY5NjBjYmU3ZjM3YWNjYTA5ODdhZDg1M2VkZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9u
UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS5oCkBAIC0xMTgsNyArMTE4LDcgQEAgY2xhc3MgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUgewogCiAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgICAgIFByb3BlcnR5
TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSk7Ci0gICAgICAgIHByb3RvdHlwZS0+c3Ry
dWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVB
cnJheSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIHByb3RvdHlwZS0+c3Ry
dWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVB
cnJheSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpJbmNsdWRl
U3ltYm9sKTsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0
b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHByb3BlcnR5TmFtZUFycmF5LmRhdGEoKS0+cHJvcGVy
dHlOYW1lVmVjdG9yKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlO
YW1lVmVjdG9yLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gcHJv
dG90eXBlLT5nZXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZVZlY3RvcltpXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDU5YTkwOWZkNTQzMzhiNmRlYmQ0ZDdmYmJhMzM1NmFkNzA0NGRhYWMuLmVkYjM0
Y2M1Y2I5MTNjMjU4NGFiMWYxZmQ2MGIxOWJiNzIzZTY5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0yNjUxLDcgKzI2NTEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRp
b24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgIExhYmVsU2Nv
cGVQdHIgc2NvcGUgPSBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3Vi
amVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRv
ciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5h
bWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJh
dG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5
TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgewogICAgICAgICBDYWxsQXJndW1lbnRzIGFy
Z3MoKnRoaXMsIDApOwogICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBzdWJq
ZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlclNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
clNjb3BlLmNwcAppbmRleCAyZjc0OTFmNWQyZmMxYzkwNDc4MDNlZGM0ZWI1NDg2ODMxZjQwN2Ni
Li4xYWQyMTQwYWE3YzdhODg1NTJlMjkyMmFmMzI2ZTlmM2QzODBkOGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC0xMTAsMTQg
KzExMCwxNCBAQCBib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUpOwogfQogCi12b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93
blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0
aW9uVHlwZSB0eXBlKQogewogICAgIERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PERlYnVn
Z2VyU2NvcGUqPihvYmplY3QpOwogICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBp
ZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAg
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUs
IHR5cGUpOwogfQogCiBib29sIERlYnVnZ2VyU2NvcGU6OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXgg
MjI3Y2IxOWU3NWY3MzhkN2E2YTUxYjZjMzU5YjRkMTgxYjFmNGY1Yi4uYjJkYjE1ZTkwZWIyYjI0
M2JhOWIwZWVjNjc2MDYwMDM5MjhjZmY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIERlYnVnZ2Vy
U2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIERFQ0xBUkVfRVhQT1JU
X0lORk87CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAppbmRl
eCA2YjZiZWFjYjA0YjM5ZDFmYTMwMTQzNjYxNDdkMzQ5NGM3YmZjZGNjLi5kNjI2MmYwYzM2ZTE2
MWE5MjBmZmJmZGU3NjZmZGM3ZmE0YWQ3ODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTE4NiwxNyArMTg2LDE3IEBAIGJvb2wgQXJndW1lbnRz
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hCiAKICAgICBpZiAoSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZh
dGVOYW1lKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
aXRlcmF0b3JTeW1ib2wpIHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKLSAgICAgICAgdGhpc09iamVjdC0+SlNDX05BVElWRV9GVU5DVElPTihleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBEb250
RW51bSwgMCk7CisgICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+
cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNGdW5jSXRlcmF0b3IsIERv
bnRFbnVtLCAwKTsKICAgICAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQXJndW1lbnRzOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBB
cmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVj
dCA9IGpzQ2FzdDxBcmd1bWVudHMqPihvYmplY3QpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB0aGlzT2JqZWN0LT5tX251bUFyZ3VtZW50czsgKytpKSB7CkBAIC0yMDgsNyArMjA4LDcg
QEAgdm9pZCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSk7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIH0KLSAgICBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAg
ICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBBcmd1bWVudHM6OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5o
CmluZGV4IGMwNTM4NjkwMDA0ZTU2MzcyYzk0YTFhMDA5Y2U5MWQ0YjIwNWU4NGIuLmI4NzM0MTVk
ODk4MDJiOGM2Y2E1NTI3Yzc0NDBiMzc3OTI3Y2IwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5oCkBAIC0xMTQsNyArMTE0LDcgQEAgY2xhc3MgQXJndW1lbnRz
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGQ3OWNjNTJlMDkyYmM2
ZTkwYjQxYmJlNzk5OGMyYWI3MDdhYTNkMmMuLmM2OTA0ZmE1MDVhYjZhNTZjZGYzMTUwMTc4ZWI0
YzU0Mjc1ZmViM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAg
dm9pZCBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAg
ICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRz
SXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNJ
dGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIGFy
Z3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJv
dG90eXBlLmNwcAppbmRleCBjODgwMGUzY2RjYTYyNTJlYWI5OGZkMDIxMTg2MWUxZDBkYmVjMTEy
Li5iZDM1NTVjNDQyMDliZDc1YTEzOGY1ZjIzOGNiOTY3NWM2ZDI2YzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBl
LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRo
aXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlSXRlcmF0ZSwgRG9udEVudW0sIDAp
OworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1i
b2wsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVJdGVyYXRlLCBEb250RW51bSwgMCk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggYzc5OWNjMzFlMWJmMTA2NjZiOWU0YjdmNWY1MWJm
ODQxOGNkY2E3ZS4uZDQ2YjY0ZTZmMzE5OGRhNzY2OTQ1NDJlNGE5N2RkNmQ4YTU2YWVkMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApA
QCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlw
ZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheVByb3RvRnVuY1ZhbHVlcywgRG9u
dEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wsIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiB9CiAKIGJv
b2wgQXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKQEAgLTczNSw3ICs3MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgbmFt
ZUFycmF5KGV4ZWMpOwotICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQ
cm9wZXJ0eU5hbWVzKHRoaXNPYmosIGV4ZWMsIG5hbWVBcnJheSwgSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3Bl
cnR5TmFtZXModGhpc09iaiwgZXhlYywgbmFtZUFycmF5LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBjYjUw
NThjMmRjMDYyYjRkYjVkNjgyYTAxNjE3YjM3NzhjMTQwNGJhLi5iODdhOTA4NmFiZDE2MzVhZTkw
Mjg2YjkwYzE3MzQ1ZWM2YjE0NjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaApAQCAtNzMsMTMgKzczLDEzIEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAg
dHlwZWRlZiBKU1ZhbHVlICgqRGVmYXVsdFZhbHVlRnVuY3Rpb25QdHIpKGNvbnN0IEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgRGVmYXVsdFZhbHVl
RnVuY3Rpb25QdHIgZGVmYXVsdFZhbHVlOwogCi0gICAgdHlwZWRlZiB2b2lkICgqR2V0T3duUHJv
cGVydHlOYW1lc0Z1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCpHZXRPd25Qcm9w
ZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAgICAgR2V0T3duUHJv
cGVydHlOYW1lc0Z1bmN0aW9uUHRyIGdldE93blByb3BlcnR5TmFtZXM7CiAKLSAgICB0eXBlZGVm
IHZvaWQgKCpHZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXNGdW5jdGlvblB0cikoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAg
dHlwZWRlZiB2b2lkICgqR2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUs
IEVudW1lcmF0aW9uVHlwZSk7CiAgICAgR2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rp
b25QdHIgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzOwogCi0gICAgdHlwZWRlZiB2b2lkICgq
R2V0UHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCpHZXRQ
cm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAgICAgR2V0UHJv
cGVydHlOYW1lc0Z1bmN0aW9uUHRyIGdldFByb3BlcnR5TmFtZXM7CiAKICAgICB0eXBlZGVmIHVp
bnQzMl90ICgqR2V0RW51bWVyYWJsZUxlbmd0aEZ1bmN0aW9uUHRyKShFeGVjU3RhdGUqLCBKU09i
amVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuY3BwCmluZGV4IDU2ZGYzNDUwMjg3ZmY5OTlhMzhmY2Y0Y2I3MTUwZTg2MWE1NjQz
ZTguLmFjYzI4MGRjNzBmYmE3NzMwN2FiNDBiOTAzYjE1MDc2N2M0YTg2NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwg
bmFtZSh2bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUj
I0tleXdvcmQodm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1l
KSAsIG5hbWUjI1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgp
KQorI2RlZmluZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0
aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1v
bklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAgLTQxLDYgKzQy
LDcgQEAKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpF
X0tFWVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
SU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElG
SUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCisgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElB
TElaRV9TWU1CT0wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDY1ODE1Y2M5YTFlOWY3YzYyMTAzOTIyMDNhYzhm
MTgxMDdkZjhhNzAuLmJiNWQ2YzRlZDNhMjU0ZDdmNTNjNzA5ZjlmMTg5MzI1Mjc0ZTA3MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aApAQCAtMjM0LDcgKzIzNCw2IEBACiAgICAgbWFjcm8odW5zY29wYWJsZSkKIAogI2RlZmluZSBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBc
Ci0gICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1C
T0wobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvck5leHQpIFwKICAgICBtYWNybyhyZXNvbHZl
KSBcCiAgICAgbWFjcm8ocmVqZWN0KSBcCkBAIC0yODQsNyArMjgzLDExIEBACiAjZGVmaW5lIEpT
Q19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBj
b25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOwogICAgICAgICBKU0NfQ09NTU9OX1BS
SVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9E
RUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKLSAgICAgICAgCisKKyNkZWZpbmUg
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTChu
YW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1N5bWJvbDsKKyAgICAgICAgSlNDX0NPTU1PTl9Q
UklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJf
REVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURF
TlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCisKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNv
bnN0OwogICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYp
IGNvbnN0OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FbnVtZXJhdGlvbk1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1l
cmF0aW9uTW9kZS5oCmluZGV4IDRkYmFmN2I0MTdkYzcwOGZiYzZjNzI1MDlmMTlmNTQ0ZjAxYjk2
YmQuLmUyZWNlNDk2YTE2YTFkNjIyMWRiZmI3MTE4MDg1NWExODFjY2FhNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCkBAIC0zNSw2ICsz
NSwxMSBAQCBlbnVtIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllc0FuZFNraXBKU09iamVjdAogfTsKIAorZW51bSBjbGFzcyBFbnVtZXJhdGlvblR5cGUgewor
ICAgIEluY2x1ZGVTeW1ib2wsCisgICAgRXhjbHVkZVN5bWJvbAorfTsKKwogaW5saW5lIGJvb2wg
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsK
ICAgICBzd2l0Y2ggKG1vZGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IDc0NzJkODQ3ZDc1YjMwM2U2NDU0ZjA2ZDY5ZWQ2
ZmM1ZWU2OTIzYWMuLjlmMjAwM2FmMzQzZGUwYzY4ZGQzNjc2OWVmY2JhMmVkYzRhNGVjNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMu
aApAQCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3Rh
dGUqIGV4ZWMsIEF0b21pY1N0cmluZ0ltcGwqIHN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAg
Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhlYyk7CiAgICAgaWYgKHN0cmluZykKLSAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLT5sZW5ndGgoKSB8fCBBdG9taWNTdHJp
bmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29t
ZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5pc1VuaXF1ZSgpIHx8IEF0b21pY1N0cmluZzo6
aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBm
cm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
I2VuZGlmCkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJV
RwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAgIGlmICghc3Ry
aW5nLmlzTnVsbCgpKQotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3Ro
KCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nLmltcGwoKSks
ICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IHN0cmluZy0+aXNVbmlx
dWUoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgp
KSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggNTE3NzIxZTk4NDQ5ZTFlZDNlYTA1ZTUwOTZhNDNj
MzE0ODI4ODg5MC4uNGM3MGFjMzNlYzc0NmE2MGFjMWY4MGY1MzNhODE3N2FiZmMyOTAwMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTIyMiwxNCArMjIy
LDE0IEBAIHN0YXRpYyBpbnQgY29tcGFyZUtleXNGb3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25z
dCB2b2lkKiBiKQogICAgIHJldHVybiAoZGEgPiBkYikgLSAoZGEgPCBkYik7CiB9CiAKLXZvaWQg
SlNBcnJheTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQordm9pZCBKU0FycmF5OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQog
ewogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAK
ICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKLSAgICBK
U09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAK
IC8vIFRoaXMgbWV0aG9kIG1ha2VzIHJvb20gaW4gdGhlIHZlY3RvciwgYnV0IGxlYXZlcyB0aGUg
bmV3IHNwYWNlIGZvciBjb3VudCBzbG90cyB1bmNsZWFyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgKaW5kZXggNzAwMjllNmRjOWY0OTQ2ZTM4MjBlOWZkNzIwMDYxMTU0
MDY0ZTBmYi4uYTU1ZTkxNWYxZWM0ZDk2NjMwY2ViZWIyYWMyMzZmMDdkOGEwYTEwMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIGNs
YXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBl
KTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzTGVuZ3RoV3JpdGFibGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCBjMWNhZDEwNWM3
ZTBkNWFkN2VmZDI5NmEzYmVmMDY5NmM5NWY2MDA3Li5kNTU0MDNlZGQzOTRkYmQ1MTdmNTc0YTcy
MzIyZDFhMzY2Yzg0ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyLmNwcApAQCAtMTE1LDE0ICsxMTUsMTQgQEAgYm9vbCBKU0FycmF5QnVmZmVy
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHAKIH0KIAogdm9pZCBKU0FycmF5QnVmZmVyOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoCi0gICAgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQorICAgIEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNBcnJheUJ1ZmZlciogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyKj4ob2JqZWN0KTsKICAgICAKICAgICBpZiAo
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgYXJyYXkuYWRk
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoKTsKICAgICAKLSAgICBCYXNlOjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwor
ICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBh
cnJheSwgbW9kZSwgdHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCmluZGV4IDMxOWI4MmU1YTBiMTE2
ZThkZWIzOWE2MTAxMGZhOWFkMzZjMDBmMTkuLjdmNTEzZTYzNGI2NzcyNzg0MmE1ZWNkYjY4N2Rl
NTU2ODI1NmQxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNw
cAppbmRleCBjYjVjOGEyZjAzOTM0M2M1YTI0MDUwYjA5MDgwOGRlZDI1ZTEwOTBiLi4yMDBhYzdl
ZDRkZGUzYzYxOTJkNGU4ODkxZWUzODk0ZjhmODNhMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0xOTYsNyArMTk2
LDcgQEAgYm9vbCBKU0FycmF5QnVmZmVyVmlldzo6ZGVsZXRlUHJvcGVydHkoCiB9CiAKIHZvaWQg
SlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKLSAgICBKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBhcnJheSwg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCisgICAgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVt
ZXJhdGlvblR5cGUgdHlwZSkKIHsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KG9iamVjdCk7CiAgICAgCkBAIC0yMDcsNyArMjA3
LDcgQEAgdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KAogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1ZmZlcik7CiAgICAg
fQogICAgIAotICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LCBleGVjLCBhcnJheSwgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBKU0Fy
cmF5QnVmZmVyVmlldzo6ZmluYWxpemUoSlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggM2ZlYjAzYjcyMTkz
MTRkMmI0MmY4MzFlNGVjMzhiY2ExOTcyOWY0NC4uZTZkYzg1ODljN2Y2MmE2M2M4NGJkMjAxN2U4
ZGNkOTY5YTg0OTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5oCkBAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZl
clZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgCi0g
ICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIHN0YXRp
YyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwog
ICAgIAogcHVibGljOgogICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBt
X21vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Fs
bGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNwcAppbmRl
eCAxZDNmMzQwMTg4NTdkYmQ4ZTY4ZjMyYjAyZGM5MGE5NDdhYmIwZTA2Li5hOTIyMmQ0OWZjZWRl
Nzg0NjBhODdiMjA2ZTM4YTllYzk0YjFhMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NhbGxlZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDYWxsZWUuY3BwCkBAIC03Niw5ICs3Niw5IEBAIGJvb2wgSlNDYWxsZWU6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNDYWxsZWU6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNDYWxs
ZWU6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7Ci0gICAgQmFzZTo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAg
QmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIHZvaWQgSlNDYWxsZWU6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2FsbGVlLmgKaW5kZXggZGVkOGM4NTgwYjBhYzM1ZDRkOTc3MTZhMDBhZGYwODBkY2I2ZTJlZS4u
MGJjM2NkMTMxYTFmNTIzNDI1Yzk3OGRhMWE1ZjMwNTdhMzc4N2Q3MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCkBAIC0xMDEsNyArMTAxLDcgQEAgY2xhc3MgSlND
YWxsZWUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1l
cmF0aW9uVHlwZSA9IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0
YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmNwcAppbmRleCAyYzQwM2M4MTNmYjM4NTY4YjBlNjBjZTc4OTg5ZGRlYTRjOTUz
YzEyLi4yNjAyNWMwZDc4NzExMjk3NGMzNDMyOWI4M2ZiMDUxN2YzMjI2NGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTE5NCwxMiArMTk0LDEyIEBAIGJv
b2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQsIFByb3BlcnR5CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTQ2Vs
bDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBKU0NlbGw6OmdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSwgRW51bWVyYXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLXZvaWQgSlNDZWxsOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSkKK3Zv
aWQgSlNDZWxsOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBl
KQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0yMTUsNyArMjE1
LDcgQEAgY29uc3QgY2hhciogSlNDZWxsOjpjbGFzc05hbWUoKSBjb25zdAogICAgIHJldHVybiBj
bGFzc0luZm8oKS0+Y2xhc3NOYW1lOwogfQogCi12b2lkIEpTQ2VsbDo6Z2V0UHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKQordm9pZCBKU0NlbGw6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0yNTAsMTIgKzI1MCwx
MiBAQCB1aW50MzJfdCBKU0NlbGw6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNP
YmplY3QqKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEpTQ2VsbDo6Z2V0U3RydWN0dXJlUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKQordm9pZCBKU0NlbGw6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwg
RW51bWVyYXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgSlNDZWxsOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBKU0NlbGw6
OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSkKIHsKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAppbmRleCA0ODM5ZjY0ZmExYTgyMGVlYWNiNzA5Zjk4YzMwYjdhZjdjNGU4MTk0Li5i
N2MyYTcxNGQ5YWMzNzE0NDIyMmQ1ZWViMTM4NTA3M2NkNzE4OWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMjExLDEzICsyMTEsMTMgQEAgY2xhc3MgSlNDZWxs
IHsKIAogICAgIC8vIER1bW15IGltcGxlbWVudGF0aW9ucyBvZiBvdmVycmlkZS1hYmxlIHN0YXRp
YyBmdW5jdGlvbnMgZm9yIGNsYXNzZXMgdG8gcHV0IGluIHRoZWlyIE1ldGhvZFRhYmxlCiAgICAg
c3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7Ci0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JB
U0ggdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVF
X1RPX0NSQVNIIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRp
YyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBz
dGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwg
RW51bWVyYXRpb25UeXBlKTsKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOworICAgIHN0
YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVt
ZXJhdGlvblR5cGUpOwogCiAgICAgc3RhdGljIHVpbnQzMl90IGdldEVudW1lcmFibGVMZW5ndGgo
RXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFT
SCB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIE5PX1JFVFVS
Tl9EVUVfVE9fQ1JBU0ggdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2
b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBz
dGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCmluZGV4IGRjMzc3MTk3MGFhNDA2OTFmNTkxYzFlMzkxMDgyMzg2ZTFiZmEyNzAuLjU4NDA0
MDY3NzQzZjg5MjRhOWQ4ODUwZWY5OGZiODhiYzM3MzUyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgYm9vbCBK
U0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU4KICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNGdW5jdGlv
bjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQordm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewog
ICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7
CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIHNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKQEAgLTM5MSw3ICszOTEsNyBAQCB2
b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCk7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUpOwogICAgIH0KLSAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUsIHR5cGUpOwogfQogCiB2b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCmluZGV4IDlmNWZlNjE0MTU5YmRjZjJlNWFiYzQ1NTBkMDQ4MTk4ZTNiMzhkYzcu
LjYxMDk1ZjViZTQ1MjkyMTdiNDRlMzdmMGUwZmFhNTU1MGI0MGU0NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBjbGFz
cyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2FsbGVlIHsKICAgICBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSogY3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNh
cGFjaXR5KTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZv
aWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZSA9IEVudW1lcmF0aW9uVHlw
ZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaAppbmRleCAxMzQzZWVlM2Q3MjBhMjA2NmFkYzkyYjQzOWZkZjE5OTE4ZmE0NWY4Li5l
ZWUxNzU1ZjM0MTg0ZmI1MWVkYzk4Mjk5N2RkNGEwOTZlNTUyNDQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgK
QEAgLTI0MCw4ICsyNDAsOCBAQCBjbGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyA6IHB1Ymxp
YyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIAotICAgIHN0YXRpYyB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKICAgICAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgY29weUJhY2tp
bmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tlbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oCmluZGV4IDZkMGQyMWZhNjFmMzk4OWY5ZDliNDE5OWRhYTg4OGU5ZjY2NDRl
Y2EuLmM0OTAxZTVlYWY0NDFhNTFkZmVjNjk2NThiNWUyMmM0ZDQ3ZmIwZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCkBAIC00MTEsMjYgKzQxMSwyNiBAQAogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgogdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAotICAgIEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkK
KyAgICBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBhcnJheSwgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewog
ICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAKICAgICBpZiAoc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpOwogICAgIAotICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlLCB0eXBlKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIHZvaWQgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5TmFtZXMoCi0gICAgSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyYXksIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQorICAgIEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBl
IHR5cGUpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwogICAgIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX2xlbmd0aDsgKytpKQogICAgICAgICBhcnJh
eS5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6
OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CisgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSwg
dHlwZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXgg
YjE0YTQ3OWM5YTlmMWVkYmRjNWY2NTY5NWYzNGEzNjQ1ZTc2ODcxZS4uNWFhZWU5NjI0NzM2MWNm
MzZmYzRjNzUyY2MzMjBhOGNjMDk1Yzg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAtMTA2LDcgKzEwNiw3
IEBAIGlubGluZSBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpzeW1ib2xUYWJsZVB1dChFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNMZXhpY2FsRW52aXJvbm1lbnQqPihvYmplY3QpOwogCkBAIC0x
MTgsMTEgKzExOCwxMyBAQCB2b2lkIEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc1ZhbGlkKGl0LT52YWx1
ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBF
bnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wgJiYgaXQtPmtleS5nZXQoKS0+aXNVbmlxdWUo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMu
YWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQog
ICAgIC8vIFNraXAgdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQgaW1wbGVtZW50YXRpb24gb2YgZ2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzCi0gICAgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBK
U09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBpbmxpbmUgYm9vbCBKU0xleGljYWxFbnZp
cm9ubWVudDo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
aAppbmRleCA5ZmIwM2M1ODdkMGE5ZjliZjM4NjEwNmMwNGU3ZmI0YmFhOThkODUzLi41Yzc0YTU5
N2VkMDE5N2E0NWZhY2VlNWNiNGRhZWE3MzA3NWMwYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTY5LDcgKzY5
LDcgQEAgY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJl
Y29yZCB7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNOb3RBbk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFu
T2JqZWN0LmNwcAppbmRleCBhZjQ3MzdlOWIwMmY1NzEwMzA2NWVlN2Q4ZTdiYTA0MGRlYzBkMmFj
Li44YTYzZDk0NzkwZmYwYzdjYjhiMGE5MjNmN2Y5YWJmYTI4NTAyN2I3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcApAQCAtODAsNyArODAs
NyBAQCBib29sIEpTTm90QW5PYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBK
U05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSkKK3ZvaWQgSlNOb3RBbk9i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSkKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAppbmRleCBlN2MwYTA0ODVi
Y2M4ZThkN2E1NGZiY2YzYzRiMmEzYjcyOTk2MDQ4Li44NzNkNWJiNzQ3OWFjYzA0YTIwNmE1MGZl
ODlhZDlkZWVjNmViZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU05vdEFuT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNO
b3RBbk9iamVjdC5oCkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIEpTTm90QW5PYmplY3QgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKIAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuY3BwCmluZGV4IDk5MDc0M2E1NThlZWE4ODc5OTNlMjI3YTZlZDE4ZTU1MGMyM2UxYTMuLmM2
NTNjMTQ5YzZmMzNlMzM1M2FhNDZhMGVkMmY1NjFmMjIzOTdkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC00OTUsNyArNDk1LDcgQEAgYm9v
bCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0
cmluZ2lmaWVyLCBTdHJpbmdCdWkKICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMgPSBz
dHJpbmdpZmllci5tX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzLmRhdGEoKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IG9iamVjdFByb3Bl
cnR5TmFtZXMoZXhlYyk7Ci0gICAgICAgICAgICAgICAgbV9vYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldE93blByb3BlcnR5TmFtZXMobV9vYmplY3QuZ2V0KCksIGV4ZWMsIG9iamVjdFByb3BlcnR5
TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIG1fb2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBl
eGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVt
ZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogICAgICAgICAgICAgICAgIG1fcHJvcGVydHlO
YW1lcyA9IG9iamVjdFByb3BlcnR5TmFtZXMucmVsZWFzZURhdGEoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIG1fc2l6ZSA9IG1fcHJvcGVydHlOYW1lcy0+cHJvcGVydHlOYW1lVmVjdG9y
KCkuc2l6ZSgpOwpAQCAtNzEyLDcgKzcxMiw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtl
cjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2su
cHVzaChvYmplY3QpOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAg
ICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhl
YykpOwotICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCks
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJv
bCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgog
ICAgICAgICAgICAgRkFMTFRIUk9VR0g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKaW5kZXggODdjMTkxOTQ3MjljNTI1NDk2ZDExMzNhMjFlOTg5MjhiMWVkZWU0
Ni4uZTRjMTZmOTVhZjM2ZjIxYmIzOTFhMDVlZjI4OWZjYTA3MDBmYWY1MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTQ1MywxMCArMTQ1MywxMCBA
QCBib29sIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBK
U09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSkKK3ZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIHByb3BlcnR5TmFtZXMu
c2V0QmFzZU9iamVjdChvYmplY3QpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiAKICAgICBpZiAo
b2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ2NSwx
MCArMTQ2NSwxMCBAQCB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQQogICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBhc09iamVjdChvYmplY3QtPnByb3RvdHlwZSgpKTsKICAgICB3aGlsZSgxKSB7CiAg
ICAgICAgIGlmIChwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcygpKSB7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxl
KHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhwcm90b3R5cGUsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOworICAgICAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5
TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUo
dm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSk7CisgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiAgICAg
ICAgIEpTVmFsdWUgbmV4dFByb3RvID0gcHJvdG90eXBlLT5wcm90b3R5cGUoKTsKICAgICAgICAg
aWYgKG5leHRQcm90by5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3NiwxMSAr
MTQ3NiwxMSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQQogICAgIH0KIH0KIAotdm9pZCBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSkKK3ZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIGlmICghc2hvdWxk
SW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhtb2RlKSkgewogICAgICAgICAvLyBXZSBzdGls
bCBoYXZlIHRvIGdldCBub24taW5kZXhlZCBwcm9wZXJ0aWVzIGZyb20gYW55IHN1YmNsYXNzZXMg
b2YgSlNPYmplY3QgdGhhdCBoYXZlIHRoZW0uCi0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlLCB0eXBlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU0NywxMCAr
MTU0NywxMCBAQCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUs
IHR5cGUpOwogfQogCi12b2lkIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTT2JqZWN0OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVu
dW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIGdldENsYXNzUHJvcGVydHlOYW1lcyhleGVjLCBv
YmplY3QtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCBvYmplY3QtPnN0YXRpY0Z1
bmN0aW9uc1JlaWZpZWQoKSk7CiAKQEAgLTE1NTgsNyArMTU1OCw3IEBAIHZvaWQgSlNPYmplY3Q6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1
cmUodm0sIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+
Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5
cGUpOwogfQogCiBkb3VibGUgSlNPYmplY3Q6OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKQEAgLTI3NDEsMTYgKzI3NDEsMTYgQEAgdWludDMyX3QgSlNPYmplY3Q6OmdldEVudW1lcmFi
bGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQogICAgIH0KIH0KIAot
dm9pZCBKU09iamVjdDo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNPYmplY3Q6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBl
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgb2JqZWN0LT5zdHJ1Y3R1cmUodm0p
LT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1lcywgbW9kZSk7
CisgICAgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVy
ZSh2bSwgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6Omdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQor
dm9pZCBKU09iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlVGhhdFNraXBzSlNPYmplY3QobW9k
ZSkpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpLCB0
eXBlKTsKIAogICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNzU4LDEwICsyNzU4LDEwIEBAIHZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAg
ICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2JqZWN0KG9iamVjdC0+cHJvdG90eXBlKCkpOwog
ICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGlmIChwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKSB7Ci0gICAgICAgICAgICBw
cm90b3R5cGUtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhwcm90b3R5cGUsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgICAgICAgICAgcHJvdG90eXBlLT5tZXRob2RU
YWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlLCB0eXBlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHBy
b3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFi
bGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSwgdHlwZSk7CiAgICAgICAgIEpTVmFsdWUgbmV4dFByb3RvID0gcHJvdG90eXBlLT5w
cm90b3R5cGUoKTsKICAgICAgICAgaWYgKG5leHRQcm90by5pc051bGwoKSkKICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYzk3
MjEzOTRiNGE4ZjAyNjU2ZTk1NmY0Nzc5ZDhkMDM3MDQ5ZGZjMi4uNTEzYzc4ZTdhNmJkNTZiZWEy
YmRjMzA4NTJkZTEyYzhkMzBmOTNkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCkBAIC00NzQsMTMgKzQ3NCwxMyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBK
U0NlbGwgewogICAgIGJvb2wgaGFzSW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAgICAg
c3RhdGljIGJvb2wgZGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFs
dWUgcHJvdG90eXBlUHJvcGVydHkpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHVpbnQzMl90IGdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwg
SlNPYmplY3QqKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1
cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBF
bnVtZXJhdGlvblR5cGUpOwogCiAgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlID0gTm9QcmVmZXJlbmNlKSBjb25zdDsKICAgICBib29sIGdl
dFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuY3BwCmluZGV4IGYxYTJlNTYyZjlhYmY0MDJhYjYzOGRjMDljNmVmYzM4MGQx
YzViNGQuLjJhNTE2OTcyMTFjNmQ4YTNiZTRlNGU3ODJlMjlhZGMyYTVlYzkwNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
UHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JhY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTUHJvbWlz
ZURlZmVycmVkKiBkZWZlcnJlZCA9IGpzQ2FzdDxKU1Byb21pc2VEZWZlcnJlZCo+KGRlZmVycmVk
VmFsdWUpOwogCiAgICAgLy8gNC4gTGV0ICdpdGVyYXRvcicgYmUgdGhlIHJlc3VsdCBvZiBjYWxs
aW5nIEdldEl0ZXJhdG9yKGl0ZXJhYmxlKS4KLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24g
PSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFt
ZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4
ZWMsIGRlZmVycmVkKSk7CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0FsbChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0ganNDYXN0PEpTUHJvbWlzZURlZmVycmVk
Kj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVz
dWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRlcmFibGUpLgotICAgIEpTVmFsdWUgaXRlcmF0
b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5n
ZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1cHRS
ZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAppbmRleCBlZTE4YWJm
NmViM2YzMmNmYzAxMjkxZWIxNDQ3NDBlZjc4YTk2YTFjLi5hNjVhNjA3ZjdmNmYyZWJiMDY4YjYz
OWU2ODQxOWQ5ZTViMzY4OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaApAQCAtMTEzLDcgKzExMyw3IEBA
IGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIHN0cnVjdHVyZVByb3BlcnR5TmFtZUVu
dW1lcmF0b3IoRXhlY1N0YXRlKiBleGVjCiAgICAgICAgIHJldHVybiBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmNyZWF0ZSh2bSk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5h
bWVzKGV4ZWMpOwotICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVy
dHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFt
ZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywg
RW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKIAogICAgIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciogZW51bWVyYXRvciA9IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZt
LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZXMpOwogICAgIGlmIChzdHJ1Y3R1cmUtPmNhbkNhY2hl
U3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcigpKQpAQCAtMTQyLDkgKzE0Miw5IEBAIGlu
bGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKEV4ZWNTdGF0ZSogZXhlYywKICAgICAvLyB0aGUgbmV3IGdlbmVyaWMgUHJvcGVydHlOYW1l
QXJyYXkgYW5kIGZhaWxpbmcgYmVjYXVzZSB3ZSd2ZSBhbHJlYWR5IHZpc2l0ZWQgdGhlbS4KICAg
ICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9IHN0cnVjdHVyZUVudW1lcmF0b3ItPmNhY2hl
ZFN0cnVjdHVyZSh2bSk7CiAgICAgaWYgKHN0cnVjdHVyZSA9PSBjYWNoZWRTdHJ1Y3R1cmUgJiYg
c3RydWN0dXJlLT5jYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseSgpICYmIHN0YXRpY19jYXN0PHVp
bnQzMl90PihsZW5ndGgpID09IGJhc2UtPmdldEFycmF5TGVuZ3RoKCkpCi0gICAgICAgIGJhc2Ut
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJv
cGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIGJhc2UtPm1l
dGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVy
dHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNs
dWRlU3ltYm9sKTsKICAgICBlbHNlCi0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
UHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKKyAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5h
bWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMs
IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgCiAgICAgbm9ybWFsaXplUHJv
dG90eXBlQ2hhaW4oZXhlYywgc3RydWN0dXJlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmNwcAppbmRleCBmNGM2ODI5ZTA0YmMyMWExZGUzOWY3ZTRmOTAzYTliZjQ1
NGI4MzcxLi41MWU3NGViNTZhM2FmNmZlYjJkZmU2ZWEzOGFlYzFlMjNmY2VjODU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcApAQCAtMTA4LDEwICsxMDgsMTAg
QEAgYm9vbCBKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3AKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0
KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
amVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKLXZvaWQgSlNQcm94eTo6
Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQg
SlNQcm94eTo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJn
ZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIHVpbnQzMl90IEpT
UHJveHk6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2Jq
ZWN0KQpAQCAtMTIwLDIzICsxMjAsMjMgQEAgdWludDMyX3QgSlNQcm94eTo6Z2V0RW51bWVyYWJs
ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIHRo
aXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0RW51bWVyYWJs
ZUxlbmd0aChleGVjLCB0aGlzT2JqZWN0LT50YXJnZXQoKSk7CiB9CiAKLXZvaWQgSlNQcm94eTo6
Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBKU1Byb3h5OjpnZXRTdHJ1Y3R1cmVQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSkKIHsKICAgICAvLyBTa2lwIHRoZSBzdHJ1
Y3R1cmUgbG9vcCwgc2luY2UgaXQgaXMgaW52YWxpZCBmb3IgcHJveGllcy4KIH0KIAotdm9pZCBK
U1Byb3h5OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSkKK3ZvaWQgSlNQcm94eTo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpT
UHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7CiAgICAgLy8gR2V0
ICphbGwqIG9mIHRoZSBwcm9wZXJ0eSBuYW1lcywgbm90IGp1c3QgdGhlIGdlbmVyaWMgb25lcywg
c2luY2Ugd2Ugc2tpcHBlZCB0aGUgc3RydWN0dXJlCiAgICAgLy8gb25lcyBhYm92ZS4KLSAgICB0
aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5
TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
ICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSwgdHlwZSk7CiB9CiAKLXZvaWQgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5
cGUpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0
KTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCmluZGV4IGNkYTYyMWI0Y2JhNTk3MGUxZTNh
ZTFiMWNmMDFlYThkNDEzNjYwZGQuLmFmZDBjZDdmNjM1OGJkMGQ0NDY2OTZlOWRjZGMwMWE2ZGM1
MTY0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKQEAgLTgxLDEx
ICs4MSwxMSBAQCBjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCk7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51
bWVyYXRpb25UeXBlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHVpbnQzMl90IGdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFN0cnVj
dHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5
cGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggYjhm
YjIyODJhZmFlODdlY2M0MTEwMjQ1Y2U5YmI4NzNlOTUwZjBmZi4uNGZiZmI5ZGNjODQyNWM4ZDJl
MGM2N2QzYjMwM2RjOTI5NzhkOTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTU0LDIxICs1NCwyMyBAQCBi
b29sIEpTU3ltYm9sVGFibGVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBKU1N5bWJvbFRh
YmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRp
b25UeXBlIHR5cGUpCiB7CiAgICAgSlNTeW1ib2xUYWJsZU9iamVjdCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1N5bWJvbFRhYmxlT2JqZWN0Kj4ob2JqZWN0KTsKICAgICB7CiAgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7
CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5
bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNVbmlxdWUoKSkK
KyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1ByaXZhdGUoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVk
ZVN5bWJvbCAmJiBpdC0+a2V5LT5pc1VuaXF1ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVt
KSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQogICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNP
YmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5k
ZXggMmNkOWQxYmEyYjEyNzBiN2ExODJhZmI4YzhhNDAyMDgxNzQ4ZmI0Yi4uNmM2MDRjMGVjODAy
Yzk5NjY0OTE0NTMwZTAxMzU1OGMxNDVlNmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNDUsNyArNDUsNyBAQCBj
bGFzcyBKU1N5bWJvbFRhYmxlT2JqZWN0IDogcHVibGljIEpTU2NvcGUgewogICAgIFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0K
ICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51
bWVyYXRpb25UeXBlKTsKICAgICAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBJc0Vudmlyb25tZW50UmVjb3JkIHwgT3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGIyMjBi
OTg3NTg4NWM0MmY5Y2U2MzhmMzIyMjQ3OTJjMzI3NjEwMTcuLjAzNTY0Zjg4ODExZjNlN2ZhYmZi
MGFkYWI5YmJjOWFjYTFmYmFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9p
ZCBNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2
bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBNYXBJdGVyYXRvclBy
b3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIE1hcEl0ZXJhdG9yUHJvdG90eXBl
RnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvck5leHRQcml2YXRlTmFtZSwgTWFwSXRlcmF0b3JQcm90b3R5
cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCA1NDgyMjI3Njk0MDBiNzE4NTJhZjdkYjhi
NzVlZjUwNzU0NGVkZDRmLi5mODQzNjdhZTgwYjcyNjM3NTA1ZWRjMTU2M2Q4YjI4ODhjNThjOTU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsK
ICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgbWFwUHJv
dG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7
Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZh
dGVOYW1lLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgbWFwUHJvdG9GdW5j
RW50cmllcywgRG9udEVudW0sIDApOwogCiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3Bl
cnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIG1hcFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYw
MmU1NzUyODllMTZjZGMxNmEwYmJhMzQ5Nzg1ZjJlMjdlZjE3ZGQuLjQwYjMzNDgxYjg2ZjllYTIw
ZDliZDg5NWNiYjM5NDNiNDZkZmE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAogI2lu
Y2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5
LmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93
blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRl
Kik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5l
UHJvcGVydHkoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKQEAgLTY2LDYgKzY4LDcg
QEAKICAgZ2V0UHJvdG90eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldFByb3Rv
dHlwZU9mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlOYW1lcyAgICAgICBvYmplY3RDb25z
dHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
Z2V0T3duUHJvcGVydHlTeW1ib2xzICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
U3ltYm9scyAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAga2V5cyAgICAgICAgICAgICAgICAg
ICAgICBvYmplY3RDb25zdHJ1Y3RvcktleXMgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKICAgZGVmaW5lUHJvcGVydHkgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3Rv
ckRlZmluZVByb3BlcnR5ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKICAgZGVmaW5l
UHJvcGVydGllcyAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKQEAgLTIwNiw3ICsyMDksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhF
eGVjU3RhdGUqIGV4ZQogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJSZXF1ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5v
dCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMp
OwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVj
LCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChl
eGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsK
ICAgICBKU0FycmF5KiBuYW1lcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CiAgICAg
c2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKQEAgLTIxNSwxMiArMjE4LDI5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0
eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiB9CiAKIC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9u
IGNhY2hlLgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5h
cmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBu
YW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOworICAgIFByb3BlcnR5
TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQo
MCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVj
dChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6SW5jbHVkZVN5bWJvbCk7CisgICAgSlNBcnJheSog
bmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIHNpemVfdCBudW1Qcm9w
ZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1Qcm9wZXJ0aWVzOyBpKyspIHsKKyAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCA9IHBy
b3BlcnRpZXNbaV0uaW1wbCgpOworICAgICAgICBpZiAoaW1wbC0+aXNVbmlxdWUoKSkKKyAgICAg
ICAgICAgIG5hbWVzLT5wdXNoKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGltcGwp
KTsKKyAgICB9CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuYW1lcyk7Cit9CisKKy8vIEZJ
WE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICgh
ZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQga2V5
cyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkp
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChl
eGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkp
LCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlv
blR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogICAgIEpTQXJyYXkqIGtleXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5z
aXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBA
IC0zMzEsNyArMzUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRpYyBKU1ZhbHVlIGRl
ZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBKU09iamVj
dCogcHJvcGVydGllcykKIHsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4
ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlO
YW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3QocHJvcGVydGll
cyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0
KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzLCBFbnVtZXJhdGlvblR5cGU6OkluY2x1ZGVTeW1ib2wpOwogICAgIHNpemVfdCBudW1Qcm9w
ZXJ0aWVzID0gcHJvcGVydHlOYW1lcy5zaXplKCk7CiAgICAgVmVjdG9yPFByb3BlcnR5RGVzY3Jp
cHRvcj4gZGVzY3JpcHRvcnM7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFya0J1ZmZlcjsK
QEAgLTM5OCw3ICs0MTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yU2VhbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1l
ZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVy
dGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6SW5jbHVkZVN5bWJvbCk7CiAgICAgUHJvcGVydHlOYW1l
QXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQ
cm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4o
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUg
cmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qg
b2YgTyB3aXRoIFAuCkBAIC00MzUsNyArNDU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAy
LiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6SW5jbHVkZVN5bWJvbCk7CiAg
ICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5k
KCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHBy
b3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBM
ZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBp
bnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00ODMsNyArNTAzLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2Yg
TywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpJ
bmNsdWRlU3ltYm9sKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9p
dGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tH
ZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTUxMyw3ICs1
MzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNG
cm96ZW4oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHBy
b3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
Yyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBF
bnVtZXJhdGlvblR5cGU6OkluY2x1ZGVTeW1ib2wpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlO
YW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBv
ZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0
aCBQLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5h
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKaW5kZXgg
MjE0MTY0NDY2NDVjN2ZmZjAzZjdjODJkMTc4NzM5YWQ1NjA4YmY2NC4uYmRmOGZmM2FjMzA3ZDVl
OGFmMGZhYzlmOGI5MWIxYTZhYjgzYzFjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcml2YXRlTmFtZS5oCkBAIC0zNSwxOSArMzUsMjUgQEAgY2xhc3MgUHJpdmF0ZU5hbWUg
ewogICAgIFByaXZhdGVOYW1lKCkKICAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRl
VW5pcXVlRW1wdHkoKSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkp
OwogICAgIH0KLSAgICBQcml2YXRlTmFtZShjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQotICAg
ICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWUoZGVzY3JpcHRpb24uaW1wbCgp
KSkKKworICAgIGVudW0gQ3JlYXRlUHJpdmF0ZVRhZyB7IENyZWF0ZVByaXZhdGUgfTsKKyAgICBQ
cml2YXRlTmFtZShDcmVhdGVQcml2YXRlVGFnKQorICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBs
OjpjcmVhdGVVbmlxdWVQcml2YXRlKCkpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pbXBsLT5p
c1VuaXF1ZSgpKTsKICAgICB9CisKICAgICBleHBsaWNpdCBQcml2YXRlTmFtZShTdHJpbmdJbXBs
KiB1aWQpCiAgICAgICAgIDogbV9pbXBsKHVpZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2lt
cGwtPmlzVW5pcXVlKCkpOwogICAgIH0KIAorICAgIGV4cGxpY2l0IFByaXZhdGVOYW1lKGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24pCisgICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0
ZVVuaXF1ZShkZXNjcmlwdGlvbi5pbXBsKCkpKQorICAgIHsKKyAgICB9CisKICAgICBBdG9taWNT
dHJpbmdJbXBsKiB1aWQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJ
bXBsKj4obV9pbXBsLmdldCgpKTsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZh
dGVOYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdWlkKCkgPT0gb3RoZXIudWlkKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKaW5kZXggMzA3NGM3
MmUxMDcwMTMzYjk3YjAzYjFkZmY0YTQzZGUxMzJmYzBhNi4uZWQ1MWQ2NDgyZWQ3OTBhYzEzZmIx
MWEyODY5MjkyMDkxY2E4YjdhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lLmgKQEAgLTEwNCwxNCArMTA0LDE0IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7
CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiBwdWJsaWNOYW1lKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2ltcGwtPmlzVW5pcXVlKCkgPyBudWxscHRyIDogbV9pbXBsOworICAgICAg
ICByZXR1cm4gKCFtX2ltcGwgfHwgbV9pbXBsLT5pc1VuaXF1ZSgpKSA/IG51bGxwdHIgOiBtX2lt
cGw7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5kZXggPSBVSU5U
X01BWDsKIAogICAgIHVpbnQzMl90IGFzSW5kZXgoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
aW1wbCA/IHRvVUludDMyRnJvbVN0cmluZ0ltcGwobV9pbXBsKSA6IE5vdEFuSW5kZXg7CisgICAg
ICAgIHJldHVybiAobV9pbXBsICYmICFtX2ltcGwtPmlzVW5pcXVlKCkpID8gdG9VSW50MzJGcm9t
U3RyaW5nSW1wbChtX2ltcGwpIDogTm90QW5JbmRleDsKICAgICB9CiAgICAgCiAgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0ZDlkMGIyN2U0ZDBjOGM5MWY5ZmViNDVhMWQ1
NGU1OTVkMzNkNTE5Li44ZDI5MTE5ZWJjNGVkOWE2YTQ0ZTA2Mzc2OTRiYzAzZDI0MDZjZTBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAg
LTEwMywyNSArMTAzLDI1IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByCiAgICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKLXZvaWQg
UmVnRXhwT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5
cGUgdHlwZSkKIHsKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2Rl
KSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJ
bmRleCk7Ci0gICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKLXZv
aWQgUmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQordm9pZCBSZWdFeHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIGlm
IChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQogICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKLSAgICBCYXNlOjpn
ZXRQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAg
QmFzZTo6Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUs
IHR5cGUpOwogfQogCi12b2lkIFJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0
R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVu
dW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKG1vZGUpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGFzdEluZGV4KTsKLSAgICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldEdlbmVyaWNQcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAK
IHN0YXRpYyBib29sIHJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgdGhyb3dFeGNlcHRpb24s
IGNvbnN0IGNoYXIqIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCmluZGV4IDdjNGI3NTA5NDViYmU4NWQxNjg1ZjVjNzU3OTE2OGM4ZjE0YmUx
MjMuLmM1OTI2MjFhNzRlYTIzOTZkMjQ1YmUwMWY5MjYwNjE3NTJmOGU3NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC04Miw5ICs4Miw5IEBA
IGNsYXNzIFJlZ0V4cE9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5
cGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBn
ZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCA1NzNhY2ZhNWNkNzY0YjA5ZWU3
NTQzYjM0N2I0OWE1MTExZTcwNTM3Li44ZWE2MTA0OGQ3NDk3ZWFjMDVjOTExMWJjMTI2ODNiNmNm
ODI0OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVy
YXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2V0SXRlcmF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFw
LmFkZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jSXRl
cmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwg
RG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERv
bnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAKaW5kZXggZjg4ZWE3Y2Y5ODY4ZjY2OGI4YzJlODg4MTVmZjY1Y2YzOTkyN2I0
OS4uNDk5NmRhMGVhNTMxM2ZkMmU2MWU3MWE2ZWY0MzgzNTFmYWEzYmFmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5rZXlzLCBzZXRQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIHNldFByb3RvRnVuY1ZhbHVlcywg
RG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
ZW50cmllcywgc2V0UHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwotICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgc2V0UHJv
dG9GdW5jS2V5cywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAw
KTsKIAogICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLnN0cmlu
ZygpLCBzZXRQcm90b0Z1bmNTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDUwMDFiY2M0ZTFiN2UzNzkzZWQyNmUxNDIwYTgwYTYw
NDY4ZTEzYzYuLjc1NzAxNzQ3YTc0YjhmNDAxMGYzZjBlYmI2MmJmNjU5MWIzYmVhNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTQ0
LDcgKzE0NCw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkCiAgICAgcmV0dXJuIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiB9CiAKLXZvaWQg
U3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQordm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAg
IFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3Qp
OwogICAgIGludCBzaXplID0gdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5sZW5ndGgoKTsK
QEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICBpZiAoc2hvdWxk
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKIH0KIAogU3RyaW5nT2JqZWN0KiBjb25z
dHJ1Y3RTdHJpbmcoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgK
aW5kZXggMGNlYmZkZTdhZjU1ODE3Nzk5NjMwMGM3YThiNzJlYTkwNzY1MzY0Ni4uMjE0YzI3YmRh
MGFhMjMzNDM1OTgxMTZlYjc3YWIzNzNkNjgwNTI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU3RyaW5n
T2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBF
bnVtZXJhdGlvblR5cGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIERFQ0xBUkVfRVhQ
T1JUX0lORk87CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApp
bmRleCAzZmNiNDI2Y2RhMGQ1YmJhYzMxNzBhOGJjYjQ2NjE3NWYyOWM3NDI1Li4xOGJhYTNlMWJi
OGY2MjFmMjA0ZDNiMDNkODhlZDM3MDJhMjIzMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTkzNSw3ICs5MzUsNyBAQCB2b2lkIFN0cnVjdHVy
ZTo6Y3JlYXRlUHJvcGVydHlNYXAoY29uc3QgR0NTYWZlQ29uY3VycmVudEpJVExvY2tlciYsIFZN
JiB2bSwgdW5zaQogICAgIHByb3BlcnR5VGFibGUoKS5zZXQodm0sIHRoaXMsIFByb3BlcnR5VGFi
bGU6OmNyZWF0ZSh2bSwgY2FwYWNpdHkpKTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3Bl
cnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5
TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsKICAgICBE
ZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVj
ZXNzYXJ5KHZtLCBkZWZlckdDKTsKQEAgLTk0Nyw3ICs5NDcsOSBAQCB2b2lkIFN0cnVjdHVyZTo6
Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGVydAogICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHByb3BlcnR5VGFibGUo
KS0+ZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gcHJvcGVy
dHlUYWJsZSgpLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VS
VChoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIHx8ICEoaXRlci0+YXR0cmlidXRlcyAmIERv
bnRFbnVtKSk7Ci0gICAgICAgIGlmICghaXRlci0+a2V5LT5pc1VuaXF1ZSgpICYmICghKGl0ZXIt
PmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyhtb2RlKSkpIHsKKyAgICAgICAgaWYgKCFpdGVyLT5rZXktPmlzUHJpdmF0ZSgpICYmICghKGl0
ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcyhtb2RlKSkpIHsKKyAgICAgICAgICAgIGlmICh0eXBlID09IEVudW1lcmF0aW9uVHlwZTo6
RXhjbHVkZVN5bWJvbCAmJiBpdGVyLT5rZXktPmlzVW5pcXVlKCkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICBpZiAoa25vd25VbmlxdWUpCiAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGRLbm93blVuaXF1ZShpdGVyLT5rZXkpOwogICAgICAgICAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA0ZDdlNWMx
NDdmZmFjMzA1OTYyMmE5MDQ3MmUxMmJlM2I3MTNmNzBhLi5jMTViYjJhNDkyZGVhMDMzMWNiYjBl
NmQ2NjRlODc3MTVjYThkNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaApAQCAtMzIzLDcgKzMyMyw3IEBAIGNsYXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIGJvb2wgY2FuQ2FjaGVHZW5lcmljUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNv
bnN0OwogICAgIGJvb2wgY2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHkoKSBjb25zdDsKIAotICAg
IHZvaWQgZ2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0mLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVj
dHVyZShWTSYsIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlv
blR5cGUpOwogCiAgICAgSlNTdHJpbmcqIG9iamVjdFRvU3RyaW5nVmFsdWUoKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cAppbmRleCA5OWNlNjg2Mjc0ZmQ3NzM5MjhkZGQ1OWZmMWY5Y2FmNGVlYmUyMTFlLi4xOGU3Mjgy
YjQ3YjhjMTc0NWE3MmQ5ZmU5ZDU1OGQ2NjViMWNjNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3
IEBACiB9CiAKICNkZWZpbmUgSU5JVElBTElaRV9XRUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAot
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUp
LCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUu
aW1wbCgpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNy
ZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjU3ltYm9sLmltcGwoKSksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggMjY2Yjk3ZTRjODg2NjdiZjE0NjBlN2I5MWJiMDUxYzRi
YTUzODk3Yi4uMmUxODNlM2NiYWQ4ZmYxNzYwMzgxYTlhZjljM2RkNWU0ZDI3MjhkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTI3MywxNCArMjczLDE0IEBAIGNsYXNzIFN0cmluZ0lt
cGwgewogICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRy
dWUpOwogICAgIH0KIAotICAgIGVudW0gQ3JlYXRlRW1wdHlVbmlxdWVUYWcgeyBDcmVhdGVFbXB0
eVVuaXF1ZSB9OwotICAgIFN0cmluZ0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWVUYWcpCisgICAgZW51
bSBDcmVhdGVVbmlxdWVFbXB0eVRhZyB7IENyZWF0ZVVuaXF1ZUVtcHR5IH07CisgICAgU3RyaW5n
SW1wbChDcmVhdGVVbmlxdWVFbXB0eVRhZywgYm9vbCBpc1ByaXZhdGUpCiAgICAgICAgIDogbV9y
ZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAg
ICAgIC8vIFdlIGV4cGVjdCBtX2xlbmd0aCB0byBiZSBpbml0aWFsaXplZCB0byAwIGFzIHdlIHVz
ZSBpdAogICAgICAgICAvLyB0byByZXByZXNlbnQgYSBudWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgog
ICAgICAgICAsIG1fZGF0YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0
aCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHNfaGFz
aEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwpKQorICAgICAgICAsIG1faGFzaEFuZEZs
YWdzKGhhc2hBbmRGbGFnc0ZvclVuaXF1ZShzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlcklu
dGVybmFsIHwgKGlzUHJpdmF0ZSA/IHNfaGFzaEZsYWdJc1ByaXZhdGUgOiAwKSkpCiAgICAgewog
ICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAKQEAgLTM4MCw3ICszODAsMTIgQEAgY2xhc3MgU3Ry
aW5nSW1wbCB7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlVW5pcXVlRW1wdHkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3Ry
aW5nSW1wbChDcmVhdGVFbXB0eVVuaXF1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHJpbmdJbXBsKENyZWF0ZVVuaXF1ZUVtcHR5LCBmYWxzZSkpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlxdWVQcml2YXRlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlVW5p
cXVlRW1wdHksIHRydWUpKTsKICAgICB9CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlxdWUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXApOwpAQCAtMzk1LDYgKzQwMCw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIHN0YXRpYyB1
bnNpZ25lZCBmbGFnSXM4Qml0KCkgeyByZXR1cm4gc19oYXNoRmxhZzhCaXRCdWZmZXI7IH0KICAg
ICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzQXRvbWljKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzQXRv
bWljOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc1VuaXF1ZSgpIHsgcmV0dXJuIHNfaGFz
aEZsYWdJc1VuaXF1ZTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNQcml2YXRlKCkgeyBy
ZXR1cm4gc19oYXNoRmxhZ0lzUHJpdmF0ZTsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CkBAIC00NTYsNiArNDYyLDggQEAgY2xhc3MgU3RyaW5n
SW1wbCB7CiAKICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxh
Z3MgJiBzX2hhc2hGbGFnSXNVbmlxdWU7IH0KIAorICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNQcml2YXRlOyB9CisKICAgICBi
b29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFn
SXNBdG9taWM7IH0KICAgICB2b2lkIHNldElzQXRvbWljKGJvb2wgaXNBdG9taWMpCiAgICAgewpA
QCAtNzc4LDExICs3ODYsMTIgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcgPSAweDE7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRJbmNyZW1lbnQgPSAweDI7IC8vIFRoaXMgYWxsb3dz
IHVzIHRvIHJlZiAvIGRlcmVmIHdpdGhvdXQgZGlzdHVyYmluZyB0aGUgc3RhdGljIHN0cmluZyBm
bGFnLgogCi0gICAgLy8gVGhlIGJvdHRvbSA3IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDc7CisgICAgLy8gVGhlIGJv
dHRvbSA4IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX2ZsYWdDb3VudCA9IDg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01h
c2sgPSAoMXUgPDwgc19mbGFnQ291bnQpIC0gMTsKICAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdD
b3VudCA8PSBTdHJpbmdIYXNoZXI6OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vu
b3VnaF9iaXRzX2Zvcl9TdHJpbmdJbXBsX2ZsYWdzKTsKIAorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX2hhc2hGbGFnSXNQcml2YXRlID0gMXUgPDwgNzsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19oYXNoRmxhZ0lzVW5pcXVlID0gMXUgPDwgNjsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19oYXNoRmxhZzhCaXRCdWZmZXIgPSAxdSA8PCA1OwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2hhc2hGbGFnSXNBdG9taWMgPSAxdSA8PCA0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5k
ZXggMTZiOWNkNTE3NjBjZjRlNTJlYmQyM2I3OWQyZjM1MzMzMDY3ZTJhYi4uNTY3MDcxZTM3OWQ3
ZjQxMWViYWJjODhkNmViYjYwM2JiYzFiMzc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0xNTMx
Miw3ICsxNTMxMiw2IEBAIF9fWk43V2ViQ29yZTI2anNIVE1MTWV0YUVsZW1lbnRIdHRwRXF1aXZF
UE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvCiBfX1pON1dlYkNvcmUxN0pT
VGltZVJhbmdlc093bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VOM0pTQzZIYW5kbGVJ
TlMxXzdVbmtub3duRUVFUHZSTlMxXzExU2xvdFZpc2l0b3JFCiBfX1pON1dlYkNvcmUxN0pTVGlt
ZVJhbmdlc093bmVyOGZpbmFsaXplRU4zSlNDNkhhbmRsZUlOUzFfN1Vua25vd25FRUVQdgogX19a
TjdXZWJDb3JlMTJKU1RpbWVSYW5nZXM3ZGVzdHJveUVQTjNKU0M2SlNDZWxsRQotX19aTjdXZWJD
b3JlMTBKU05vZGVMaXN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMx
XzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9k
ZUUKIF9fWkwxOWtDTVRpbWVaZXJvRnVuY3Rpb252CiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVs
ZW1lbnQzNWNoYW5nZU5ldHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlRXYKIF9fWk5LN1dlYkNv
cmUzME1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjE1bWluVGltZVNlZWthYmxlRXYKQEAg
LTE3OTU5LDcgKzE3OTU4LDYgQEAgX19aTjdXZWJDb3JlMTFKU0RPTVBsdWdpbjExaW5kZXhHZXR0
ZXJFUE4zSlNDOUV4ZWNTdGF0ZUVOUzFfN0pTVmFsdWVFagogX19aTjdXZWJDb3JlOURPTVBsdWdp
bjRpdGVtRWoKIF9fWk43V2ViQ29yZTE3anNET01NaW1lVHlwZVR5cGVFUE4zSlNDOUV4ZWNTdGF0
ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydHlOYW1lRQogX19aTks3V2ViQ29yZTExRE9NTWlt
ZVR5cGU0dHlwZUV2Ci1fX1pON1dlYkNvcmU5SlNTdG9yYWdlMTlnZXRPd25Qcm9wZXJ0eU5hbWVz
RVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5
RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk5LN1dlYkNvcmUxOFJlbmRlclRleHRGcmFnbWVu
dDE0aXNUZXh0RnJhZ21lbnRFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNWhhbmRsZVRl
eHROb2RlRmlyc3RMZXR0ZXJFUE5TXzE4UmVuZGVyVGV4dEZyYWdtZW50RQogX19aTjNXVEYxMlN0
cmluZ0FwcGVuZElOU182U3RyaW5nRVBLY0U3d3JpdGVUb0VQdApAQCAtMTgyMjgsOCArMTgyMjYs
NiBAQCBfX1pOSzdXZWJDb3JlMjNSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDI5Y29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxXaWR0aHNFUk5TXzEwTGF5bwogX19aTks3V2ViQ29yZTExUmVuZGVyVGhlbWUy
MGZpbGVMaXN0RGVmYXVsdExhYmVsRWIKIF9fWk43V2ViQ29yZTI5ZmlsZUJ1dHRvbk5vRmlsZVNl
bGVjdGVkTGFiZWxFdgogX19aTks3V2ViQ29yZTIzUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wzNnJl
cXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbkV2Ci1fX1pON1dlYkNvcmUxMUpTRE9N
V2luZG93MTZnZXRQcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVF
Uk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKLV9fWk43V2Vi
Q29yZTExSlNET01XaW5kb3cxOWdldE93blByb3BlcnR5TmFtZXNFUE4zSlNDOEpTT2JqZWN0RVBO
UzFfOUV4ZWNTdGF0ZUVSTlMxXzE3UHJvcGVydHlOYW1lQXJyYXlFTlMxXzE1RW51bWVyYXRpb25N
b2RlRQogX19aTjdXZWJDb3JlOURPTVdpbmRvdzE4Y2FuU2hvd01vZGFsRGlhbG9nRVBLTlNfNUZy
YW1lRQogX19aTks3V2ViQ29yZTZDaHJvbWUxMWNhblJ1bk1vZGFsRXYKIF9fWk43V2ViQ29yZTMx
anNYTUxIdHRwUmVxdWVzdFdpdGhDcmVkZW50aWFsc0VQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNW
YWx1ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCkBAIC0xODI3Miw3ICsxODI2OCw2IEBAIF9fWk43V2Vi
Q29yZTIyanNET01XaW5kb3dPbm1vdXNlZG93bkVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1
ZUVOUzBfMTJQcm9wZXJ0CiBfX1pON1dlYkNvcmUyNGpzRE9NV2luZG93T25jb250ZXh0bWVudUVQ
TjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCiBfX1pOSzdX
ZWJDb3JlMTNGaWxlSW5wdXRUeXBlMjBzYXZlRm9ybUNvbnRyb2xTdGF0ZUV2CiBfX1pON1dlYkNv
cmUyM1JlbmRlckZpbGVVcGxvYWRDb250cm9sRDBFdgotX19aTjdXZWJDb3JlMTBKU0xvY2F0aW9u
MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5T
MV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDMThn
ZXRTdGF0aWNWYWx1ZVNsb3RJTjdXZWJDb3JlMTVKU0RPTVN0cmluZ0xpc3RFTlMxXzEySlNET01X
cmFwcGVyRUVFYlBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hUYWJsZUVQVF9OU18xMlByb3BlcnR5
TmFtZUVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pON1dlYkNvcmUyNEpTRE9NU3RyaW5nTGlzdFBy
b3RvdHlwZTE4Z2V0T3duUHJvcGVydHlTbG90RVBOM0pTQzZKU0NlbGxFUE5TMV85RXhlY1N0YXRl
RU5TMV8xMlByb3BlcnR5TmFtZUVSTlMxXzEyUHJvcGVydHlTbG90RQogX19aTjdXZWJDb3JlMTFT
VkdGb250RGF0YUMxRVBOU18xOFNWR0ZvbnRGYWNlRWxlbWVudEUKQEAgLTE4NDUzLDcgKzE4NDQ4
LDYgQEAgX19aTjdXZWJDb3JlMTlIVE1MUHJvZ3Jlc3NFbGVtZW50NmF0dGFjaEVSS05TXzROb2Rl
MTNBdHRhY2hDb250ZXh0RQogX19aTks3V2ViQ29yZTE0UmVuZGVyVGhlbWVNYWMyMmFkanVzdFBy
b2dyZXNzQmFyU3R5bGVFUE5TXzEzU3R5bGVSZXNvbHZlckVQTlNfMTFSZW5kZXJTdHlsZUVQTlNf
N0VsZW1lbnRFCiBfX1pON1dlYkNvcmUyMkNTU0NhbGNCaW5hcnlPcGVyYXRpb25EMEV2CiBfX1pO
N1dlYkNvcmUyMUNTU0NhbGNQcmltaXRpdmVWYWx1ZUQwRXYKLV9fWk43V2ViQ29yZTE1SlNET01T
dHJpbmdMaXN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVj
U3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9f
Wk43V2ViQ29yZUwyM2dldEpTRE9NU3RyaW5nTGlzdFRhYmxlRVBOM0pTQzlFeGVjU3RhdGVFCiBf
X1pON1dlYkNvcmVMMjJnZXRKU01lc3NhZ2VFdmVudFRhYmxlRVBOM0pTQzlFeGVjU3RhdGVFCiBf
X1pON1dlYkNvcmVMMzFnZXRKU01lc3NhZ2VFdmVudFByb3RvdHlwZVRhYmxlRVBOM0pTQzlFeGVj
U3RhdGVFCkBAIC0yNzIxMCw3ICsyNzIwNCw2IEBAIF9fWlpON1dlYkNvcmVMMTlzZWxlY3RvcnNG
cm9tU291cmNlRVBLTlNfMTdDU1NSdWxlU291cmNlRGF0YUVSS04zV1RGNlN0cmluZ0VFN2NvCiBf
X1pHVlpON1dlYkNvcmVMMTlzZWxlY3RvcnNGcm9tU291cmNlRVBLTlNfMTdDU1NSdWxlU291cmNl
RGF0YUVSS04zV1RGNlN0cmluZ0VFN2NvbW1lbnQuYgogX19aWk43V2ViQ29yZTIySW5zcGVjdG9y
VGltZWxpbmVBZ2VudDI0aW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lRU4zV1RGMTBQYXNzUmVmUHRy
SU5TXzE1SW5zcGVjdG9yT2JqZWN0RUVFUktOUzFfNlN0cmluZ0VTN19FN3Byb2dyYW0KIF9fWkdW
Wk43V2ViQ29yZTIySW5zcGVjdG9yVGltZWxpbmVBZ2VudDI0aW5uZXJBZGRSZWNvcmRUb1RpbWVs
aW5lRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1SW5zcGVjdG9yT2JqZWN0RUVFUktOUzFfNlN0cmlu
Z0VTN19FN3Byb2dyYW0uYgotX19aWk43V2ViQ29yZTIxSlNDU1NTdHlsZURlY2xhcmF0aW9uMTln
ZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8x
N1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUVFMTlwcm9wZXJ0eUlkZW50
aWZpZXJzCiBfX1paTjdXZWJDb3JlMjNKU0luc3BlY3RvckZyb250ZW5kSG9zdDhwbGF0Zm9ybUVQ
TjNKU0M5RXhlY1N0YXRlRUU4cGxhdGZvcm0KIF9fWkdWWk43V2ViQ29yZTIzSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3Q4cGxhdGZvcm1FUE4zSlNDOUV4ZWNTdGF0ZUVFOHBsYXRmb3JtLmIKIF9fWlpO
N1dlYkNvcmUyM0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0NHBvcnRFUE4zSlNDOUV4ZWNTdGF0ZUVF
NHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKaW5kZXggZGY0
ZGM3ODYyZDJkYWFhOWYyYjY3NmQxZWQzMTcyYTJmM2VhZmQyOS4uM2NjOWY1NDk3NDJkZjQzZjkw
ZTJlZTJjMTExYTQ4NDBhYjMwOGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGlj
dGlvbmFyeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9w
ZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtYXApIGMKICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKICAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlv
blR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5hbWVz
LmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5nKCk7
CiAgICAgICAgIGlmIChzdHJpbmdLZXkuaXNFbXB0eSgpKQpAQCAtODgsNyArODgsNyBAQCBib29s
IERpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMoVmVjdG9yPFN0cmluZz4mIG5hbWVzKSBj
b25zdAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsKIAog
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgSlNPYmplY3Q6
OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVu
dW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3Bl
cnR5TmFtZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0LT5z
dHJpbmcoKTsKICAgICAgICAgaWYgKCFzdHJpbmdLZXkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHAKaW5kZXggODk2Yjk5Y2U5MWI3MmM2Y2ZlODAyYjE3Y2JkMDcwZjI0NWQ0YTQ3ZC4uYTU1
NTQ1ZmM1M2ZiZDQ2OGU5M2FjMWU5NzY0OWU5YzI3YjBiNDQ4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwCkBAIC0zODIsNyArMzgyLDcgQEAgSlNWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiB0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihjc3NWYWx1ZSkpOwogfQogCi12b2lkIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUg
dHlwZSkKIHsKICAgICBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBKU0NT
U1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGUKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7
ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQocHJvcGVydHlJZGVudGlmaWVyc1tpXSk7
CiAKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3Ry
aW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcAppbmRleCAzYWZhYWUyMzQwNzc0OWFjN2E5ZjI3MjBmM2Y4OTdmMGJlNTdj
ZGU3Li4wY2RjMDY1YTA0NDIxNmFjMmUyMTg4ZDEyZDgyMzIyYmQ4ZDFkOWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBA
IC00Niw3ICs0Niw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5U2xvdERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25U
eXBlIHR5cGUpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNE
T01TdHJpbmdNYXAqPihvYmplY3QpOwogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwpAQCAtNTUs
NyArNTUsNyBAQCB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIo
ZXhlYywgbmFtZXNbaV0pKTsKIAotICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKIH0K
IAogYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDAyNjA4ZmE2ZTRlMmY1NzFl
NGIzNzFlNjgxOWY4OTMyM2E4OTJhOWEuLmY0Y2NjMWExNDEzNTk1M2JmOGNkYTRiYmJiNmIxYTU4
MDdmMDExYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKQEAgLTM4NCw0MCArMzg0LDQwIEBAIHVpbnQzMl90IEpTRE9NV2luZG93Ojpn
ZXRFbnVtZXJhYmxlTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKICAg
ICByZXR1cm4gQmFzZTo6Z2V0RW51bWVyYWJsZUxlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKIH0K
IAotdm9pZCBKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNET01XaW5kb3c6OmdldFN0cnVjdHVyZVBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9u
VHlwZSB0eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9N
V2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVy
YXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwo
KSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldFN0
cnVjdHVyZVByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSwgdHlwZSk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3c6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0RPTVdpbmRvdzo6Z2V0
R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVu
dW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cg
dG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPmltcGwoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRHZW5lcmljUHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNl
OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlLCB0eXBlKTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNET01XaW5kb3c6OmdldFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9u
VHlwZSB0eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9N
V2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVy
YXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwo
KSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldFByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKLXZv
aWQgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCit2b2lkIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsKICAg
ICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7
CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQogICAgICAgICByZXR1
cm47Ci0gICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBib29sIEpTRE9NV2lu
ZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggODI1ODI3MDA5
ZjljN2Y4ZGE4YmE5NjM2Nzc4OTE2MjZlMDNkYWZkYy4uOGM5Mjg0NGQxNTJjNDhhMzBmMGI3M2Ez
MmJjNGYyMTU3MzU0NTk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hp
c3RvcnlDdXN0b20uY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBib29sIEpTSGlzdG9yeTo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcgogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTSGlzdG9yeTo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51
bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTSGlzdG9yeSo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgaGlzdG9yeSBvYmpl
Y3QgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICgh
c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgp
KSkKICAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKIH0K
IAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnN0YXRlKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggZjE1
OGEyZjRmODQ3OWNhYmEyMzJjNmUwMjgyYTBjMGFlMWYyNjg0MS4uYzg3ZTNiNmJjNjY1ZWRhZGU4
Y2VlZjJhMTdjYTdmMzQyM2M3OTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTExNiwxMyArMTE2LDEzIEBAIGJvb2wgSlNMb2Nh
dGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBwCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi12b2lkIEpTTG9jYXRpb246OmdldE93
blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpT
TG9jYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUg
bG9jYXRpb24gb2JqZWN0IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdp
bi4KICAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5p
bXBsKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6
OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSwgdHlwZSk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRl
eCA5NDJjNGRmYjZlN2U2OGY4OWEwY2Y3OWQ1NDVlMzE5MTQ2YmMyNzM3Li4yNzM5YTU4Njk1ZDE2
MzMzNzcyNDQwMmE2YTlmNWRiYzMwMTdiYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBKU1N0b3Jh
Z2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHIKICAgICByZXR1cm4gZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAotdm9pZCBKU1N0b3JhZ2U6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lk
IEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTU3RvcmFnZSo+KG9iamVjdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93
blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlw
ZSk7CiB9CiAKIGJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCBkY2E1NjAzZjljMzk5NjE4MzM4YWY3ZTBkYjMxYWRmMTBjYjZiNmY5Li4y
NTA2NTljNmFmYTdjYjYzZGFiNmRjNDMwNTUxZDcwZTQ4YWNhZmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEy
NDgsNyArMTI0OCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6
c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNrLnJl
bW92ZUxhc3QoKTsKIAogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQ
cm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXktPm1l
dGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwgbV9leGVjLCBw
cm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAg
ICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBAIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUg
aW4pCiAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3QpOwog
ICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHBy
b3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAgICAg
ICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluT2Jq
ZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKyAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAgICAg
ICAgICBGQUxMVEhST1VHSDsKQEAgLTEzODEsNyArMTM4MSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihvYmplY3QpIHx8
IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihvYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOworICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogICAg
ICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8g
b2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjk4ZjMzZDFjNDk1YzMwZThiMTVmYThh
NGY3MzAxY2IxMmRjYTRlNS4uODU3Mzk2OGIwMzkwYWM4NWI0NmI1NjRkY2ZkMmY4NGMyNDc0ZTYx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KQEAgLTk1MywxNiArOTUzLDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAg
IyBDdXN0b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2luZG93CiAg
ICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVt
ZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmlj
UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMo
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYs
IEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBK
U0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9s
KTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcywgSlNDOjpFbnVtZXJhdGlvblR5cGUgPSBKU0M6OkVudW1lcmF0
aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1l
cmF0aW9uTW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgSlNDOjpFbnVtZXJh
dGlvblR5cGUgPSBKU0M6OkVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7XG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0RW51bWVy
YWJsZUxlbmd0aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwogICAgICAg
ICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsK
ICAgICB9CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQcm9w
ZXJ0eSJ9IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1l
cmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwor
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzLCBKU0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51bWVyYXRpb25UeXBlOjpFeGNs
dWRlU3ltYm9sKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsgICAgICAgCiAgICAgfQogCkBAIC0yNjg0LDEzICsyNjg0
LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRpbmRl
eGVkR2V0dGVyRnVuY3Rpb24gJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dm9pZCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7
Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgp
OyBpIDwgY291bnQ7ICsraSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7XG4iKTsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTtcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAppbmRleCAx
ZDU5MTg5YjQ3MjA1MTE3MTc5YzYzOWE2MDViMzA4NmVkZGJmNmVmLi5mOTk1ZjRkY2NlNGQ0ZWFm
YzVjODdjNmQ5YzE1NzkxNTc4Mzc2YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKQEAgLTIzNSwx
MyArMjM1LDEzIEBAIHZvaWQgSlNGbG9hdDY0QXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKCiAgICAgQmFzZTo6cHV0QnlJbmRl
eChjZWxsLCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotdm9pZCBKU0Zs
b2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSkKK3ZvaWQgSlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAg
IEpTRmxvYXQ2NEFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4ob2Jq
ZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PEZsb2F0NjRBcnJheSo+
KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJh
c2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSwgdHlwZSk7CiB9CiAKIEpTVmFsdWUgSlNGbG9hdDY0QXJyYXk6OmdldENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFy
cmF5LmgKaW5kZXggZmYzODhjYTAxNzYwYzEyYjk1NzUwMzlmZWM3NjQzMjkzZmU4NGUzNC4uN2Y4
ZTRkNWY4NmFkZjQ3MGUwYjM4NGUyY2Q4NmE0YzYwOTFkOWRkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgK
QEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSlNGbG9hdDY0QXJyYXkgOiBwdWJsaWMgSlNBcnJheUJ1
ZmZlclZpZXcgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlND
OjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEpTQzo6
RW51bWVyYXRpb25UeXBlID0gSlNDOjpFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwog
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgRmxvYXQ2NEFycmF5KiBpbXBsKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAwNjdmODM5OTM1MjM1MzAwNTc4MTEw
NzFkMDczZjI1YWI3OGJhNjdkLi5hYjFlM2RhYzc5ODIyYjJhMTc0ODZmOGZmZmY1MWE1N2I1MTVk
OWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTIxOCwxMyArMjE4LDEzIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCosIEVuY29kZWRKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RF
dmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCi12b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU1Rlc3RFdmVudFRh
cmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyAr
K2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkp
OwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0
RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggZWZmMWE2MmVkNWFjYzY4YWVlODFh
ZjBmNzBjZTQ2ZDUxZmEyNjgzMy4uMjE3ODc4MmQxMWE0M2U2YjNmZjNjMjhkOTk4Njc1YWViZWY5
OGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgSlNU
ZXN0RXZlbnRUYXJnZXQgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25N
b2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBKU0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51bWVy
YXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmluZGV4IDkwMDEwMTM4YWI0NmNlN2Q5NzUzY2JmZjI5
NWU1M2NkZmFjZDBiNWEuLjE4YjA2YTEwZWFmMmVkOTA5ZDkwN2E3ZTk0ODcwMjA2Mzg5YTE4MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBA
IGJvb2wgX05QTl9FbnVtZXJhdGUoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyKiogaWRl
bnRpZmllciwgdWludDMyX3QqIGNvdW50CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwogCi0gICAg
ICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+aW1wLCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAg
b2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlw
ZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgcmVhbGx5IGNhbGwgTlBOX01lbUFsbG9jIGJ1dCB0aGF0J3MgaW4gV2ViS2l0CiAgICAg
ICAgIE5QSWRlbnRpZmllciogaWRlbnRpZmllcnMgPSBzdGF0aWNfY2FzdDxOUElkZW50aWZpZXIq
PihtYWxsb2Moc2l6ZW9mKE5QSWRlbnRpZmllcikgKiBzaXplKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggMDIyMjE5MDVjNDBlNmVkZmVkNTc5OTllYjIzNWY1
ODkxYTdhMmUwOC4uNTE3MjQ0YjIyMDRmNGMxYjU3MjcxYjFiYzc3ZmY2ZTQ0NzJkZjU5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtNjgsNyArNjgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgRW5jb2RlZEpTVgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIodGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpKTsKIH0KIAotdm9pZCBSdW50aW1lQXJyYXk6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lk
IFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgUnVudGltZUFycmF5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KG9iamVjdCk7CiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCk7CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
UnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVyCiAgICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMobW9kZSkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpOwogCi0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9
CiAKIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCBiNmQxZjY4
OTEzN2MxNGI2MzcyMTM4YmFkYWI0MzAwMTBiNDE2YmY4Li5jMDI3ODJjOWY3NTkwMjY2ZDU0NGQ3
NWE1NGMyYzQ0MjljNzJlNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgK
QEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgewog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wg
bmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1l
cmF0aW9uVHlwZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggOTFmMDdiYzUzN2NmMGYzZjIw
MzBmNWVkNGZlZWM2MzI3MjRlYjIzOC4uOTY4NzhmZmY0Y2QxNmQ5OGY2NmNkNTQzMzc5NGRjY2Uz
MDVhM2E0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC0y
NTQsNyArMjU0LDcgQEAgQ29uc3RydWN0VHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0RGF0YSYgY29uc3QKICAgICByZXR1cm4gQ29uc3Ry
dWN0VHlwZUhvc3Q7CiB9CiAKLXZvaWQgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUpCit2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93
blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5
cGUpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2Jq
ZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggNGQ5Nzc3YTk5M2E5ZjNlYWYzZjgz
OGNlMjI0NjdjNjQ0YjEwNDljMi4uYzRjOWQzZmNjYzYzNzJlMmEzMjg1OWUwNWMxN2E0YzUwNmRl
OGRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTUyLDcgKzUy
LDcgQEAgY2xhc3MgUnVudGltZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0
Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsK
IAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggMWNlZDI5
M2ViOGNjYzc3ZDM3MDliOWJkMzk4MDhjYzM5ODEyNzM3Ny4uZTE4ODE5OGExODYxYmRkODhjZDk2
OWVkZGY5YTUzZGFlZWIyMzgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMzY5LDcgKzM2OSw3
IEBAIGJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBOUElk
ZW50aWZpZXIgcHJvcGVydHlOYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTTlBP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lQXJyYXksIEVudW1lcmF0aW9uTW9k
ZSkKK3ZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVBcnJheSwg
RW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpCiB7CiAgICAgSlNOUE9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCA3OWRh
ZjViOTBmNzA1Y2UzMGE2ZmM5NWY5NGViMjgwZjBkZmJiZGZhLi5kZGQ3MTM4NWM3YmIyZDBhYWNk
M2YzNDg1MmY3MGI2YTVmYzZkNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTkzLDcgKzkzLDcgQEAg
Y2xhc3MgSlNOUE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAog
ICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpFeGVjU3RhdGUqLCBOUElkZW50aWZpZXIgcHJv
cGVydHlOYW1lKTsKIAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6
RW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBK
U0M6OkVudW1lcmF0aW9uTW9kZSwgSlNDOjpFbnVtZXJhdGlvblR5cGUpOwogCiAgICAgc3RhdGlj
IEpTQzo6RW5jb2RlZEpTVmFsdWUgcHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIG1ldGhvZEdldHRlcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBKU09iamVjdC5jcHAKaW5kZXggMGQxNjY3NGU1YzE1ZjQ3MTcxODU0M2QyNWNhNGYzMTA5
YzA1MmQyMi4uZWYzNWI5OGYxYmU1YzMzMjkyYTA2ZTNiZWNkZGI3ZmJmMWVlMjA3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UEpTT2JqZWN0LmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgTlBKU09iamVjdDo6ZW51bWVy
YXRlKE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXJzLCB1aW50MzJfdCogaWRlbnRpZmllckNvdW50
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFBy
b3BlcnR5TmFtZXMobV9qc09iamVjdC5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0
UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwog
CiAgICAgTlBJZGVudGlmaWVyKiBuYW1lSWRlbnRpZmllcnMgPSBucG5NZW1OZXdBcnJheTxOUElk
ZW50aWZpZXI+KHByb3BlcnR5TmFtZXMuc2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvbWFjL1dlYktpdDIub3JkZXIgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRl
cgppbmRleCBhZTYyNWY3YzE2YzZiYWY1NDA3NDlhY2ViNDY1ZjI3MjM3NWY5YzViLi4wNTRhYmI0
NmNjYzRmZWY0YzA0NmU0NGI1ZGU2YzUzOGM4MjhjNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5v
cmRlcgpAQCAtOTQyNCw3ICs5NDI0LDYgQEAgX19aTjNXVEY2VmVjdG9ySU42V2ViS2l0MTZOUElk
ZW50aWZpZXJEYXRhRUxtMEVOU18xNUNyYXNoT25PdmVyZmxvd0VFNnNocmlua0VtCiBfX1pON0Nv
cmVJUEMxMEFyZ3VtZW50czJJUmJSTjNXVEY2VmVjdG9ySU42V2ViS2l0MTZOUElkZW50aWZpZXJE
YXRhRUxtMEVOUzJfMTVDcmFzaE9uT3ZlcmZsb3dFRUVFNmRlY29kZUVSTlNfMTVBcmd1bWVudERl
Y29kZXJFUlM5XwogX19aTjdDb3JlSVBDMTlWZWN0b3JBcmd1bWVudENvZGVySUxiMEVONldlYktp
dDE2TlBJZGVudGlmaWVyRGF0YUVFNmRlY29kZUVSTlNfMTVBcmd1bWVudERlY29kZXJFUk4zV1RG
NlZlY3RvcklTMl9MbTBFTlM2XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pOM1dURjZWZWN0b3JJ
TjZXZWJLaXQxNk5QSWRlbnRpZmllckRhdGFFTG0wRU5TXzE1Q3Jhc2hPbk92ZXJmbG93RUUxNHNo
cmlua0NhcGFjaXR5RW0KLV9fWk42V2ViS2l0MTBKU05QT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5h
bWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk42V2ViS2l0TDIwTlBOX0dldEludElkZW50
aWZpZXJFaQogX19aTjZXZWJLaXRMMTNOUE5fSGFzTWV0aG9kRVA0X05QUFA4TlBPYmplY3RQdgog
X19aTjZXZWJLaXQxME5QSlNPYmplY3QxMk5QX0hhc01ldGhvZEVQOE5QT2JqZWN0UHYKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA0ZDcxZDA3ZmIwMDMzYTBmNjEyNGY2NzI2YWE4OGZkY2UyZDBiYjU1Li42OTVjOGRjYjczNDBj
MDg0OTVkZjllNDU2ZTRhNzAwNzUyNzAzMTQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUt
MDItMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL29iamVjdC1nZXQtb3duLXBy
b3BlcnR5LXN5bWJvbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9vYmplY3Qt
Z2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3Njcmlw
dC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGZvckluKToKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9w
ZXJ0eS5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFu
ZC1mcmVlemUuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0
aC1qc29uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtd2l0aC1qc29uLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvc3ltYm9sLXdpdGgtanNvbi5odG1sOiBBZGRlZC4KKwogMjAxNS0wMi0w
NSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgRUZMIGdhcmRlbmluZy4gU2V0IGFsbCB0ZXN0cyBvZiBzdmcvVzNDLVNWRy0xLjEg
YW5kIHN2Zy9XM0MtU1ZHLTEuMS1TRSB0byBmbGFreS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjM0OGJjNGY3YWMxM2NmOTBlNmM5MDdiMWMyYzQ4NDNkMzAzMWFkZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJv
bHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdHMgT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3ByaXZh
dGUgbmFtZXMgZm9yIHByaXZpbGVnZWQgY29kZSBzaG91bGQgbm90IGJlIGV4cG9zZWQuCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZ2xvYmFsKS5sZW5ndGggaXMgMAorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCBpcyAwCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0gaXMgc3ltYm9sCitQQVNTIGZvckluKG9i
amVjdCkubGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGggaXMgMAor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCBpcyAwCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMAorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuaHRtbCBiL0xh
eW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xZjFmMjU5YTIzOWMxMWQ5NTFkZGI4ZDBlOGNlZDA2OTg5YzNkMjg4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9v
YmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVi
ZGE0YWE2MWM1YzE3ODIyNzBjMzM0MGExZjA0YzkwNjk5MWY4YwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1i
b2xzLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2Rlc2NyaXB0aW9uKAorIlRoaXMgdGVzdHMgT2JqZWN0
LmdldE93blByb3BlcnR5U3ltYm9scy4iCispOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJy
ZXR1cm4gdGhpcyIpKCkpOworCitkZWJ1ZygicHJpdmF0ZSBuYW1lcyBmb3IgcHJpdmlsZWdlZCBj
b2RlIHNob3VsZCBub3QgYmUgZXhwb3NlZC4iKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzKGdsb2JhbCkubGVuZ3RoIiwgIjAiKTsKKwordmFyIG9iamVjdCA9IHt9Owor
dmFyIHN5bWJvbCA9IFN5bWJvbCgiQ29jb2EiKTsKK29iamVjdFtzeW1ib2xdID0gIkNhcHB1Y2Np
bm8iOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3Ro
IiwgIjAiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCku
bGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9i
amVjdClbMF0iLCAic3ltYm9sIik7CisKK2Z1bmN0aW9uIGZvckluKG9iaikgeworICAgIHZhciBh
cnJheSA9IFtdOworICAgIC8vIFN5bWJvbCBzaG91bGQgbm90IGJlIGVudW1lcmF0ZWQuCisgICAg
Zm9yICh2YXIga2V5IGluIG9iaikgYXJyYXkucHVzaChrZXkpOworICAgIHJldHVybiBhcnJheTsK
K30KKworc2hvdWxkQmUoImZvckluKG9iamVjdCkubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJP
YmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCIsICIwIik7CisKK2RlbGV0ZSBvYmplY3Rbc3ltYm9s
XTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCIs
ICIwIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxl
bmd0aCIsICIwIik7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qcyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgwZmRmNWUzZDkwZjY4NWYyMTIyZDY2NzIyNWU3ZDM0ZGU4NjRhZDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9w
ZXJ0eS5qcwpAQCAtMCwwICsxLDQyIEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRlc3RzIE9iamVj
dC5jcmVhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMg
d29yayB3aXRoIFN5bWJvbC4iCispOworCitkZWJ1ZygiT2JqZWN0LmNyZWF0ZSB3aXRoIFN5bWJv
bCIpOwordmFyIG9iamVjdCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LnByb3RvdHlwZSwgeworICAg
IFtTeW1ib2wuaXRlcmF0b3JdOiB7CisgICAgICAgIHZhbHVlOiA0MgorICAgIH0KK30pOworc2hv
dWxkQmVUcnVlKCJvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSIpOworc2hv
dWxkQmVGYWxzZSgib2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJvbC5pdGVyYXRvciki
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIiwgJ3sidmFsdWUiOjQy
LCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUiOmZhbHNl
fScpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5n
dGgiLCAiMSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0
KVswXSIsICJTeW1ib2wuaXRlcmF0b3IiKTsKKworCitkZWJ1ZygiT2JqZWN0LmRlZmluZVByb3Bl
cnRpZXMgd2l0aCBTeW1ib2wiKTsKK3ZhciBvYmplY3QgPSBPYmplY3QuZGVmaW5lUHJvcGVydGll
cyh7fSwgeworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7CisgICAgICAgIHZhbHVlOiA0MgorICAg
IH0KK30pOworCitzaG91bGRCZVRydWUoIm9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRl
cmF0b3IpIik7CitzaG91bGRCZUZhbHNlKCJvYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3lt
Ym9sLml0ZXJhdG9yKSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSki
LCAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjpmYWxzZSwiZW51bWVyYWJsZSI6ZmFsc2UsImNvbmZp
Z3VyYWJsZSI6ZmFsc2V9Jyk7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyhvYmplY3QpLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scyhvYmplY3QpWzBdIiwgIlN5bWJvbC5pdGVyYXRvciIpOworCitkZWJ1ZygiT2JqZWN0
LmRlZmluZVByb3BlcnR5IHdpdGggU3ltYm9sIik7Cit2YXIgb2JqZWN0ID0gT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHt9LCBTeW1ib2wuaXRlcmF0b3IsIHsKKyAgICB2YWx1ZTogNDIKK30pOworCitz
aG91bGRCZVRydWUoIm9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIik7Citz
aG91bGRCZUZhbHNlKCJvYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9sLml0ZXJhdG9y
KSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkiLCAneyJ2YWx1ZSI6
NDIsIndyaXRhYmxlIjpmYWxzZSwiZW51bWVyYWJsZSI6ZmFsc2UsImNvbmZpZ3VyYWJsZSI6ZmFs
c2V9Jyk7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxl
bmd0aCIsICIxIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmpl
Y3QpWzBdIiwgIlN5bWJvbC5pdGVyYXRvciIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFu
ZC1mcmVlemUuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLXNlYWwtYW5k
LWZyZWV6ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGViNGJhODI0YTZmYWU5ZmViN2Y0NTkzNmIyNDI0YWRi
OGEwZWViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5
bWJvbC1zZWFsLWFuZC1mcmVlemUuanMKQEAgLTAsMCArMSwyMyBAQAorZGVzY3JpcHRpb24oCisi
VGhpcyB0ZXN0cyBPYmplY3Quc2VhbCBhbmQgT2JqZWN0LmZyZWV6ZSBhZmZlY3Qgb24gU3ltYm9s
IHByb3BlcnRpZXMuIgorKTsKKwordmFyIG9iamVjdCA9IHsKKyAgICBbU3ltYm9sLml0ZXJhdG9y
XTogNDIKK307CisKK3Nob3VsZEJlVHJ1ZSgib2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5p
dGVyYXRvcikiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnkoT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIiwgJ3si
dmFsdWUiOjQyLCJ3cml0YWJsZSI6dHJ1ZSwiZW51bWVyYWJsZSI6dHJ1ZSwiY29uZmlndXJhYmxl
Ijp0cnVlfScpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0
KS5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMo
b2JqZWN0KVswXSIsICJTeW1ib2wuaXRlcmF0b3IiKTsKKworZGVidWcoIk9iamVjdC5zZWFsKG9i
amVjdCkiKTsKK09iamVjdC5zZWFsKG9iamVjdCk7CitzaG91bGRCZVRydWUoIm9iamVjdC5oYXNP
d25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpT
T04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1i
b2wuaXRlcmF0b3IpKSIsICd7InZhbHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUi
OnRydWUsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9Jyk7CisKK2RlYnVnKCJPYmplY3QuZnJlZXplKG9i
amVjdCkiKTsKK09iamVjdC5mcmVlemUob2JqZWN0KTsKK3Nob3VsZEJlVHJ1ZSgib2JqZWN0Lmhh
c093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
SlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5
bWJvbC5pdGVyYXRvcikpIiwgJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFi
bGUiOnRydWUsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9Jyk7CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29uLmpzIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL3N5bWJvbC13aXRoLWpzb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM2NWY5YTE2ZTlm
YjgwM2E0Yzk1MGEwYzM3ZTBjYTVlNjNlMjI4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29uLmpzCkBAIC0wLDAgKzEsMTggQEAK
K2Rlc2NyaXB0aW9uKAorIlRoaXMgdGVzdHMgSlNPTiBjb3JyZWN0bHkgYmVoYXZlcyB3aXRoIFN5
bWJvbC4iCispOworCitkZWJ1ZygiSlNPTi5zdHJpbmdpaWZ5IGRvZXNuJ3Qgc3RyaW5naWZ5IFN5
bWJvbC4iKTsKK3Nob3VsZEJlKCJKU09OLnN0cmluZ2lmeShTeW1ib2woJ0NvY29hJykpIiwgInVu
ZGVmaW5lZCIpOworCit2YXIgb2JqZWN0ID0ge307Cit2YXIgc3ltYm9sID0gU3ltYm9sKCJDb2Nv
YSIpOworb2JqZWN0W3N5bWJvbF0gPSA0MjsKK29iamVjdFsnQ2FwcHVjY2lubyddID0gNDI7Citk
ZWJ1ZygiSlNPTi5zdHJpbmdpaWZ5IGlnbm9yZXMgcHJvcGVydHkgd2l0aCBTeW1ib2wuIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KG9iamVjdCkiLCAneyJDYXBwdWNj
aW5vIjo0Mn0nKTsKKworZGVidWcoIlN5bWJvbHMgaW4gcmVwbGFjZXIgYXJyYXkgYXJlIGlnbm9y
ZWQuIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KG9iamVjdCwgWyBT
eW1ib2woJ0NvY29hJykgXSkiLCAie30iKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2NiNzYxNjdhYjhlNDcyZTEwYjJkNTRmYmQ2YmQwZTljYjY5YmExNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1RoaXMgdGVzdHMgT2JqZWN0LmNyZWF0ZSwg
T2JqZWN0LmRlZmluZVByb3BlcnR5LCBPYmplY3QuZGVmaW5lUHJvcGVydGllcyB3b3JrIHdpdGgg
U3ltYm9sLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworT2JqZWN0LmNyZWF0ZSB3
aXRoIFN5bWJvbAorUEFTUyBvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSBp
cyB0cnVlCitQQVNTIG9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZShTeW1ib2wuaXRlcmF0b3Ip
IGlzIGZhbHNlCitQQVNTIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSBpcyAie1widmFsdWVcIjo0MixcIndyaXRh
YmxlXCI6ZmFsc2UsXCJlbnVtZXJhYmxlXCI6ZmFsc2UsXCJjb25maWd1cmFibGVcIjpmYWxzZX0i
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0gaXMgU3ltYm9sLml0
ZXJhdG9yCitPYmplY3QuZGVmaW5lUHJvcGVydGllcyB3aXRoIFN5bWJvbAorUEFTUyBvYmplY3Qu
aGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSBpcyB0cnVlCitQQVNTIG9iamVjdC5wcm9w
ZXJ0eUlzRW51bWVyYWJsZShTeW1ib2wuaXRlcmF0b3IpIGlzIGZhbHNlCitQQVNTIEpTT04uc3Ry
aW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRl
cmF0b3IpKSBpcyAie1widmFsdWVcIjo0MixcIndyaXRhYmxlXCI6ZmFsc2UsXCJlbnVtZXJhYmxl
XCI6ZmFsc2UsXCJjb25maWd1cmFibGVcIjpmYWxzZX0iCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKG9iamVjdClbMF0gaXMgU3ltYm9sLml0ZXJhdG9yCitPYmplY3QuZGVmaW5lUHJv
cGVydHkgd2l0aCBTeW1ib2wKK1BBU1Mgb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVy
YXRvcikgaXMgdHJ1ZQorUEFTUyBvYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9sLml0
ZXJhdG9yKSBpcyBmYWxzZQorUEFTUyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgaXMgIntcInZhbHVlXCI6NDIs
XCJ3cml0YWJsZVwiOmZhbHNlLFwiZW51bWVyYWJsZVwiOmZhbHNlLFwiY29uZmlndXJhYmxlXCI6
ZmFsc2V9IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3Ro
IGlzIDEKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIGlzIFN5
bWJvbC5pdGVyYXRvcgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVy
dHkuaHRtbCBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44Zjg0MzJhMjZiNDQ0MGM5ZWVmYmFjZmY2ZWMzNTk0ZDVkOGI1ODBjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTVjNTUzOTU2MTc2MGU3NGU1YzRiY2IzM2E3MDkyOTUzNDZlYWVjOAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgdGVzdHMgT2JqZWN0LnNlYWwgYW5k
IE9iamVjdC5mcmVlemUgYWZmZWN0IG9uIFN5bWJvbCBwcm9wZXJ0aWVzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0
ZXJhdG9yKSBpcyB0cnVlCitQQVNTIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSBpcyAie1widmFsdWVcIjo0Mixc
IndyaXRhYmxlXCI6dHJ1ZSxcImVudW1lcmFibGVcIjp0cnVlLFwiY29uZmlndXJhYmxlXCI6dHJ1
ZX0iCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMg
MQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0gaXMgU3ltYm9s
Lml0ZXJhdG9yCitPYmplY3Quc2VhbChvYmplY3QpCitQQVNTIG9iamVjdC5oYXNPd25Qcm9wZXJ0
eShTeW1ib2wuaXRlcmF0b3IpIGlzIHRydWUKK1BBU1MgSlNPTi5zdHJpbmdpZnkoT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIGlzICJ7XCJ2
YWx1ZVwiOjQyLFwid3JpdGFibGVcIjp0cnVlLFwiZW51bWVyYWJsZVwiOnRydWUsXCJjb25maWd1
cmFibGVcIjpmYWxzZX0iCitPYmplY3QuZnJlZXplKG9iamVjdCkKK1BBU1Mgb2JqZWN0Lmhhc093
blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikgaXMgdHJ1ZQorUEFTUyBKU09OLnN0cmluZ2lmeShP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkg
aXMgIntcInZhbHVlXCI6NDIsXCJ3cml0YWJsZVwiOmZhbHNlLFwiZW51bWVyYWJsZVwiOnRydWUs
XCJjb25maWd1cmFibGVcIjpmYWxzZX0iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXNl
YWwtYW5kLWZyZWV6ZS5odG1sIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmEzOGY4ZDNlOTEzZTkzZDcwMDVjYWY4N2QyZWRjZTJhOGE3MDhl
OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtc2VhbC1hbmQtZnJl
ZXplLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtd2l0aC1qc29uLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yOTI2ZDc5OTdiN2VlNTY1NDYyYTRmNWIwY2NkMGNiYzE1Nzk5NmIzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0cyBKU09OIGNvcnJlY3RseSBiZWhhdmVz
IHdpdGggU3ltYm9sLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSlNPTi5zdHJp
bmdpaWZ5IGRvZXNuJ3Qgc3RyaW5naWZ5IFN5bWJvbC4KK1BBU1MgSlNPTi5zdHJpbmdpZnkoU3lt
Ym9sKCdDb2NvYScpKSBpcyB1bmRlZmluZWQKK0pTT04uc3RyaW5naWlmeSBpZ25vcmVzIHByb3Bl
cnR5IHdpdGggU3ltYm9sLgorUEFTUyBKU09OLnN0cmluZ2lmeShvYmplY3QpIGlzICJ7XCJDYXBw
dWNjaW5vXCI6NDJ9IgorU3ltYm9scyBpbiByZXBsYWNlciBhcnJheSBhcmUgaWdub3JlZC4KK1BB
U1MgSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBbIFN5bWJvbCgnQ29jb2EnKSBdKSBpcyAie30iCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi5odG1sIGIvTGF5b3V0VGVzdHMv
anMvc3ltYm9sLXdpdGgtanNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNjgzNTA3OTlmY2ZhNjJiMWI5
ZjhlNjEzM2I5M2E3YTk0YWJjMWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9z
eW1ib2wtd2l0aC1qc29uLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N5bWJvbC13aXRoLWpzb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246199</attachid>
            <date>2015-02-06 22:18:34 -0800</date>
            <delta_ts>2015-02-07 12:56:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150207151832.patch</filename>
            <type>text/plain</type>
            <size>158129</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTRmOGYzYTE4MjBmZmM0ZjJjMjBkY2Q0MjBiNDYzOTUyMjk0NTQzLi43NjE4Nzc3YjFiMWY0NGI1
OGQzN2Y3MDVmNDhhODc1NGYxZmExZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTUtMDItMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGluL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIHRoaXMgcGF0Y2ggaW50cm9k
dWNlcyBgaXNQcml2YXRlYCBmbGFnIHRvIGBTdHJpbmdJbXBsYC4KKyAgICAgICAgSXQgcmVwcmVz
ZW50cyB0aGUgdGFyZ2V0IGBTdHJpbmdJbXBsYCBpcyB1c2VkIHRvIHJlcHJlc2VudCBwcml2YXRl
IHN5bWJvbHMuCisKKyAgICAgICAgV2UgbmV3bHkgYWRkZWQgYEVudW1lcmF0aW9uVHlwZWAgcGFy
YW1ldGVyIHRvIGBnZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Qgb2YgYEpTT2JqZWN0YC4KKyAg
ICAgICAgVGhpcyBwYXJhbWV0ZXIgY29udHJvbHMgd2hldGhlciB0aGUgbWV0aG9kIGNvbGxlY3Rz
IFN5bWJvbCBvciBub3QuCisgICAgICAgIFRoZSBkZWZhdWx0IHBhcmFtZXRlciBpcyBzZXQgdG8g
YEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbGAKKyAgICAgICAgYmVjYXVzZSBhIGxvdCBv
ZiBjYWxsZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1lQXJyYXlg
IGRvZXNuJ3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25zZXJ2YXRp
dmUgYXNzdW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAgICogQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAg
ICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLm9yZGVyOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6QnVpbHRpbk5hbWVzKToK
KyAgICAgICAgKiBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6cG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3Vu
dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgICog
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6
OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3Vt
ZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5
SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToKKyAgICAgICAgKiBy
dW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
Y3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0VudW1lcmF0aW9uTW9kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllcklubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6SWRlbnRpZmllcik6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVy
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0NhbGxlZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9u
bWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09O
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4
dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSYWNlKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jQWxsKToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpzdHJ1Y3R1cmVQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJveHk6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpnZXRTdHJ1
Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1i
b2xzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpT
Qzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2Vh
bCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0
cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OnB1YmxpY05hbWUpOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OmFzSW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldFByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
OgorCiAyMDE1LTAyLTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+IGFuZCBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVudCBhIGJhcmVib25lIFJlYWRhYmxlU3RyZWFt
IGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCA0M2RhZmJlYjU4Y2JkNjAwMjlmMjYxN2U4NDQ1MmI3ZDhiNzFlYjRl
Li43MGRlNzY2ZTA2MDEwNDMxYjI0OWVmOGRhYjIyN2Y2NDcxMzI2YTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDE1LTAyLTA2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
cyBhIG5ldyBmbGFnLCBgaXNQcml2YXRlYCB0byBgU3RyaW5nSW1wbGAuCisgICAgICAgIEl0IGlz
IHVzZWQgdG8gcmVwcmVzZW50IHRoYXQgdGhlIHRhcmdldCBzdHJpbmcgaXMgdXNlZCBmb3IgYSBw
cml2YXRlIChwcml2aWxlZ2VkKSBuYW1lLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1w
bC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKToKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVVbmlxdWVQcml2YXRlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Zmxh
Z0lzUHJpdmF0ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzUHJpdmF0ZSk6CisKIDIw
MTUtMDItMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4gYW5k
IFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGEgYmFyZWJvbmUgUmVhZGFibGVTdHJlYW0gaW50ZXJm
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MTBkMjczYTJlOTNkYjc1YjdiNGJlMzI1NGJiYTNkMTExMmM4
NS4uYTg3OTI5ZGQ1ZWFmYTYzOGI0OTdkODRlOWJmZTEyMTZhNjgxYzBmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU1IEBACisyMDE1LTAyLTA2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdHM6IGpzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuaHRtbAorICAgICAgICAg
ICAgICAganMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5odG1sCisgICAgICAgICAgICAgICBqcy9z
eW1ib2wtc2VhbC1hbmQtZnJlZXplLmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5bWJvbC13aXRo
LWpzb24uaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29y
ZS5vcmRlcjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93OjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0T3du
UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVT
ZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNG
bG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6Omdl
dE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6Cisg
ICAgICAgIChfTlBOX0VudW1lcmF0ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgor
CiAyMDE1LTAyLTA0ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWVkaWEgaU9TXSBBZGQgYSBkZWJ1ZyBzZXR0aW5nIHRvIGFsd2F5cyBzaG93IHRoZSBvcHRpbWl6
ZWQgZnVsbHNjcmVlbiBidXR0b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MWQ2ZWI3ZTFkYzQwYTRlODRiMmQ3
ZTYyNzAwMWU2OTJmNDM4MWQxLi45MzQ5NWVhYTg4MDRhZmExN2VhOWUxM2JlMDZjZjZjYjQxMDlm
NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDItMDYgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6OmVudW1lcmF0ZSk6CisgICAgICAgICogbWFjL1dlYktp
dDIub3JkZXI6CisKIDIwMTUtMDItMDQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIEF2b2lkIGNvcHlpbmcgc3RkOjpmdW5jdGlvbnMgYWNyb3NzIHRocmVhZHMg
aW4gTmV0d29ya0NhY2hlU3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaAppbmRleCA2OTliYzQ0NDY2NDExMjNlYjkxOTM1ZTA2ZDQzYTg4NDdiN2Nh
NTU1Li44Y2FkMTAzMzIzN2FiM2IwNWU2ODliMmYyMDA1MzFjZWM4YjA4NTM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMTg2LDcgKzE4Niw3
IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJsaWMgUGFyZW50IHsKIAogICAgIHN0YXRp
YyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7
CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAg
c3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlw
ZSk7CiAKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggOTlhMDlkZmVhMTBjMWNhMTNjMTU2Nzg3ZWIw
N2FmODljYTQyNDYyMy4uMWNiNDM0NjA3MDkwYWY2NTBlOTg3YTVlZTViMzYzYjkwMWZhZTAyYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmgKQEAgLTQ5OCw3ICs0OTgsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFy
ZW50Pgotdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFy
cmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTQ2Fs
bGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KG9iamVj
dCk7CiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKQEAgLTUzMyw3ICs1
MzMsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFBhcmVudDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
ICAgIFBhcmVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCAyMzRkMjQ4
OGZmODkwYjhiZWU2OTdlZjU1YWE2ODAzODBhMTgxYTQyLi4wYzVkYTZiYTJkNjFkM2RhZWM5YmIz
Nzg5MTEwNTA5MjBhYzg1OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcApAQCAtNjk4LDcgKzY5OCw3IEBAIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgSlNPYmpl
Y3RDb3B5UHJvcGVydHlOYW1lcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgICAg
SlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTUHJvcGVydHlOYW1lQXJy
YXlSZWYgcHJvcGVydHlOYW1lcyA9IG5ldyBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5KHZtKTsK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBhcnJheSh2bSk7Ci0gICAganNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmdldFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVy
dHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMs
IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGFy
cmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLm9yZGVyIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCmlu
ZGV4IDI2YmUwZWUyNzZlMGVlNWM4NmU2MTA5OTlmMmQ0NzZiMGRkODA2ZGUuLjFlMTk0MTU1YTMx
OTUwNjRiNzRjZTA3ZGQyYzY0MTJiYWNlYjJjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUub3JkZXIKQEAgLTkzOCw3ICs5MzgsNiBAQCBfX1pOM0pTQzVMTEludDM5
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yRVBOU18yVk1FCiBfX1pOM0pT
QzVMTEludDQ0ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3JFUE5T
XzJWTUUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uMjNjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUVQTlNf
OUV4ZWNTdGF0ZUVtCiBfX1pOSzNKU0M4SlNPYmplY3QzZ2V0RVBOU185RXhlY1N0YXRlRU5TXzEy
UHJvcGVydHlOYW1lRQotX19aTjNKU0M5U3RydWN0dXJlMjlnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0
cnVjdHVyZUVSTlNfMlZNRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25N
b2RlRQogX19aTjNKU0MxN1Byb3BlcnR5TmFtZUFycmF5MTRhZGRLbm93blVuaXF1ZUVQTjNXVEYx
MFN0cmluZ0ltcGxFCiBfX1pOM0pTQzE3UHJvcGVydHlOYW1lQXJyYXlEMkV2CiBfX1pOM0pTQzhX
YXRjaGRvZzVTY29wZUQxRXYKQEAgLTEzNTEsOSArMTM1MCw2IEBAIF9fWk4zSlNDMTFQb3N0Zml4
Tm9kZTExZW1pdFJlc29sdmVFUk5TXzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TXzEwUmVnaXN0ZXJJ
REUKIF9fWk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvcjdlbWl0SW5jRVBOU18xMFJlZ2lzdGVySURF
CiBfX1pOM0pTQzE0anNJc09iamVjdFR5cGVFUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFCiBf
X1pOM0pTQzZKU0NlbGwxMWdldENhbGxEYXRhRVBTMF9STlNfOENhbGxEYXRhRQotX19aTjNKU0M4
SlNPYmplY3QxNmdldFByb3BlcnR5TmFtZXNFUFMwX1BOU185RXhlY1N0YXRlRVJOU18xN1Byb3Bl
cnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0M4SlNPYmplY3QxOWdl
dE93blByb3BlcnR5TmFtZXNFUFMwX1BOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0M4SlNPYmplY3QyN2dldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lc0VQUzBfUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJy
YXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM1dURjZWZWN0b3JJTjNKU0MxMElkZW50aWZp
ZXJFTG0yMEVOU18xNUNyYXNoT25PdmVyZmxvd0VFMTVyZXNlcnZlQ2FwYWNpdHlFbQogX19aTjNK
U0MxM2pzT3duZWRTdHJpbmdFUE5TXzJWTUVSS04zV1RGNlN0cmluZ0UKIF9fWk4zSlNDOVN0cnVj
dHVyZTE2YWxsb2NhdGVSYXJlRGF0YUVSTlNfMlZNRQpAQCAtMTc0Myw3ICsxNzM5LDYgQEAgX19a
TjNKU0NMMjBkYXRlUHJvdG9GdW5jR2V0VGltZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0pTQzEy
SlNSb3BlU3RyaW5nMjByZXNvbHZlUm9wZVNsb3dDYXNlOEVQaAogX19aTkszV1RGNlN0cmluZzhm
b2xkQ2FzZUV2CiBfX1pOM1dURjEwU3RyaW5nSW1wbDhmb2xkQ2FzZUV2Ci1fX1pOM0pTQzEwSlNG
dW5jdGlvbjI3Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlF
eGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBf
X1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUUKIF9fWk4zSlND
MTFJbnRlcnByZXRlcjI0YWRkU3RhY2tUcmFjZUlmTmVjZXNzYXJ5RVBOU185RXhlY1N0YXRlRU5T
XzdKU1ZhbHVlRQogX19aTjNKU0MxMUludGVycHJldGVyMTNnZXRTdGFja1RyYWNlRVBOU18yVk1F
Uk4zV1RGNlZlY3RvcklOU18xMFN0YWNrRnJhbWVFTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VF
RW0KQEAgLTI5NzAsNyArMjk2NSw2IEBAIF9fWk4zSlNDNXNoaWZ0SUxOU183SlNBcnJheTE0U2hp
ZnRDb3VudE1vZGVFMEVFRXZQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RWpqCiBfX1pOM0pT
QzdKU0FycmF5MjZzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZUVqalBOU18xMkFycmF5U3RvcmFn
ZUUKIF9fWk4zSlNDTDE3YXJyYXlQcm90b0Z1bmNQb3BFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pT
QzdKU0FycmF5M3BvcEVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlNDN0pTQXJyYXkyN2dldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1By
b3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0M1TGV4ZXJJdEUy
NHBhcnNlRm91ckRpZ2l0VW5pY29kZUhleEV2CiBfSlNPYmplY3RHZXRQcml2YXRlUHJvcGVydHkK
IF9fWk5LM0pTQzIwSlNDYWxsYmFja09iamVjdERhdGExOGdldFByaXZhdGVQcm9wZXJ0eUVSS05T
XzEwSWRlbnRpZmllckUKQEAgLTM4MjksNyArMzgyMyw2IEBAIF9fWk4zSlNDM0RGRzE0U3BlY3Vs
YXRpdmVKSVQxOGNvbXBpbGVBcml0aE5lZ2F0ZUVQTlMwXzROb2RlRQogX19aTjNKU0MyM01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uMTJuZWdhdGVEb3VibGVFTlNfMTJYODZSZWdpc3RlcnMxM1hNTVJl
Z2lzdGVySURFUzJfCiBfX1pOM0pTQzIzTWFjcm9Bc3NlbWJsZXJYODZDb21tb245ZGl2RG91Ymxl
RU5TXzEyWDg2UmVnaXN0ZXJzMTNYTU1SZWdpc3RlcklERVMyX1MyXwogX2N0aV9vcF9pbmMKLV9f
Wk4zSlNDMTJTdHJpbmdPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQ
TlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9k
ZUUKIF9fWk4zSlNDMTRnbG9iYWxGdW5jRXZhbEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDOEpT
T2JqZWN0MThjcmVhdGVBcnJheVN0b3JhZ2VFUk5TXzJWTUVqagogX29wZXJhdGlvbkNvbnZlcnRU
aGlzCkBAIC00MTUwLDcgKzQxNDMsNiBAQCBfX1pOM0pTQzExQ29waWVkU3BhY2UxNmRvbmVGaWxs
aW5nQmxvY2tFUE5TXzExQ29waWVkQmxvY2tFUFMyXwogX19aTjNKU0MxMUNvcHlWaXNpdG9yMTRj
b3B5RnJvbVNoYXJlZEV2CiBfX1pOM0pTQzhKU09iamVjdDE2Y29weUJhY2tpbmdTdG9yZUVQTlNf
NkpTQ2VsbEVSTlNfMTFDb3B5VmlzaXRvckUKIF9fWk4zSlNDMThHQ1RocmVhZFNoYXJlZERhdGEx
NmRpZEZpbmlzaENvcHlpbmdFdgotX19aTjNKU0M5QXJndW1lbnRzMTlnZXRPd25Qcm9wZXJ0eU5h
bWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlF
TlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzhKU09iamVjdDZmcmVlemVFUk5TXzJWTUUK
IF9fWk4zSlNDOVN0cnVjdHVyZThpc0Zyb3plbkVSTlNfMlZNRQogX19aTjNKU0M5U3RydWN0dXJl
MTZmcmVlemVUcmFuc2l0aW9uRVJOU18yVk1FUFMwXwpAQCAtNDI1MCw3ICs0MjQyLDYgQEAgX19a
TjNKU0MxM0RhdGVQcm90b3R5cGUyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2Jq
ZWN0RVBOU185RXhlY1N0YXRlRU4KIF9fWk4zSlNDMjdnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0
b3JJTlNfOEpTT2JqZWN0RUVFYlBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hUYWJsZUVQUzFfTlNf
MTJQcm9wZXJ0eU5hbWVFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MyMkNsb3N1
cmVDYWxsU3R1YlJvdXRpbmUyN21hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbEVSTlNfMTFTbG90
VmlzaXRvckUKIF9fWk4zV1RGOUJpdFZlY3RvcjdzZXRTbG93RVJLUzBfCi1fX1pOM0pTQzE4UmVn
RXhwTWF0Y2hlc0FycmF5MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlF
eGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBf
SlNWYWx1ZUdldFR5cGUKIF9fWk4zSlNDMTNFdmFsQ29kZUJsb2NrMTFyZXBsYWNlbWVudEV2CiBf
X1pOM0pTQzEzRXZhbENvZGVCbG9jazE2Y29tcGlsZU9wdGltaXplZEVQTlNfOUV4ZWNTdGF0ZUVQ
TlNfN0pTU2NvcGVFagpAQCAtNDM1NiwxNSArNDM0NywxMSBAQCBfX1pOM0pTQ0wyNmRhdGVQcm90
b0Z1bmNTZXRVVENTZWNvbmRzRVBOU185RXhlY1N0YXRlRQogX29wZXJhdGlvbkVuc3VyZURvdWJs
ZQogX19aTjNKU0M4SlNPYmplY3QxNmVuc3VyZURvdWJsZVNsb3dFUk5TXzJWTUUKIF9fWk4zSlND
NFlhcnIxMUludGVycHJldGVySXRFMjBiYWNrdHJhY2tQYXJlbnRoZXNlc0VSTlMwXzhCeXRlVGVy
bUVQTlMyXzE4RGlzanVuY3Rpb25Db250ZXh0RQotX19aTjNKU0M3SlNQcm94eTE2Z2V0UHJvcGVy
dHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0MxOUpTU3ltYm9sVGFibGVPYmplY3Qy
N2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRl
RVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0NM
MTdtYXRoUHJvdG9GdW5jQVNpbkVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDM0RGRzE0U3BlY3Vs
YXRpdmVKSVQxNHNwZWN1bGF0ZU90aGVyRU5TMF80RWRnZUUKIF9fWk4zSlNDNlBhcnNlcklOU181
TGV4ZXJJdEVFRTE4cGFyc2VXaXRoU3RhdGVtZW50SU5TXzEwQVNUQnVpbGRlckVFRU5UXzlTdGF0
ZW1lbnRFUlM2XwogX19aTjNKU0MxMlN0cmluZ09iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzZK
U0NlbGxFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFCiBfX1pOM0pTQzlFeGVjU3Rh
dGUyMHJlZ0V4cFByb3RvdHlwZVRhYmxlRVBTMF8KLV9fWk4zSlNDMTJSZWdFeHBPYmplY3QxNmdl
dFByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0
eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKLV9fWk4zSlNDMTJSZWdFeHBPYmplY3Qy
N2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRl
RVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0M5
RXhlY1N0YXRlOWRhdGVUYWJsZUVQUzBfCiBfX1pOM0pTQzlFeGVjU3RhdGUyMWFycmF5Q29uc3Ry
dWN0b3JUYWJsZUVQUzBfCiBfX1pOM0pTQ0wxOWFycmF5UHJvdG9GdW5jRXZlcnlFUE5TXzlFeGVj
U3RhdGVFCkBAIC00NjkwLDcgKzQ2NzcsNiBAQCBfX1pOM0pTQzlFeGVjU3RhdGUyMm51bWJlckNv
bnN0cnVjdG9yVGFibGVFUFMwXwogX19aTjNKU0M5RXhlY1N0YXRlMjJyZWdFeHBDb25zdHJ1Y3Rv
clRhYmxlRVBTMF8KIF9fWk4zSlNDOUV4ZWNTdGF0ZTltYXRoVGFibGVFUFMwXwogX19aTjNKU0M5
RXhlY1N0YXRlOWpzb25UYWJsZUVQUzBfCi1fX1pOM0pTQzdKU1Byb3h5MTlnZXRPd25Qcm9wZXJ0
eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJy
YXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzlBcmd1bWVudHMyNGdldE93blByb3Bl
cnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlO
YW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOUFyZ3VtZW50czE3ZGVmaW5l
T3duUHJvcGVydHlFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFt
ZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFYgogX19aTjNXVEY3SGFzaE1hcEl5TjNKU0MxNlNw
YXJzZUFycmF5RW50cnlFTlNfN0ludEhhc2hJeUVFTlNfMjlVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0c0l5RUVOU18xMEhhc2hUcmFpdHNJUzJfRUVFNGZpbmRFUkt5CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA3NmE3YjExMWE4ZDg3
N2E2NzliNWM4YjhlODk2ZTFhN2IxYjZiOGFjLi4xMjIxNWE1MTI1MmRiZDg2MWY0NGNkNjE1N2Nm
ZTQwNGQxZDIwNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIFNjcmlwdFZhbHVlOjppc0Z1bmN0
aW9uKCkgY29uc3QKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gaW5zcGVjdG9yT2JqZWN0
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IHZhbHVlLmdldE9iamVjdCgpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5h
bWVzKHNjcmlwdFN0YXRlKTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7
CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsK
ICAgICAgICAgICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNjcmlwdFN0
YXRlLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaAppbmRleCA5Yjg4OTZiOTY4MDE0OTEzZjQ2YjMyYzQ4MGUwNTc4OTYzNzlkZmE0Li45YjYy
ZjhjN2YyMmRjNDQzOTY1YTMyNzUxNDE3NGYxMDY3NDc2ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0zMSw3ICszMSw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogICAgIAotI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFt
ZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmll
cjo6ZnJvbShQcml2YXRlTmFtZShBU0NJSUxpdGVyYWwoIlN5bWJvbC4iICNuYW1lKSkpKQorI2Rl
ZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUp
LCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZShQcml2
YXRlTmFtZTo6Q3JlYXRlUHJpdmF0ZSkpKQorI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fU1lN
Qk9MUyhuYW1lKSAsIG1fIyNuYW1lKHZtLCAjbmFtZSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShJ
ZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLiIgI25hbWUp
KSkpCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhuYW1lKSBjb25zdCBJZGVudGlmaWVy
IG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lIyNQcml2YXRlTmFtZTs7CiAjZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwKICAgICBjb25z
dCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7
IH0gXApAQCAtNDgsMTEgKzQ5LDE0IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgICAgIDog
bV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmllcnMtPmVtcHR5SWRlbnRpZmllcikKICAg
ICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfQlVJTFRJ
Tl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAgICAgIEpTQ19DT01NT05f
UFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJU0VfQlVJ
TFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkpCiAgICAgICAgIEpTQ19D
T01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9Q
UklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJ
Q19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJ
QUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFU
RV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJ
VkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hf
V0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKICAg
ICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlm
aWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjQsMTMgQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsKICAg
ICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElO
X0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJT
X0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikK
KyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJP
TChERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKIAogcHJpdmF0ZToKICAgICBJ
ZGVudGlmaWVyIG1fZW1wdHlJZGVudGlmaWVyOwogICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRF
X0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wo
REVDTEFSRV9CVUlMVElOX05BTUVTKQogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5n
SW1wbD4sIGNvbnN0IElkZW50aWZpZXIqLCBJZGVudGlmaWVyUmVwSGFzaD4gQnVpbHRpbk5hbWVz
TWFwOwogICAgIEJ1aWx0aW5OYW1lc01hcCBtX3B1YmxpY1RvUHJpdmF0ZU1hcDsKICAgICBCdWls
dGluTmFtZXNNYXAgbV9wcml2YXRlVG9QdWJsaWNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCmluZGV4IDlh
OWRiMGJjNzBiOWYxMzVmNjVkZDJkNzk2ZGU2NTI4OTZhZTBmYjEuLmM4MTg5YTI0NmE5MjY5NjBj
YmU3ZjM3YWNjYTA5ODdhZDg1M2VkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCkBAIC0xMTgsNyArMTE4
LDcgQEAgY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewogCiAgICAgICAgIHNpemVfdCBj
b3VudCA9IDA7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2
bSk7Ci0gICAgICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9t
U3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVBcnJheSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9t
U3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVBcnJheSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cywgRW51bWVyYXRpb25UeXBlOjpJbmNsdWRlU3ltYm9sKTsKICAgICAgICAgUHJvcGVydHlOYW1l
QXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHByb3Bl
cnR5TmFtZUFycmF5LmRhdGEoKS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgICAgICBKU1ZhbHVlIHZhbHVlID0gcHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHByb3BlcnR5
TmFtZVZlY3RvcltpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDU5YTkwOWZkNTQzMzhiNmRlYmQ0
ZDdmYmJhMzM1NmFkNzA0NGRhYWMuLmVkYjM0Y2M1Y2I5MTNjMjU4NGFiMWYxZmQ2MGIxOWJiNzIz
ZTY5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNjUxLDcgKzI2NTEsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5v
ZGUsIEV4cHJlc3NpbwogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBuZXdMYWJlbFNjb3BlKExh
YmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3VGVt
cG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwotICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgp
LCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAg
ewogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIDApOwogICAgICAgICBlbWl0TW92
ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBzdWJqZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCAyZjc0OTFmNWQyZmMx
YzkwNDc4MDNlZGM0ZWI1NDg2ODMxZjQwN2NiLi4xYWQyMTQwYWE3YzdhODg1NTJlMjkyMmFmMzI2
ZTlmM2QzODBkOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyU2NvcGUuY3BwCkBAIC0xMTAsMTQgKzExMCwxNCBAQCBib29sIERlYnVnZ2VyU2NvcGU6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi12b2lkIERlYnVnZ2VyU2Nv
cGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUp
Cit2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIERlYnVnZ2Vy
U2NvcGUqIHNjb3BlID0ganNDYXN0PERlYnVnZ2VyU2NvcGUqPihvYmplY3QpOwogICAgIEFTU0VS
VChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2Nv
cGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBib29sIERlYnVnZ2VyU2Nv
cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggMjI3Y2IxOWU3NWY3MzhkN2E2YTUxYjZjMzU5YjRk
MTgxYjFmNGY1Yi4uYjJkYjE1ZTkwZWIyYjI0M2JhOWIwZWVjNjc2MDYwMDM5MjhjZmY3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC00
OSw3ICs0OSw3IEBAIGNsYXNzIERlYnVnZ2VyU2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpOwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUp
OwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRo
cm93KTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmNwcAppbmRleCA2YjZiZWFjYjA0YjM5ZDFmYTMwMTQzNjYxNDdk
MzQ5NGM3YmZjZGNjLi5kNjI2MmYwYzM2ZTE2MWE5MjBmZmJmZGU3NjZmZGM3ZmE0YWQ3ODBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTE4Niwx
NyArMTg2LDE3IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAKICAgICBpZiAoSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1lKSB7CisgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpIHsKICAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICAgICAgdGhpc09iamVjdC0+SlNDX05B
VElWRV9GVU5DVElPTihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSwg
YXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgICAgIHRoaXNPYmplY3Qt
PkpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9s
LCBhcmd1bWVudHNGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICAgICAgaWYgKEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQog
ewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMqPihvYmplY3Qp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX251bUFyZ3VtZW50
czsgKytpKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSk7CiAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwog
ICAgIH0KLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKIH0KIAogdm9p
ZCBBcmd1bWVudHM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IGMwNTM4NjkwMDA0ZTU2MzcyYzk0YTFh
MDA5Y2U5MWQ0YjIwNWU4NGIuLmI4NzM0MTVkODk4MDJiOGM2Y2E1NTI3Yzc0NDBiMzc3OTI3Y2Iw
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCkBAIC0xMTQs
NyArMTE0LDcgQEAgY2xhc3MgQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
cHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBF
bnVtZXJhdGlvblR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2
b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuY3BwCmluZGV4IGQ3OWNjNTJlMDkyYmM2ZTkwYjQxYmJlNzk5OGMyYWI3MDdhYTNkMmMuLmM2
OTA0ZmE1MDVhYjZhNTZjZGYzMTUwMTc4ZWI0YzU0Mjc1ZmViM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3Rv
dHlwZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlw
ZSh0aGlzKTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3Is
IERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwg
RG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY05l
eHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBjODgwMGUzY2RjYTYy
NTJlYWI5OGZkMDIxMTg2MWUxZDBkYmVjMTEyLi5iZDM1NTVjNDQyMDliZDc1YTEzOGY1ZjIzOGNi
OTY3NWM2ZDI2YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEFy
cmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdAogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5w
cm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yUHJv
dG90eXBlSXRlcmF0ZSwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVJdGVy
YXRlLCBEb250RW51bSwgMCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggYzc5
OWNjMzFlMWJmMTA2NjZiOWU0YjdmNWY1MWJmODQxOGNkY2E3ZS4uZDQ2YjY0ZTZmMzE5OGRhNzY2
OTQ1NDJlNGE5N2RkNmQ4YTU2YWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQXJyYXlQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci0gICAg
SlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1l
LCBhcnJheVByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5UHJvdG9GdW5jVmFs
dWVzLCBEb250RW51bSwgMCk7CiB9CiAKIGJvb2wgQXJyYXlQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTczNSw3ICs3MzUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgbmFtZUFycmF5KGV4ZWMpOwotICAgIHRoaXNPYmotPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmosIGV4ZWMsIG5h
bWVBcnJheSwgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgdGhpc09iai0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwgZXhlYywgbmFtZUFy
cmF5LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVT
eW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAppbmRleCBjYjUwNThjMmRjMDYyYjRkYjVkNjgyYTAxNjE3YjM3Nzhj
MTQwNGJhLi5iODdhOTA4NmFiZDE2MzVhZTkwMjg2YjkwYzE3MzQ1ZWM2YjE0NjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtNzMsMTMgKzczLDEzIEBA
IHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBKU1ZhbHVlICgqRGVmYXVsdFZhbHVl
RnVuY3Rpb25QdHIpKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSk7CiAgICAgRGVmYXVsdFZhbHVlRnVuY3Rpb25QdHIgZGVmYXVsdFZhbHVlOwogCi0g
ICAgdHlwZWRlZiB2b2lkICgqR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyKShKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAg
ICB0eXBlZGVmIHZvaWQgKCpHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1l
cmF0aW9uVHlwZSk7CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIGdldE93blBy
b3BlcnR5TmFtZXM7CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpHZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXNGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgdHlwZWRlZiB2b2lkICgqR2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAgICAgR2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzOwogCi0gICAgdHlwZWRlZiB2b2lkICgqR2V0UHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyKShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKKyAgICB0eXBlZGVmIHZvaWQgKCpHZXRQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVu
dW1lcmF0aW9uVHlwZSk7CiAgICAgR2V0UHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIGdldFByb3Bl
cnR5TmFtZXM7CiAKICAgICB0eXBlZGVmIHVpbnQzMl90ICgqR2V0RW51bWVyYWJsZUxlbmd0aEZ1
bmN0aW9uUHRyKShFeGVjU3RhdGUqLCBKU09iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDU2ZGYzNDUwMjg3
ZmY5OTlhMzhmY2Y0Y2I3MTUwZTg2MWE1NjQzZTguLmFjYzI4MGRjNzBmYmE3NzMwN2FiNDBiOTAz
YjE1MDc2N2M0YTg2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgSU5JVElB
TElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJ
QUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQodm0sICNuYW1lKQogI2RlZmluZSBJ
TklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1lKG1fYnVpbHRp
bk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQorI2RlZmluZSBJTklUSUFMSVpFX1NZTUJPTChu
YW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkK
IAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51
bGxJZGVudGlmaWVyKCkKQEAgLTQxLDYgKzQyLDcgQEAKICAgICBKU0NfQ09NTU9OX0lERU5USUZJ
RVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVO
VElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAg
IEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElB
TElaRV9QUklWQVRFX05BTUUpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDY1
ODE1Y2M5YTFlOWY3YzYyMTAzOTIyMDNhYzhmMTgxMDdkZjhhNzAuLmJiNWQ2YzRlZDNhMjU0ZDdm
NTNjNzA5ZjlmMTg5MzI1Mjc0ZTA3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjM0LDcgKzIzNCw2IEBACiAgICAgbWFj
cm8odW5zY29wYWJsZSkKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCi0gICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRv
ck5leHQpIFwKICAgICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8ocmVqZWN0KSBcCkBAIC0y
ODQsNyArMjgzLDExIEBACiAjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9Q
Uk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVO
YW1lOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJU
WV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JB
TCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9H
TE9CQUwKLSAgICAgICAgCisKKyNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRF
X1dFTExfS05PV05fU1lNQk9MX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1N5
bWJvbDsKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9L
Tk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lN
Qk9MX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9L
Tk9XTl9TWU1CT0xfR0xPQkFMCisKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVudGlmaWVyIGdldFB1
YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCmluZGV4IDRkYmFmN2I0MTdk
YzcwOGZiYzZjNzI1MDlmMTlmNTQ0ZjAxYjk2YmQuLmUyZWNlNDk2YTE2YTFkNjIyMWRiZmI3MTE4
MDg1NWExODFjY2FhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0VudW1lcmF0aW9uTW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vu
dW1lcmF0aW9uTW9kZS5oCkBAIC0zNSw2ICszNSwxMSBAQCBlbnVtIEVudW1lcmF0aW9uTW9kZSB7
CiAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdAogfTsKIAorZW51
bSBjbGFzcyBFbnVtZXJhdGlvblR5cGUgeworICAgIEluY2x1ZGVTeW1ib2wsCisgICAgRXhjbHVk
ZVN5bWJvbAorfTsKKwogaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IDc0
NzJkODQ3ZDc1YjMwM2U2NDU0ZjA2ZDY5ZWQ2ZmM1ZWU2OTIzYWMuLjlmMjAwM2FmMzQzZGUwYzY4
ZGQzNjc2OWVmY2JhMmVkYzRhNGVjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaApAQCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgSWRl
bnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEF0b21pY1N0cmluZ0ltcGwqIHN0
cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUo
ZXhlYyk7CiAgICAgaWYgKHN0cmluZykKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3Ry
aW5nLT5sZW5ndGgoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJp
bmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5p
c1VuaXF1ZSgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyks
ICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogI2VuZGlmCkBAIC00OSw3ICs0OSw3IEBAIGlubGlu
ZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3Ry
aW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmlu
Z1RhYmxlKGV4ZWMpOwogICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWlj
U3RyaW5nVGFibGUoc3RyaW5nLmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9t
IGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5n
Lmxlbmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9t
aWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZy
b20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggNTE3
NzIxZTk4NDQ5ZTFlZDNlYTA1ZTUwOTZhNDNjMzE0ODI4ODg5MC4uNGM3MGFjMzNlYzc0NmE2MGFj
MWY4MGY1MzNhODE3N2FiZmMyOTAwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAKQEAgLTIyMiwxNCArMjIyLDE0IEBAIHN0YXRpYyBpbnQgY29tcGFyZUtleXNG
b3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQogICAgIHJldHVybiAoZGEgPiBk
YikgLSAoZGEgPCBkYik7CiB9CiAKLXZvaWQgSlNBcnJheTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0FycmF5Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCk7CiAKLSAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEpTT2Jq
ZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIC8vIFRoaXMgbWV0aG9kIG1ha2VzIHJvb20gaW4g
dGhlIHZlY3RvciwgYnV0IGxlYXZlcyB0aGUgbmV3IHNwYWNlIGZvciBjb3VudCBzbG90cyB1bmNs
ZWFyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggNzAwMjll
NmRjOWY0OTQ2ZTM4MjBlOWZkNzIwMDYxMTU0MDY0ZTBmYi4uYTU1ZTkxNWYxZWM0ZDk2NjMwY2Vi
ZWIyYWMyMzZmMDdkOGEwYTEwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzTGVu
Z3RoV3JpdGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmNwcAppbmRleCBjMWNhZDEwNWM3ZTBkNWFkN2VmZDI5NmEzYmVmMDY5NmM5NWY2MDA3
Li5kNTU0MDNlZGQzOTRkYmQ1MTdmNTc0YTcyMzIyZDFhMzY2Yzg0ZjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtMTE1LDE0ICsx
MTUsMTQgQEAgYm9vbCBKU0FycmF5QnVmZmVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKIH0KIAogdm9pZCBKU0FycmF5QnVmZmVy
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoCi0gICAgSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBt
b2RlKQorICAgIEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUp
CiB7CiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVy
Kj4ob2JqZWN0KTsKICAgICAKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyhtb2RlKSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlTGVu
Z3RoKTsKICAgICAKLSAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgYXJyYXksIG1vZGUpOworICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSwgdHlwZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlci5oCmluZGV4IDMxOWI4MmU1YTBiMTE2ZThkZWIzOWE2MTAxMGZhOWFkMzZjMDBmMTkuLjdm
NTEzZTYzNGI2NzcyNzg0MmE1ZWNkYjY4N2RlNTU2ODI1NmQxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xh
c3MgSlNBcnJheUJ1ZmZlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
KTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0
aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBjYjVjOGEyZjAzOTM0M2M1YTI0MDUw
YjA5MDgwOGRlZDI1ZTEwOTBiLi4yMDBhYzdlZDRkZGUzYzYxOTJkNGU4ODkxZWUzODk0ZjhmODNh
MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgYm9vbCBKU0FycmF5QnVmZmVyVmlldzo6
ZGVsZXRlUHJvcGVydHkoCiB9CiAKIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcygKLSAgICBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZUFycmF5JiBhcnJheSwgRW51bWVyYXRpb25Nb2RlIG1vZGUpCisgICAgSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyYXks
IEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsKICAgICBKU0Fy
cmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KG9i
amVjdCk7CiAgICAgCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJv
cGVydHlOYW1lcygpLmJ1ZmZlcik7CiAgICAgfQogICAgIAotICAgIEJhc2U6OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CisgICAgQmFz
ZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFycmF5LCBt
b2RlLCB0eXBlKTsKIH0KIAogdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6ZmluYWxpemUoSlNDZWxs
KiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmgKaW5kZXggM2ZlYjAzYjcyMTkzMTRkMmI0MmY4MzFlNGVjMzhiY2ExOTcyOWY0NC4u
ZTZkYzg1ODljN2Y2MmE2M2M4NGJkMjAxN2U4ZGNkOTY5YTg0OTRmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xNTAsNyAr
MTUwLDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIAogcHVibGljOgogICAgIFR5cGVkQXJyYXlN
b2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2FsbGVlLmNwcAppbmRleCAxZDNmMzQwMTg4NTdkYmQ4ZTY4ZjMyYjAyZGM5
MGE5NDdhYmIwZTA2Li5hOTIyMmQ0OWZjZWRlNzg0NjBhODdiMjA2ZTM4YTllYzk0YjFhMjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuY3BwCkBAIC03Niw5ICs3
Niw5IEBAIGJvb2wgSlNDYWxsZWU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blBy
b3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQg
SlNDYWxsZWU6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNDYWxsZWU6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUp
CiB7Ci0gICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIHZvaWQg
SlNDYWxsZWU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKaW5kZXggZGVkOGM4NTgwYjBhYzM1
ZDRkOTc3MTZhMDBhZGYwODBkY2I2ZTJlZS4uMGJjM2NkMTMxYTFmNTIzNDI1Yzk3OGRhMWE1ZjMw
NTdhMzc4N2Q3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
YWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCkBA
IC0xMDEsNyArMTAxLDcgQEAgY2xhc3MgSlNDYWxsZWUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVP
YmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQg
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZSA9IEVudW1lcmF0aW9uVHlwZTo6
RXhjbHVkZVN5bWJvbCk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyYzQwM2M4MTNm
YjM4NTY4YjBlNjBjZTc4OTg5ZGRlYTRjOTUzYzEyLi4yNjAyNWMwZDc4NzExMjk3NGMzNDMyOWI4
M2ZiMDUxN2YzMjI2NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAKQEAgLTE5NCwxMiArMTk0LDEyIEBAIGJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9p
ZCBKU0NlbGw6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQogewogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgSlNDZWxsOjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSkKK3ZvaWQgSlNDZWxsOjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CkBAIC0yMTUsNyArMjE1LDcgQEAgY29uc3QgY2hhciogSlNDZWxsOjpjbGFz
c05hbWUoKSBjb25zdAogICAgIHJldHVybiBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lOwogfQogCi12
b2lkIEpTQ2VsbDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBKU0NlbGw6OmdldFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CkBAIC0yNTAsMTIgKzI1MCwxMiBAQCB1aW50MzJfdCBKU0NlbGw6OmdldEVudW1l
cmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKQogICAgIHJldHVybiAwOwogfQogCi12
b2lkIEpTQ2VsbDo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBKU0NlbGw6Omdl
dFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQogewogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgSlNDZWxsOjpnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKQordm9pZCBKU0NlbGw6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVu
dW1lcmF0aW9uVHlwZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA0ODM5ZjY0ZmExYTgyMGVl
YWNiNzA5Zjk4YzMwYjdhZjdjNGU4MTk0Li5iN2MyYTcxNGQ5YWMzNzE0NDIyMmQ1ZWViMTM4NTA3
M2NkNzE4OWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMjEx
LDEzICsyMTEsMTMgQEAgY2xhc3MgSlNDZWxsIHsKIAogICAgIC8vIER1bW15IGltcGxlbWVudGF0
aW9ucyBvZiBvdmVycmlkZS1hYmxlIHN0YXRpYyBmdW5jdGlvbnMgZm9yIGNsYXNzZXMgdG8gcHV0
IGluIHRoZWlyIE1ldGhvZFRhYmxlCiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNv
bnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7Ci0gICAg
c3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUp
OwotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQg
Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBzdGF0aWMg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
LCBFbnVtZXJhdGlvblR5cGUpOworICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZv
aWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogCiAgICAgc3RhdGljIHVp
bnQzMl90IGdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAgICBz
dGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7Ci0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBnZXRHZW5lcmlj
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lk
IGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUs
IEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBK
U09iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1c3RvbUhhc0lu
c3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGRjMzc3MTk3MGFhNDA2OTFmNTkx
YzFlMzkxMDgyMzg2ZTFiZmEyNzAuLjU4NDA0MDY3NzQzZjg5MjRhOWQ4ODUwZWY5OGZiODhiYzM3
MzUyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CkBAIC0zNzcsNyArMzc3LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICByZXR1cm4g
QmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKLXZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0Z1bmN0aW9uOjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUs
IEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RP
ckJ1aWx0aW5GdW5jdGlvbigpICYmIHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9k
ZSkpIHsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CiAgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpOwogICAgIH0KLSAgICBCYXNl
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiB2b2lkIEpTRnVu
Y3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDlmNWZlNjE0MTU5YmRj
ZjJlNWFiYzQ1NTBkMDQ4MTk4ZTNiMzhkYzcuLjYxMDk1ZjViZTQ1MjkyMTdiNDRlMzdmMGUwZmFh
NTU1MGI0MGU0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2FsbGVl
IHsKICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogY3JlYXRlQWxsb2NhdGlvblByb2ZpbGUo
RXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsKIAogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1l
cmF0aW9uVHlwZSA9IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCAxMzQzZWVlM2Q3MjBhMjA2
NmFkYzkyYjQzOWZkZjE5OTE4ZmE0NWY4Li5lZWUxNzU1ZjM0MTg0ZmI1MWVkYzk4Mjk5N2RkNGEw
OTZlNTUyNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI0MCw4ICsyNDAsOCBAQCBjbGFzcyBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgc3Rh
dGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIHN0YXRpYyB2
b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOworICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKICAg
ICAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAgICAgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYs
IENvcHlUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZkMGQyMWZhNjFm
Mzk4OWY5ZDliNDE5OWRhYTg4OGU5ZjY2NDRlY2EuLmM0OTAxZTVlYWY0NDFhNTFkZmVjNjk2NThi
NWUyMmM0ZDQ3ZmIwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC00MTEsMjYg
KzQxMSwyNiBAQAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdm9pZCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAotICAg
IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFy
cmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKKyAgICBKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBhcnJheSwgRW51bWVyYXRpb25Nb2RlIG1vZGUs
IEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAg
ICAKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKICAgICAg
ICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIAotICAgIEJh
c2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwg
bW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIGFycmF5LCBtb2RlLCB0eXBlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIHZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5
TmFtZXMoCi0gICAgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWVBcnJheSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQorICAgIEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5LCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihv
YmplY3QpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5t
X2xlbmd0aDsgKytpKQogICAgICAgICBhcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBp
KSk7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBhcnJheSwgbW9kZSk7CisgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSwgdHlwZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggYjE0YTQ3OWM5YTlmMWVkYmRjNWY2NTY5NWYzNGEz
NjQ1ZTc2ODcxZS4uNWFhZWU5NjI0NzM2MWNmMzZmYzRjNzUyY2MzMjBhOGNjMDk1Yzg0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1l
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmly
b25tZW50LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGlubGluZSBib29sIEpTTGV4aWNhbEVudmly
b25tZW50OjpzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3Zv
aWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAg
ICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMZXhpY2FsRW52
aXJvbm1lbnQqPihvYmplY3QpOwogCkBAIC0xMTgsMTEgKzExOCwxMyBAQCB2b2lkIEpTTGV4aWNh
bEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCF0
aGlzT2JqZWN0LT5pc1ZhbGlkKGl0LT52YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBpZiAodHlwZSA9PSBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wg
JiYgaXQtPmtleS5nZXQoKS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5n
ZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIC8vIFNraXAgdGhlIEpTRW52aXJvbm1lbnRS
ZWNvcmQgaW1wbGVtZW50YXRpb24gb2YgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzCi0gICAg
SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQog
CiBpbmxpbmUgYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6c3ltYm9sVGFibGVQdXRXaXRoQXR0
cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA5ZmIwM2M1ODdkMGE5ZjliZjM4NjEw
NmMwNGU3ZmI0YmFhOThkODUzLi41Yzc0YTU5N2VkMDE5N2E0NWZhY2VlNWNiNGRhZWE3MzA3NWMw
YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1l
bnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0
aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAppbmRleCBhZjQ3MzdlOWIwMmY1
NzEwMzA2NWVlN2Q4ZTdiYTA0MGRlYzBkMmFjLi44YTYzZDk0NzkwZmYwYzdjYjhiMGE5MjNmN2Y5
YWJmYTI4NTAyN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05vdEFuT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05v
dEFuT2JqZWN0LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIEpTTm90QW5PYmplY3Q6OmRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSkKK3ZvaWQgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUsIEVudW1lcmF0aW9uVHlwZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90
QW5PYmplY3QuaAppbmRleCBlN2MwYTA0ODViY2M4ZThkN2E1NGZiY2YzYzRiMmEzYjcyOTk2MDQ4
Li44NzNkNWJiNzQ3OWFjYzA0YTIwNmE1MGZlODlhZDlkZWVjNmViZjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCkBAIC03Nyw3ICs3Nyw3IEBA
IGNsYXNzIEpTTm90QW5PYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAotICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBF
bnVtZXJhdGlvblR5cGUpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDk5MDc0M2E1NThlZWE4ODc5
OTNlMjI3YTZlZDE4ZTU1MGMyM2UxYTMuLmM2NTNjMTQ5YzZmMzNlMzM1M2FhNDZhMGVkMmY1NjFm
MjIzOTdkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCkBAIC00OTUsNyArNDk1LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmRO
ZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkKICAgICAgICAg
ICAgICAgICBtX3Byb3BlcnR5TmFtZXMgPSBzdHJpbmdpZmllci5tX2FycmF5UmVwbGFjZXJQcm9w
ZXJ0eU5hbWVzLmRhdGEoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFBy
b3BlcnR5TmFtZUFycmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgICAgICAgICAg
ICAgbV9vYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMobV9vYmplY3Qu
Z2V0KCksIGV4ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOworICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwog
ICAgICAgICAgICAgICAgIG1fcHJvcGVydHlOYW1lcyA9IG9iamVjdFByb3BlcnR5TmFtZXMucmVs
ZWFzZURhdGEoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fc2l6ZSA9IG1fcHJvcGVy
dHlOYW1lcy0+cHJvcGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgpOwpAQCAtNzEyLDcgKzcxMiw3IEBA
IE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAg
ICAgICAgICAgICAgICAgb2JqZWN0U3RhY2sucHVzaChvYmplY3QpOwogICAgICAgICAgICAgICAg
IGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBw
ZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAgICAgICAgICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVy
dHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1f
ZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVu
dW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggODdjMTkxOTQ3Mjlj
NTI1NDk2ZDExMzNhMjFlOTg5MjhiMWVkZWU0Ni4uZTRjMTZmOTVhZjM2ZjIxYmIzOTFhMDVlZjI4
OWZjYTA3MDBmYWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcApAQCAtMTQ1MywxMCArMTQ1MywxMCBAQCBib29sIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5z
dGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0
eXBlKQogewogICAgIHByb3BlcnR5TmFtZXMuc2V0QmFzZU9iamVjdChvYmplY3QpOwotICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSwgdHlwZSk7CiAKICAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTQ2NSwxMCArMTQ2NSwxMCBAQCB2b2lkIEpTT2JqZWN0Ojpn
ZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQQogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBhc09iamVjdChvYmplY3QtPnByb3Rv
dHlwZSgpKTsKICAgICB3aGlsZSgxKSB7CiAgICAgICAgIGlmIChwcm90b3R5cGUtPnN0cnVjdHVy
ZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKSB7Ci0gICAgICAg
ICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhwcm90b3R5
cGUsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgICAgICAgICAgcHJvdG90eXBlLT5t
ZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlLCB0eXBlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3Rv
dHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgICAgIHByb3RvdHlwZS0+bWV0
aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSwgdHlwZSk7CiAgICAgICAgIEpTVmFsdWUgbmV4dFByb3RvID0gcHJvdG90
eXBlLT5wcm90b3R5cGUoKTsKICAgICAgICAgaWYgKG5leHRQcm90by5pc051bGwoKSkKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTQ3NiwxMSArMTQ3NiwxMSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lQQogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlw
ZSB0eXBlKQogewogICAgIGlmICghc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyht
b2RlKSkgewogICAgICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGdldCBub24taW5kZXhlZCBwcm9w
ZXJ0aWVzIGZyb20gYW55IHN1YmNsYXNzZXMgb2YgSlNPYmplY3QgdGhhdCBoYXZlIHRoZW0uCi0g
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTU0NywxMCArMTU0NywxMCBAQCB2b2lkIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG9iamVjdC0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCi12b2lkIEpTT2JqZWN0Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpCit2b2lkIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIGdl
dENsYXNzUHJvcGVydHlOYW1lcyhleGVjLCBvYmplY3QtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlLCBvYmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSk7CiAKQEAgLTE1NTgs
NyArMTU1OCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+
Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
ICAgIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUo
dm0sIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBkb3VibGUgSlNPYmplY3Q6OnRv
TnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKQEAgLTI3NDEsMTYgKzI3NDEsMTYgQEAgdWlu
dDMyX3QgSlNPYmplY3Q6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogb2JqZWN0KQogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6Z2V0U3RydWN0dXJlUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNPYmpl
Y3Q6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
Ci0gICAgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVy
ZSh2bSwgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5n
ZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlw
ZSk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU09iamVjdDo6Z2V0R2VuZXJpY1Byb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlw
ZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlVGhhdFNraXBzSlNPYmplY3QobW9kZSkpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpLCB0eXBlKTsKIAogICAgIGlmIChvYmplY3QtPnByb3Rv
dHlwZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNzU4LDEwICsyNzU4LDEwIEBA
IHZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2Jq
ZWN0KG9iamVjdC0+cHJvdG90eXBlKCkpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGlm
IChwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcygpKSB7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
UHJvcGVydHlOYW1lcyhwcm90b3R5cGUsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAg
ICAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMocHJv
dG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7Cisg
ICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHBy
b3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiAgICAgICAgIEpTVmFs
dWUgbmV4dFByb3RvID0gcHJvdG90eXBlLT5wcm90b3R5cGUoKTsKICAgICAgICAgaWYgKG5leHRQ
cm90by5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYzk3MjEzOTRiNGE4ZjAyNjU2ZTk1NmY0Nzc5ZDhkMDM3
MDQ5ZGZjMi4uNTEzYzc4ZTdhNmJkNTZiZWEyYmRjMzA4NTJkZTEyYzhkMzBmOTNkNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC00NzQsMTMgKzQ3NCwxMyBA
QCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaGFzSW5zdGFuY2Uo
RXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmYXVsdEhhc0luc3RhbmNl
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkpOwogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJh
dGlvblR5cGUpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQzMl90IGdldEVu
dW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBn
ZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogCiAgICAgSlNWYWx1
ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlID0gTm9QcmVm
ZXJlbmNlKSBjb25zdDsKICAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBk
b3VibGUmIG51bWJlciwgSlNWYWx1ZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IGYxYTJlNTYy
ZjlhYmY0MDJhYjYzOGRjMDljNmVmYzM4MGQxYzViNGQuLjJhNTE2OTcyMTFjNmQ4YTNiZTRlNGU3
ODJlMjlhZGMyYTVlYzkwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JhY2UoRXhl
Y1N0YXRlKiBleGVjKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IGpzQ2FzdDxK
U1Byb21pc2VEZWZlcnJlZCo+KGRlZmVycmVkVmFsdWUpOwogCiAgICAgLy8gNC4gTGV0ICdpdGVy
YXRvcicgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEdldEl0ZXJhdG9yKGl0ZXJhYmxlKS4KLSAg
ICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0
aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7CiAKQEAgLTM2Nyw3ICsz
NjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9y
RnVuY0FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVk
ID0ganNDYXN0PEpTUHJvbWlzZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0
LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRl
cmFibGUpLgotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0
ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaAppbmRleCBlZTE4YWJmNmViM2YzMmNmYzAxMjkxZWIxNDQ3NDBlZjc4YTk2
YTFjLi5hNjVhNjA3ZjdmNmYyZWJiMDY4YjYzOWU2ODQxOWQ5ZTViMzY4OWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaApAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIHN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoRXhlY1N0YXRlKiBleGVjCiAgICAg
ICAgIHJldHVybiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSk7CiAKICAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGJhc2UtPm1ldGhvZFRh
YmxlKHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2
bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywg
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9s
KTsKIAogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZXMpOwog
ICAgIGlmIChzdHJ1Y3R1cmUtPmNhbkNhY2hlU3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRv
cigpKQpAQCAtMTQyLDkgKzE0Miw5IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
IGdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywKICAgICAvLyB0
aGUgbmV3IGdlbmVyaWMgUHJvcGVydHlOYW1lQXJyYXkgYW5kIGZhaWxpbmcgYmVjYXVzZSB3ZSd2
ZSBhbHJlYWR5IHZpc2l0ZWQgdGhlbS4KICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9
IHN0cnVjdHVyZUVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZSh2bSk7CiAgICAgaWYgKHN0cnVj
dHVyZSA9PSBjYWNoZWRTdHJ1Y3R1cmUgJiYgc3RydWN0dXJlLT5jYW5BY2Nlc3NQcm9wZXJ0aWVz
UXVpY2tseSgpICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihsZW5ndGgpID09IGJhc2UtPmdldEFy
cmF5TGVuZ3RoKCkpCi0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1Byb3Bl
cnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICBlbHNlCi0gICAgICAg
IGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYmFzZS0+bWV0
aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJv
bCk7CiAgICAgCiAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgc3RydWN0dXJlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRleCBmNGM2ODI5
ZTA0YmMyMWExZGUzOWY3ZTRmOTAzYTliZjQ1NGI4MzcxLi41MWU3NGViNTZhM2FmNmZlYjJkZmU2
ZWEzOGFlYzFlMjNmY2VjODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3h5LmNwcApAQCAtMTA4LDEwICsxMDgsMTAgQEAgYm9vbCBKU1Byb3h5OjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3AKICAg
ICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5k
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5
TmFtZSk7CiB9CiAKLXZvaWQgSlNQcm94eTo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNQcm94eTo6Z2V0UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAg
ICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICB0
aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5
TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
ICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSwgdHlwZSk7CiB9CiAKIHVpbnQzMl90IEpTUHJveHk6OmdldEVudW1lcmFibGVMZW5ndGgoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQpAQCAtMTIwLDIzICsxMjAsMjMgQEAgdWlu
dDMyX3QgSlNQcm94eTo6Z2V0RW51bWVyYWJsZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0RW51bWVyYWJsZUxlbmd0aChleGVjLCB0aGlzT2JqZWN0LT50YXJn
ZXQoKSk7CiB9CiAKLXZvaWQgSlNQcm94eTo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQor
dm9pZCBKU1Byb3h5OjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlw
ZSkKIHsKICAgICAvLyBTa2lwIHRoZSBzdHJ1Y3R1cmUgbG9vcCwgc2luY2UgaXQgaXMgaW52YWxp
ZCBmb3IgcHJveGllcy4KIH0KIAotdm9pZCBKU1Byb3h5OjpnZXRHZW5lcmljUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNQcm94eTo6Z2V0R2Vu
ZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1l
cmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQ
cm94eSo+KG9iamVjdCk7CiAgICAgLy8gR2V0ICphbGwqIG9mIHRoZSBwcm9wZXJ0eSBuYW1lcywg
bm90IGp1c3QgdGhlIGdlbmVyaWMgb25lcywgc2luY2Ugd2Ugc2tpcHBlZCB0aGUgc3RydWN0dXJl
CiAgICAgLy8gb25lcyBhYm92ZS4KLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQo
KSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgSlNQcm94eTo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3Zv
aWQgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdC0+
dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRh
cmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlz
T2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm94eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5o
CmluZGV4IGNkYTYyMWI0Y2JhNTk3MGUxZTNhZTFiMWNmMDFlYThkNDEzNjYwZGQuLmFmZDBjZDdm
NjM1OGJkMGQ0NDY2OTZlOWRjZGMwMWE2ZGM1MTY0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3h5LmgKQEAgLTgxLDExICs4MSwxMSBAQCBjbGFzcyBKU1Byb3h5IDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBi
b29sIHNob3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQzMl90IGdldEVudW1lcmFibGVMZW5n
dGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRp
b25UeXBlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAKaW5kZXggYjhmYjIyODJhZmFlODdlY2M0MTEwMjQ1Y2U5YmI4NzNl
OTUwZjBmZi4uNGZiZmI5ZGNjODQyNWM4ZDJlMGM2N2QzYjMwM2RjOTI5NzhkOTcyNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5jcHAKQEAgLTU0LDIxICs1NCwyMyBAQCBib29sIEpTU3ltYm9sVGFibGVPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIHJl
dHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lKTsKIH0KIAotdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTU3ltYm9s
VGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNTeW1ib2xU
YWJsZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N5bWJvbFRhYmxlT2JqZWN0Kj4ob2Jq
ZWN0KTsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmpl
Y3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0
ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAg
ICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3lt
Ym9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICBpZiAoaXQtPmtleS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1By
aXZhdGUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICh0eXBl
ID09IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCAmJiBpdC0+a2V5LT5pc1VuaXF1ZSgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVl
LmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKG1vZGUpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIEpT
T2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggMmNkOWQxYmEyYjEyNzBiN2ExODJhZmI4Yzhh
NDAyMDgxNzQ4ZmI0Yi4uNmM2MDRjMGVjODAyYzk5NjY0OTE0NTMwZTAxMzU1OGMxNDVlNmE0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBKU1N5bWJvbFRhYmxlT2JqZWN0IDogcHVi
bGljIEpTU2NvcGUgewogICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKICAgICAKIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJc0Vudmlyb25t
ZW50UmVjb3JkIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZs
YWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0
b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0
b3JQcm90b3R5cGUuY3BwCmluZGV4IGIyMjBiOTg3NTg4NWM0MmY5Y2U2MzhmMzIyMjQ3OTJjMzI3
NjEwMTcuLjAzNTY0Zjg4ODExZjNlN2ZhYmZiMGFkYWI5YmJjOWFjYTFmYmFiZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlw
ZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRo
aXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lLCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0s
IDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvck5leHRQcml2
YXRlTmFtZSwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRl
eCA1NDgyMjI3Njk0MDBiNzE4NTJhZjdkYjhiNzVlZjUwNzU0NGVkZDRmLi5mODQzNjdhZTgwYjcy
NjM3NTA1ZWRjMTU2M2Q4YjI4ODhjNThjOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBNYXBQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFBy
b3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPnZhbHVlcywgbWFwUHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBtYXBQcm90
b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBE
b250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwogCiAgICAg
R2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIG1hcFBy
b3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwMmU1NzUyODllMTZjZGMxNmEwYmJhMzQ5Nzg1ZjJl
MjdlZjE3ZGQuLjQwYjMzNDgxYjg2ZjllYTIwZDliZDg5NWNiYjM5NDNiNDZkZmE2ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKQEAgLTM0LDEyICszNCwxNCBAQAogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgog
I2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgi
CisjaW5jbHVkZSAiU3ltYm9sLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRl
Kik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVy
dHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKik7CiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhF
eGVjU3RhdGUqKTsKQEAgLTY2LDYgKzY4LDcgQEAKICAgZ2V0UHJvdG90eXBlT2YgICAgICAgICAg
ICBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5RGVzY3JpcHRvciAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJv
cGVydHlOYW1lcyAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZ2V0T3duUHJvcGVydHlTeW1ib2xzICAgICBvYmpl
Y3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKICAga2V5cyAgICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcktleXMgICAg
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZGVmaW5lUHJvcGVydHkg
ICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5ICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDMKICAgZGVmaW5lUHJvcGVydGllcyAgICAgICAgICBvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnRpZXMgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKQEAg
LTIwNiw3ICsyMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogICAgIGlmICghZXhlYy0+
YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgcHJvcGVydHkg
bmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50
KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmpl
Y3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50
KDApKSwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVy
YXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICBKU0FycmF5KiBuYW1lcyA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZXhlYywgMCk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0
aWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkr
KykKQEAgLTIxNSwxMiArMjE4LDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiB9CiAKIC8v
IEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFu
IG9iamVjdC4iKSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Cisg
ICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHBy
b3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6SW5j
bHVkZVN5bWJvbCk7CisgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4
ZWMsIDApOworICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKKyAgICAgICAg
QXRvbWljU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnRpZXNbaV0uaW1wbCgpOworICAgICAgICBp
ZiAoaW1wbC0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIG5hbWVzLT5wdXNoKGV4ZWMsIFN5bWJv
bDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGltcGwpKTsKKyAgICB9CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShuYW1lcyk7Cit9CisKKy8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hl
LgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQga2V5cyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9i
amVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAg
YXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3Bl
cnRpZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFy
Z3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMo
YXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogICAgIEpT
QXJyYXkqIGtleXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBu
dW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBAIC0zMzEsNyArMzUxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0
ZSogZXhlYykKIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvcGVydGllcykKIHsKICAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMp
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChw
cm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgYXNPYmplY3QocHJvcGVydGllcyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkluY2x1ZGVT
eW1ib2wpOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydHlOYW1lcy5zaXplKCk7
CiAgICAgVmVjdG9yPFByb3BlcnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRvcnM7CiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgbWFya0J1ZmZlcjsKQEAgLTM5OCw3ICs0MTgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3RhdGUqIGV4ZWMp
CiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAg
ICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6SW5jbHVk
ZVN5bWJvbCk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBy
b3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAg
ICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00MzUsNyArNDU1LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkg
bmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0
aW9uVHlwZTo6SW5jbHVkZVN5bWJvbCk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBA
IC00ODMsNyArNTAzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5h
bWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcywgRW51bWVyYXRpb25UeXBlOjpJbmNsdWRlU3ltYm9sKTsKICAgICBQcm9wZXJ0eU5h
bWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3Ig
KFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdp
bigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRo
ZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhv
ZCBvZiBPIHdpdGggUC4KQEAgLTUxMyw3ICs1MzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKiBleGVjKQogCiAgICAg
Ly8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3Bl
cnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMs
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkluY2x1ZGVTeW1ib2wp
OwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVz
LmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8g
YS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5
XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ByaXZhdGVOYW1lLmgKaW5kZXggMjE0MTY0NDY2NDVjN2ZmZjAzZjdjODJkMTc4NzM5
YWQ1NjA4YmY2NC4uYmRmOGZmM2FjMzA3ZDVlOGFmMGZhYzlmOGI5MWIxYTZhYjgzYzFjNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCkBAIC0zNSwxOSAr
MzUsMjUgQEAgY2xhc3MgUHJpdmF0ZU5hbWUgewogICAgIFByaXZhdGVOYW1lKCkKICAgICAgICAg
OiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkoKSkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAgIH0KLSAgICBQcml2YXRlTmFtZShjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uKQotICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVh
dGVVbmlxdWUoZGVzY3JpcHRpb24uaW1wbCgpKSkKKworICAgIGVudW0gQ3JlYXRlUHJpdmF0ZVRh
ZyB7IENyZWF0ZVByaXZhdGUgfTsKKyAgICBQcml2YXRlTmFtZShDcmVhdGVQcml2YXRlVGFnKQor
ICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVQcml2YXRlKCkpCiAgICAg
ewotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAgICB9CisKICAgICBleHBs
aWNpdCBQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpCiAgICAgICAgIDogbV9pbXBsKHVpZCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAgIH0KIAorICAg
IGV4cGxpY2l0IFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCisgICAgICAg
IDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5pbXBsKCkpKQor
ICAgIHsKKyAgICB9CisKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4obV9pbXBsLmdldCgpKTsgfQogCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
dWlkKCkgPT0gb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lLmgKaW5kZXggMzA3NGM3MmUxMDcwMTMzYjk3YjAzYjFkZmY0YTQzZGUxMzJm
YzBhNi4uZWQ1MWQ2NDgyZWQ3OTBhYzEzZmIxMWEyODY5MjkyMDkxY2E4YjdhZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTEwNCwxNCArMTA0
LDE0IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiBwdWJs
aWNOYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmlzVW5pcXVlKCkg
PyBudWxscHRyIDogbV9pbXBsOworICAgICAgICByZXR1cm4gKCFtX2ltcGwgfHwgbV9pbXBsLT5p
c1VuaXF1ZSgpKSA/IG51bGxwdHIgOiBtX2ltcGw7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
IHVpbnQzMl90IE5vdEFuSW5kZXggPSBVSU5UX01BWDsKIAogICAgIHVpbnQzMl90IGFzSW5kZXgo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbCA/IHRvVUludDMyRnJvbVN0cmluZ0ltcGwo
bV9pbXBsKSA6IE5vdEFuSW5kZXg7CisgICAgICAgIHJldHVybiAobV9pbXBsICYmICFtX2ltcGwt
PmlzVW5pcXVlKCkpID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDogTm90QW5JbmRl
eDsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0
ZDlkMGIyN2U0ZDBjOGM5MWY5ZmViNDVhMWQ1NGU1OTVkMzNkNTE5Li44ZDI5MTE5ZWJjNGVkOWE2
YTQ0ZTA2Mzc2OTRiYzAzZDI0MDZjZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTEwMywyNSArMTAzLDI1IEBAIGJvb2wgUmVnRXhw
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIFJlZ0V4
cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsKICAgICBpZiAoc2hvdWxkSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7Ci0gICAgQmFzZTo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAg
QmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBSZWdFeHBPYmplY3Q6
OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1l
cmF0aW9uVHlwZSB0eXBlKQogewogICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKG1vZGUpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGFzdEluZGV4KTsKLSAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0UHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCi12b2lkIFJlZ0V4cE9iamVj
dDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpCit2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIGlm
IChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQogICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKLSAgICBCYXNlOjpn
ZXRHZW5lcmljUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OworICAgIEJhc2U6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIHN0YXRpYyBib29sIHJlamVjdChFeGVjU3RhdGUq
IGV4ZWMsIGJvb2wgdGhyb3dFeGNlcHRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IDdjNGI3NTA5NDVi
YmU4NWQxNjg1ZjVjNzU3OTE2OGM4ZjE0YmUxMjMuLmM1OTI2MjFhNzRlYTIzOTZkMjQ1YmUwMWY5
MjYwNjE3NTJmOGU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5oCkBAIC04Miw5ICs4Miw5IEBAIGNsYXNzIFJlZ0V4cE9iamVjdCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVt
ZXJhdGlvblR5cGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNw
cAppbmRleCA1NzNhY2ZhNWNkNzY0YjA5ZWU3NTQzYjM0N2I0OWE1MTExZTcwNTM3Li44ZWE2MTA0
OGQ3NDk3ZWFjMDVjOTExMWJjMTI2ODNiNmNmODI0OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIHZvaWQgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5m
bygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwg
U2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBTZXRJdGVy
YXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIFNldEl0
ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5kZXggZjg4ZWE3Y2Y5ODY4
ZjY2OGI4YzJlODg4MTVmZjY1Y2YzOTkyN2I0OS4uNDk5NmRhMGVhNTMxM2ZkMmU2MWU3MWE2ZWY0
MzgzNTFmYWEzYmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQ
cm90b3R5cGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCBzZXRQcm90b0Z1bmNLZXlzLCBE
b250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52
YWx1ZXMsIHNldFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgc2V0UHJvdG9GdW5jRW50cmllcywg
RG9udEVudW0sIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JQcml2YXRlTmFtZSwgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHNl
dFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKIAogICAgIEdldHRlclNldHRlciogYWNjZXNz
b3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2
bS5wcm9wZXJ0eU5hbWVzLT5zaXplLnN0cmluZygpLCBzZXRQcm90b0Z1bmNTaXplKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDUwMDFi
Y2M0ZTFiN2UzNzkzZWQyNmUxNDIwYTgwYTYwNDY4ZTEzYzYuLjc1NzAxNzQ3YTc0YjhmNDAxMGYz
ZjBlYmI2MmJmNjU5MWIzYmVhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
amVjdCwgZXhlYywgaSk7CiB9CiAKLXZvaWQgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBTdHJpbmdPYmplY3Q6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVu
dW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpz
Q2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3QpOwogICAgIGludCBzaXplID0gdGhpc09iamVjdC0+
aW50ZXJuYWxWYWx1ZSgpLT5sZW5ndGgoKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFN0cmlu
Z09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcgogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIGkpKTsKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2Rl
KSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBl
KTsKIH0KIAogU3RyaW5nT2JqZWN0KiBjb25zdHJ1Y3RTdHJpbmcoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggMGNlYmZkZTdhZjU1ODE3Nzk5NjMwMGM3
YThiNzJlYTkwNzY1MzY0Ni4uMjE0YzI3YmRhMGFhMjMzNDM1OTgxMTZlYjc3YWIzNzNkNjgwNTI1
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAg
LTUzLDcgKzUzLDcgQEAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVj
dCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAzZmNiNDI2Y2RhMGQ1YmJhYzMxNzBhOGJj
YjQ2NjE3NWYyOWM3NDI1Li4xOGJhYTNlMWJiOGY2MjFmMjA0ZDNiMDNkODhlZDM3MDJhMjIzMDcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTkz
NSw3ICs5MzUsNyBAQCB2b2lkIFN0cnVjdHVyZTo6Y3JlYXRlUHJvcGVydHlNYXAoY29uc3QgR0NT
YWZlQ29uY3VycmVudEpJVExvY2tlciYsIFZNJiB2bSwgdW5zaQogICAgIHByb3BlcnR5VGFibGUo
KS5zZXQodm0sIHRoaXMsIFByb3BlcnR5VGFibGU6OmNyZWF0ZSh2bSwgY2FwYWNpdHkpKTsKIH0K
IAotdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQor
dm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVt
ZXJhdGlvblR5cGUgdHlwZSkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAg
bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KHZtLCBkZWZlckdDKTsKQEAgLTk0Nyw3
ICs5NDcsOSBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUo
Vk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydAogICAgIFByb3BlcnR5VGFibGU6Oml0
ZXJhdG9yIGVuZCA9IHByb3BlcnR5VGFibGUoKS0+ZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eVRh
YmxlOjppdGVyYXRvciBpdGVyID0gcHJvcGVydHlUYWJsZSgpLT5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygp
IHx8ICEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSk7Ci0gICAgICAgIGlmICghaXRlci0+
a2V5LT5pc1VuaXF1ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgc2hv
dWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpIHsKKyAgICAgICAgaWYgKCFpdGVy
LT5rZXktPmlzUHJpdmF0ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwg
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpIHsKKyAgICAgICAgICAgIGlm
ICh0eXBlID09IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCAmJiBpdGVyLT5rZXktPmlz
VW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoa25v
d25VbmlxdWUpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGRLbm93blVuaXF1ZShp
dGVyLT5rZXkpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaAppbmRleCA0ZDdlNWMxNDdmZmFjMzA1OTYyMmE5MDQ3MmUxMmJlM2I3MTNm
NzBhLi5jMTViYjJhNDkyZGVhMDMzMWNiYjBlNmQ2NjRlODc3MTVjYThkNzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMzIzLDcgKzMyMyw3IEBAIGNs
YXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgY2FuQ2FjaGVHZW5lcmlj
UHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0OwogICAgIGJvb2wgY2FuQWNjZXNzUHJvcGVy
dGllc1F1aWNrbHkoKSBjb25zdDsKIAotICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1
Y3R1cmUoVk0mLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgdm9p
ZCBnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShWTSYsIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogCiAgICAgSlNTdHJpbmcqIG9iamVj
dFRvU3RyaW5nVmFsdWUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAppbmRleCA5OWNlNjg2Mjc0ZmQ3NzM5MjhkZGQ1
OWZmMWY5Y2FmNGVlYmUyMTFlLi4xOGU3MjgyYjQ3YjhjMTc0NWE3MmQ5ZmU5ZDU1OGQ2NjViMWNj
NmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29u
c3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBACiB9CiAKICNkZWZpbmUgSU5JVElBTElaRV9X
RUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpKSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSMjU3ltYm9sLmltcGwoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAog
dm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTeW1ib2xQcm90
b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggMjY2Yjk3
ZTRjODg2NjdiZjE0NjBlN2I5MWJiMDUxYzRiYTUzODk3Yi4uMmUxODNlM2NiYWQ4ZmYxNzYwMzgx
YTlhZjljM2RkNWU0ZDI3MjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTI3Mywx
NCArMjczLDE0IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICBTVFJJTkdfU1RBVFNfQURE
XzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwogICAgIH0KIAotICAgIGVudW0gQ3JlYXRl
RW1wdHlVbmlxdWVUYWcgeyBDcmVhdGVFbXB0eVVuaXF1ZSB9OwotICAgIFN0cmluZ0ltcGwoQ3Jl
YXRlRW1wdHlVbmlxdWVUYWcpCisgICAgZW51bSBDcmVhdGVVbmlxdWVFbXB0eVRhZyB7IENyZWF0
ZVVuaXF1ZUVtcHR5IH07CisgICAgU3RyaW5nSW1wbChDcmVhdGVVbmlxdWVFbXB0eVRhZywgYm9v
bCBpc1ByaXZhdGUpCiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQog
ICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgIC8vIFdlIGV4cGVjdCBtX2xlbmd0aCB0byBi
ZSBpbml0aWFsaXplZCB0byAwIGFzIHdlIHVzZSBpdAogICAgICAgICAvLyB0byByZXByZXNlbnQg
YSBudWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgogICAgICAgICAsIG1fZGF0YTgocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Mo
aGFzaEFuZEZsYWdzRm9yVW5pcXVlKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJu
YWwpKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclVuaXF1ZShzX2hh
c2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsIHwgKGlzUHJpdmF0ZSA/IHNfaGFzaEZs
YWdJc1ByaXZhdGUgOiAwKSkpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAKQEAg
LTM4MCw3ICszODAsMTIgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pcXVlRW1wdHkoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVuaXF1ZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZVVuaXF1ZUVtcHR5
LCBmYWxzZSkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBjcmVhdGVVbmlxdWVQcml2YXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlVW5pcXVlRW1wdHksIHRydWUpKTsKICAgICB9CiAKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlx
dWUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApOwpAQCAtMzk1LDYgKzQwMCw3IEBAIGNsYXNz
IFN0cmluZ0ltcGwgewogICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXM4Qml0KCkgeyByZXR1cm4g
c19oYXNoRmxhZzhCaXRCdWZmZXI7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzQXRvbWlj
KCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzQXRvbWljOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGZs
YWdJc1VuaXF1ZSgpIHsgcmV0dXJuIHNfaGFzaEZsYWdJc1VuaXF1ZTsgfQorICAgIHN0YXRpYyB1
bnNpZ25lZCBmbGFnSXNQcml2YXRlKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzUHJpdmF0ZTsgfQog
ICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlw
ZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CkBAIC00
NTYsNiArNDYyLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBib29sIGlzVW5pcXVlKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNVbmlxdWU7IH0KIAor
ICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hh
c2hGbGFnSXNQcml2YXRlOyB9CisKICAgICBib29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNBdG9taWM7IH0KICAgICB2b2lkIHNldElzQXRv
bWljKGJvb2wgaXNBdG9taWMpCiAgICAgewpAQCAtNzc4LDExICs3ODYsMTIgQEAgY2xhc3MgU3Ry
aW5nSW1wbCB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRGbGFnSXNTdGF0
aWNTdHJpbmcgPSAweDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRJbmNy
ZW1lbnQgPSAweDI7IC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlZiAvIGRlcmVmIHdpdGhvdXQgZGlz
dHVyYmluZyB0aGUgc3RhdGljIHN0cmluZyBmbGFnLgogCi0gICAgLy8gVGhlIGJvdHRvbSA3IGJp
dHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2Zs
YWdDb3VudCA9IDc7CisgICAgLy8gVGhlIGJvdHRvbSA4IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZs
YWdzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDg7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFnQ291bnQpIC0gMTsK
ICAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJpbmdIYXNoZXI6OmZsYWdDb3Vu
dCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zvcl9TdHJpbmdJbXBsX2ZsYWdz
KTsKIAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnSXNQcml2YXRlID0gMXUg
PDwgNzsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0lzVW5pcXVlID0gMXUg
PDwgNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZzhCaXRCdWZmZXIgPSAx
dSA8PCA1OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnSXNBdG9taWMgPSAx
dSA8PCA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAyZDZlN2JkYjRjMWE3ZWU3NTYzZGYxMGJm
MWUwYzYxZDMxYWI5NWU2Li45NDRmMjQyOTA1MGU2ODg3NjhiODZlMWQ2ZjVmMjE1NmQzYmFlODVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzMzMCw3ICszMzMwLDcgQEAgX19aTjNKU0M4Qmlu
ZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185RXhl
Y1N0YXRlRU5TXzEKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRmaW5pc2hDcmVh
dGlvbkVSTlNfMlZNRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNmdldENvbnN0
cnVjdERhdGFFUE5TXzZKU0NlbGxFUk5TXzEzQ29uc3RydWN0RGF0YUUKIF9fWk4zSlNDOEJpbmRp
bmdzMTNSdW50aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzhKU09iamVjdEVQTlNf
OUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMTJQcm9wZXJ0eVNsb3RFCi1fX1pOM0pT
QzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOEpTT2Jq
ZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRp
b25Nb2RlRQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOWdldE93blByb3BlcnR5
TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJh
eUVOU18xNUVudW1lcmF0aW9uTW9kZUVOU18xNUVudW1lcmF0aW9uVHlwZUUKIF9fWk4zSlNDOEJp
bmRpbmdzMTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18x
MlByb3BlcnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pT
QzhCaW5kaW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVu
dGltZU9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMTZi
OWNkNTE3NjBjZjRlNTJlYmQyM2I3OWQyZjM1MzMzMDY3ZTJhYi4uNTY3MDcxZTM3OWQ3ZjQxMWVi
YWJjODhkNmViYjYwM2JiYzFiMzc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0xNTMxMiw3ICsx
NTMxMiw2IEBAIF9fWk43V2ViQ29yZTI2anNIVE1MTWV0YUVsZW1lbnRIdHRwRXF1aXZFUE4zSlND
OUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvCiBfX1pON1dlYkNvcmUxN0pTVGltZVJh
bmdlc093bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VOM0pTQzZIYW5kbGVJTlMxXzdV
bmtub3duRUVFUHZSTlMxXzExU2xvdFZpc2l0b3JFCiBfX1pON1dlYkNvcmUxN0pTVGltZVJhbmdl
c093bmVyOGZpbmFsaXplRU4zSlNDNkhhbmRsZUlOUzFfN1Vua25vd25FRUVQdgogX19aTjdXZWJD
b3JlMTJKU1RpbWVSYW5nZXM3ZGVzdHJveUVQTjNKU0M2SlNDZWxsRQotX19aTjdXZWJDb3JlMTBK
U05vZGVMaXN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVj
U3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9f
WkwxOWtDTVRpbWVaZXJvRnVuY3Rpb252CiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQz
NWNoYW5nZU5ldHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlRXYKIF9fWk5LN1dlYkNvcmUzME1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjE1bWluVGltZVNlZWthYmxlRXYKQEAgLTE3OTU5
LDcgKzE3OTU4LDYgQEAgX19aTjdXZWJDb3JlMTFKU0RPTVBsdWdpbjExaW5kZXhHZXR0ZXJFUE4z
SlNDOUV4ZWNTdGF0ZUVOUzFfN0pTVmFsdWVFagogX19aTjdXZWJDb3JlOURPTVBsdWdpbjRpdGVt
RWoKIF9fWk43V2ViQ29yZTE3anNET01NaW1lVHlwZVR5cGVFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBf
N0pTVmFsdWVFTlMwXzEyUHJvcGVydHlOYW1lRQogX19aTks3V2ViQ29yZTExRE9NTWltZVR5cGU0
dHlwZUV2Ci1fX1pON1dlYkNvcmU5SlNTdG9yYWdlMTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pT
QzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8x
NUVudW1lcmF0aW9uTW9kZUUKIF9fWk5LN1dlYkNvcmUxOFJlbmRlclRleHRGcmFnbWVudDE0aXNU
ZXh0RnJhZ21lbnRFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNWhhbmRsZVRleHROb2Rl
Rmlyc3RMZXR0ZXJFUE5TXzE4UmVuZGVyVGV4dEZyYWdtZW50RQogX19aTjNXVEYxMlN0cmluZ0Fw
cGVuZElOU182U3RyaW5nRVBLY0U3d3JpdGVUb0VQdApAQCAtMTgyMjgsOCArMTgyMjYsNiBAQCBf
X1pOSzdXZWJDb3JlMjNSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDI5Y29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxXaWR0aHNFUk5TXzEwTGF5bwogX19aTks3V2ViQ29yZTExUmVuZGVyVGhlbWUyMGZpbGVM
aXN0RGVmYXVsdExhYmVsRWIKIF9fWk43V2ViQ29yZTI5ZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVk
TGFiZWxFdgogX19aTks3V2ViQ29yZTIzUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wzNnJlcXVpcmVz
Rm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbkV2Ci1fX1pON1dlYkNvcmUxMUpTRE9NV2luZG93
MTZnZXRQcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8x
N1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKLV9fWk43V2ViQ29yZTEx
SlNET01XaW5kb3cxOWdldE93blByb3BlcnR5TmFtZXNFUE4zSlNDOEpTT2JqZWN0RVBOUzFfOUV4
ZWNTdGF0ZUVSTlMxXzE3UHJvcGVydHlOYW1lQXJyYXlFTlMxXzE1RW51bWVyYXRpb25Nb2RlRQog
X19aTjdXZWJDb3JlOURPTVdpbmRvdzE4Y2FuU2hvd01vZGFsRGlhbG9nRVBLTlNfNUZyYW1lRQog
X19aTks3V2ViQ29yZTZDaHJvbWUxMWNhblJ1bk1vZGFsRXYKIF9fWk43V2ViQ29yZTMxanNYTUxI
dHRwUmVxdWVzdFdpdGhDcmVkZW50aWFsc0VQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVO
UzBfMTJQcm9wZXJ0eU5hbWVFCkBAIC0xODI3Miw3ICsxODI2OCw2IEBAIF9fWk43V2ViQ29yZTIy
anNET01XaW5kb3dPbm1vdXNlZG93bkVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOUzBf
MTJQcm9wZXJ0CiBfX1pON1dlYkNvcmUyNGpzRE9NV2luZG93T25jb250ZXh0bWVudUVQTjNKU0M5
RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCiBfX1pOSzdXZWJDb3Jl
MTNGaWxlSW5wdXRUeXBlMjBzYXZlRm9ybUNvbnRyb2xTdGF0ZUV2CiBfX1pON1dlYkNvcmUyM1Jl
bmRlckZpbGVVcGxvYWRDb250cm9sRDBFdgotX19aTjdXZWJDb3JlMTBKU0xvY2F0aW9uMTlnZXRP
d25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1By
b3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDMThnZXRTdGF0
aWNWYWx1ZVNsb3RJTjdXZWJDb3JlMTVKU0RPTVN0cmluZ0xpc3RFTlMxXzEySlNET01XcmFwcGVy
RUVFYlBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hUYWJsZUVQVF9OU18xMlByb3BlcnR5TmFtZUVS
TlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pON1dlYkNvcmUyNEpTRE9NU3RyaW5nTGlzdFByb3RvdHlw
ZTE4Z2V0T3duUHJvcGVydHlTbG90RVBOM0pTQzZKU0NlbGxFUE5TMV85RXhlY1N0YXRlRU5TMV8x
MlByb3BlcnR5TmFtZUVSTlMxXzEyUHJvcGVydHlTbG90RQogX19aTjdXZWJDb3JlMTFTVkdGb250
RGF0YUMxRVBOU18xOFNWR0ZvbnRGYWNlRWxlbWVudEUKQEAgLTE4NDUzLDcgKzE4NDQ4LDYgQEAg
X19aTjdXZWJDb3JlMTlIVE1MUHJvZ3Jlc3NFbGVtZW50NmF0dGFjaEVSS05TXzROb2RlMTNBdHRh
Y2hDb250ZXh0RQogX19aTks3V2ViQ29yZTE0UmVuZGVyVGhlbWVNYWMyMmFkanVzdFByb2dyZXNz
QmFyU3R5bGVFUE5TXzEzU3R5bGVSZXNvbHZlckVQTlNfMTFSZW5kZXJTdHlsZUVQTlNfN0VsZW1l
bnRFCiBfX1pON1dlYkNvcmUyMkNTU0NhbGNCaW5hcnlPcGVyYXRpb25EMEV2CiBfX1pON1dlYkNv
cmUyMUNTU0NhbGNQcmltaXRpdmVWYWx1ZUQwRXYKLV9fWk43V2ViQ29yZTE1SlNET01TdHJpbmdM
aXN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVF
Uk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk43V2Vi
Q29yZUwyM2dldEpTRE9NU3RyaW5nTGlzdFRhYmxlRVBOM0pTQzlFeGVjU3RhdGVFCiBfX1pON1dl
YkNvcmVMMjJnZXRKU01lc3NhZ2VFdmVudFRhYmxlRVBOM0pTQzlFeGVjU3RhdGVFCiBfX1pON1dl
YkNvcmVMMzFnZXRKU01lc3NhZ2VFdmVudFByb3RvdHlwZVRhYmxlRVBOM0pTQzlFeGVjU3RhdGVF
CkBAIC0yNzIxMCw3ICsyNzIwNCw2IEBAIF9fWlpON1dlYkNvcmVMMTlzZWxlY3RvcnNGcm9tU291
cmNlRVBLTlNfMTdDU1NSdWxlU291cmNlRGF0YUVSS04zV1RGNlN0cmluZ0VFN2NvCiBfX1pHVlpO
N1dlYkNvcmVMMTlzZWxlY3RvcnNGcm9tU291cmNlRVBLTlNfMTdDU1NSdWxlU291cmNlRGF0YUVS
S04zV1RGNlN0cmluZ0VFN2NvbW1lbnQuYgogX19aWk43V2ViQ29yZTIySW5zcGVjdG9yVGltZWxp
bmVBZ2VudDI0aW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1
SW5zcGVjdG9yT2JqZWN0RUVFUktOUzFfNlN0cmluZ0VTN19FN3Byb2dyYW0KIF9fWkdWWk43V2Vi
Q29yZTIySW5zcGVjdG9yVGltZWxpbmVBZ2VudDI0aW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lRU4z
V1RGMTBQYXNzUmVmUHRySU5TXzE1SW5zcGVjdG9yT2JqZWN0RUVFUktOUzFfNlN0cmluZ0VTN19F
N3Byb2dyYW0uYgotX19aWk43V2ViQ29yZTIxSlNDU1NTdHlsZURlY2xhcmF0aW9uMTlnZXRPd25Q
cm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3Bl
cnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUVFMTlwcm9wZXJ0eUlkZW50aWZpZXJz
CiBfX1paTjdXZWJDb3JlMjNKU0luc3BlY3RvckZyb250ZW5kSG9zdDhwbGF0Zm9ybUVQTjNKU0M5
RXhlY1N0YXRlRUU4cGxhdGZvcm0KIF9fWkdWWk43V2ViQ29yZTIzSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q4cGxhdGZvcm1FUE4zSlNDOUV4ZWNTdGF0ZUVFOHBsYXRmb3JtLmIKIF9fWlpON1dlYkNv
cmUyM0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0NHBvcnRFUE4zSlNDOUV4ZWNTdGF0ZUVFNHBvcnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKaW5kZXggZGY0ZGM3ODYy
ZDJkYWFhOWYyYjY3NmQxZWQzMTcyYTJmM2VhZmQyOS4uM2NjOWY1NDk3NDJkZjQzZjkwZTJlZTJj
MTExYTQ4NDBhYjMwOGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFy
eS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVz
QXNTdHJpbmdIYXNoTWFwKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtYXApIGMKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKICAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6
OkV4Y2x1ZGVTeW1ib2wpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5hbWVzLmVuZCgp
OyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5nKCk7CiAgICAg
ICAgIGlmIChzdHJpbmdLZXkuaXNFbXB0eSgpKQpAQCAtODgsNyArODgsNyBAQCBib29sIERpY3Rp
b25hcnk6OmdldE93blByb3BlcnR5TmFtZXMoVmVjdG9yPFN0cmluZz4mIG5hbWVzKSBjb25zdAog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsKIAogICAgIFBy
b3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgSlNPYmplY3Q6OmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0
aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5TmFt
ZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0LT5zdHJpbmco
KTsKICAgICAgICAgaWYgKCFzdHJpbmdLZXkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAK
aW5kZXggODk2Yjk5Y2U5MWI3MmM2Y2ZlODAyYjE3Y2JkMDcwZjI0NWQ0YTQ3ZC4uYTU1NTQ1ZmM1
M2ZiZDQ2OGU5M2FjMWU5NzY0OWU5YzI3YjBiNDQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBA
IC0zODIsNyArMzgyLDcgQEAgSlNWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihjc3NWYWx1ZSkpOwogfQogCi12b2lkIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSkKK3ZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkK
IHsKICAgICBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDU1NT
dHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBKU0NTU1N0eWxl
RGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGUKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkK
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQocHJvcGVydHlJZGVudGlmaWVyc1tpXSk7CiAKLSAg
ICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcAppbmRleCAzYWZhYWUyMzQwNzc0OWFjN2E5ZjI3MjBmM2Y4OTdmMGJlNTdjZGU3Li4w
Y2RjMDY1YTA0NDIxNmFjMmUyMTg4ZDEyZDgyMzIyYmQ4ZDFkOWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC00Niw3
ICs0Niw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5
cGUpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01TdHJp
bmdNYXAqPihvYmplY3QpOwogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwpAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywg
bmFtZXNbaV0pKTsKIAotICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKIH0KIAogYm9v
bCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDAyNjA4ZmE2ZTRlMmY1NzFlNGIzNzFl
NjgxOWY4OTMyM2E4OTJhOWEuLmY0Y2NjMWExNDEzNTk1M2JmOGNkYTRiYmJiNmIxYTU4MDdmMDEx
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKQEAgLTM4NCw0MCArMzg0LDQwIEBAIHVpbnQzMl90IEpTRE9NV2luZG93OjpnZXRFbnVt
ZXJhYmxlTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1
cm4gQmFzZTo6Z2V0RW51bWVyYWJsZUxlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKIH0KIAotdm9p
ZCBKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNET01XaW5kb3c6OmdldFN0cnVjdHVyZVByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0
eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93
Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBi
eSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldFN0cnVjdHVy
ZVByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlw
ZSk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3c6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0RPTVdpbmRvdzo6Z2V0R2VuZXJp
Y1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0
aW9uVHlwZSB0eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
RE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51
bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmlt
cGwoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRH
ZW5lcmljUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
LCB0eXBlKTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNET01XaW5kb3c6OmdldFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0
eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93
Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBi
eSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldFByb3BlcnR5TmFtZXModGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUpCit2b2lkIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsKICAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAg
Ly8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBz
YW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQogICAgICAgICByZXR1cm47Ci0g
ICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBib29sIEpTRE9NV2luZG93Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggODI1ODI3MDA5ZjljN2Y4
ZGE4YmE5NjM2Nzc4OTE2MjZlMDNkYWZkYy4uOGM5Mjg0NGQxNTJjNDhhMzBmMGI3M2EzMmJjNGYy
MTU3MzU0NTk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0
b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlD
dXN0b20uY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBib29sIEpTSGlzdG9yeTo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcgog
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTSGlzdG9yeTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRp
b25UeXBlIHR5cGUpCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTSGlz
dG9yeSo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgaGlzdG9yeSBvYmplY3QgdG8g
ZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghc2hvdWxk
QWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKIH0KIAogSlNW
YWx1ZSBKU0hpc3Rvcnk6OnN0YXRlKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggZjE1OGEyZjRm
ODQ3OWNhYmEyMzJjNmUwMjgyYTBjMGFlMWYyNjg0MS4uYzg3ZTNiNmJjNjY1ZWRhZGU4Y2VlZjJh
MTdjYTdmMzQyM2M3OTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAKQEAgLTExNiwxMyArMTE2LDEzIEBAIGJvb2wgSlNMb2NhdGlvbjo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi12b2lkIEpTTG9jYXRpb246OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTTG9jYXRp
b246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUs
IEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNMb2NhdGlvbio+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgbG9jYXRp
b24gb2JqZWN0IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAg
ICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCku
ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93
blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlw
ZSk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCA5NDJj
NGRmYjZlN2U2OGY4OWEwY2Y3OWQ1NDVlMzE5MTQ2YmMyNzM3Li4yNzM5YTU4Njk1ZDE2MzMzNzcy
NDQwMmE2YTlmNWRiYzMwMTdiYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBKU1N0b3JhZ2U6OmRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgcHIKICAgICByZXR1cm4gZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAotdm9pZCBKU1N0b3JhZ2U6OmdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTU3Rv
cmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTU3RvcmFnZSo+KG9iamVjdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBA
IC05Nyw3ICs5Nyw3IEBAIHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogICAgICAgICAKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3Bl
cnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9
CiAKIGJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAppbmRleCBkY2E1NjAzZjljMzk5NjE4MzM4YWY3ZTBkYjMxYWRmMTBjYjZiNmY5Li4yNTA2NTlj
NmFmYTdjYjYzZGFiNmRjNDMwNTUxZDcwZTQ4YWNhZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEyNDgsNyAr
MTI0OCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFs
aXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNrLnJlbW92ZUxh
c3QoKTsKIAogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0
eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRh
YmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwgbV9leGVjLCBwcm9wZXJ0
eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAg
ICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
YXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBAIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAg
ICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3QpOwogICAgICAg
ICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3BlcnR5
U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAgICAgICAgICAg
IGluT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluT2JqZWN0LCBt
X2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
KyAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAgICAgICAgICBG
QUxMVEhST1VHSDsKQEAgLTEzODEsNyArMTM4MSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2Rl
IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihvYmplY3QpIHx8IGpzRHlu
YW1pY0Nhc3Q8SlNNYXAqPihvYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlT
dGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1f
ZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogICAgICAgICAg
ICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAgICAgICAg
ICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0
U3RhcnRWaXNpdE1lbWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjk4ZjMzZDFjNDk1YzMwZThiMTVmYThhNGY3MzAx
Y2IxMmRjYTRlNS4uODU3Mzk2OGIwMzkwYWM4NWI0NmI1NjRkY2ZkMmY4NGMyNDc0ZTYxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTk1MywxNiArOTUzLDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBDdXN0
b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2luZG93CiAgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlv
bk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVy
dHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBt
b2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6
RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBKU0M6OkVu
dW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldEdlbmVy
aWNQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcywgSlNDOjpFbnVtZXJhdGlvblR5cGUgPSBKU0M6OkVudW1lcmF0aW9uVHlw
ZTo6RXhjbHVkZVN5bWJvbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgSlNDOjpFbnVtZXJhdGlvblR5
cGUgPSBKU0M6OkVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0RW51bWVyYWJsZUxl
bmd0aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwogICAgICAgICAkc3Ry
dWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsKICAgICB9
CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9
IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
LCBKU0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3lt
Ym9sKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyJ9ID0gMTsgICAgICAgCiAgICAgfQogCkBAIC0yNjg0LDEzICsyNjg0LDEzIEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRpbmRleGVkR2V0
dGVyRnVuY3Rpb24gJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21F
bnVtZXJhdGVQcm9wZXJ0eSJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAk
e2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NO
YW1lfTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0
aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAo
dW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwg
Y291bnQ7ICsraSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7XG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cblxuIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAppbmRleCAxZDU5MTg5
YjQ3MjA1MTE3MTc5YzYzOWE2MDViMzA4NmVkZGJmNmVmLi5mOTk1ZjRkY2NlNGQ0ZWFmYzVjODdj
NmQ5YzE1NzkxNTc4Mzc2YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKQEAgLTIzNSwxMyArMjM1
LDEzIEBAIHZvaWQgSlNGbG9hdDY0QXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKCiAgICAgQmFzZTo6cHV0QnlJbmRleChjZWxs
LCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotdm9pZCBKU0Zsb2F0NjRB
cnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSkKK3ZvaWQgSlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTRmxv
YXQ2NEFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4ob2JqZWN0KTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PEZsb2F0NjRBcnJheSo+KHRoaXNP
YmplY3QtPmltcGwoKSktPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwg
dHlwZSk7CiB9CiAKIEpTVmFsdWUgSlNGbG9hdDY0QXJyYXk6OmdldENvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgK
aW5kZXggZmYzODhjYTAxNzYwYzEyYjk1NzUwMzlmZWM3NjQzMjkzZmU4NGUzNC4uN2Y4ZTRkNWY4
NmFkZjQ3MGUwYjM4NGUyY2Q4NmE0YzYwOTFkOWRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKQEAgLTUx
LDcgKzUxLDcgQEAgY2xhc3MgSlNGbG9hdDY0QXJyYXkgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZp
ZXcgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFy
cmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVt
ZXJhdGlvbk1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEpTQzo6RW51bWVy
YXRpb25UeXBlID0gSlNDOjpFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgRmxvYXQ2NEFycmF5KiBpbXBsKCkgY29uc3QKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAwNjdmODM5OTM1MjM1MzAwNTc4MTEwNzFkMDcz
ZjI1YWI3OGJhNjdkLi5hYjFlM2RhYzc5ODIyYjJhMTc0ODZmOGZmZmY1MWE1N2I1MTVkOWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTIxOCwxMyArMjE4LDEzIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCosIEVuY29kZWRKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFdmVudFRh
cmdldDo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCi12b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51
bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpCiAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAg
ICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0RXZlbnRU
YXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggZWZmMWE2MmVkNWFjYzY4YWVlODFhZjBmNzBj
ZTQ2ZDUxZmEyNjgzMy4uMjE3ODc4MmQxMWE0M2U2YjNmZjNjMjhkOTk4Njc1YWViZWY5OGQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgSlNUZXN0RXZl
bnRUYXJnZXQgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1v
ZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdl
dE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzLCBKU0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51bWVyYXRpb25U
eXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVj
dG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvTlBfanNvYmplY3QuY3BwCmluZGV4IDkwMDEwMTM4YWI0NmNlN2Q5NzUzY2JmZjI5NWU1M2Nk
ZmFjZDBiNWEuLjE4YjA2YTEwZWFmMmVkOTA5ZDkwN2E3ZTk0ODcwMjA2Mzg5YTE4MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGJvb2wg
X05QTl9FbnVtZXJhdGUoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyKiogaWRlbnRpZmll
ciwgdWludDMyX3QqIGNvdW50CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAg
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwogCi0gICAgICAgIG9i
ai0+aW1wLT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+aW1wLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgb2JqLT5p
bXAtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhj
bHVkZVN5bWJvbCk7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cmVhbGx5IGNhbGwgTlBOX01lbUFsbG9jIGJ1dCB0aGF0J3MgaW4gV2ViS2l0CiAgICAgICAgIE5Q
SWRlbnRpZmllciogaWRlbnRpZmllcnMgPSBzdGF0aWNfY2FzdDxOUElkZW50aWZpZXIqPihtYWxs
b2Moc2l6ZW9mKE5QSWRlbnRpZmllcikgKiBzaXplKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5jcHAKaW5kZXggMDIyMjE5MDVjNDBlNmVkZmVkNTc5OTllYjIzNWY1ODkxYTdh
MmUwOC4uNTE3MjQ0YjIyMDRmNGMxYjU3MjcxYjFiYzc3ZmY2ZTQ0NzJkZjU5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtNjgsNyArNjgsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiwgRW5jb2RlZEpTVgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhp
c09iamVjdC0+Z2V0TGVuZ3RoKCkpKTsKIH0KIAotdm9pZCBSdW50aW1lQXJyYXk6OmdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIFJ1bnRp
bWVBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KG9iamVjdCk7CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCk7CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUnVudGlt
ZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVyCiAgICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9k
ZSkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpOwogCi0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIGJv
b2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCBiNmQxZjY4OTEzN2Mx
NGI2MzcyMTM4YmFkYWI0MzAwMTBiNDE2YmY4Li5jMDI3ODJjOWY3NTkwMjY2ZDU0NGQ3NWE1NGMy
YzQ0MjljNzJlNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTUy
LDcgKzUyLDcgQEAgY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgewogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbiA9IGZhbHNlOwogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9u
VHlwZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggOTFmMDdiYzUzN2NmMGYzZjIwMzBmNWVk
NGZlZWM2MzI3MjRlYjIzOC4uOTY4NzhmZmY0Y2QxNmQ5OGY2NmNkNTQzMzc5NGRjY2UzMDVhM2E0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC0yNTQsNyAr
MjU0LDcgQEAgQ29uc3RydWN0VHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCogY2VsbCwgQ29uc3RydWN0RGF0YSYgY29uc3QKICAgICByZXR1cm4gQ29uc3RydWN0VHlw
ZUhvc3Q7CiB9CiAKLXZvaWQgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUpCit2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpCiB7
CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4o
b2JqZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggNGQ5Nzc3YTk5M2E5ZjNlYWYzZjgzOGNlMjI0
NjdjNjQ0YjEwNDljMi4uYzRjOWQzZmNjYzYzNzJlMmEzMjg1OWUwNWMxN2E0YzUwNmRlOGRjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTUyLDcgKzUyLDcgQEAg
Y2xhc3MgUnVudGltZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKIAogICAg
IHZvaWQgaW52YWxpZGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggMWNlZDI5M2ViOGNj
Yzc3ZDM3MDliOWJkMzk4MDhjYzM5ODEyNzM3Ny4uZTE4ODE5OGExODYxYmRkODhjZDk2OWVkZGY5
YTUzZGFlZWIyMzgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIGJv
b2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTTlBPYmplY3Q6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lQXJyYXksIEVudW1lcmF0aW9uTW9kZSkKK3Zv
aWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVBcnJheSwgRW51bWVy
YXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCA3OWRhZjViOTBm
NzA1Y2UzMGE2ZmM5NWY5NGViMjgwZjBkZmJiZGZhLi5kZGQ3MTM4NWM3YmIyZDBhYWNkM2YzNDg1
MmY3MGI2YTVmYzZkNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3Mg
SlNOUE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpFeGVjU3RhdGUqLCBOUElkZW50aWZpZXIgcHJvcGVydHlO
YW1lKTsKIAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVy
YXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSwgSlNDOjpFbnVtZXJhdGlvblR5cGUpOwogCiAgICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgcHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRp
YyBKU0M6OkVuY29kZWRKU1ZhbHVlIG1ldGhvZEdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBK
U09iamVjdC5jcHAKaW5kZXggMGQxNjY3NGU1YzE1ZjQ3MTcxODU0M2QyNWNhNGYzMTA5YzA1MmQy
Mi4uZWYzNWI5OGYxYmU1YzMzMjkyYTA2ZTNiZWNkZGI3ZmJmMWVlMjA3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2Jq
ZWN0LmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgTlBKU09iamVjdDo6ZW51bWVyYXRlKE5Q
SWRlbnRpZmllcioqIGlkZW50aWZpZXJzLCB1aW50MzJfdCogaWRlbnRpZmllckNvdW50CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKGV4ZWMpOwotICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5
TmFtZXMobV9qc09iamVjdC5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVy
dHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogCiAgICAg
TlBJZGVudGlmaWVyKiBuYW1lSWRlbnRpZmllcnMgPSBucG5NZW1OZXdBcnJheTxOUElkZW50aWZp
ZXI+KHByb3BlcnR5TmFtZXMuc2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
bWFjL1dlYktpdDIub3JkZXIgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgppbmRl
eCBhZTYyNWY3YzE2YzZiYWY1NDA3NDlhY2ViNDY1ZjI3MjM3NWY5YzViLi4wNTRhYmI0NmNjYzRm
ZWY0YzA0NmU0NGI1ZGU2YzUzOGM4MjhjNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9t
YWMvV2ViS2l0Mi5vcmRlcgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgpA
QCAtOTQyNCw3ICs5NDI0LDYgQEAgX19aTjNXVEY2VmVjdG9ySU42V2ViS2l0MTZOUElkZW50aWZp
ZXJEYXRhRUxtMEVOU18xNUNyYXNoT25PdmVyZmxvd0VFNnNocmlua0VtCiBfX1pON0NvcmVJUEMx
MEFyZ3VtZW50czJJUmJSTjNXVEY2VmVjdG9ySU42V2ViS2l0MTZOUElkZW50aWZpZXJEYXRhRUxt
MEVOUzJfMTVDcmFzaE9uT3ZlcmZsb3dFRUVFNmRlY29kZUVSTlNfMTVBcmd1bWVudERlY29kZXJF
UlM5XwogX19aTjdDb3JlSVBDMTlWZWN0b3JBcmd1bWVudENvZGVySUxiMEVONldlYktpdDE2TlBJ
ZGVudGlmaWVyRGF0YUVFNmRlY29kZUVSTlNfMTVBcmd1bWVudERlY29kZXJFUk4zV1RGNlZlY3Rv
cklTMl9MbTBFTlM2XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pOM1dURjZWZWN0b3JJTjZXZWJL
aXQxNk5QSWRlbnRpZmllckRhdGFFTG0wRU5TXzE1Q3Jhc2hPbk92ZXJmbG93RUUxNHNocmlua0Nh
cGFjaXR5RW0KLV9fWk42V2ViS2l0MTBKU05QT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBO
M0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5T
MV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk42V2ViS2l0TDIwTlBOX0dldEludElkZW50aWZpZXJF
aQogX19aTjZXZWJLaXRMMTNOUE5fSGFzTWV0aG9kRVA0X05QUFA4TlBPYmplY3RQdgogX19aTjZX
ZWJLaXQxME5QSlNPYmplY3QxMk5QX0hhc01ldGhvZEVQOE5QT2JqZWN0UHYKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZDcx
ZDA3ZmIwMDMzYTBmNjEyNGY2NzI2YWE4OGZkY2UyZDBiYjU1Li42OTVjOGRjYjczNDBjMDg0OTVk
ZjllNDU2ZTRhNzAwNzUyNzAzMTQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUtMDItMDYg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL29iamVjdC1nZXQtb3duLXByb3BlcnR5
LXN5bWJvbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9vYmplY3QtZ2V0LW93
bi1wcm9wZXJ0eS1zeW1ib2xzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZv
ckluKToKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5q
czogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1mcmVl
emUuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29u
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICoganMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9zeW1ib2wtd2l0aC1qc29uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvc3ltYm9sLXdpdGgtanNvbi5odG1sOiBBZGRlZC4KKwogMjAxNS0wMi0wNSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgRUZMIGdhcmRlbmluZy4gU2V0IGFsbCB0ZXN0cyBvZiBzdmcvVzNDLVNWRy0xLjEgYW5kIHN2
Zy9XM0MtU1ZHLTEuMS1TRSB0byBmbGFreS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL29i
amVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
anMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjM0OGJjNGY3YWMxM2NmOTBlNmM5MDdiMWMyYzQ4NDNkMzAzMWFkZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdHMgT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3ByaXZhdGUgbmFt
ZXMgZm9yIHByaXZpbGVnZWQgY29kZSBzaG91bGQgbm90IGJlIGV4cG9zZWQuCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZ2xvYmFsKS5sZW5ndGggaXMgMAorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0gaXMgc3ltYm9sCitQQVNTIGZvckluKG9iamVjdCku
bGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGggaXMgMAorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCBpcyAwCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuaHRtbCBiL0xheW91dFRl
c3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ZjFmMjU5YTIzOWMxMWQ5NTFkZGI4ZDBlOGNlZDA2OTg5YzNkMjg4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3Qt
Z2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjViZGE0YWE2
MWM1YzE3ODIyNzBjMzM0MGExZjA0YzkwNjk5MWY4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpz
CkBAIC0wLDAgKzEsMzEgQEAKK2Rlc2NyaXB0aW9uKAorIlRoaXMgdGVzdHMgT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scy4iCispOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4g
dGhpcyIpKCkpOworCitkZWJ1ZygicHJpdmF0ZSBuYW1lcyBmb3IgcHJpdmlsZWdlZCBjb2RlIHNo
b3VsZCBub3QgYmUgZXhwb3NlZC4iKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKGdsb2JhbCkubGVuZ3RoIiwgIjAiKTsKKwordmFyIG9iamVjdCA9IHt9OwordmFyIHN5
bWJvbCA9IFN5bWJvbCgiQ29jb2EiKTsKK29iamVjdFtzeW1ib2xdID0gIkNhcHB1Y2Npbm8iOwor
c2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoIiwgIjAi
KTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3Ro
IiwgIjEiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClb
MF0iLCAic3ltYm9sIik7CisKK2Z1bmN0aW9uIGZvckluKG9iaikgeworICAgIHZhciBhcnJheSA9
IFtdOworICAgIC8vIFN5bWJvbCBzaG91bGQgbm90IGJlIGVudW1lcmF0ZWQuCisgICAgZm9yICh2
YXIga2V5IGluIG9iaikgYXJyYXkucHVzaChrZXkpOworICAgIHJldHVybiBhcnJheTsKK30KKwor
c2hvdWxkQmUoImZvckluKG9iamVjdCkubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJPYmplY3Qu
a2V5cyhvYmplY3QpLmxlbmd0aCIsICIwIik7CisKK2RlbGV0ZSBvYmplY3Rbc3ltYm9sXTsKK3No
b3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCIsICIwIik7
CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCIs
ICIwIik7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qcyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgwZmRmNWUzZDkwZjY4NWYyMTIyZDY2NzIyNWU3ZDM0ZGU4NjRhZDEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5q
cwpAQCAtMCwwICsxLDQyIEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRlc3RzIE9iamVjdC5jcmVh
dGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgd29yayB3
aXRoIFN5bWJvbC4iCispOworCitkZWJ1ZygiT2JqZWN0LmNyZWF0ZSB3aXRoIFN5bWJvbCIpOwor
dmFyIG9iamVjdCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LnByb3RvdHlwZSwgeworICAgIFtTeW1i
b2wuaXRlcmF0b3JdOiB7CisgICAgICAgIHZhbHVlOiA0MgorICAgIH0KK30pOworc2hvdWxkQmVU
cnVlKCJvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSIpOworc2hvdWxkQmVG
YWxzZSgib2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJvbC5pdGVyYXRvcikiKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIiwgJ3sidmFsdWUiOjQyLCJ3cml0
YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUiOmZhbHNlfScpOwor
c2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGgiLCAi
MSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSIs
ICJTeW1ib2wuaXRlcmF0b3IiKTsKKworCitkZWJ1ZygiT2JqZWN0LmRlZmluZVByb3BlcnRpZXMg
d2l0aCBTeW1ib2wiKTsKK3ZhciBvYmplY3QgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSwg
eworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7CisgICAgICAgIHZhbHVlOiA0MgorICAgIH0KK30p
OworCitzaG91bGRCZVRydWUoIm9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3Ip
Iik7CitzaG91bGRCZUZhbHNlKCJvYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9sLml0
ZXJhdG9yKSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkiLCAneyJ2
YWx1ZSI6NDIsIndyaXRhYmxlIjpmYWxzZSwiZW51bWVyYWJsZSI6ZmFsc2UsImNvbmZpZ3VyYWJs
ZSI6ZmFsc2V9Jyk7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmpl
Y3QpLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyhvYmplY3QpWzBdIiwgIlN5bWJvbC5pdGVyYXRvciIpOworCitkZWJ1ZygiT2JqZWN0LmRlZmlu
ZVByb3BlcnR5IHdpdGggU3ltYm9sIik7Cit2YXIgb2JqZWN0ID0gT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHt9LCBTeW1ib2wuaXRlcmF0b3IsIHsKKyAgICB2YWx1ZTogNDIKK30pOworCitzaG91bGRC
ZVRydWUoIm9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIik7CitzaG91bGRC
ZUZhbHNlKCJvYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9sLml0ZXJhdG9yKSIpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkiLCAneyJ2YWx1ZSI6NDIsIndy
aXRhYmxlIjpmYWxzZSwiZW51bWVyYWJsZSI6ZmFsc2UsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9Jyk7
CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCIs
ICIxIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBd
IiwgIlN5bWJvbC5pdGVyYXRvciIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1mcmVl
emUuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZGViNGJhODI0YTZmYWU5ZmViN2Y0NTkzNmIyNDI0YWRiOGEwZWVi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJvbC1z
ZWFsLWFuZC1mcmVlemUuanMKQEAgLTAsMCArMSwyMyBAQAorZGVzY3JpcHRpb24oCisiVGhpcyB0
ZXN0cyBPYmplY3Quc2VhbCBhbmQgT2JqZWN0LmZyZWV6ZSBhZmZlY3Qgb24gU3ltYm9sIHByb3Bl
cnRpZXMuIgorKTsKKwordmFyIG9iamVjdCA9IHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogNDIK
K307CisKK3Nob3VsZEJlVHJ1ZSgib2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRv
cikiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIiwgJ3sidmFsdWUi
OjQyLCJ3cml0YWJsZSI6dHJ1ZSwiZW51bWVyYWJsZSI6dHJ1ZSwiY29uZmlndXJhYmxlIjp0cnVl
fScpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5n
dGgiLCAiMSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0
KVswXSIsICJTeW1ib2wuaXRlcmF0b3IiKTsKKworZGVidWcoIk9iamVjdC5zZWFsKG9iamVjdCki
KTsKK09iamVjdC5zZWFsKG9iamVjdCk7CitzaG91bGRCZVRydWUoIm9iamVjdC5oYXNPd25Qcm9w
ZXJ0eShTeW1ib2wuaXRlcmF0b3IpIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3Ry
aW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRl
cmF0b3IpKSIsICd7InZhbHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUiOnRydWUs
ImNvbmZpZ3VyYWJsZSI6ZmFsc2V9Jyk7CisKK2RlYnVnKCJPYmplY3QuZnJlZXplKG9iamVjdCki
KTsKK09iamVjdC5mcmVlemUob2JqZWN0KTsKK3Nob3VsZEJlVHJ1ZSgib2JqZWN0Lmhhc093blBy
b3BlcnR5KFN5bWJvbC5pdGVyYXRvcikiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5z
dHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5p
dGVyYXRvcikpIiwgJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOnRy
dWUsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9Jyk7CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29uLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL3N5bWJvbC13aXRoLWpzb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM2NWY5YTE2ZTlmYjgwM2E0
Yzk1MGEwYzM3ZTBjYTVlNjNlMjI4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29uLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Rlc2Ny
aXB0aW9uKAorIlRoaXMgdGVzdHMgSlNPTiBjb3JyZWN0bHkgYmVoYXZlcyB3aXRoIFN5bWJvbC4i
CispOworCitkZWJ1ZygiSlNPTi5zdHJpbmdpaWZ5IGRvZXNuJ3Qgc3RyaW5naWZ5IFN5bWJvbC4i
KTsKK3Nob3VsZEJlKCJKU09OLnN0cmluZ2lmeShTeW1ib2woJ0NvY29hJykpIiwgInVuZGVmaW5l
ZCIpOworCit2YXIgb2JqZWN0ID0ge307Cit2YXIgc3ltYm9sID0gU3ltYm9sKCJDb2NvYSIpOwor
b2JqZWN0W3N5bWJvbF0gPSA0MjsKK29iamVjdFsnQ2FwcHVjY2lubyddID0gNDI7CitkZWJ1Zygi
SlNPTi5zdHJpbmdpaWZ5IGlnbm9yZXMgcHJvcGVydHkgd2l0aCBTeW1ib2wuIik7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KG9iamVjdCkiLCAneyJDYXBwdWNjaW5vIjo0
Mn0nKTsKKworZGVidWcoIlN5bWJvbHMgaW4gcmVwbGFjZXIgYXJyYXkgYXJlIGlnbm9yZWQuIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KG9iamVjdCwgWyBTeW1ib2wo
J0NvY29hJykgXSkiLCAie30iKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2NiNzYxNjdhYjhlNDcyZTEwYjJkNTRmYmQ2YmQwZTljYjY5YmExNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1RoaXMgdGVzdHMgT2JqZWN0LmNyZWF0ZSwgT2JqZWN0
LmRlZmluZVByb3BlcnR5LCBPYmplY3QuZGVmaW5lUHJvcGVydGllcyB3b3JrIHdpdGggU3ltYm9s
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworT2JqZWN0LmNyZWF0ZSB3aXRoIFN5
bWJvbAorUEFTUyBvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSBpcyB0cnVl
CitQQVNTIG9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZShTeW1ib2wuaXRlcmF0b3IpIGlzIGZh
bHNlCitQQVNTIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSBpcyAie1widmFsdWVcIjo0MixcIndyaXRhYmxlXCI6
ZmFsc2UsXCJlbnVtZXJhYmxlXCI6ZmFsc2UsXCJjb25maWd1cmFibGVcIjpmYWxzZX0iCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0gaXMgU3ltYm9sLml0ZXJhdG9y
CitPYmplY3QuZGVmaW5lUHJvcGVydGllcyB3aXRoIFN5bWJvbAorUEFTUyBvYmplY3QuaGFzT3du
UHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSBpcyB0cnVlCitQQVNTIG9iamVjdC5wcm9wZXJ0eUlz
RW51bWVyYWJsZShTeW1ib2wuaXRlcmF0b3IpIGlzIGZhbHNlCitQQVNTIEpTT04uc3RyaW5naWZ5
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3Ip
KSBpcyAie1widmFsdWVcIjo0MixcIndyaXRhYmxlXCI6ZmFsc2UsXCJlbnVtZXJhYmxlXCI6ZmFs
c2UsXCJjb25maWd1cmFibGVcIjpmYWxzZX0iCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzKG9iamVjdClbMF0gaXMgU3ltYm9sLml0ZXJhdG9yCitPYmplY3QuZGVmaW5lUHJvcGVydHkg
d2l0aCBTeW1ib2wKK1BBU1Mgb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikg
aXMgdHJ1ZQorUEFTUyBvYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9sLml0ZXJhdG9y
KSBpcyBmYWxzZQorUEFTUyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgaXMgIntcInZhbHVlXCI6NDIsXCJ3cml0
YWJsZVwiOmZhbHNlLFwiZW51bWVyYWJsZVwiOmZhbHNlLFwiY29uZmlndXJhYmxlXCI6ZmFsc2V9
IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIGlzIDEK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIGlzIFN5bWJvbC5p
dGVyYXRvcgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuaHRt
bCBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44Zjg0MzJhMjZiNDQ0MGM5ZWVmYmFjZmY2ZWMzNTk0ZDVkOGI1ODBjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9z
eW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTVjNTUzOTU2MTc2MGU3NGU1YzRiY2IzM2E3MDkyOTUzNDZlYWVjOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgdGVzdHMgT2JqZWN0LnNlYWwgYW5kIE9iamVj
dC5mcmVlemUgYWZmZWN0IG9uIFN5bWJvbCBwcm9wZXJ0aWVzLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9y
KSBpcyB0cnVlCitQQVNTIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSBpcyAie1widmFsdWVcIjo0MixcIndyaXRh
YmxlXCI6dHJ1ZSxcImVudW1lcmFibGVcIjp0cnVlLFwiY29uZmlndXJhYmxlXCI6dHJ1ZX0iCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQorUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0gaXMgU3ltYm9sLml0ZXJh
dG9yCitPYmplY3Quc2VhbChvYmplY3QpCitQQVNTIG9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1i
b2wuaXRlcmF0b3IpIGlzIHRydWUKK1BBU1MgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIGlzICJ7XCJ2YWx1ZVwi
OjQyLFwid3JpdGFibGVcIjp0cnVlLFwiZW51bWVyYWJsZVwiOnRydWUsXCJjb25maWd1cmFibGVc
IjpmYWxzZX0iCitPYmplY3QuZnJlZXplKG9iamVjdCkKK1BBU1Mgb2JqZWN0Lmhhc093blByb3Bl
cnR5KFN5bWJvbC5pdGVyYXRvcikgaXMgdHJ1ZQorUEFTUyBKU09OLnN0cmluZ2lmeShPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgaXMgIntc
InZhbHVlXCI6NDIsXCJ3cml0YWJsZVwiOmZhbHNlLFwiZW51bWVyYWJsZVwiOnRydWUsXCJjb25m
aWd1cmFibGVcIjpmYWxzZX0iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXNlYWwtYW5k
LWZyZWV6ZS5odG1sIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmEzOGY4ZDNlOTEzZTkzZDcwMDVjYWY4N2QyZWRjZTJhOGE3MDhlOTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmh0
bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtd2l0aC1qc29uLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yOTI2ZDc5OTdiN2VlNTY1NDYyYTRmNWIwY2NkMGNiYzE1Nzk5NmIzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0cyBKU09OIGNvcnJlY3RseSBiZWhhdmVzIHdpdGgg
U3ltYm9sLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSlNPTi5zdHJpbmdpaWZ5
IGRvZXNuJ3Qgc3RyaW5naWZ5IFN5bWJvbC4KK1BBU1MgSlNPTi5zdHJpbmdpZnkoU3ltYm9sKCdD
b2NvYScpKSBpcyB1bmRlZmluZWQKK0pTT04uc3RyaW5naWlmeSBpZ25vcmVzIHByb3BlcnR5IHdp
dGggU3ltYm9sLgorUEFTUyBKU09OLnN0cmluZ2lmeShvYmplY3QpIGlzICJ7XCJDYXBwdWNjaW5v
XCI6NDJ9IgorU3ltYm9scyBpbiByZXBsYWNlciBhcnJheSBhcmUgaWdub3JlZC4KK1BBU1MgSlNP
Ti5zdHJpbmdpZnkob2JqZWN0LCBbIFN5bWJvbCgnQ29jb2EnKSBdKSBpcyAie30iCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi5odG1sIGIvTGF5b3V0VGVzdHMvanMvc3lt
Ym9sLXdpdGgtanNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNjgzNTA3OTlmY2ZhNjJiMWI5ZjhlNjEz
M2I5M2E3YTk0YWJjMWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wt
d2l0aC1qc29uLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N5bWJvbC13aXRoLWpzb24uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246213</attachid>
            <date>2015-02-07 12:56:49 -0800</date>
            <delta_ts>2015-02-07 13:56:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150208055648.patch</filename>
            <type>text/plain</type>
            <size>159627</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTBiNjk5Y2MxMjMzYzhlNmFhYzdkNmFmMGE5ZjUyMDdmZmVlNDVjLi4zNzE4MTg1ZDhiMjlmMTFh
NGI0NWZmOTMyNjI0MzkzYjg4ZTliNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTUtMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGluL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIHRoaXMgcGF0Y2ggaW50cm9k
dWNlcyBgaXNQcml2YXRlYCBmbGFnIHRvIGBTdHJpbmdJbXBsYC4KKyAgICAgICAgSXQgcmVwcmVz
ZW50cyB0aGUgdGFyZ2V0IGBTdHJpbmdJbXBsYCBpcyB1c2VkIHRvIHJlcHJlc2VudCBwcml2YXRl
IHN5bWJvbHMuCisKKyAgICAgICAgV2UgbmV3bHkgYWRkZWQgYEVudW1lcmF0aW9uVHlwZWAgcGFy
YW1ldGVyIHRvIGBnZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Qgb2YgYEpTT2JqZWN0YC4KKyAg
ICAgICAgVGhpcyBwYXJhbWV0ZXIgY29udHJvbHMgd2hldGhlciB0aGUgbWV0aG9kIGNvbGxlY3Rz
IFN5bWJvbCBvciBub3QuCisgICAgICAgIFRoZSBkZWZhdWx0IHBhcmFtZXRlciBpcyBzZXQgdG8g
YEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbGAKKyAgICAgICAgYmVjYXVzZSBhIGxvdCBv
ZiBjYWxsZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1lQXJyYXlg
IGRvZXNuJ3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25zZXJ2YXRp
dmUgYXNzdW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAgICogQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAg
ICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLm9yZGVyOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6QnVpbHRpbk5hbWVzKToK
KyAgICAgICAgKiBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6cG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3Vu
dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgICog
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6
OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3Vt
ZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5
SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToKKyAgICAgICAgKiBy
dW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
Y3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0VudW1lcmF0aW9uTW9kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllcklubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6SWRlbnRpZmllcik6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVy
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0NhbGxlZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9u
bWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09O
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4
dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSYWNlKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jQWxsKToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpzdHJ1Y3R1cmVQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJveHk6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpnZXRTdHJ1
Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1i
b2xzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpT
Qzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2Vh
bCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0
cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OnB1YmxpY05hbWUpOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OmFzSW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldFByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
OgorCiAyMDE1LTAyLTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgREZHIFNTQSBzaG91bGRuJ3QgaGF2ZSBTZXRBcmd1bWVudCBub2RlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBlZTUwYTM3
OGMzZjc5MzhjZmRlYjdmZWMzOTUzODc3OGQ2OGViMjhjLi4yNWM1Mjc4ZjgwMWU4OGYwMjY1ZGZh
M2QzZjFmMWUzZWMwM2Q0Y2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTAyLTA3ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBF
UzYgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgaXNQcml2YXRl
YCB0byBgU3RyaW5nSW1wbGAuCisgICAgICAgIEl0IGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoYXQg
dGhlIHRhcmdldCBzdHJpbmcgaXMgdXNlZCBmb3IgYSBwcml2YXRlIChwcml2aWxlZ2VkKSBuYW1l
LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpTdHJpbmdJbXBsKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlVW5p
cXVlRW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVQcml2YXRl
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmxhZ0lzUHJpdmF0ZSk6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmlzUHJpdmF0ZSk6CisKIDIwMTUtMDItMDYgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxNzk3NDMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2IwM2UzODFiZTYzYWMyM2M2Y2U1YTUyODkxZmZh
MTdkNzkyNGQ4MC4uNDcyN2YyMjJlMTNlYTM1ZDNkMjRlZTFlODIxYWJiZjc4NWE0ZjI2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE1LTAyLTA3ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdHM6IGpzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuaHRtbAor
ICAgICAgICAgICAgICAganMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5odG1sCisgICAgICAgICAg
ICAgICBqcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5
bWJvbC13aXRoLWpzb24uaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hh
c2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9y
eTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFy
cmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNGbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVj
dC5jcHA6CisgICAgICAgIChfTlBOX0VudW1lcmF0ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29i
amVjdC5oOgorCiAyMDE1LTAyLTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVNTRVJUIHJlcGFpbnRDb250YWluZXItPmhhc0xheWVyKCkgaW4gV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpyZXBhaW50VXNpbmdDb250YWluZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBi
OGEyNjZjZDVmYmYyMDJmZGE5YTBjZjRjMTgyNjI2ZWQzMjExNGQ2Li4zNjkwZWFhZWJkNzYyNzJk
OTZhODYwMGM1YzUyNjg5MjFhYjQ2OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTUtMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUpOgorCiAyMDE1LTAyLTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+IGFuZCBYYWJpZXIgUm9kcmln
dWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU3RyZWFtcyBBUEld
IEltcGxlbWVudCBhIGJhcmVib25lIFJlYWRhYmxlU3RyZWFtIGludGVyZmFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGI0MzJhNDQxZmM1Mzg5ODhlZmFhMzA0ODIzYWJhYWM2NzU3MTk0ZTIuLmNhOTcwY2IzNmIw
ZTQ4NzM2OWI1M2RlYTQ4MzIxMzI4NzE3NjMxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxNS0wMi0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6ZW51bWVy
YXRlKToKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5vcmRlcjoKKwogMjAxNS0wMi0wNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU1FMaXRlU3RhdGVtZW50
OjpkYXRhYmFzZSgpIHJldHVybiBhIHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCA2OTliYzQ0NDY2NDExMjNlYjkxOTM1ZTA2ZDQz
YTg4NDdiN2NhNTU1Li44Y2FkMTAzMzIzN2FiM2IwNWU2ODliMmYyMDA1MzFjZWM4YjA4NTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMTg2
LDcgKzE4Niw3IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJsaWMgUGFyZW50IHsKIAog
ICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
SlNWYWx1ZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1l
cmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggOTlhMDlkZmVhMTBjMWNhMTNj
MTU2Nzg3ZWIwN2FmODljYTQyNDYyMy4uMWNiNDM0NjA3MDkwYWY2NTBlOTg3YTVlZTViMzYzYjkw
MWZhZTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTQ5OCw3ICs0OTgsNyBAQAogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyZW50Pgotdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewog
ICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVj
dCo+KG9iamVjdCk7CiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKQEAg
LTUzMyw3ICs1MzMsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFBhcmVudDo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOworICAgIFBhcmVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVj
dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRl
eCAyMzRkMjQ4OGZmODkwYjhiZWU2OTdlZjU1YWE2ODAzODBhMTgxYTQyLi4wYzVkYTZiYTJkNjFk
M2RhZWM5YmIzNzg5MTEwNTA5MjBhYzg1OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcApAQCAtNjk4LDcgKzY5OCw3IEBAIEpTUHJvcGVydHlOYW1lQXJyYXlS
ZWYgSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiBvCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTUHJvcGVy
dHlOYW1lQXJyYXlSZWYgcHJvcGVydHlOYW1lcyA9IG5ldyBPcGFxdWVKU1Byb3BlcnR5TmFtZUFy
cmF5KHZtKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBhcnJheSh2bSk7Ci0gICAganNPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0UHJvcGVydHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAKICAgICBzaXplX3Qg
c2l6ZSA9IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLm9yZGVyIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lm9yZGVyCmluZGV4IDI2YmUwZWUyNzZlMGVlNWM4NmU2MTA5OTlmMmQ0NzZiMGRkODA2ZGUuLjFl
MTk0MTU1YTMxOTUwNjRiNzRjZTA3ZGQyYzY0MTJiYWNlYjJjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKQEAgLTkzOCw3ICs5MzgsNiBAQCBfX1pOM0pT
QzVMTEludDM5ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yRVBOU18yVk1F
CiBfX1pOM0pTQzVMTEludDQ0ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3JFUE5TXzJWTUUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uMjNjcmVhdGVBbGxvY2F0aW9uUHJv
ZmlsZUVQTlNfOUV4ZWNTdGF0ZUVtCiBfX1pOSzNKU0M4SlNPYmplY3QzZ2V0RVBOU185RXhlY1N0
YXRlRU5TXzEyUHJvcGVydHlOYW1lRQotX19aTjNKU0M5U3RydWN0dXJlMjlnZXRQcm9wZXJ0eU5h
bWVzRnJvbVN0cnVjdHVyZUVSTlNfMlZNRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51
bWVyYXRpb25Nb2RlRQogX19aTjNKU0MxN1Byb3BlcnR5TmFtZUFycmF5MTRhZGRLbm93blVuaXF1
ZUVQTjNXVEYxMFN0cmluZ0ltcGxFCiBfX1pOM0pTQzE3UHJvcGVydHlOYW1lQXJyYXlEMkV2CiBf
X1pOM0pTQzhXYXRjaGRvZzVTY29wZUQxRXYKQEAgLTEzNTEsOSArMTM1MCw2IEBAIF9fWk4zSlND
MTFQb3N0Zml4Tm9kZTExZW1pdFJlc29sdmVFUk5TXzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TXzEw
UmVnaXN0ZXJJREUKIF9fWk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvcjdlbWl0SW5jRVBOU18xMFJl
Z2lzdGVySURFCiBfX1pOM0pTQzE0anNJc09iamVjdFR5cGVFUE5TXzlFeGVjU3RhdGVFTlNfN0pT
VmFsdWVFCiBfX1pOM0pTQzZKU0NlbGwxMWdldENhbGxEYXRhRVBTMF9STlNfOENhbGxEYXRhRQot
X19aTjNKU0M4SlNPYmplY3QxNmdldFByb3BlcnR5TmFtZXNFUFMwX1BOU185RXhlY1N0YXRlRVJO
U18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0M4SlNP
YmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUFMwX1BOU185RXhlY1N0YXRlRVJOU18xN1Byb3Bl
cnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0M4SlNPYmplY3QyN2dl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQUzBfUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVy
dHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM1dURjZWZWN0b3JJTjNKU0Mx
MElkZW50aWZpZXJFTG0yMEVOU18xNUNyYXNoT25PdmVyZmxvd0VFMTVyZXNlcnZlQ2FwYWNpdHlF
bQogX19aTjNKU0MxM2pzT3duZWRTdHJpbmdFUE5TXzJWTUVSS04zV1RGNlN0cmluZ0UKIF9fWk4z
SlNDOVN0cnVjdHVyZTE2YWxsb2NhdGVSYXJlRGF0YUVSTlNfMlZNRQpAQCAtMTc0Myw3ICsxNzM5
LDYgQEAgX19aTjNKU0NMMjBkYXRlUHJvdG9GdW5jR2V0VGltZUVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk5LM0pTQzEySlNSb3BlU3RyaW5nMjByZXNvbHZlUm9wZVNsb3dDYXNlOEVQaAogX19aTkszV1RG
NlN0cmluZzhmb2xkQ2FzZUV2CiBfX1pOM1dURjEwU3RyaW5nSW1wbDhmb2xkQ2FzZUV2Ci1fX1pO
M0pTQzEwSlNGdW5jdGlvbjI3Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRVBOU184SlNPYmpl
Y3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlv
bk1vZGVFCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUUK
IF9fWk4zSlNDMTFJbnRlcnByZXRlcjI0YWRkU3RhY2tUcmFjZUlmTmVjZXNzYXJ5RVBOU185RXhl
Y1N0YXRlRU5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMUludGVycHJldGVyMTNnZXRTdGFja1RyYWNl
RVBOU18yVk1FUk4zV1RGNlZlY3RvcklOU18xMFN0YWNrRnJhbWVFTG0wRU5TM18xNUNyYXNoT25P
dmVyZmxvd0VFRW0KQEAgLTI5NzAsNyArMjk2NSw2IEBAIF9fWk4zSlNDNXNoaWZ0SUxOU183SlNB
cnJheTE0U2hpZnRDb3VudE1vZGVFMEVFRXZQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RWpq
CiBfX1pOM0pTQzdKU0FycmF5MjZzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZUVqalBOU18xMkFy
cmF5U3RvcmFnZUUKIF9fWk4zSlNDTDE3YXJyYXlQcm90b0Z1bmNQb3BFUE5TXzlFeGVjU3RhdGVF
CiBfX1pOM0pTQzdKU0FycmF5M3BvcEVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlNDN0pTQXJyYXky
N2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRl
RVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0M1
TGV4ZXJJdEUyNHBhcnNlRm91ckRpZ2l0VW5pY29kZUhleEV2CiBfSlNPYmplY3RHZXRQcml2YXRl
UHJvcGVydHkKIF9fWk5LM0pTQzIwSlNDYWxsYmFja09iamVjdERhdGExOGdldFByaXZhdGVQcm9w
ZXJ0eUVSS05TXzEwSWRlbnRpZmllckUKQEAgLTM4MjksNyArMzgyMyw2IEBAIF9fWk4zSlNDM0RG
RzE0U3BlY3VsYXRpdmVKSVQxOGNvbXBpbGVBcml0aE5lZ2F0ZUVQTlMwXzROb2RlRQogX19aTjNK
U0MyM01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uMTJuZWdhdGVEb3VibGVFTlNfMTJYODZSZWdpc3Rl
cnMxM1hNTVJlZ2lzdGVySURFUzJfCiBfX1pOM0pTQzIzTWFjcm9Bc3NlbWJsZXJYODZDb21tb245
ZGl2RG91YmxlRU5TXzEyWDg2UmVnaXN0ZXJzMTNYTU1SZWdpc3RlcklERVMyX1MyXwogX2N0aV9v
cF9pbmMKLV9fWk4zSlNDMTJTdHJpbmdPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhK
U09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1l
cmF0aW9uTW9kZUUKIF9fWk4zSlNDMTRnbG9iYWxGdW5jRXZhbEVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk4zSlNDOEpTT2JqZWN0MThjcmVhdGVBcnJheVN0b3JhZ2VFUk5TXzJWTUVqagogX29wZXJhdGlv
bkNvbnZlcnRUaGlzCkBAIC00MTUwLDcgKzQxNDMsNiBAQCBfX1pOM0pTQzExQ29waWVkU3BhY2Ux
NmRvbmVGaWxsaW5nQmxvY2tFUE5TXzExQ29waWVkQmxvY2tFUFMyXwogX19aTjNKU0MxMUNvcHlW
aXNpdG9yMTRjb3B5RnJvbVNoYXJlZEV2CiBfX1pOM0pTQzhKU09iamVjdDE2Y29weUJhY2tpbmdT
dG9yZUVQTlNfNkpTQ2VsbEVSTlNfMTFDb3B5VmlzaXRvckUKIF9fWk4zSlNDMThHQ1RocmVhZFNo
YXJlZERhdGExNmRpZEZpbmlzaENvcHlpbmdFdgotX19aTjNKU0M5QXJndW1lbnRzMTlnZXRPd25Q
cm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlO
YW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzhKU09iamVjdDZmcmVlemVF
Uk5TXzJWTUUKIF9fWk4zSlNDOVN0cnVjdHVyZThpc0Zyb3plbkVSTlNfMlZNRQogX19aTjNKU0M5
U3RydWN0dXJlMTZmcmVlemVUcmFuc2l0aW9uRVJOU18yVk1FUFMwXwpAQCAtNDI1MCw3ICs0MjQy
LDYgQEAgX19aTjNKU0MxM0RhdGVQcm90b3R5cGUyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQ
TlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU4KIF9fWk4zSlNDMjdnZXRTdGF0aWNGdW5jdGlv
bkRlc2NyaXB0b3JJTlNfOEpTT2JqZWN0RUVFYlBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hUYWJs
ZUVQUzFfTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNK
U0MyMkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUyN21hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbEVS
TlNfMTFTbG90VmlzaXRvckUKIF9fWk4zV1RGOUJpdFZlY3RvcjdzZXRTbG93RVJLUzBfCi1fX1pO
M0pTQzE4UmVnRXhwTWF0Y2hlc0FycmF5MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmpl
Y3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlv
bk1vZGVFCiBfSlNWYWx1ZUdldFR5cGUKIF9fWk4zSlNDMTNFdmFsQ29kZUJsb2NrMTFyZXBsYWNl
bWVudEV2CiBfX1pOM0pTQzEzRXZhbENvZGVCbG9jazE2Y29tcGlsZU9wdGltaXplZEVQTlNfOUV4
ZWNTdGF0ZUVQTlNfN0pTU2NvcGVFagpAQCAtNDM1NiwxNSArNDM0NywxMSBAQCBfX1pOM0pTQ0wy
NmRhdGVQcm90b0Z1bmNTZXRVVENTZWNvbmRzRVBOU185RXhlY1N0YXRlRQogX29wZXJhdGlvbkVu
c3VyZURvdWJsZQogX19aTjNKU0M4SlNPYmplY3QxNmVuc3VyZURvdWJsZVNsb3dFUk5TXzJWTUUK
IF9fWk4zSlNDNFlhcnIxMUludGVycHJldGVySXRFMjBiYWNrdHJhY2tQYXJlbnRoZXNlc0VSTlMw
XzhCeXRlVGVybUVQTlMyXzE4RGlzanVuY3Rpb25Db250ZXh0RQotX19aTjNKU0M3SlNQcm94eTE2
Z2V0UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3Bl
cnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0MxOUpTU3ltYm9sVGFi
bGVPYmplY3QyN2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185
RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQog
X19aTjNKU0NMMTdtYXRoUHJvdG9GdW5jQVNpbkVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDM0RG
RzE0U3BlY3VsYXRpdmVKSVQxNHNwZWN1bGF0ZU90aGVyRU5TMF80RWRnZUUKIF9fWk4zSlNDNlBh
cnNlcklOU181TGV4ZXJJdEVFRTE4cGFyc2VXaXRoU3RhdGVtZW50SU5TXzEwQVNUQnVpbGRlckVF
RU5UXzlTdGF0ZW1lbnRFUlM2XwogX19aTjNKU0MxMlN0cmluZ09iamVjdDE0ZGVsZXRlUHJvcGVy
dHlFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFCiBfX1pOM0pT
QzlFeGVjU3RhdGUyMHJlZ0V4cFByb3RvdHlwZVRhYmxlRVBTMF8KLV9fWk4zSlNDMTJSZWdFeHBP
YmplY3QxNmdldFByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNf
MTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKLV9fWk4zSlNDMTJSZWdF
eHBPYmplY3QyN2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185
RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQog
X19aTjNKU0M5RXhlY1N0YXRlOWRhdGVUYWJsZUVQUzBfCiBfX1pOM0pTQzlFeGVjU3RhdGUyMWFy
cmF5Q29uc3RydWN0b3JUYWJsZUVQUzBfCiBfX1pOM0pTQ0wxOWFycmF5UHJvdG9GdW5jRXZlcnlF
UE5TXzlFeGVjU3RhdGVFCkBAIC00NjkwLDcgKzQ2NzcsNiBAQCBfX1pOM0pTQzlFeGVjU3RhdGUy
Mm51bWJlckNvbnN0cnVjdG9yVGFibGVFUFMwXwogX19aTjNKU0M5RXhlY1N0YXRlMjJyZWdFeHBD
b25zdHJ1Y3RvclRhYmxlRVBTMF8KIF9fWk4zSlNDOUV4ZWNTdGF0ZTltYXRoVGFibGVFUFMwXwog
X19aTjNKU0M5RXhlY1N0YXRlOWpzb25UYWJsZUVQUzBfCi1fX1pOM0pTQzdKU1Byb3h5MTlnZXRP
d25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVy
dHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzlBcmd1bWVudHMyNGdl
dE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzEy
UHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOUFyZ3VtZW50
czE3ZGVmaW5lT3duUHJvcGVydHlFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlBy
b3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFYgogX19aTjNXVEY3SGFzaE1hcEl5
TjNKU0MxNlNwYXJzZUFycmF5RW50cnlFTlNfN0ludEhhc2hJeUVFTlNfMjlVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0c0l5RUVOU18xMEhhc2hUcmFpdHNJUzJfRUVFNGZpbmRFUkt5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA3NmE3
YjExMWE4ZDg3N2E2NzliNWM4YjhlODk2ZTFhN2IxYjZiOGFjLi4xMjIxNWE1MTI1MmRiZDg2MWY0
NGNkNjE1N2NmZTQwNGQxZDIwNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIFNjcmlwdFZhbHVl
Ojppc0Z1bmN0aW9uKCkgY29uc3QKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gaW5zcGVj
dG9yT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKHNjcmlwdFN0YXRlKTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1l
cywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3lt
Ym9sKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUo
KTsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gcHJvcGVydHlO
YW1lc1tpXTsKICAgICAgICAgICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0
KHNjcmlwdFN0YXRlLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaAppbmRleCA5Yjg4OTZiOTY4MDE0OTEzZjQ2YjMyYzQ4MGUwNTc4OTYzNzlk
ZmE0Li45YjYyZjhjN2YyMmRjNDQzOTY1YTMyNzUxNDE3NGYxMDY3NDc2ZjNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0zMSw3ICszMSw4
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogICAgIAotI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5f
TkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUo
SWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZShBU0NJSUxpdGVyYWwoIlN5bWJvbC4iICNuYW1l
KSkpKQorI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2
bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRl
TmFtZShQcml2YXRlTmFtZTo6Q3JlYXRlUHJpdmF0ZSkpKQorI2RlZmluZSBJTklUSUFMSVNFX0JV
SUxUSU5fU1lNQk9MUyhuYW1lKSAsIG1fIyNuYW1lKHZtLCAjbmFtZSksIG1fIyNuYW1lIyNQcml2
YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKEFTQ0lJTGl0ZXJhbCgiU3ltYm9s
LiIgI25hbWUpKSkpCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhuYW1lKSBjb25zdCBJ
ZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lIyNQcml2YXRlTmFt
ZTs7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwK
ICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV8jI25hbWU7IH0gXApAQCAtNDgsMTEgKzQ5LDE0IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAg
ICAgICAgIDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmllcnMtPmVtcHR5SWRlbnRp
ZmllcikKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
U0VfQlVJTFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJT
X0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAgICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJ
QUxJU0VfQlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkpCiAgICAg
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5J
VElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QUklWQVRF
X1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAgICAgICAgIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QVUJM
SUNfVE9fUFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9F
TlRSWSkKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjQsMTMgQEAgY2xhc3MgQnVpbHRpbk5h
bWVzIHsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFS
RV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9B
Q0NFU1NPUikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tO
T1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKIAogcHJpdmF0
ZToKICAgICBJZGVudGlmaWVyIG1fZW1wdHlJZGVudGlmaWVyOwogICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCiAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5f
TkFNRVMpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9X
Tl9TWU1CT0woREVDTEFSRV9CVUlMVElOX05BTUVTKQogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8U3RyaW5nSW1wbD4sIGNvbnN0IElkZW50aWZpZXIqLCBJZGVudGlmaWVyUmVwSGFzaD4gQnVp
bHRpbk5hbWVzTWFwOwogICAgIEJ1aWx0aW5OYW1lc01hcCBtX3B1YmxpY1RvUHJpdmF0ZU1hcDsK
ICAgICBCdWlsdGluTmFtZXNNYXAgbV9wcml2YXRlVG9QdWJsaWNNYXA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5o
CmluZGV4IDlhOWRiMGJjNzBiOWYxMzVmNjVkZDJkNzk2ZGU2NTI4OTZhZTBmYjEuLmM4MTg5YTI0
NmE5MjY5NjBjYmU3ZjM3YWNjYTA5ODdhZDg1M2VkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCkBAIC0x
MTgsNyArMTE4LDcgQEAgY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewogCiAgICAgICAg
IHNpemVfdCBjb3VudCA9IDA7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFt
ZUFycmF5KCZ2bSk7Ci0gICAgICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5
TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVBcnJheSwgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5
TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVBcnJheSwgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpJbmNsdWRlU3ltYm9sKTsKICAgICAgICAgUHJv
cGVydHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3Rv
ciA9IHByb3BlcnR5TmFtZUFycmF5LmRhdGEoKS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gcHJvdG90eXBlLT5nZXREaXJlY3Qodm0s
IHByb3BlcnR5TmFtZVZlY3RvcltpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGE1NmU2ZDU4YmQ3
OTZlZmUzOWI3M2JkNDliYTM0ZjlkODQwMDkzMWQuLjk3Nzk4MDFiMWE4MGVlMzY3ZWU0ZWU5ZWUy
ZjNmYmM5ZmY1YTZkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBuZXdMYWJl
bFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0
ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5v
ZGUpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1Rl
bXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRl
TmFtZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3
VGVtcG9yYXJ5KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJv
bCk7CiAgICAgewogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIDApOwogICAgICAg
ICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBzdWJqZWN0LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCAyZjc0
OTFmNWQyZmMxYzkwNDc4MDNlZGM0ZWI1NDg2ODMxZjQwN2NiLi4xYWQyMTQwYWE3YzdhODg1NTJl
MjkyMmFmMzI2ZTlmM2QzODBkOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC0xMTAsMTQgKzExMCwxNCBAQCBib29sIERlYnVn
Z2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi12b2lkIERl
YnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUpCit2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAg
IERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PERlYnVnZ2VyU2NvcGUqPihvYmplY3QpOwog
ICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9i
amVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKKyAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBib29sIERl
YnVnZ2VyU2NvcGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggMjI3Y2IxOWU3NWY3MzhkN2E2YTUx
YjZjMzU5YjRkMTgxYjFmNGY1Yi4uYjJkYjE1ZTkwZWIyYjI0M2JhOWIwZWVjNjc2MDYwMDM5Mjhj
ZmY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
U2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29w
ZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIERlYnVnZ2VyU2NvcGUgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJh
dGlvblR5cGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29s
IHNob3VsZFRocm93KTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAppbmRleCA2YjZiZWFjYjA0YjM5ZDFmYTMw
MTQzNjYxNDdkMzQ5NGM3YmZjZGNjLi5kNjI2MmYwYzM2ZTE2MWE5MjBmZmJmZGU3NjZmZGM3ZmE0
YWQ3ODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAK
QEAgLTE4NiwxNyArMTg2LDE3IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAKICAgICBpZiAo
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1lKSB7CisgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpIHsKICAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICAgICAgdGhpc09iamVj
dC0+SlNDX05BVElWRV9GVU5DVElPTihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2
YXRlTmFtZSwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgICAgIHRo
aXNPYmplY3QtPkpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJh
dG9yU3ltYm9sLCBhcmd1bWVudHNGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICAgICAg
aWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlw
ZSB0eXBlKQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMq
PihvYmplY3QpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX251
bUFyZ3VtZW50czsgKytpKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBBcmd1bWVudHM6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU4KICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNh
bGxlZSk7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgpOwogICAgIH0KLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsK
IH0KIAogdm9pZCBBcmd1bWVudHM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IGMwNTM4NjkwMDA0ZTU2
MzcyYzk0YTFhMDA5Y2U5MWQ0YjIwNWU4NGIuLmI4NzM0MTVkODk4MDJiOGM2Y2E1NTI3Yzc0NDBi
Mzc3OTI3Y2IwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5o
CkBAIC0xMTQsNyArMTE0LDcgQEAgY2xhc3MgQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUuY3BwCmluZGV4IGQ3OWNjNTJlMDkyYmM2ZTkwYjQxYmJlNzk5OGMyYWI3MDdh
YTNkMmMuLmM2OTA0ZmE1MDVhYjZhNTZjZGYzMTUwMTc4ZWI0YzU0Mjc1ZmViM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVy
YXRvclByb3RvdHlwZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBBcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2IKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFk
ZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5j
SXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJ
dGVyYXRvciwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBjODgw
MGUzY2RjYTYyNTJlYWI5OGZkMDIxMTg2MWUxZDBkYmVjMTEyLi5iZDM1NTVjNDQyMDliZDc1YTEz
OGY1ZjIzOGNiOTY3NWM2ZDI2YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDUsNyArNDUsNyBA
QCB2b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsK
ICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheUl0
ZXJhdG9yUHJvdG90eXBlSXRlcmF0ZSwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5SXRlcmF0b3JQcm90
b3R5cGVJdGVyYXRlLCBEb250RW51bSwgMCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
aW5kZXggYzc5OWNjMzFlMWJmMTA2NjZiOWU0YjdmNWY1MWJmODQxOGNkY2E3ZS4uZDQ2YjY0ZTZm
MzE5OGRhNzY2OTQ1NDJlNGE5N2RkNmQ4YTU2YWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZv
aWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhp
cyk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclBy
aXZhdGVOYW1lLCBhcnJheVByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5UHJv
dG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiB9CiAKIGJvb2wgQXJyYXlQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTczNSw3ICs3MzUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgbmFtZUFycmF5KGV4ZWMpOwotICAgIHRo
aXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmos
IGV4ZWMsIG5hbWVBcnJheSwgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgdGhpc09i
ai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwgZXhl
YywgbmFtZUFycmF5LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6
OkV4Y2x1ZGVTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBjYjUwNThjMmRjMDYyYjRkYjVkNjgyYTAx
NjE3YjM3NzhjMTQwNGJhLi5iODdhOTA4NmFiZDE2MzVhZTkwMjg2YjkwYzE3MzQ1ZWM2YjE0Njlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtNzMsMTMg
KzczLDEzIEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBKU1ZhbHVlICgqRGVm
YXVsdFZhbHVlRnVuY3Rpb25QdHIpKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgRGVmYXVsdFZhbHVlRnVuY3Rpb25QdHIgZGVmYXVsdFZh
bHVlOwogCi0gICAgdHlwZWRlZiB2b2lkICgqR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRy
KShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCpHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIp
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRy
IGdldE93blByb3BlcnR5TmFtZXM7CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpHZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXNGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgdHlwZWRlZiB2b2lkICgqR2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAg
ICAgR2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzOwogCi0gICAgdHlwZWRlZiB2b2lkICgqR2V0UHJvcGVydHlOYW1lc0Z1bmN0
aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCpHZXRQcm9wZXJ0eU5hbWVzRnVuY3Rpb25Q
dHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAgICAgR2V0UHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRy
IGdldFByb3BlcnR5TmFtZXM7CiAKICAgICB0eXBlZGVmIHVpbnQzMl90ICgqR2V0RW51bWVyYWJs
ZUxlbmd0aEZ1bmN0aW9uUHRyKShFeGVjU3RhdGUqLCBKU09iamVjdCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDU2
ZGYzNDUwMjg3ZmY5OTlhMzhmY2Y0Y2I3MTUwZTg2MWE1NjQzZTguLmFjYzI4MGRjNzBmYmE3NzMw
N2FiNDBiOTAzYjE1MDc2N2M0YTg2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZp
bmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2bSwgI25hbWUpCiAjZGVm
aW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQodm0sICNuYW1lKQog
I2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1l
KG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQorI2RlZmluZSBJTklUSUFMSVpF
X1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0
ZU5hbWUoKSkKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkK
ICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAgLTQxLDYgKzQyLDcgQEAKICAgICBKU0NfQ09NTU9O
X0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NP
TU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9O
QU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CmluZGV4IDY1ODE1Y2M5YTFlOWY3YzYyMTAzOTIyMDNhYzhmMTgxMDdkZjhhNzAuLmJiNWQ2YzRl
ZDNhMjU0ZDdmNTNjNzA5ZjlmMTg5MzI1Mjc0ZTA3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjM0LDcgKzIzNCw2IEBA
CiAgICAgbWFjcm8odW5zY29wYWJsZSkKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCi0gICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wobWFjcm8pIFwKICAgICBtYWNy
byhpdGVyYXRvck5leHQpIFwKICAgICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8ocmVqZWN0
KSBcCkBAIC0yODQsNyArMjgzLDExIEBACiAjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVf
UFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUj
I1ByaXZhdGVOYW1lOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9O
QU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVS
VFlfTkFNRV9HTE9CQUwKLSAgICAgICAgCisKKyNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFS
RV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVy
IG5hbWUjI1N5bWJvbDsKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExf
S05PV05fU1lNQk9MX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZB
VEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCisKICAgICAgICAgY29uc3QgSWRlbnRpZmllciog
Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVudGlm
aWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCmluZGV4IDRk
YmFmN2I0MTdkYzcwOGZiYzZjNzI1MDlmMTlmNTQ0ZjAxYjk2YmQuLmUyZWNlNDk2YTE2YTFkNjIy
MWRiZmI3MTE4MDg1NWExODFjY2FhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCkBAIC0zNSw2ICszNSwxMSBAQCBlbnVtIEVudW1lcmF0
aW9uTW9kZSB7CiAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdAog
fTsKIAorZW51bSBjbGFzcyBFbnVtZXJhdGlvblR5cGUgeworICAgIEluY2x1ZGVTeW1ib2wsCisg
ICAgRXhjbHVkZVN5bWJvbAorfTsKKwogaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5o
CmluZGV4IDc0NzJkODQ3ZDc1YjMwM2U2NDU0ZjA2ZDY5ZWQ2ZmM1ZWU2OTIzYWMuLjlmMjAwM2Fm
MzQzZGUwYzY4ZGQzNjc2OWVmY2JhMmVkYzRhNGVjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaApAQCAtMzcsNyArMzcsNyBAQCBp
bmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEF0b21pY1N0cmlu
Z0ltcGwqIHN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3Ry
aW5nVGFibGUoZXhlYyk7CiAgICAgaWYgKHN0cmluZykKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghc3RyaW5nLT5sZW5ndGgoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdU
YWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJl
YWQhIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwg
c3RyaW5nLT5pc1VuaXF1ZSgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxl
KHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEi
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogI2VuZGlmCkBAIC00OSw3ICs0OSw3
IEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0
b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgQXRvbWljU3RyaW5nOjpp
c0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nLmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBj
b21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghc3RyaW5nLmxlbmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBBdG9taWNTdHJpbmc6
OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9taWMgc3RyaW5n
IGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
aW5kZXggNTE3NzIxZTk4NDQ5ZTFlZDNlYTA1ZTUwOTZhNDNjMzE0ODI4ODg5MC4uNGM3MGFjMzNl
Yzc0NmE2MGFjMWY4MGY1MzNhODE3N2FiZmMyOTAwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTIyMiwxNCArMjIyLDE0IEBAIHN0YXRpYyBpbnQgY29t
cGFyZUtleXNGb3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQogICAgIHJldHVy
biAoZGEgPiBkYikgLSAoZGEgPCBkYik7CiB9CiAKLXZvaWQgSlNBcnJheTo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBK
U0FycmF5OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAKICAgICBpZiAoc2hvdWxkSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKLSAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
ICAgIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIC8vIFRoaXMgbWV0aG9kIG1ha2Vz
IHJvb20gaW4gdGhlIHZlY3RvciwgYnV0IGxlYXZlcyB0aGUgbmV3IHNwYWNlIGZvciBjb3VudCBz
bG90cyB1bmNsZWFyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5k
ZXggNzAwMjllNmRjOWY0OTQ2ZTM4MjBlOWZkNzIwMDYxMTU0MDY0ZTBmYi4uYTU1ZTkxNWYxZWM0
ZDk2NjMwY2ViZWIyYWMyMzZmMDdkOGEwYTEwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKIAogcHJpdmF0ZToKICAgICBi
b29sIGlzTGVuZ3RoV3JpdGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCBjMWNhZDEwNWM3ZTBkNWFkN2VmZDI5NmEzYmVmMDY5
NmM5NWY2MDA3Li5kNTU0MDNlZGQzOTRkYmQ1MTdmNTc0YTcyMzIyZDFhMzY2Yzg0ZjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAt
MTE1LDE0ICsxMTUsMTQgQEAgYm9vbCBKU0FycmF5QnVmZmVyOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKIH0KIAogdm9pZCBKU0Fy
cmF5QnVmZmVyOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoCi0gICAgSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyYXksIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQorICAgIEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lQXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25U
eXBlIHR5cGUpCiB7CiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fy
cmF5QnVmZmVyKj4ob2JqZWN0KTsKICAgICAKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5ieXRlTGVuZ3RoKTsKICAgICAKLSAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOworICAgIEJhc2U6OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSwgdHlwZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5oCmluZGV4IDMxOWI4MmU1YTBiMTE2ZThkZWIzOWE2MTAxMGZhOWFkMzZj
MDBmMTkuLjdmNTEzZTYzNGI2NzcyNzg0MmE1ZWNkYjY4N2RlNTU2ODI1NmQxNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKQEAgLTU0LDcgKzU0
LDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUs
IEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBjYjVjOGEyZjAzOTM0
M2M1YTI0MDUwYjA5MDgwOGRlZDI1ZTEwOTBiLi4yMDBhYzdlZDRkZGUzYzYxOTJkNGU4ODkxZWUz
ODk0ZjhmODNhMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgYm9vbCBKU0FycmF5QnVm
ZmVyVmlldzo6ZGVsZXRlUHJvcGVydHkoCiB9CiAKIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKLSAgICBKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBhcnJheSwgRW51bWVyYXRpb25Nb2RlIG1vZGUp
CisgICAgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsK
ICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KG9iamVjdCk7CiAgICAgCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBKU0FycmF5QnVm
ZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAogICAgICAgICBhcnJheS5hZGQo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1ZmZlcik7CiAgICAgfQogICAgIAotICAgIEJhc2U6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7
CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IGFycmF5LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6ZmluYWxp
emUoSlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggM2ZlYjAzYjcyMTkzMTRkMmI0MmY4MzFlNGVjMzhiY2Ex
OTcyOWY0NC4uZTZkYzg1ODljN2Y2MmE2M2M4NGJkMjAxN2U4ZGNkOTY5YTg0OTRmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBA
IC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgCi0gICAgc3RhdGljIHZvaWQgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIAogcHVibGljOgogICAgIFR5
cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNwcAppbmRleCAxZDNmMzQwMTg4NTdkYmQ4ZTY4
ZjMyYjAyZGM5MGE5NDdhYmIwZTA2Li5hOTIyMmQ0OWZjZWRlNzg0NjBhODdiMjA2ZTM4YTllYzk0
YjFhMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxl
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuY3BwCkBA
IC03Niw5ICs3Niw5IEBAIGJvb2wgSlNDYWxsZWU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgcmV0dXJuIEJhc2U6
OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKLXZvaWQgSlNDYWxsZWU6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNDYWxsZWU6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25U
eXBlIHR5cGUpCiB7Ci0gICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9
CiAKIHZvaWQgSlNDYWxsZWU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKaW5kZXggZGVkOGM4
NTgwYjBhYzM1ZDRkOTc3MTZhMDBhZGYwODBkY2I2ZTJlZS4uMGJjM2NkMTMxYTFmNTIzNDI1Yzk3
OGRhMWE1ZjMwNTdhMzc4N2Q3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nh
bGxlZS5oCkBAIC0xMDEsNyArMTAxLDcgQEAgY2xhc3MgSlNDYWxsZWUgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3Rh
dGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZSA9IEVudW1lcmF0
aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAy
YzQwM2M4MTNmYjM4NTY4YjBlNjBjZTc4OTg5ZGRlYTRjOTUzYzEyLi4yNjAyNWMwZDc4NzExMjk3
NGMzNDMyOWI4M2ZiMDUxN2YzMjI2NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAKQEAgLTE5NCwxMiArMTk0LDEyIEBAIGJvb2wgSlNDZWxsOjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKQordm9pZCBKU0NlbGw6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBl
KQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgSlNDZWxs
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSkKK3ZvaWQgSlNDZWxsOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0yMTUsNyArMjE1LDcgQEAgY29uc3QgY2hhciogSlND
ZWxsOjpjbGFzc05hbWUoKSBjb25zdAogICAgIHJldHVybiBjbGFzc0luZm8oKS0+Y2xhc3NOYW1l
OwogfQogCi12b2lkIEpTQ2VsbDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBKU0NlbGw6Omdl
dFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CkBAIC0yNTAsMTIgKzI1MCwxMiBAQCB1aW50MzJfdCBKU0NlbGw6
OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKQogICAgIHJldHVybiAw
OwogfQogCi12b2lkIEpTQ2VsbDo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBK
U0NlbGw6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgSlNDZWxsOjpnZXRH
ZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBKU0NlbGw6OmdldEdlbmVyaWNQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUsIEVudW1lcmF0aW9uVHlwZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA0ODM5ZjY0
ZmExYTgyMGVlYWNiNzA5Zjk4YzMwYjdhZjdjNGU4MTk0Li5iN2MyYTcxNGQ5YWMzNzE0NDIyMmQ1
ZWViMTM4NTA3M2NkNzE4OWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aApAQCAtMjExLDEzICsyMTEsMTMgQEAgY2xhc3MgSlNDZWxsIHsKIAogICAgIC8vIER1bW15IGlt
cGxlbWVudGF0aW9ucyBvZiBvdmVycmlkZS1hYmxlIHN0YXRpYyBmdW5jdGlvbnMgZm9yIGNsYXNz
ZXMgdG8gcHV0IGluIHRoZWlyIE1ldGhvZFRhYmxlCiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVs
dFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSk7Ci0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NS
QVNIIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9U
T19DUkFTSCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAg
ICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOworICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RP
X0NSQVNIIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogCiAgICAg
c3RhdGljIHVpbnQzMl90IGdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KTsKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldFN0cnVjdHVyZVBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBn
ZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsK
KyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFt
ZShjb25zdCBKU09iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1
c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGRjMzc3MTk3MGFh
NDA2OTFmNTkxYzFlMzkxMDgyMzg2ZTFiZmEyNzAuLjU4NDA0MDY3NzQzZjg5MjRhOWQ4ODUwZWY5
OGZiODhiYzM3MzUyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAg
ICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0Z1bmN0
aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0
LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIHNob3VsZEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMobW9kZSkpIHsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CiAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpOwogICAgIH0K
LSAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiB2
b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDlmNWZl
NjE0MTU5YmRjZjJlNWFiYzQ1NTBkMDQ4MTk4ZTNiMzhkYzcuLjYxMDk1ZjViZTQ1MjkyMTdiNDRl
MzdmMGUwZmFhNTU1MGI0MGU0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGlj
IEpTQ2FsbGVlIHsKICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogY3JlYXRlQWxsb2NhdGlv
blByb2ZpbGUoRXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsKIAogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMsIEVudW1lcmF0aW9uVHlwZSA9IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwogCiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCAxMzQzZWVl
M2Q3MjBhMjA2NmFkYzkyYjQzOWZkZjE5OTE4ZmE0NWY4Li5lZWUxNzU1ZjM0MTg0ZmI1MWVkYzk4
Mjk5N2RkNGEwOTZlNTUyNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI0MCw4ICsyNDAsOCBAQCBj
bGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7
CiAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAg
IHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5
cGUpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25U
eXBlKTsKICAgICAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5
VmlzaXRvciYsIENvcHlUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZk
MGQyMWZhNjFmMzk4OWY5ZDliNDE5OWRhYTg4OGU5ZjY2NDRlY2EuLmM0OTAxZTVlYWY0NDFhNTFk
ZmVjNjk2NThiNWUyMmM0ZDQ3ZmIwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBA
IC00MTEsMjYgKzQxMSwyNiBAQAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdm9pZCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKAotICAgIEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKKyAgICBKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBhcnJheSwgRW51bWVyYXRpb25N
b2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2Jq
ZWN0KTsKICAgICAKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2Rl
KSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAg
IAotICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBhcnJheSwgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlLCB0eXBlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIHZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93
blByb3BlcnR5TmFtZXMoCi0gICAgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQorICAgIEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5LCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqPihvYmplY3QpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlz
T2JqZWN0LT5tX2xlbmd0aDsgKytpKQogICAgICAgICBhcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpKSk7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CisgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSwgdHlwZSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggYjE0YTQ3OWM5YTlmMWVkYmRjNWY2
NTY5NWYzNGEzNjQ1ZTc2ODcxZS4uNWFhZWU5NjI0NzM2MWNmMzZmYzRjNzUyY2MzMjBhOGNjMDk1
Yzg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGlubGluZSBib29sIEpTTGV4
aWNhbEVudmlyb25tZW50OjpzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKK3ZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5
cGUpCiB7CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNM
ZXhpY2FsRW52aXJvbm1lbnQqPihvYmplY3QpOwogCkBAIC0xMTgsMTEgKzExOCwxMyBAQCB2b2lk
IEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5pc1ZhbGlkKGl0LT52YWx1ZSkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1
ZGVTeW1ib2wgJiYgaXQtPmtleS5nZXQoKS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywg
aXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIC8vIFNraXAgdGhlIEpTRW52
aXJvbm1lbnRSZWNvcmQgaW1wbGVtZW50YXRpb24gb2YgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzCi0gICAgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5
cGUpOwogfQogCiBpbmxpbmUgYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6c3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA5ZmIwM2M1ODdkMGE5
ZjliZjM4NjEwNmMwNGU3ZmI0YmFhOThkODUzLi41Yzc0YTU5N2VkMDE5N2E0NWZhY2VlNWNiNGRh
ZWE3MzA3NWMwYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgY2xhc3MgSlNMZXhpY2Fs
RW52aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7CiAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUs
IEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAppbmRleCBhZjQ3
MzdlOWIwMmY1NzEwMzA2NWVlN2Q4ZTdiYTA0MGRlYzBkMmFjLi44YTYzZDk0NzkwZmYwYzdjYjhi
MGE5MjNmN2Y5YWJmYTI4NTAyN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU05vdEFuT2JqZWN0LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIEpTTm90QW5PYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSkKK3ZvaWQgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMs
IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuaAppbmRleCBlN2MwYTA0ODViY2M4ZThkN2E1NGZiY2YzYzRiMmEz
YjcyOTk2MDQ4Li44NzNkNWJiNzQ3OWFjYzA0YTIwNmE1MGZlODlhZDlkZWVjNmViZjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCkBAIC03Nyw3
ICs3Nyw3IEBAIGNsYXNzIEpTTm90QW5PYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAotICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDk5MDc0M2E1
NThlZWE4ODc5OTNlMjI3YTZlZDE4ZTU1MGMyM2UxYTMuLmM2NTNjMTQ5YzZmMzNlMzM1M2FhNDZh
MGVkMmY1NjFmMjIzOTdkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCkBAIC00OTUsNyArNDk1LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVy
OjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkK
ICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMgPSBzdHJpbmdpZmllci5tX2FycmF5UmVw
bGFjZXJQcm9wZXJ0eU5hbWVzLmRhdGEoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIFByb3BlcnR5TmFtZUFycmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAg
ICAgICAgICAgICAgbV9vYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMo
bV9vYmplY3QuZ2V0KCksIGV4ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5h
bWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVT
eW1ib2wpOwogICAgICAgICAgICAgICAgIG1fcHJvcGVydHlOYW1lcyA9IG9iamVjdFByb3BlcnR5
TmFtZXMucmVsZWFzZURhdGEoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fc2l6ZSA9
IG1fcHJvcGVydHlOYW1lcy0+cHJvcGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgpOwpAQCAtNzEyLDcg
KzcxMiw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmls
dGVyZWQpCiAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2sucHVzaChvYmplY3QpOwogICAgICAg
ICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3BlcnR5
U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAgICAgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhl
YywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgogICAgICAgICAgICAgRkFMTFRIUk9V
R0g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggODdj
MTkxOTQ3MjljNTI1NDk2ZDExMzNhMjFlOTg5MjhiMWVkZWU0Ni4uZTRjMTZmOTVhZjM2ZjIxYmIz
OTFhMDVlZjI4OWZjYTA3MDBmYWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcApAQCAtMTQ1MywxMCArMTQ1MywxMCBAQCBib29sIEpTT2JqZWN0OjpkZWZh
dWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHBy
b3RvKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNPYmplY3Q6Omdl
dFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0
aW9uVHlwZSB0eXBlKQogewogICAgIHByb3BlcnR5TmFtZXMuc2V0QmFzZU9iamVjdChvYmplY3Qp
OwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiAKICAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ2NSwxMCArMTQ2NSwxMCBAQCB2b2lkIEpT
T2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lQQogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBhc09iamVjdChvYmpl
Y3QtPnByb3RvdHlwZSgpKTsKICAgICB3aGlsZSgxKSB7CiAgICAgICAgIGlmIChwcm90b3R5cGUt
PnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKSB7
Ci0gICAgICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1l
cyhwcm90b3R5cGUsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgICAgICAgICAgcHJv
dG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgICAgIHByb3Rv
dHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiAgICAgICAgIEpTVmFsdWUgbmV4dFByb3Rv
ID0gcHJvdG90eXBlLT5wcm90b3R5cGUoKTsKICAgICAgICAgaWYgKG5leHRQcm90by5pc051bGwo
KSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3NiwxMSArMTQ3NiwxMSBAQCB2b2lkIEpTT2Jq
ZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQQogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1l
cmF0aW9uVHlwZSB0eXBlKQogewogICAgIGlmICghc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVy
dHlOYW1lcyhtb2RlKSkgewogICAgICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGdldCBub24taW5k
ZXhlZCBwcm9wZXJ0aWVzIGZyb20gYW55IHN1YmNsYXNzZXMgb2YgSlNPYmplY3QgdGhhdCBoYXZl
IHRoZW0uCi0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU0NywxMCArMTU0NywxMCBAQCB2b2lkIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIAotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCi12b2lkIEpT
T2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCit2b2lkIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQog
ewogICAgIGdldENsYXNzUHJvcGVydHlOYW1lcyhleGVjLCBvYmplY3QtPmNsYXNzSW5mbygpLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlLCBvYmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSk7CiAK
QEAgLTE1NTgsNyArMTU1OCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIG9iamVjdC0+c3RydWN0
dXJlKHZtKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZXMs
IG1vZGUpOworICAgIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21T
dHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBkb3VibGUgSlNP
YmplY3Q6OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKQEAgLTI3NDEsMTYgKzI3NDEs
MTYgQEAgdWludDMyX3QgSlNPYmplY3Q6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogb2JqZWN0KQogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6Z2V0U3Ry
dWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3Zv
aWQgSlNPYmplY3Q6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzRnJv
bVN0cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgb2JqZWN0LT5zdHJ1Y3R1
cmUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1lcywg
bW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU09iamVjdDo6Z2V0R2Vu
ZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1l
cmF0aW9uVHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlVGhhdFNraXBzSlNPYmplY3QobW9kZSkpOworICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpLCB0eXBlKTsKIAogICAgIGlmIChvYmpl
Y3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNzU4LDEwICsy
NzU4LDEwIEBAIHZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAgSlNPYmplY3QqIHByb3RvdHlw
ZSA9IGFzT2JqZWN0KG9iamVjdC0+cHJvdG90eXBlKCkpOwogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIGlmIChwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcygpKSB7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxl
KHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhwcm90b3R5cGUsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOworICAgICAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5
TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUo
dm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSk7CisgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiAgICAg
ICAgIEpTVmFsdWUgbmV4dFByb3RvID0gcHJvdG90eXBlLT5wcm90b3R5cGUoKTsKICAgICAgICAg
aWYgKG5leHRQcm90by5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYzk3MjEzOTRiNGE4ZjAyNjU2ZTk1NmY0
Nzc5ZDhkMDM3MDQ5ZGZjMi4uNTEzYzc4ZTdhNmJkNTZiZWEyYmRjMzA4NTJkZTEyYzhkMzBmOTNk
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC00NzQsMTMg
KzQ3NCwxMyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaGFz
SW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmYXVsdEhh
c0luc3RhbmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkp
OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlw
ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
LCBFbnVtZXJhdGlvblR5cGUpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQz
Ml90IGdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogCiAg
ICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBl
ID0gTm9QcmVmZXJlbmNlKSBjb25zdDsKICAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVj
U3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4
IGYxYTJlNTYyZjlhYmY0MDJhYjYzOGRjMDljNmVmYzM4MGQxYzViNGQuLjJhNTE2OTcyMTFjNmQ4
YTNiZTRlNGU3ODJlMjlhZGMyYTVlYzkwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1MSw3ICsyNTEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVu
Y1JhY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9
IGpzQ2FzdDxKU1Byb21pc2VEZWZlcnJlZCo+KGRlZmVycmVkVmFsdWUpOwogCiAgICAgLy8gNC4g
TGV0ICdpdGVyYXRvcicgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEdldEl0ZXJhdG9yKGl0ZXJh
YmxlKS4KLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1ZSBpdGVy
YXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7CiAKQEAg
LTM2Nyw3ICszNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNv
bnN0cnVjdG9yRnVuY0FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQq
IGRlZmVycmVkID0ganNDYXN0PEpTUHJvbWlzZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAK
ICAgICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRl
cmF0b3IoaXRlcmFibGUpLgotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxl
LmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBK
U1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJy
ZWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaAppbmRleCBlZTE4YWJmNmViM2YzMmNmYzAxMjkxZWIxNDQ3
NDBlZjc4YTk2YTFjLi5hNjVhNjA3ZjdmNmYyZWJiMDY4YjYzOWU2ODQxOWQ5ZTViMzY4OWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaApAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IqIHN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoRXhlY1N0YXRlKiBl
eGVjCiAgICAgICAgIHJldHVybiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSk7
CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGJhc2Ut
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBiYXNlLT5tZXRo
b2RUYWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVy
dHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNs
dWRlU3ltYm9sKTsKIAogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZXMpOwogICAgIGlmIChzdHJ1Y3R1cmUtPmNhbkNhY2hlU3RydWN0dXJlUHJvcGVydHlOYW1l
RW51bWVyYXRvcigpKQpAQCAtMTQyLDkgKzE0Miw5IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqIGdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywK
ICAgICAvLyB0aGUgbmV3IGdlbmVyaWMgUHJvcGVydHlOYW1lQXJyYXkgYW5kIGZhaWxpbmcgYmVj
YXVzZSB3ZSd2ZSBhbHJlYWR5IHZpc2l0ZWQgdGhlbS4KICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0
cnVjdHVyZSA9IHN0cnVjdHVyZUVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZSh2bSk7CiAgICAg
aWYgKHN0cnVjdHVyZSA9PSBjYWNoZWRTdHJ1Y3R1cmUgJiYgc3RydWN0dXJlLT5jYW5BY2Nlc3NQ
cm9wZXJ0aWVzUXVpY2tseSgpICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihsZW5ndGgpID09IGJh
c2UtPmdldEFycmF5TGVuZ3RoKCkpCi0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
R2VuZXJpY1Byb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2Vu
ZXJpY1Byb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICBlbHNl
Ci0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNlLCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAg
YmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhj
bHVkZVN5bWJvbCk7CiAgICAgCiAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgc3Ry
dWN0dXJlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRl
eCBmNGM2ODI5ZTA0YmMyMWExZGUzOWY3ZTRmOTAzYTliZjQ1NGI4MzcxLi41MWU3NGViNTZhM2Fm
NmZlYjJkZmU2ZWEzOGFlYzFlMjNmY2VjODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmNwcApAQCAtMTA4LDEwICsxMDgsMTAgQEAgYm9vbCBKU1Byb3h5OjpkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3AKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiB9CiAKLXZvaWQgSlNQcm94eTo6Z2V0UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNQcm94eTo6Z2V0UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5
cGUpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0
KTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIHVpbnQzMl90IEpTUHJveHk6OmdldEVudW1lcmFibGVM
ZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQpAQCAtMTIwLDIzICsxMjAs
MjMgQEAgdWludDMyX3QgSlNQcm94eTo6Z2V0RW51bWVyYWJsZUxlbmd0aChFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0RW51bWVyYWJsZUxlbmd0aChleGVjLCB0aGlzT2Jq
ZWN0LT50YXJnZXQoKSk7CiB9CiAKLXZvaWQgSlNQcm94eTo6Z2V0U3RydWN0dXJlUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKQordm9pZCBKU1Byb3h5OjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1l
cmF0aW9uVHlwZSkKIHsKICAgICAvLyBTa2lwIHRoZSBzdHJ1Y3R1cmUgbG9vcCwgc2luY2UgaXQg
aXMgaW52YWxpZCBmb3IgcHJveGllcy4KIH0KIAotdm9pZCBKU1Byb3h5OjpnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNQcm94
eTo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7CiAgICAgLy8gR2V0ICphbGwqIG9mIHRoZSBwcm9wZXJ0
eSBuYW1lcywgbm90IGp1c3QgdGhlIGdlbmVyaWMgb25lcywgc2luY2Ugd2Ugc2tpcHBlZCB0aGUg
c3RydWN0dXJlCiAgICAgLy8gb25lcyBhYm92ZS4KLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFy
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdl
dCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQg
SlNQcm94eTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKK3ZvaWQgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNQcm94eSog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT50
YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNP
YmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlw
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5oCmluZGV4IGNkYTYyMWI0Y2JhNTk3MGUxZTNhZTFiMWNmMDFlYThkNDEzNjYwZGQu
LmFmZDBjZDdmNjM1OGJkMGQ0NDY2OTZlOWRjZGMwMWE2ZGM1MTY0ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKQEAgLTgxLDExICs4MSwxMSBAQCBjbGFzcyBKU1By
b3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBK
U1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0
aW9uVHlwZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQzMl90IGdldEVudW1l
cmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwg
RW51bWVyYXRpb25UeXBlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRH
ZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRo
cm93KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggYjhmYjIyODJhZmFlODdlY2M0MTEwMjQ1
Y2U5YmI4NzNlOTUwZjBmZi4uNGZiZmI5ZGNjODQyNWM4ZDJlMGM2N2QzYjMwM2RjOTI5NzhkOTcy
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKQEAgLTU0LDIxICs1NCwyMyBAQCBib29sIEpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lk
IEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAg
SlNTeW1ib2xUYWJsZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N5bWJvbFRhYmxlT2Jq
ZWN0Kj4ob2JqZWN0KTsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2Nr
ZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09i
amVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIGlmIChpdC0+
a2V5LT5pc1ByaXZhdGUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGlmICh0eXBlID09IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCAmJiBpdC0+a2V5LT5p
c1VuaXF1ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCEo
aXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBl
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggMmNkOWQxYmEyYjEyNzBiN2Ex
ODJhZmI4YzhhNDAyMDgxNzQ4ZmI0Yi4uNmM2MDRjMGVjODAyYzk5NjY0OTE0NTMwZTAxMzU1OGMx
NDVlNmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBKU1N5bWJvbFRhYmxlT2Jq
ZWN0IDogcHVibGljIEpTU2NvcGUgewogICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KICAgICAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKICAgICAK
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJ
c0Vudmlyb25tZW50UmVjb3JkIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGIyMjBiOTg3NTg4NWM0MmY5Y2U2MzhmMzIy
MjQ3OTJjMzI3NjEwMTcuLjAzNTY0Zjg4ODExZjNlN2ZhYmZiMGFkYWI5YmJjOWFjYTFmYmFiZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRv
clByb3RvdHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBNYXBJdGVyYXRvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJv
dG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclByaXZhdGVOYW1lLCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwg
RG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51
bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
ck5leHRQcml2YXRlTmFtZSwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwgRG9udEVudW0s
IDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBl
LmNwcAppbmRleCA1NDgyMjI3Njk0MDBiNzE4NTJhZjdkYjhiNzVlZjUwNzU0NGVkZDRmLi5mODQz
NjdhZTgwYjcyNjM3NTA1ZWRjMTU2M2Q4YjI4ODhjNThjOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9p
ZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtl
eXMsIG1hcFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgbWFwUHJvdG9GdW5jVmFsdWVzLCBEb250RW51
bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVz
LCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNF
bnRyaWVzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDAp
OwogCiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5n
KCksIG1hcFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwMmU1NzUyODllMTZjZGMxNmEwYmJh
MzQ5Nzg1ZjJlMjdlZjE3ZGQuLjQwYjMzNDgxYjg2ZjllYTIwZDliZDg5NWNiYjM5NDNiNDZkZmE2
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3Jp
cHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiU3RhY2tW
aXNpdG9yLmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2Yo
RXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0
YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKik7
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJv
cGVydGllcyhFeGVjU3RhdGUqKTsKQEAgLTY2LDYgKzY4LDcgQEAKICAgZ2V0UHJvdG90eXBlT2Yg
ICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICBvYmplY3RDb25z
dHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAg
Z2V0T3duUHJvcGVydHlOYW1lcyAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
TmFtZXMgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZ2V0T3duUHJvcGVydHlTeW1ib2xz
ICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKICAga2V5cyAgICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3Rv
cktleXMgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZGVmaW5l
UHJvcGVydHkgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5ICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKICAgZGVmaW5lUHJvcGVydGllcyAgICAgICAgICBv
YmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKQEAgLTIwNiw3ICsyMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogICAgIGlm
ICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQg
cHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICBKU0FycmF5KiBuYW1lcyA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMg
PSBwcm9wZXJ0aWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3Bl
cnRpZXM7IGkrKykKQEAgLTIxNSwxMiArMjE4LDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhl
CiB9CiAKIC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQg
aXMgbm90IGFuIG9iamVjdC4iKSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMo
ZXhlYyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSks
IGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9u
VHlwZTo6SW5jbHVkZVN5bWJvbCk7CisgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOworICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5z
aXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsK
KyAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnRpZXNbaV0uaW1wbCgpOwor
ICAgICAgICBpZiAoaW1wbC0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIG5hbWVzLT5wdXNoKGV4
ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGltcGwpKTsKKyAgICB9CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShuYW1lcyk7Cit9CisKKy8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0
aW9uIGNhY2hlLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cktleXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQga2V5cyBvZiBhIHZhbHVlIHRoYXQgaXMg
bm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
Yyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4
ZWMsIHByb3BlcnRpZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0
KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3Bl
cnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wp
OwogICAgIEpTQXJyYXkqIGtleXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAg
IHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBAIC0zMzEsNyArMzUxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5
KEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvcGVydGllcykKIHsKICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KHBy
b3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhh
c09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgYXNPYmplY3QocHJvcGVydGllcyktPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6
OkluY2x1ZGVTeW1ib2wpOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydHlOYW1l
cy5zaXplKCk7CiAgICAgVmVjdG9yPFByb3BlcnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRvcnM7CiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFya0J1ZmZlcjsKQEAgLTM5OCw3ICs0MTgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3Rh
dGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQ
IG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlw
ZTo6SW5jbHVkZVN5bWJvbCk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhl
IFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00MzUs
NyArNDU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24g
cHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhl
eGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMs
IEVudW1lcmF0aW9uVHlwZTo6SW5jbHVkZVN5bWJvbCk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0
eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0
IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3
aXRoIFAuCkBAIC00ODMsNyArNTAzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZv
ciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpJbmNsdWRlU3ltYm9sKTsKICAgICBQ
cm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsK
ICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVy
dGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBk
ZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVy
bmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTUxMyw3ICs1MzMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKiBleGVj
KQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAog
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkluY2x1
ZGVTeW1ib2wpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBw
cm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAg
ICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93
blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKaW5kZXggMjE0MTY0NDY2NDVjN2ZmZjAzZjdj
ODJkMTc4NzM5YWQ1NjA4YmY2NC4uYmRmOGZmM2FjMzA3ZDVlOGFmMGZhYzlmOGI5MWIxYTZhYjgz
YzFjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5h
bWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCkBA
IC0zNSwxOSArMzUsMjUgQEAgY2xhc3MgUHJpdmF0ZU5hbWUgewogICAgIFByaXZhdGVOYW1lKCkK
ICAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkoKSkKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAgIH0KLSAgICBQcml2YXRl
TmFtZShjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQotICAgICAgICA6IG1faW1wbChTdHJpbmdJ
bXBsOjpjcmVhdGVVbmlxdWUoZGVzY3JpcHRpb24uaW1wbCgpKSkKKworICAgIGVudW0gQ3JlYXRl
UHJpdmF0ZVRhZyB7IENyZWF0ZVByaXZhdGUgfTsKKyAgICBQcml2YXRlTmFtZShDcmVhdGVQcml2
YXRlVGFnKQorICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVQcml2YXRl
KCkpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAgICB9CisK
ICAgICBleHBsaWNpdCBQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpCiAgICAgICAgIDogbV9p
bXBsKHVpZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAg
IH0KIAorICAgIGV4cGxpY2l0IFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
CisgICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5p
bXBsKCkpKQorICAgIHsKKyAgICB9CisKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4obV9pbXBsLmdldCgpKTsg
fQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1lJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gdWlkKCkgPT0gb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKaW5kZXggMzA3NGM3MmUxMDcwMTMzYjk3YjAzYjFkZmY0
YTQzZGUxMzJmYzBhNi4uZWQ1MWQ2NDgyZWQ3OTBhYzEzZmIxMWEyODY5MjkyMDkxY2E4YjdhZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTEw
NCwxNCArMTA0LDE0IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAKICAgICBBdG9taWNTdHJpbmdJ
bXBsKiBwdWJsaWNOYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmlz
VW5pcXVlKCkgPyBudWxscHRyIDogbV9pbXBsOworICAgICAgICByZXR1cm4gKCFtX2ltcGwgfHwg
bV9pbXBsLT5pc1VuaXF1ZSgpKSA/IG51bGxwdHIgOiBtX2ltcGw7CiAgICAgfQogCiAgICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5kZXggPSBVSU5UX01BWDsKIAogICAgIHVpbnQzMl90
IGFzSW5kZXgoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbCA/IHRvVUludDMyRnJvbVN0
cmluZ0ltcGwobV9pbXBsKSA6IE5vdEFuSW5kZXg7CisgICAgICAgIHJldHVybiAobV9pbXBsICYm
ICFtX2ltcGwtPmlzVW5pcXVlKCkpID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDog
Tm90QW5JbmRleDsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNw
cAppbmRleCA0ZDlkMGIyN2U0ZDBjOGM5MWY5ZmViNDVhMWQ1NGU1OTVkMzNkNTE5Li44ZDI5MTE5
ZWJjNGVkOWE2YTQ0ZTA2Mzc2OTRiYzAzZDI0MDZjZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTEwMywyNSArMTAzLDI1IEBAIGJv
b2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNl
bGwsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2
b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsKICAgICBpZiAo
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7Ci0gICAgQmFzZTo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0OjpnZXRQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBSZWdF
eHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKG1vZGUpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKLSAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0UHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCi12b2lkIFJl
Z0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCit2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQog
ewogICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQogICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKLSAg
ICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOworICAgIEJhc2U6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIHN0YXRpYyBib29sIHJlamVjdChF
eGVjU3RhdGUqIGV4ZWMsIGJvb2wgdGhyb3dFeGNlcHRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IDdj
NGI3NTA5NDViYmU4NWQxNjg1ZjVjNzU3OTE2OGM4ZjE0YmUxMjMuLmM1OTI2MjFhNzRlYTIzOTZk
MjQ1YmUwMWY5MjYwNjE3NTJmOGU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC04Miw5ICs4Miw5IEBAIGNsYXNzIFJlZ0V4cE9iamVjdCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJv
dG90eXBlLmNwcAppbmRleCA1NzNhY2ZhNWNkNzY0YjA5ZWU3NTQzYjM0N2I0OWE1MTExZTcwNTM3
Li44ZWE2MTA0OGQ3NDk3ZWFjMDVjOTExMWJjMTI2ODNiNmNmODI0OWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsK
IAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2
YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5h
bWUsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5kZXggZjg4
ZWE3Y2Y5ODY4ZjY2OGI4YzJlODg4MTVmZjY1Y2YzOTkyN2I0OS4uNDk5NmRhMGVhNTMxM2ZkMmU2
MWU3MWE2ZWY0MzgzNTFmYWEzYmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2V0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCBzZXRQcm90b0Z1
bmNLZXlzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT52YWx1ZXMsIHNldFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgc2V0UHJvdG9GdW5j
RW50cmllcywgRG9udEVudW0sIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0s
IDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKIAogICAgIEdldHRlclNldHRl
ciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLnN0cmluZygpLCBzZXRQcm90b0Z1bmNTaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmlu
ZGV4IDUwMDFiY2M0ZTFiN2UzNzkzZWQyNmUxNDIwYTgwYTYwNDY4ZTEzYzYuLjc1NzAxNzQ3YTc0
YjhmNDAxMGYzZjBlYmI2MmJmNjU5MWIzYmVhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgU3Ry
aW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiB9CiAKLXZvaWQgU3RyaW5nT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBTdHJp
bmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3QpOwogICAgIGludCBzaXplID0gdGhp
c09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5sZW5ndGgoKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2
b2lkIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcyhtb2RlKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHJldHVybiBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlLCB0eXBlKTsKIH0KIAogU3RyaW5nT2JqZWN0KiBjb25zdHJ1Y3RTdHJpbmcoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHN0cmluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggMGNlYmZkZTdhZjU1ODE3
Nzk5NjMwMGM3YThiNzJlYTkwNzY1MzY0Ni4uMjE0YzI3YmRhMGFhMjMzNDM1OTgxMTZlYjc3YWIz
NzNkNjgwNTI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3Jh
cHBlck9iamVjdCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAzZmNiNDI2Y2RhMGQ1YmJh
YzMxNzBhOGJjYjQ2NjE3NWYyOWM3NDI1Li4xOGJhYTNlMWJiOGY2MjFmMjA0ZDNiMDNkODhlZDM3
MDJhMjIzMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKQEAgLTkzNSw3ICs5MzUsNyBAQCB2b2lkIFN0cnVjdHVyZTo6Y3JlYXRlUHJvcGVydHlNYXAo
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpJVExvY2tlciYsIFZNJiB2bSwgdW5zaQogICAgIHByb3Bl
cnR5VGFibGUoKS5zZXQodm0sIHRoaXMsIFByb3BlcnR5VGFibGU6OmNyZWF0ZSh2bSwgY2FwYWNp
dHkpKTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJl
KFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQordm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZN
JiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBt
b2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVh
cCk7CiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KHZtLCBkZWZlckdDKTsK
QEAgLTk0Nyw3ICs5NDcsOSBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21T
dHJ1Y3R1cmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydAogICAgIFByb3BlcnR5
VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHByb3BlcnR5VGFibGUoKS0+ZW5kKCk7CiAgICAgZm9yIChQ
cm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gcHJvcGVydHlUYWJsZSgpLT5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChoYXNOb25FbnVtZXJhYmxlUHJv
cGVydGllcygpIHx8ICEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSk7Ci0gICAgICAgIGlm
ICghaXRlci0+a2V5LT5pc1VuaXF1ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51
bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpIHsKKyAgICAgICAg
aWYgKCFpdGVyLT5rZXktPmlzUHJpdmF0ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250
RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpIHsKKyAgICAg
ICAgICAgIGlmICh0eXBlID09IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCAmJiBpdGVy
LT5rZXktPmlzVW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpZiAoa25vd25VbmlxdWUpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGRLbm93
blVuaXF1ZShpdGVyLT5rZXkpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA0ZDdlNWMxNDdmZmFjMzA1OTYyMmE5MDQ3MmUx
MmJlM2I3MTNmNzBhLi5jMTViYjJhNDkyZGVhMDMzMWNiYjBlNmQ2NjRlODc3MTVjYThkNzIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMzIzLDcgKzMy
Myw3IEBAIGNsYXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgY2FuQ2Fj
aGVHZW5lcmljUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0OwogICAgIGJvb2wgY2FuQWNj
ZXNzUHJvcGVydGllc1F1aWNrbHkoKSBjb25zdDsKIAotICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1l
c0Zyb21TdHJ1Y3R1cmUoVk0mLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CisgICAgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShWTSYsIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogCiAgICAgSlNTdHJp
bmcqIG9iamVjdFRvU3RyaW5nVmFsdWUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAppbmRleCA5OWNlNjg2Mjc0ZmQ3
NzM5MjhkZGQ1OWZmMWY5Y2FmNGVlYmUyMTFlLi4xOGU3MjgyYjQ3YjhjMTc0NWE3MmQ5ZmU5ZDU1
OGQ2NjViMWNjNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBACiB9CiAKICNkZWZpbmUgSU5J
VElBTElaRV9XRUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSMjU3ltYm9sLmltcGwoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KTsKIAogdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
eW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5k
ZXggMjY2Yjk3ZTRjODg2NjdiZjE0NjBlN2I5MWJiMDUxYzRiYTUzODk3Yi4uMmUxODNlM2NiYWQ4
ZmYxNzYwMzgxYTlhZjljM2RkNWU0ZDI3MjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
QEAgLTI3MywxNCArMjczLDE0IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICBTVFJJTkdf
U1RBVFNfQUREXzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwogICAgIH0KIAotICAgIGVu
dW0gQ3JlYXRlRW1wdHlVbmlxdWVUYWcgeyBDcmVhdGVFbXB0eVVuaXF1ZSB9OwotICAgIFN0cmlu
Z0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWVUYWcpCisgICAgZW51bSBDcmVhdGVVbmlxdWVFbXB0eVRh
ZyB7IENyZWF0ZVVuaXF1ZUVtcHR5IH07CisgICAgU3RyaW5nSW1wbChDcmVhdGVVbmlxdWVFbXB0
eVRhZywgYm9vbCBpc1ByaXZhdGUpCiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5j
cmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgIC8vIFdlIGV4cGVjdCBtX2xl
bmd0aCB0byBiZSBpbml0aWFsaXplZCB0byAwIGFzIHdlIHVzZSBpdAogICAgICAgICAvLyB0byBy
ZXByZXNlbnQgYSBudWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgogICAgICAgICAsIG1fZGF0YTgocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAgICwgbV9oYXNo
QW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVm
ZmVySW50ZXJuYWwpKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclVu
aXF1ZShzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsIHwgKGlzUHJpdmF0ZSA/
IHNfaGFzaEZsYWdJc1ByaXZhdGUgOiAwKSkpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRh
OCk7CiAKQEAgLTM4MCw3ICszODAsMTIgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pcXVlRW1wdHkoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVu
aXF1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZVVu
aXF1ZUVtcHR5LCBmYWxzZSkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlxdWVQcml2YXRlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlVW5pcXVlRW1wdHksIHRydWUpKTsKICAg
ICB9CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBj
cmVhdGVVbmlxdWUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApOwpAQCAtMzk1LDYgKzQwMCw3
IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXM4Qml0KCkg
eyByZXR1cm4gc19oYXNoRmxhZzhCaXRCdWZmZXI7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZmxh
Z0lzQXRvbWljKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzQXRvbWljOyB9CiAgICAgc3RhdGljIHVu
c2lnbmVkIGZsYWdJc1VuaXF1ZSgpIHsgcmV0dXJuIHNfaGFzaEZsYWdJc1VuaXF1ZTsgfQorICAg
IHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNQcml2YXRlKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzUHJp
dmF0ZTsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+CkBAIC00NTYsNiArNDYyLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBib29sIGlz
VW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNVbmlx
dWU7IH0KIAorICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxh
Z3MgJiBzX2hhc2hGbGFnSXNQcml2YXRlOyB9CisKICAgICBib29sIGlzQXRvbWljKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNBdG9taWM7IH0KICAgICB2b2lk
IHNldElzQXRvbWljKGJvb2wgaXNBdG9taWMpCiAgICAgewpAQCAtNzc4LDExICs3ODYsMTIgQEAg
Y2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRG
bGFnSXNTdGF0aWNTdHJpbmcgPSAweDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVm
Q291bnRJbmNyZW1lbnQgPSAweDI7IC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlZiAvIGRlcmVmIHdp
dGhvdXQgZGlzdHVyYmluZyB0aGUgc3RhdGljIHN0cmluZyBmbGFnLgogCi0gICAgLy8gVGhlIGJv
dHRvbSA3IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX2ZsYWdDb3VudCA9IDc7CisgICAgLy8gVGhlIGJvdHRvbSA4IGJpdHMgaW4gdGhlIGhh
c2ggYXJlIGZsYWdzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDg7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFnQ291
bnQpIC0gMTsKICAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJpbmdIYXNoZXI6
OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zvcl9TdHJpbmdJ
bXBsX2ZsYWdzKTsKIAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnSXNQcml2
YXRlID0gMXUgPDwgNzsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0lzVW5p
cXVlID0gMXUgPDwgNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZzhCaXRC
dWZmZXIgPSAxdSA8PCA1OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnSXNB
dG9taWMgPSAxdSA8PCA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmYzdkYThlMTllYTY2M2E1
MzJkZTNlNmEzODA1ZGY1N2NkZTE4ZTllLi5iMDRlZTBlYzUxZTdhMzgwNGNkZDZlOGM4ZWIxMWI2
ZDIwMDliYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzMzMiw3ICszMzMyLDcgQEAgX19a
TjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxs
RVBOU185RXhlY1N0YXRlRU5TXzEKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRm
aW5pc2hDcmVhdGlvbkVSTlNfMlZNRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qx
NmdldENvbnN0cnVjdERhdGFFUE5TXzZKU0NlbGxFUk5TXzEzQ29uc3RydWN0RGF0YUUKIF9fWk4z
SlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzhKU09i
amVjdEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMTJQcm9wZXJ0eVNsb3RF
Ci1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQ
TlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1
RW51bWVyYXRpb25Nb2RlRQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOWdldE93
blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0
eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUVOU18xNUVudW1lcmF0aW9uVHlwZUUKIF9f
Wk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNT
dGF0ZUVOU18xMlByb3BlcnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RF
CiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIK
aW5kZXggMTZiOWNkNTE3NjBjZjRlNTJlYmQyM2I3OWQyZjM1MzMzMDY3ZTJhYi4uNTY3MDcxZTM3
OWQ3ZjQxMWViYWJjODhkNmViYjYwM2JiYzFiMzc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0x
NTMxMiw3ICsxNTMxMiw2IEBAIF9fWk43V2ViQ29yZTI2anNIVE1MTWV0YUVsZW1lbnRIdHRwRXF1
aXZFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvCiBfX1pON1dlYkNvcmUx
N0pTVGltZVJhbmdlc093bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VOM0pTQzZIYW5k
bGVJTlMxXzdVbmtub3duRUVFUHZSTlMxXzExU2xvdFZpc2l0b3JFCiBfX1pON1dlYkNvcmUxN0pT
VGltZVJhbmdlc093bmVyOGZpbmFsaXplRU4zSlNDNkhhbmRsZUlOUzFfN1Vua25vd25FRUVQdgog
X19aTjdXZWJDb3JlMTJKU1RpbWVSYW5nZXM3ZGVzdHJveUVQTjNKU0M2SlNDZWxsRQotX19aTjdX
ZWJDb3JlMTBKU05vZGVMaXN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQ
TlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9u
TW9kZUUKIF9fWkwxOWtDTVRpbWVaZXJvRnVuY3Rpb252CiBfX1pON1dlYkNvcmUxNkhUTUxNZWRp
YUVsZW1lbnQzNWNoYW5nZU5ldHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlRXYKIF9fWk5LN1dl
YkNvcmUzME1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjE1bWluVGltZVNlZWthYmxlRXYK
QEAgLTE3OTU5LDcgKzE3OTU4LDYgQEAgX19aTjdXZWJDb3JlMTFKU0RPTVBsdWdpbjExaW5kZXhH
ZXR0ZXJFUE4zSlNDOUV4ZWNTdGF0ZUVOUzFfN0pTVmFsdWVFagogX19aTjdXZWJDb3JlOURPTVBs
dWdpbjRpdGVtRWoKIF9fWk43V2ViQ29yZTE3anNET01NaW1lVHlwZVR5cGVFUE4zSlNDOUV4ZWNT
dGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydHlOYW1lRQogX19aTks3V2ViQ29yZTExRE9N
TWltZVR5cGU0dHlwZUV2Ci1fX1pON1dlYkNvcmU5SlNTdG9yYWdlMTlnZXRPd25Qcm9wZXJ0eU5h
bWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk5LN1dlYkNvcmUxOFJlbmRlclRleHRGcmFn
bWVudDE0aXNUZXh0RnJhZ21lbnRFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNWhhbmRs
ZVRleHROb2RlRmlyc3RMZXR0ZXJFUE5TXzE4UmVuZGVyVGV4dEZyYWdtZW50RQogX19aTjNXVEYx
MlN0cmluZ0FwcGVuZElOU182U3RyaW5nRVBLY0U3d3JpdGVUb0VQdApAQCAtMTgyMjgsOCArMTgy
MjYsNiBAQCBfX1pOSzdXZWJDb3JlMjNSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDI5Y29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxXaWR0aHNFUk5TXzEwTGF5bwogX19aTks3V2ViQ29yZTExUmVuZGVyVGhl
bWUyMGZpbGVMaXN0RGVmYXVsdExhYmVsRWIKIF9fWk43V2ViQ29yZTI5ZmlsZUJ1dHRvbk5vRmls
ZVNlbGVjdGVkTGFiZWxFdgogX19aTks3V2ViQ29yZTIzUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wz
NnJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbkV2Ci1fX1pON1dlYkNvcmUxMUpT
RE9NV2luZG93MTZnZXRQcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3Rh
dGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKLV9fWk43
V2ViQ29yZTExSlNET01XaW5kb3cxOWdldE93blByb3BlcnR5TmFtZXNFUE4zSlNDOEpTT2JqZWN0
RVBOUzFfOUV4ZWNTdGF0ZUVSTlMxXzE3UHJvcGVydHlOYW1lQXJyYXlFTlMxXzE1RW51bWVyYXRp
b25Nb2RlRQogX19aTjdXZWJDb3JlOURPTVdpbmRvdzE4Y2FuU2hvd01vZGFsRGlhbG9nRVBLTlNf
NUZyYW1lRQogX19aTks3V2ViQ29yZTZDaHJvbWUxMWNhblJ1bk1vZGFsRXYKIF9fWk43V2ViQ29y
ZTMxanNYTUxIdHRwUmVxdWVzdFdpdGhDcmVkZW50aWFsc0VQTjNKU0M5RXhlY1N0YXRlRU5TMF83
SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCkBAIC0xODI3Miw3ICsxODI2OCw2IEBAIF9fWk43
V2ViQ29yZTIyanNET01XaW5kb3dPbm1vdXNlZG93bkVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNW
YWx1ZUVOUzBfMTJQcm9wZXJ0CiBfX1pON1dlYkNvcmUyNGpzRE9NV2luZG93T25jb250ZXh0bWVu
dUVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCiBfX1pO
SzdXZWJDb3JlMTNGaWxlSW5wdXRUeXBlMjBzYXZlRm9ybUNvbnRyb2xTdGF0ZUV2CiBfX1pON1dl
YkNvcmUyM1JlbmRlckZpbGVVcGxvYWRDb250cm9sRDBFdgotX19aTjdXZWJDb3JlMTBKU0xvY2F0
aW9uMTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVF
Uk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlND
MThnZXRTdGF0aWNWYWx1ZVNsb3RJTjdXZWJDb3JlMTVKU0RPTVN0cmluZ0xpc3RFTlMxXzEySlNE
T01XcmFwcGVyRUVFYlBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hUYWJsZUVQVF9OU18xMlByb3Bl
cnR5TmFtZUVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pON1dlYkNvcmUyNEpTRE9NU3RyaW5nTGlz
dFByb3RvdHlwZTE4Z2V0T3duUHJvcGVydHlTbG90RVBOM0pTQzZKU0NlbGxFUE5TMV85RXhlY1N0
YXRlRU5TMV8xMlByb3BlcnR5TmFtZUVSTlMxXzEyUHJvcGVydHlTbG90RQogX19aTjdXZWJDb3Jl
MTFTVkdGb250RGF0YUMxRVBOU18xOFNWR0ZvbnRGYWNlRWxlbWVudEUKQEAgLTE4NDUzLDcgKzE4
NDQ4LDYgQEAgX19aTjdXZWJDb3JlMTlIVE1MUHJvZ3Jlc3NFbGVtZW50NmF0dGFjaEVSS05TXzRO
b2RlMTNBdHRhY2hDb250ZXh0RQogX19aTks3V2ViQ29yZTE0UmVuZGVyVGhlbWVNYWMyMmFkanVz
dFByb2dyZXNzQmFyU3R5bGVFUE5TXzEzU3R5bGVSZXNvbHZlckVQTlNfMTFSZW5kZXJTdHlsZUVQ
TlNfN0VsZW1lbnRFCiBfX1pON1dlYkNvcmUyMkNTU0NhbGNCaW5hcnlPcGVyYXRpb25EMEV2CiBf
X1pON1dlYkNvcmUyMUNTU0NhbGNQcmltaXRpdmVWYWx1ZUQwRXYKLV9fWk43V2ViQ29yZTE1SlNE
T01TdHJpbmdMaXN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlF
eGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUK
IF9fWk43V2ViQ29yZUwyM2dldEpTRE9NU3RyaW5nTGlzdFRhYmxlRVBOM0pTQzlFeGVjU3RhdGVF
CiBfX1pON1dlYkNvcmVMMjJnZXRKU01lc3NhZ2VFdmVudFRhYmxlRVBOM0pTQzlFeGVjU3RhdGVF
CiBfX1pON1dlYkNvcmVMMzFnZXRKU01lc3NhZ2VFdmVudFByb3RvdHlwZVRhYmxlRVBOM0pTQzlF
eGVjU3RhdGVFCkBAIC0yNzIxMCw3ICsyNzIwNCw2IEBAIF9fWlpON1dlYkNvcmVMMTlzZWxlY3Rv
cnNGcm9tU291cmNlRVBLTlNfMTdDU1NSdWxlU291cmNlRGF0YUVSS04zV1RGNlN0cmluZ0VFN2Nv
CiBfX1pHVlpON1dlYkNvcmVMMTlzZWxlY3RvcnNGcm9tU291cmNlRVBLTlNfMTdDU1NSdWxlU291
cmNlRGF0YUVSS04zV1RGNlN0cmluZ0VFN2NvbW1lbnQuYgogX19aWk43V2ViQ29yZTIySW5zcGVj
dG9yVGltZWxpbmVBZ2VudDI0aW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzE1SW5zcGVjdG9yT2JqZWN0RUVFUktOUzFfNlN0cmluZ0VTN19FN3Byb2dyYW0KIF9f
WkdWWk43V2ViQ29yZTIySW5zcGVjdG9yVGltZWxpbmVBZ2VudDI0aW5uZXJBZGRSZWNvcmRUb1Rp
bWVsaW5lRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1SW5zcGVjdG9yT2JqZWN0RUVFUktOUzFfNlN0
cmluZ0VTN19FN3Byb2dyYW0uYgotX19aWk43V2ViQ29yZTIxSlNDU1NTdHlsZURlY2xhcmF0aW9u
MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5T
MV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUVFMTlwcm9wZXJ0eUlk
ZW50aWZpZXJzCiBfX1paTjdXZWJDb3JlMjNKU0luc3BlY3RvckZyb250ZW5kSG9zdDhwbGF0Zm9y
bUVQTjNKU0M5RXhlY1N0YXRlRUU4cGxhdGZvcm0KIF9fWkdWWk43V2ViQ29yZTIzSlNJbnNwZWN0
b3JGcm9udGVuZEhvc3Q4cGxhdGZvcm1FUE4zSlNDOUV4ZWNTdGF0ZUVFOHBsYXRmb3JtLmIKIF9f
WlpON1dlYkNvcmUyM0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0NHBvcnRFUE4zSlNDOUV4ZWNTdGF0
ZUVFNHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25h
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKaW5kZXgg
ZGY0ZGM3ODYyZDJkYWFhOWYyYjY3NmQxZWQzMTcyYTJmM2VhZmQyOS4uM2NjOWY1NDk3NDJkZjQz
ZjkwZTJlZTJjMTExYTQ4NDBhYjMwOGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Q
cm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtYXApIGMK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKICAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJh
dGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5h
bWVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5n
KCk7CiAgICAgICAgIGlmIChzdHJpbmdLZXkuaXNFbXB0eSgpKQpAQCAtODgsNyArODgsNyBAQCBi
b29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMoVmVjdG9yPFN0cmluZz4mIG5hbWVz
KSBjb25zdAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsK
IAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMs
IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVB
cnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHBy
b3BlcnR5TmFtZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0
LT5zdHJpbmcoKTsKICAgICAgICAgaWYgKCFzdHJpbmdLZXkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKaW5kZXggODk2Yjk5Y2U5MWI3MmM2Y2ZlODAyYjE3Y2JkMDcwZjI0NWQ0YTQ3ZC4u
YTU1NTQ1ZmM1M2ZiZDQ2OGU5M2FjMWU5NzY0OWU5YzI3YjBiNDQ4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwCkBAIC0zODIsNyArMzgyLDcgQEAgSlNWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb246
OmdldFByb3BlcnR5Q1NTVmFsdWUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihjc3NWYWx1ZSkpOwogfQogCi12b2lkIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5
cGUgdHlwZSkKIHsKICAgICBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBK
U0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGUKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRp
ZXM7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQocHJvcGVydHlJZGVudGlmaWVyc1tp
XSk7CiAKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
U3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3Ry
aW5nTWFwQ3VzdG9tLmNwcAppbmRleCAzYWZhYWUyMzQwNzc0OWFjN2E5ZjI3MjBmM2Y4OTdmMGJl
NTdjZGU3Li4wY2RjMDY1YTA0NDIxNmFjMmUyMTg4ZDEyZDgyMzIyYmQ4ZDFkOWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRp
b25UeXBlIHR5cGUpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNET01TdHJpbmdNYXAqPihvYmplY3QpOwogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwpAQCAt
NTUsNyArNTUsNyBAQCB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXIoZXhlYywgbmFtZXNbaV0pKTsKIAotICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsK
IH0KIAogYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDQ4ZjgxODQ1MjI3Njgy
MGFhYWUxZmE0ODNjZjQ3ZTQ4NDE2MGI3NTIuLmUyYjVhNWMyNzdhMzYzMjI1NDBkMDJlMzY2N2M2
MjA3MDUxZGI5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAKQEAgLTM4NCw0MCArMzg0LDQwIEBAIHVpbnQzMl90IEpTRE9NV2luZG93
OjpnZXRFbnVtZXJhYmxlTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkK
ICAgICByZXR1cm4gQmFzZTo6Z2V0RW51bWVyYWJsZUxlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsK
IH0KIAotdm9pZCBKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNET01XaW5kb3c6OmdldFN0cnVjdHVy
ZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0
aW9uVHlwZSB0eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
RE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51
bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmlt
cGwoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6Omdl
dFN0cnVjdHVyZVByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3c6OmdldEdlbmVyaWNQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0RPTVdpbmRvdzo6
Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUs
IEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5k
b3cgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNP
YmplY3QtPmltcGwoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBC
YXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlLCB0eXBlKTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNET01XaW5kb3c6Omdl
dFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0
aW9uVHlwZSB0eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
RE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51
bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmlt
cGwoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldFByb3BlcnR5
TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAK
LXZvaWQgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsK
ICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVj
dCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVz
IGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBib29sIEpTRE9N
V2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggODI1ODI3
MDA5ZjljN2Y4ZGE4YmE5NjM2Nzc4OTE2MjZlMDNkYWZkYy4uOGM5Mjg0NGQxNTJjNDhhMzBmMGI3
M2EzMmJjNGYyMTU3MzU0NTk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hpc3RvcnlDdXN0b20uY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBib29sIEpTSGlzdG9yeTo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcgogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTSGlzdG9y
eTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwg
RW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTSGlzdG9yeSo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgaGlzdG9yeSBv
YmplY3QgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlm
ICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFt
ZSgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsK
IH0KIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnN0YXRlKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXgg
ZjE1OGEyZjRmODQ3OWNhYmEyMzJjNmUwMjgyYTBjMGFlMWYyNjg0MS4uYzg3ZTNiNmJjNjY1ZWRh
ZGU4Y2VlZjJhMTdjYTdmMzQyM2M3OTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTExNiwxMyArMTE2LDEzIEBAIGJvb2wgSlNM
b2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBwCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi12b2lkIEpTTG9jYXRpb246Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lk
IEpTTG9jYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTTG9jYXRpb24qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0
aGUgbG9jYXRpb24gb2JqZWN0IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9y
aWdpbi4KICAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0
LT5pbXBsKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJh
c2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSwgdHlwZSk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcApp
bmRleCA5NDJjNGRmYjZlN2U2OGY4OWEwY2Y3OWQ1NDVlMzE5MTQ2YmMyNzM3Li4yNzM5YTU4Njk1
ZDE2MzMzNzcyNDQwMmE2YTlmNWRiYzMwMTdiYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBKU1N0
b3JhZ2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHIKICAgICByZXR1cm4gZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAotdm9pZCBKU1N0b3JhZ2U6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2
b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTU3RvcmFnZSo+KG9iamVjdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwg
dHlwZSk7CiB9CiAKIGJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCBkY2E1NjAzZjljMzk5NjE4MzM4YWY3ZTBkYjMxYWRmMTBjYjZiNmY5
Li4yNTA2NTljNmFmYTdjYjYzZGFiNmRjNDMwNTUxZDcwZTQ4YWNhZmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTEyNDgsNyArMTI0OCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXpl
cjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNr
LnJlbW92ZUxhc3QoKTsKIAogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVu
ZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXkt
Pm1ldGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwgbV9leGVj
LCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
ICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBA
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFs
dWUgaW4pCiAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3Qp
OwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAg
IHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAg
ICAgICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGlu
T2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTEzODEsNyArMTM4MSw3IEBAIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAg
ICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsK
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihvYmplY3Qp
IHx8IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihvYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwog
ICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgICAgIGdv
dG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjk4ZjMzZDFjNDk1YzMwZThiMTVm
YThhNGY3MzAxY2IxMmRjYTRlNS4uODU3Mzk2OGIwMzkwYWM4NWI0NmI1NjRkY2ZkMmY4NGMyNDc0
ZTYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KQEAgLTk1MywxNiArOTUzLDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAg
ICAgIyBDdXN0b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2luZG93
CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4i
KTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5l
cmljUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0
aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
LCBKU0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3lt
Ym9sKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lk
IGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcywgSlNDOjpFbnVtZXJhdGlvblR5cGUgPSBKU0M6OkVudW1l
cmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgSlNDOjpFbnVt
ZXJhdGlvblR5cGUgPSBKU0M6OkVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0RW51
bWVyYWJsZUxlbmd0aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwogICAg
ICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0g
MTsKICAgICB9CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQ
cm9wZXJ0eSJ9IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzLCBKU0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51bWVyYXRpb25UeXBlOjpF
eGNsdWRlU3ltYm9sKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsgICAgICAgCiAgICAgfQogCkBAIC0yNjg0LDEzICsy
Njg0LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRp
bmRleGVkR2V0dGVyRnVuY3Rpb24gJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lk
ICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0
aCgpOyBpIDwgY291bnQ7ICsraSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTtcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAppbmRl
eCAxZDU5MTg5YjQ3MjA1MTE3MTc5YzYzOWE2MDViMzA4NmVkZGJmNmVmLi5mOTk1ZjRkY2NlNGQ0
ZWFmYzVjODdjNmQ5YzE1NzkxNTc4Mzc2YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKQEAgLTIz
NSwxMyArMjM1LDEzIEBAIHZvaWQgSlNGbG9hdDY0QXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKCiAgICAgQmFzZTo6cHV0QnlJ
bmRleChjZWxsLCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotdm9pZCBK
U0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSkKK3ZvaWQgSlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewog
ICAgIEpTRmxvYXQ2NEFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4o
b2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PEZsb2F0NjRBcnJh
eSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAg
IEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSwgdHlwZSk7CiB9CiAKIEpTVmFsdWUgSlNGbG9hdDY0QXJyYXk6OmdldENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRB
cnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2
NEFycmF5LmgKaW5kZXggZmYzODhjYTAxNzYwYzEyYjk1NzUwMzlmZWM3NjQzMjkzZmU4NGUzNC4u
N2Y4ZTRkNWY4NmFkZjQ3MGUwYjM4NGUyY2Q4NmE0YzYwOTFkOWRkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5
LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSlNGbG9hdDY0QXJyYXkgOiBwdWJsaWMgSlNBcnJh
eUJ1ZmZlclZpZXcgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jiwg
SlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEpT
Qzo6RW51bWVyYXRpb25UeXBlID0gSlNDOjpFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wp
OwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgRmxvYXQ2NEFycmF5KiBpbXBsKCkgY29uc3QK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAwNjdmODM5OTM1MjM1MzAwNTc4
MTEwNzFkMDczZjI1YWI3OGJhNjdkLi5hYjFlM2RhYzc5ODIyYjJhMTc0ODZmOGZmZmY1MWE1N2I1
MTVkOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTIxOCwxMyArMjE4LDEzIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCosIEVuY29kZWRKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgZG9tT2JqZWN0LT5nbG9i
YWxPYmplY3QoKSkpOwogfQogCi12b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU1Rlc3RFdmVu
dFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50
OyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywg
aSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIEpTVmFsdWUgSlNU
ZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggZWZmMWE2MmVkNWFjYzY4YWVl
ODFhZjBmNzBjZTQ2ZDUxZmEyNjgzMy4uMjE3ODc4MmQxMWE0M2U2YjNmZjNjMjhkOTk4Njc1YWVi
ZWY5OGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3Mg
SlNUZXN0RXZlbnRUYXJnZXQgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICAgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
IH0KIAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRp
b25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBKU0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51
bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmluZGV4IDkwMDEwMTM4YWI0NmNlN2Q5NzUzY2Jm
ZjI5NWU1M2NkZmFjZDBiNWEuLjE4YjA2YTEwZWFmMmVkOTA5ZDkwN2E3ZTk0ODcwMjA2Mzg5YTE4
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3
IEBAIGJvb2wgX05QTl9FbnVtZXJhdGUoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyKiog
aWRlbnRpZmllciwgdWludDMyX3QqIGNvdW50CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwogCi0g
ICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+aW1w
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAg
ICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9u
VHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwogICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgcmVhbGx5IGNhbGwgTlBOX01lbUFsbG9jIGJ1dCB0aGF0J3MgaW4gV2ViS2l0CiAg
ICAgICAgIE5QSWRlbnRpZmllciogaWRlbnRpZmllcnMgPSBzdGF0aWNfY2FzdDxOUElkZW50aWZp
ZXIqPihtYWxsb2Moc2l6ZW9mKE5QSWRlbnRpZmllcikgKiBzaXplKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggMDIyMjE5MDVjNDBlNmVkZmVkNTc5OTllYjIz
NWY1ODkxYTdhMmUwOC4uNTE3MjQ0YjIyMDRmNGMxYjU3MjcxYjFiYzc3ZmY2ZTQ0NzJkZjU5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtNjgsNyArNjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIodGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpKTsKIH0KIAotdm9pZCBSdW50aW1lQXJyYXk6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2
b2lkIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgUnVudGltZUFycmF5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KG9iamVjdCk7CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCk7CkBAIC03OCw3ICs3OCw3IEBAIHZv
aWQgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMobW9kZSkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpOwogCi0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7
CiB9CiAKIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCBiNmQx
ZjY4OTEzN2MxNGI2MzcyMTM4YmFkYWI0MzAwMTBiNDE2YmY4Li5jMDI3ODJjOWY3NTkwMjY2ZDU0
NGQ3NWE1NGMyYzQ0MjljNzJlNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9hcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkg
ewogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVu
dW1lcmF0aW9uVHlwZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggOTFmMDdiYzUzN2NmMGYz
ZjIwMzBmNWVkNGZlZWM2MzI3MjRlYjIzOC4uOTY4NzhmZmY0Y2QxNmQ5OGY2NmNkNTQzMzc5NGRj
Y2UzMDVhM2E0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBA
IC0yNTQsNyArMjU0LDcgQEAgQ29uc3RydWN0VHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0RGF0YSYgY29uc3QKICAgICByZXR1cm4gQ29u
c3RydWN0VHlwZUhvc3Q7CiB9CiAKLXZvaWQgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUpCit2b2lkIFJ1bnRpbWVPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlv
blR5cGUpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1l
T2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggNGQ5Nzc3YTk5M2E5ZjNlYWYz
ZjgzOGNlMjI0NjdjNjQ0YjEwNDljMi4uYzRjOWQzZmNjYzYzNzJlMmEzMjg1OWUwNWMxN2E0YzUw
NmRlOGRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTUyLDcg
KzUyLDcgQEAgY2xhc3MgUnVudGltZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVj
dCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBl
KTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KaW5kZXggY2FkZTllMWU5ZmRmN2I2ZjY0MTA4NWRiNDcwM2FiODQzMzg1M2E2ZC4uNjZhOGUw
NzI0Njg3NWJlNzRkZjQzMTAzZDhhM2E5MjNmYzI5ODJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQpAQCAtMTIzMSw3ICsxMjMxLDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OmVudW1lcmF0ZSh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90JiByZXN1bHREYXQK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVy
dHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1l
cmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXkqPiBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE9iamVjdC5jcHAKaW5kZXggMWNlZDI5M2ViOGNjYzc3ZDM3MDliOWJkMzk4MDhjYzM5ODEy
NzM3Ny4uZTE4ODE5OGExODYxYmRkODhjZDk2OWVkZGY5YTUzZGFlZWIyMzgyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIGJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lQXJyYXksIEVudW1lcmF0aW9uTW9kZSkKK3ZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5
cGUpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU05QT2JqZWN0Kj4o
b2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuaAppbmRleCA3OWRhZjViOTBmNzA1Y2UzMGE2ZmM5NWY5NGViMjgwZjBk
ZmJiZGZhLi5kZGQ3MTM4NWM3YmIyZDBhYWNkM2YzNDg1MmY3MGI2YTVmYzZkNWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgSlNOUE9iamVjdCA6IHB1YmxpYyBKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpF
eGVjU3RhdGUqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKIAotICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSwgSlNDOjpFbnVt
ZXJhdGlvblR5cGUpOwogCiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgcHJvcGVydHlH
ZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIG1l
dGhvZEdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXggMGQxNjY3
NGU1YzE1ZjQ3MTcxODU0M2QyNWNhNGYzMTA5YzA1MmQyMi4uZWYzNWI5OGYxYmU1YzMzMjkyYTA2
ZTNiZWNkZGI3ZmJmMWVlMjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtMjQwLDcgKzI0MCw3
IEBAIGJvb2wgTlBKU09iamVjdDo6ZW51bWVyYXRlKE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXJz
LCB1aW50MzJfdCogaWRlbnRpZmllckNvdW50CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG1fanNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVjdC5nZXQoKSwg
ZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgbV9q
c09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgp
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJh
dGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogCiAgICAgTlBJZGVudGlmaWVyKiBuYW1lSWRlbnRp
ZmllcnMgPSBucG5NZW1OZXdBcnJheTxOUElkZW50aWZpZXI+KHByb3BlcnR5TmFtZXMuc2l6ZSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIgYi9Tb3Vy
Y2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgppbmRleCBhZTYyNWY3YzE2YzZiYWY1NDA3NDlh
Y2ViNDY1ZjI3MjM3NWY5YzViLi4wNTRhYmI0NmNjYzRmZWY0YzA0NmU0NGI1ZGU2YzUzOGM4Mjhj
NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgpAQCAtOTQyNCw3ICs5NDI0LDYgQEAgX19a
TjNXVEY2VmVjdG9ySU42V2ViS2l0MTZOUElkZW50aWZpZXJEYXRhRUxtMEVOU18xNUNyYXNoT25P
dmVyZmxvd0VFNnNocmlua0VtCiBfX1pON0NvcmVJUEMxMEFyZ3VtZW50czJJUmJSTjNXVEY2VmVj
dG9ySU42V2ViS2l0MTZOUElkZW50aWZpZXJEYXRhRUxtMEVOUzJfMTVDcmFzaE9uT3ZlcmZsb3dF
RUVFNmRlY29kZUVSTlNfMTVBcmd1bWVudERlY29kZXJFUlM5XwogX19aTjdDb3JlSVBDMTlWZWN0
b3JBcmd1bWVudENvZGVySUxiMEVONldlYktpdDE2TlBJZGVudGlmaWVyRGF0YUVFNmRlY29kZUVS
TlNfMTVBcmd1bWVudERlY29kZXJFUk4zV1RGNlZlY3RvcklTMl9MbTBFTlM2XzE1Q3Jhc2hPbk92
ZXJmbG93RUVFCiBfX1pOM1dURjZWZWN0b3JJTjZXZWJLaXQxNk5QSWRlbnRpZmllckRhdGFFTG0w
RU5TXzE1Q3Jhc2hPbk92ZXJmbG93RUUxNHNocmlua0NhcGFjaXR5RW0KLV9fWk42V2ViS2l0MTBK
U05QT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVj
U3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9f
Wk42V2ViS2l0TDIwTlBOX0dldEludElkZW50aWZpZXJFaQogX19aTjZXZWJLaXRMMTNOUE5fSGFz
TWV0aG9kRVA0X05QUFA4TlBPYmplY3RQdgogX19aTjZXZWJLaXQxME5QSlNPYmplY3QxMk5QX0hh
c01ldGhvZEVQOE5QT2JqZWN0UHYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMTUyMDAwYmUxNTc3ZjY0Njk0NmE2NWI1ZDI0
NmE3ZmE4OGJlMjFiLi5iZDEwYzUyZGMyZWRiNDQ4NTI2MzAxOTg5YjY2N2EyNzE3M2E1ZTZkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUtMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGpzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0
eS1zeW1ib2xzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvckluKToKKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAgICoganMv
c2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanM6IEFkZGVkLgorICAgICAgICAq
IGpzL3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
anMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1i
b2wtc2VhbC1hbmQtZnJlZXplLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvc3lt
Ym9sLXNlYWwtYW5kLWZyZWV6ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtd2l0
aC1qc29uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvc3ltYm9sLXdpdGgtanNv
bi5odG1sOiBBZGRlZC4KKwogMjAxNS0wMi0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFTU0VSVCByZXBhaW50Q29udGFpbmVyLT5oYXNMYXllcigpIGluIFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6cmVwYWludFVzaW5nQ29udGFpbmVyCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYzNDhiYzRmN2FjMTNjZjkwZTZjOTA3YjFjMmM0ODQzZDMwMzFh
ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9vYmplY3QtZ2V0LW93bi1wcm9w
ZXJ0eS1zeW1ib2xzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3RzIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitwcml2YXRlIG5hbWVzIGZvciBwcml2aWxlZ2VkIGNvZGUgc2hvdWxkIG5vdCBiZSBleHBv
c2VkLgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGdsb2JhbCkubGVuZ3RoIGlz
IDAKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KS5sZW5ndGggaXMgMAor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIGlzIDEKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIGlzIHN5bWJvbAorUEFT
UyBmb3JJbihvYmplY3QpLmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5rZXlzKG9iamVjdCkubGVu
Z3RoIGlzIDAKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KS5sZW5ndGgg
aXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIGlz
IDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWYxZjI1OWEyMzljMTFkOTUxZGRiOGQwZThjZWQwNjk4OWMzZDI4OAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5
LXN5bWJvbHMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI1YmRhNGFhNjFjNWMxNzgyMjcwYzMzNDBhMWYwNGM5MDY5OTFmOGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1vd24tcHJv
cGVydHktc3ltYm9scy5qcwpAQCAtMCwwICsxLDMxIEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRl
c3RzIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMuIgorKTsKKwordmFyIGdsb2JhbCA9IChG
dW5jdGlvbigicmV0dXJuIHRoaXMiKSgpKTsKKworZGVidWcoInByaXZhdGUgbmFtZXMgZm9yIHBy
aXZpbGVnZWQgY29kZSBzaG91bGQgbm90IGJlIGV4cG9zZWQuIik7CitzaG91bGRCZSgiT2JqZWN0
LmdldE93blByb3BlcnR5U3ltYm9scyhnbG9iYWwpLmxlbmd0aCIsICIwIik7CisKK3ZhciBvYmpl
Y3QgPSB7fTsKK3ZhciBzeW1ib2wgPSBTeW1ib2woIkNvY29hIik7CitvYmplY3Rbc3ltYm9sXSA9
ICJDYXBwdWNjaW5vIjsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QpLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyhvYmplY3QpLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scyhvYmplY3QpWzBdIiwgInN5bWJvbCIpOworCitmdW5jdGlvbiBmb3JJbihvYmopIHsK
KyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICAvLyBTeW1ib2wgc2hvdWxkIG5vdCBiZSBlbnVtZXJh
dGVkLgorICAgIGZvciAodmFyIGtleSBpbiBvYmopIGFycmF5LnB1c2goa2V5KTsKKyAgICByZXR1
cm4gYXJyYXk7Cit9CisKK3Nob3VsZEJlKCJmb3JJbihvYmplY3QpLmxlbmd0aCIsICIwIik7Citz
aG91bGRCZSgiT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGgiLCAiMCIpOworCitkZWxldGUgb2Jq
ZWN0W3N5bWJvbF07CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
KS5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMo
b2JqZWN0KS5sZW5ndGgiLCAiMCIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJvbC1kZWZpbmUtcHJvcGVy
dHkuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MGZkZjVlM2Q5MGY2ODVmMjEyMmQ2NjcyMjVlN2QzNGRlODY0YWQx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJvbC1k
ZWZpbmUtcHJvcGVydHkuanMKQEAgLTAsMCArMSw0MiBAQAorZGVzY3JpcHRpb24oCisiVGhpcyB0
ZXN0cyBPYmplY3QuY3JlYXRlLCBPYmplY3QuZGVmaW5lUHJvcGVydHksIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0aWVzIHdvcmsgd2l0aCBTeW1ib2wuIgorKTsKKworZGVidWcoIk9iamVjdC5jcmVhdGUg
d2l0aCBTeW1ib2wiKTsKK3ZhciBvYmplY3QgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5wcm90b3R5
cGUsIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogeworICAgICAgICB2YWx1ZTogNDIKKyAgICB9
Cit9KTsKK3Nob3VsZEJlVHJ1ZSgib2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRv
cikiKTsKK3Nob3VsZEJlRmFsc2UoIm9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZShTeW1ib2wu
aXRlcmF0b3IpIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSIsICd7
InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjpmYWxzZSwiY29uZmlndXJh
YmxlIjpmYWxzZX0nKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9i
amVjdCkubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzKG9iamVjdClbMF0iLCAiU3ltYm9sLml0ZXJhdG9yIik7CisKKworZGVidWcoIk9iamVjdC5k
ZWZpbmVQcm9wZXJ0aWVzIHdpdGggU3ltYm9sIik7Cit2YXIgb2JqZWN0ID0gT2JqZWN0LmRlZmlu
ZVByb3BlcnRpZXMoe30sIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogeworICAgICAgICB2YWx1
ZTogNDIKKyAgICB9Cit9KTsKKworc2hvdWxkQmVUcnVlKCJvYmplY3QuaGFzT3duUHJvcGVydHko
U3ltYm9sLml0ZXJhdG9yKSIpOworc2hvdWxkQmVGYWxzZSgib2JqZWN0LnByb3BlcnR5SXNFbnVt
ZXJhYmxlKFN5bWJvbC5pdGVyYXRvcikiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5z
dHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5p
dGVyYXRvcikpIiwgJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOmZh
bHNlLCJjb25maWd1cmFibGUiOmZhbHNlfScpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSIsICJTeW1ib2wuaXRlcmF0b3IiKTsKKworZGVi
dWcoIk9iamVjdC5kZWZpbmVQcm9wZXJ0eSB3aXRoIFN5bWJvbCIpOwordmFyIG9iamVjdCA9IE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgU3ltYm9sLml0ZXJhdG9yLCB7CisgICAgdmFsdWU6IDQy
Cit9KTsKKworc2hvdWxkQmVUcnVlKCJvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJh
dG9yKSIpOworc2hvdWxkQmVGYWxzZSgib2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJv
bC5pdGVyYXRvcikiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnkoT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIiwg
J3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1
cmFibGUiOmZhbHNlfScpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMo
b2JqZWN0KS5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMob2JqZWN0KVswXSIsICJTeW1ib2wuaXRlcmF0b3IiKTsKKworc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1i
b2wtc2VhbC1hbmQtZnJlZXplLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJv
bC1zZWFsLWFuZC1mcmVlemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRlYjRiYTgyNGE2ZmFlOWZlYjdmNDU5
MzZiMjQyNGFkYjhhMGVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzCkBAIC0wLDAgKzEsMjMgQEAKK2Rlc2Ny
aXB0aW9uKAorIlRoaXMgdGVzdHMgT2JqZWN0LnNlYWwgYW5kIE9iamVjdC5mcmVlemUgYWZmZWN0
IG9uIFN5bWJvbCBwcm9wZXJ0aWVzLiIKKyk7CisKK3ZhciBvYmplY3QgPSB7CisgICAgW1N5bWJv
bC5pdGVyYXRvcl06IDQyCit9OworCitzaG91bGRCZVRydWUoIm9iamVjdC5oYXNPd25Qcm9wZXJ0
eShTeW1ib2wuaXRlcmF0b3IpIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5n
aWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0
b3IpKSIsICd7InZhbHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUiOnRydWUsImNv
bmZpZ3VyYWJsZSI6dHJ1ZX0nKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzKG9iamVjdCkubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKG9iamVjdClbMF0iLCAiU3ltYm9sLml0ZXJhdG9yIik7CisKK2RlYnVnKCJPYmpl
Y3Quc2VhbChvYmplY3QpIik7CitPYmplY3Quc2VhbChvYmplY3QpOworc2hvdWxkQmVUcnVlKCJv
YmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
amVjdCwgU3ltYm9sLml0ZXJhdG9yKSkiLCAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjp0cnVlLCJl
bnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOmZhbHNlfScpOworCitkZWJ1ZygiT2JqZWN0
LmZyZWV6ZShvYmplY3QpIik7CitPYmplY3QuZnJlZXplKG9iamVjdCk7CitzaG91bGRCZVRydWUo
Im9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSIsICd7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNl
LCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOmZhbHNlfScpOworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLXdpdGgtanNvbi5qcyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZj
NjVmOWExNmU5ZmI4MDNhNGM5NTBhMGMzN2UwY2E1ZTYzZTIyODgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLXdpdGgtanNvbi5qcwpAQCAtMCww
ICsxLDE4IEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRlc3RzIEpTT04gY29ycmVjdGx5IGJlaGF2
ZXMgd2l0aCBTeW1ib2wuIgorKTsKKworZGVidWcoIkpTT04uc3RyaW5naWlmeSBkb2Vzbid0IHN0
cmluZ2lmeSBTeW1ib2wuIik7CitzaG91bGRCZSgiSlNPTi5zdHJpbmdpZnkoU3ltYm9sKCdDb2Nv
YScpKSIsICJ1bmRlZmluZWQiKTsKKwordmFyIG9iamVjdCA9IHt9OwordmFyIHN5bWJvbCA9IFN5
bWJvbCgiQ29jb2EiKTsKK29iamVjdFtzeW1ib2xdID0gNDI7CitvYmplY3RbJ0NhcHB1Y2Npbm8n
XSA9IDQyOworZGVidWcoIkpTT04uc3RyaW5naWlmeSBpZ25vcmVzIHByb3BlcnR5IHdpdGggU3lt
Ym9sLiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShvYmplY3QpIiwg
J3siQ2FwcHVjY2lubyI6NDJ9Jyk7CisKK2RlYnVnKCJTeW1ib2xzIGluIHJlcGxhY2VyIGFycmF5
IGFyZSBpZ25vcmVkLiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShv
YmplY3QsIFsgU3ltYm9sKCdDb2NvYScpIF0pIiwgInt9Iik7CisKK3N1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtZGVmaW5lLXByb3Bl
cnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjYjc2MTY3YWI4ZTQ3MmUxMGIyZDU0ZmJkNmJkMGU5
Y2I2OWJhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtZGVmaW5l
LXByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitUaGlzIHRlc3RzIE9iamVj
dC5jcmVhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMg
d29yayB3aXRoIFN5bWJvbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK09iamVj
dC5jcmVhdGUgd2l0aCBTeW1ib2wKK1BBU1Mgb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5p
dGVyYXRvcikgaXMgdHJ1ZQorUEFTUyBvYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9s
Lml0ZXJhdG9yKSBpcyBmYWxzZQorUEFTUyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgaXMgIntcInZhbHVlXCI6
NDIsXCJ3cml0YWJsZVwiOmZhbHNlLFwiZW51bWVyYWJsZVwiOmZhbHNlLFwiY29uZmlndXJhYmxl
XCI6ZmFsc2V9IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVu
Z3RoIGlzIDEKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIGlz
IFN5bWJvbC5pdGVyYXRvcgorT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgd2l0aCBTeW1ib2wKK1BB
U1Mgb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikgaXMgdHJ1ZQorUEFTUyBv
YmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9sLml0ZXJhdG9yKSBpcyBmYWxzZQorUEFT
UyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwg
U3ltYm9sLml0ZXJhdG9yKSkgaXMgIntcInZhbHVlXCI6NDIsXCJ3cml0YWJsZVwiOmZhbHNlLFwi
ZW51bWVyYWJsZVwiOmZhbHNlLFwiY29uZmlndXJhYmxlXCI6ZmFsc2V9IgorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIGlzIDEKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIGlzIFN5bWJvbC5pdGVyYXRvcgorT2JqZWN0
LmRlZmluZVByb3BlcnR5IHdpdGggU3ltYm9sCitQQVNTIG9iamVjdC5oYXNPd25Qcm9wZXJ0eShT
eW1ib2wuaXRlcmF0b3IpIGlzIHRydWUKK1BBU1Mgb2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxl
KFN5bWJvbC5pdGVyYXRvcikgaXMgZmFsc2UKK1BBU1MgSlNPTi5zdHJpbmdpZnkoT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIGlzICJ7XCJ2
YWx1ZVwiOjQyLFwid3JpdGFibGVcIjpmYWxzZSxcImVudW1lcmFibGVcIjpmYWxzZSxcImNvbmZp
Z3VyYWJsZVwiOmZhbHNlfSIKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmpl
Y3QpLmxlbmd0aCBpcyAxCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0
KVswXSBpcyBTeW1ib2wuaXRlcmF0b3IKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtZGVm
aW5lLXByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGY4NDMyYTI2YjQ0NDBjOWVlZmJhY2ZmNmVjMzU5NGQ1ZDhiNTgw
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVy
dHkuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtc2VhbC1hbmQtZnJl
ZXplLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YzU1Mzk1NjE3NjBlNzRlNWM0YmNiMzNhNzA5Mjk1
MzQ2ZWFlYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtc2VhbC1h
bmQtZnJlZXplLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIE9iamVj
dC5zZWFsIGFuZCBPYmplY3QuZnJlZXplIGFmZmVjdCBvbiBTeW1ib2wgcHJvcGVydGllcy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgb2JqZWN0Lmhhc093blByb3BlcnR5
KFN5bWJvbC5pdGVyYXRvcikgaXMgdHJ1ZQorUEFTUyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgaXMgIntcInZh
bHVlXCI6NDIsXCJ3cml0YWJsZVwiOnRydWUsXCJlbnVtZXJhYmxlXCI6dHJ1ZSxcImNvbmZpZ3Vy
YWJsZVwiOnRydWV9IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCku
bGVuZ3RoIGlzIDEKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBd
IGlzIFN5bWJvbC5pdGVyYXRvcgorT2JqZWN0LnNlYWwob2JqZWN0KQorUEFTUyBvYmplY3QuaGFz
T3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSBpcyB0cnVlCitQQVNTIEpTT04uc3RyaW5naWZ5
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3Ip
KSBpcyAie1widmFsdWVcIjo0MixcIndyaXRhYmxlXCI6dHJ1ZSxcImVudW1lcmFibGVcIjp0cnVl
LFwiY29uZmlndXJhYmxlXCI6ZmFsc2V9IgorT2JqZWN0LmZyZWV6ZShvYmplY3QpCitQQVNTIG9i
amVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIGlzIHRydWUKK1BBU1MgSlNPTi5z
dHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5p
dGVyYXRvcikpIGlzICJ7XCJ2YWx1ZVwiOjQyLFwid3JpdGFibGVcIjpmYWxzZSxcImVudW1lcmFi
bGVcIjp0cnVlLFwiY29uZmlndXJhYmxlXCI6ZmFsc2V9IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuaHRtbCBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1zZWFs
LWFuZC1mcmVlemUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzhmOGQzZTkxM2U5M2Q3MDA1Y2FmODdkMmVk
Y2UyYThhNzA4ZTk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXNl
YWwtYW5kLWZyZWV6ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC13
aXRoLWpzb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkyNmQ3OTk3YjdlZTU2NTQ2MmE0ZjViMGNjZDBjYmMx
NTc5OTZiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC13aXRoLWpz
b24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMgSlNPTiBjb3JyZWN0
bHkgYmVoYXZlcyB3aXRoIFN5bWJvbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K0pTT04uc3RyaW5naWlmeSBkb2Vzbid0IHN0cmluZ2lmeSBTeW1ib2wuCitQQVNTIEpTT04uc3Ry
aW5naWZ5KFN5bWJvbCgnQ29jb2EnKSkgaXMgdW5kZWZpbmVkCitKU09OLnN0cmluZ2lpZnkgaWdu
b3JlcyBwcm9wZXJ0eSB3aXRoIFN5bWJvbC4KK1BBU1MgSlNPTi5zdHJpbmdpZnkob2JqZWN0KSBp
cyAie1wiQ2FwcHVjY2lub1wiOjQyfSIKK1N5bWJvbHMgaW4gcmVwbGFjZXIgYXJyYXkgYXJlIGln
bm9yZWQuCitQQVNTIEpTT04uc3RyaW5naWZ5KG9iamVjdCwgWyBTeW1ib2woJ0NvY29hJykgXSkg
aXMgInt9IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC13aXRoLWpzb24uaHRtbCBiL0xh
eW91dFRlc3RzL2pzL3N5bWJvbC13aXRoLWpzb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzY4MzUwNzk5
ZmNmYTYyYjFiOWY4ZTYxMzNiOTNhN2E5NGFiYzFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246215</attachid>
            <date>2015-02-07 13:56:57 -0800</date>
            <delta_ts>2015-02-11 04:27:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150208065655.patch</filename>
            <type>text/plain</type>
            <size>162837</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTBiNjk5Y2MxMjMzYzhlNmFhYzdkNmFmMGE5ZjUyMDdmZmVlNDVjLi4zNzE4MTg1ZDhiMjlmMTFh
NGI0NWZmOTMyNjI0MzkzYjg4ZTliNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTUtMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGluL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIHRoaXMgcGF0Y2ggaW50cm9k
dWNlcyBgaXNQcml2YXRlYCBmbGFnIHRvIGBTdHJpbmdJbXBsYC4KKyAgICAgICAgSXQgcmVwcmVz
ZW50cyB0aGUgdGFyZ2V0IGBTdHJpbmdJbXBsYCBpcyB1c2VkIHRvIHJlcHJlc2VudCBwcml2YXRl
IHN5bWJvbHMuCisKKyAgICAgICAgV2UgbmV3bHkgYWRkZWQgYEVudW1lcmF0aW9uVHlwZWAgcGFy
YW1ldGVyIHRvIGBnZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Qgb2YgYEpTT2JqZWN0YC4KKyAg
ICAgICAgVGhpcyBwYXJhbWV0ZXIgY29udHJvbHMgd2hldGhlciB0aGUgbWV0aG9kIGNvbGxlY3Rz
IFN5bWJvbCBvciBub3QuCisgICAgICAgIFRoZSBkZWZhdWx0IHBhcmFtZXRlciBpcyBzZXQgdG8g
YEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbGAKKyAgICAgICAgYmVjYXVzZSBhIGxvdCBv
ZiBjYWxsZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1lQXJyYXlg
IGRvZXNuJ3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25zZXJ2YXRp
dmUgYXNzdW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAgICogQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAg
ICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLm9yZGVyOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6QnVpbHRpbk5hbWVzKToK
KyAgICAgICAgKiBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6cG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3Vu
dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgICog
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6
OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3Vt
ZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5
SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToKKyAgICAgICAgKiBy
dW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
Y3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0VudW1lcmF0aW9uTW9kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllcklubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6SWRlbnRpZmllcik6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVy
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0NhbGxlZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9u
bWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09O
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4
dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSYWNlKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jQWxsKToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpzdHJ1Y3R1cmVQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJveHk6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpnZXRTdHJ1
Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1i
b2xzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpT
Qzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2Vh
bCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0
cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OnB1YmxpY05hbWUpOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OmFzSW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldFByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
OgorCiAyMDE1LTAyLTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgREZHIFNTQSBzaG91bGRuJ3QgaGF2ZSBTZXRBcmd1bWVudCBub2RlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBlZTUwYTM3
OGMzZjc5MzhjZmRlYjdmZWMzOTUzODc3OGQ2OGViMjhjLi4yNWM1Mjc4ZjgwMWU4OGYwMjY1ZGZh
M2QzZjFmMWUzZWMwM2Q0Y2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTAyLTA3ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBF
UzYgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgaXNQcml2YXRl
YCB0byBgU3RyaW5nSW1wbGAuCisgICAgICAgIEl0IGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoYXQg
dGhlIHRhcmdldCBzdHJpbmcgaXMgdXNlZCBmb3IgYSBwcml2YXRlIChwcml2aWxlZ2VkKSBuYW1l
LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpTdHJpbmdJbXBsKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlVW5p
cXVlRW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVQcml2YXRl
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmxhZ0lzUHJpdmF0ZSk6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmlzUHJpdmF0ZSk6CisKIDIwMTUtMDItMDYgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxNzk3NDMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2IwM2UzODFiZTYzYWMyM2M2Y2U1YTUyODkxZmZh
MTdkNzkyNGQ4MC4uNDcyN2YyMjJlMTNlYTM1ZDNkMjRlZTFlODIxYWJiZjc4NWE0ZjI2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE1LTAyLTA3ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdHM6IGpzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuaHRtbAor
ICAgICAgICAgICAgICAganMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5odG1sCisgICAgICAgICAg
ICAgICBqcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5
bWJvbC13aXRoLWpzb24uaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hh
c2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9y
eTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFy
cmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNGbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVj
dC5jcHA6CisgICAgICAgIChfTlBOX0VudW1lcmF0ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29i
amVjdC5oOgorCiAyMDE1LTAyLTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVNTRVJUIHJlcGFpbnRDb250YWluZXItPmhhc0xheWVyKCkgaW4gV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpyZXBhaW50VXNpbmdDb250YWluZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBi
OGEyNjZjZDVmYmYyMDJmZGE5YTBjZjRjMTgyNjI2ZWQzMjExNGQ2Li4zNjkwZWFhZWJkNzYyNzJk
OTZhODYwMGM1YzUyNjg5MjFhYjQ2OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTUtMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUpOgorCiAyMDE1LTAyLTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+IGFuZCBYYWJpZXIgUm9kcmln
dWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU3RyZWFtcyBBUEld
IEltcGxlbWVudCBhIGJhcmVib25lIFJlYWRhYmxlU3RyZWFtIGludGVyZmFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGI0MzJhNDQxZmM1Mzg5ODhlZmFhMzA0ODIzYWJhYWM2NzU3MTk0ZTIuLmNhOTcwY2IzNmIw
ZTQ4NzM2OWI1M2RlYTQ4MzIxMzI4NzE3NjMxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxNS0wMi0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6ZW51bWVy
YXRlKToKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5vcmRlcjoKKwogMjAxNS0wMi0wNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU1FMaXRlU3RhdGVtZW50
OjpkYXRhYmFzZSgpIHJldHVybiBhIHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCA2OTliYzQ0NDY2NDExMjNlYjkxOTM1ZTA2ZDQz
YTg4NDdiN2NhNTU1Li44Y2FkMTAzMzIzN2FiM2IwNWU2ODliMmYyMDA1MzFjZWM4YjA4NTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMTg2
LDcgKzE4Niw3IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJsaWMgUGFyZW50IHsKIAog
ICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
SlNWYWx1ZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1l
cmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggOTlhMDlkZmVhMTBjMWNhMTNj
MTU2Nzg3ZWIwN2FmODljYTQyNDYyMy4uMWNiNDM0NjA3MDkwYWY2NTBlOTg3YTVlZTViMzYzYjkw
MWZhZTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTQ5OCw3ICs0OTgsNyBAQAogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyZW50Pgotdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewog
ICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVj
dCo+KG9iamVjdCk7CiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKQEAg
LTUzMyw3ICs1MzMsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFBhcmVudDo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOworICAgIFBhcmVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVj
dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRl
eCAyMzRkMjQ4OGZmODkwYjhiZWU2OTdlZjU1YWE2ODAzODBhMTgxYTQyLi4wYzVkYTZiYTJkNjFk
M2RhZWM5YmIzNzg5MTEwNTA5MjBhYzg1OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcApAQCAtNjk4LDcgKzY5OCw3IEBAIEpTUHJvcGVydHlOYW1lQXJyYXlS
ZWYgSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiBvCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTUHJvcGVy
dHlOYW1lQXJyYXlSZWYgcHJvcGVydHlOYW1lcyA9IG5ldyBPcGFxdWVKU1Byb3BlcnR5TmFtZUFy
cmF5KHZtKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBhcnJheSh2bSk7Ci0gICAganNPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0UHJvcGVydHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAKICAgICBzaXplX3Qg
c2l6ZSA9IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLm9yZGVyIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lm9yZGVyCmluZGV4IDI2YmUwZWUyNzZlMGVlNWM4NmU2MTA5OTlmMmQ0NzZiMGRkODA2ZGUuLjFl
MTk0MTU1YTMxOTUwNjRiNzRjZTA3ZGQyYzY0MTJiYWNlYjJjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKQEAgLTkzOCw3ICs5MzgsNiBAQCBfX1pOM0pT
QzVMTEludDM5ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yRVBOU18yVk1F
CiBfX1pOM0pTQzVMTEludDQ0ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3JFUE5TXzJWTUUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uMjNjcmVhdGVBbGxvY2F0aW9uUHJv
ZmlsZUVQTlNfOUV4ZWNTdGF0ZUVtCiBfX1pOSzNKU0M4SlNPYmplY3QzZ2V0RVBOU185RXhlY1N0
YXRlRU5TXzEyUHJvcGVydHlOYW1lRQotX19aTjNKU0M5U3RydWN0dXJlMjlnZXRQcm9wZXJ0eU5h
bWVzRnJvbVN0cnVjdHVyZUVSTlNfMlZNRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51
bWVyYXRpb25Nb2RlRQogX19aTjNKU0MxN1Byb3BlcnR5TmFtZUFycmF5MTRhZGRLbm93blVuaXF1
ZUVQTjNXVEYxMFN0cmluZ0ltcGxFCiBfX1pOM0pTQzE3UHJvcGVydHlOYW1lQXJyYXlEMkV2CiBf
X1pOM0pTQzhXYXRjaGRvZzVTY29wZUQxRXYKQEAgLTEzNTEsOSArMTM1MCw2IEBAIF9fWk4zSlND
MTFQb3N0Zml4Tm9kZTExZW1pdFJlc29sdmVFUk5TXzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TXzEw
UmVnaXN0ZXJJREUKIF9fWk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvcjdlbWl0SW5jRVBOU18xMFJl
Z2lzdGVySURFCiBfX1pOM0pTQzE0anNJc09iamVjdFR5cGVFUE5TXzlFeGVjU3RhdGVFTlNfN0pT
VmFsdWVFCiBfX1pOM0pTQzZKU0NlbGwxMWdldENhbGxEYXRhRVBTMF9STlNfOENhbGxEYXRhRQot
X19aTjNKU0M4SlNPYmplY3QxNmdldFByb3BlcnR5TmFtZXNFUFMwX1BOU185RXhlY1N0YXRlRVJO
U18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0M4SlNP
YmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUFMwX1BOU185RXhlY1N0YXRlRVJOU18xN1Byb3Bl
cnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0M4SlNPYmplY3QyN2dl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQUzBfUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVy
dHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM1dURjZWZWN0b3JJTjNKU0Mx
MElkZW50aWZpZXJFTG0yMEVOU18xNUNyYXNoT25PdmVyZmxvd0VFMTVyZXNlcnZlQ2FwYWNpdHlF
bQogX19aTjNKU0MxM2pzT3duZWRTdHJpbmdFUE5TXzJWTUVSS04zV1RGNlN0cmluZ0UKIF9fWk4z
SlNDOVN0cnVjdHVyZTE2YWxsb2NhdGVSYXJlRGF0YUVSTlNfMlZNRQpAQCAtMTc0Myw3ICsxNzM5
LDYgQEAgX19aTjNKU0NMMjBkYXRlUHJvdG9GdW5jR2V0VGltZUVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk5LM0pTQzEySlNSb3BlU3RyaW5nMjByZXNvbHZlUm9wZVNsb3dDYXNlOEVQaAogX19aTkszV1RG
NlN0cmluZzhmb2xkQ2FzZUV2CiBfX1pOM1dURjEwU3RyaW5nSW1wbDhmb2xkQ2FzZUV2Ci1fX1pO
M0pTQzEwSlNGdW5jdGlvbjI3Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRVBOU184SlNPYmpl
Y3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlv
bk1vZGVFCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUUK
IF9fWk4zSlNDMTFJbnRlcnByZXRlcjI0YWRkU3RhY2tUcmFjZUlmTmVjZXNzYXJ5RVBOU185RXhl
Y1N0YXRlRU5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMUludGVycHJldGVyMTNnZXRTdGFja1RyYWNl
RVBOU18yVk1FUk4zV1RGNlZlY3RvcklOU18xMFN0YWNrRnJhbWVFTG0wRU5TM18xNUNyYXNoT25P
dmVyZmxvd0VFRW0KQEAgLTI5NzAsNyArMjk2NSw2IEBAIF9fWk4zSlNDNXNoaWZ0SUxOU183SlNB
cnJheTE0U2hpZnRDb3VudE1vZGVFMEVFRXZQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RWpq
CiBfX1pOM0pTQzdKU0FycmF5MjZzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZUVqalBOU18xMkFy
cmF5U3RvcmFnZUUKIF9fWk4zSlNDTDE3YXJyYXlQcm90b0Z1bmNQb3BFUE5TXzlFeGVjU3RhdGVF
CiBfX1pOM0pTQzdKU0FycmF5M3BvcEVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlNDN0pTQXJyYXky
N2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRl
RVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0M1
TGV4ZXJJdEUyNHBhcnNlRm91ckRpZ2l0VW5pY29kZUhleEV2CiBfSlNPYmplY3RHZXRQcml2YXRl
UHJvcGVydHkKIF9fWk5LM0pTQzIwSlNDYWxsYmFja09iamVjdERhdGExOGdldFByaXZhdGVQcm9w
ZXJ0eUVSS05TXzEwSWRlbnRpZmllckUKQEAgLTM4MjksNyArMzgyMyw2IEBAIF9fWk4zSlNDM0RG
RzE0U3BlY3VsYXRpdmVKSVQxOGNvbXBpbGVBcml0aE5lZ2F0ZUVQTlMwXzROb2RlRQogX19aTjNK
U0MyM01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uMTJuZWdhdGVEb3VibGVFTlNfMTJYODZSZWdpc3Rl
cnMxM1hNTVJlZ2lzdGVySURFUzJfCiBfX1pOM0pTQzIzTWFjcm9Bc3NlbWJsZXJYODZDb21tb245
ZGl2RG91YmxlRU5TXzEyWDg2UmVnaXN0ZXJzMTNYTU1SZWdpc3RlcklERVMyX1MyXwogX2N0aV9v
cF9pbmMKLV9fWk4zSlNDMTJTdHJpbmdPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhK
U09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1l
cmF0aW9uTW9kZUUKIF9fWk4zSlNDMTRnbG9iYWxGdW5jRXZhbEVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk4zSlNDOEpTT2JqZWN0MThjcmVhdGVBcnJheVN0b3JhZ2VFUk5TXzJWTUVqagogX29wZXJhdGlv
bkNvbnZlcnRUaGlzCkBAIC00MTUwLDcgKzQxNDMsNiBAQCBfX1pOM0pTQzExQ29waWVkU3BhY2Ux
NmRvbmVGaWxsaW5nQmxvY2tFUE5TXzExQ29waWVkQmxvY2tFUFMyXwogX19aTjNKU0MxMUNvcHlW
aXNpdG9yMTRjb3B5RnJvbVNoYXJlZEV2CiBfX1pOM0pTQzhKU09iamVjdDE2Y29weUJhY2tpbmdT
dG9yZUVQTlNfNkpTQ2VsbEVSTlNfMTFDb3B5VmlzaXRvckUKIF9fWk4zSlNDMThHQ1RocmVhZFNo
YXJlZERhdGExNmRpZEZpbmlzaENvcHlpbmdFdgotX19aTjNKU0M5QXJndW1lbnRzMTlnZXRPd25Q
cm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlO
YW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzhKU09iamVjdDZmcmVlemVF
Uk5TXzJWTUUKIF9fWk4zSlNDOVN0cnVjdHVyZThpc0Zyb3plbkVSTlNfMlZNRQogX19aTjNKU0M5
U3RydWN0dXJlMTZmcmVlemVUcmFuc2l0aW9uRVJOU18yVk1FUFMwXwpAQCAtNDI1MCw3ICs0MjQy
LDYgQEAgX19aTjNKU0MxM0RhdGVQcm90b3R5cGUyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQ
TlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU4KIF9fWk4zSlNDMjdnZXRTdGF0aWNGdW5jdGlv
bkRlc2NyaXB0b3JJTlNfOEpTT2JqZWN0RUVFYlBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hUYWJs
ZUVQUzFfTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNK
U0MyMkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUyN21hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbEVS
TlNfMTFTbG90VmlzaXRvckUKIF9fWk4zV1RGOUJpdFZlY3RvcjdzZXRTbG93RVJLUzBfCi1fX1pO
M0pTQzE4UmVnRXhwTWF0Y2hlc0FycmF5MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmpl
Y3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlv
bk1vZGVFCiBfSlNWYWx1ZUdldFR5cGUKIF9fWk4zSlNDMTNFdmFsQ29kZUJsb2NrMTFyZXBsYWNl
bWVudEV2CiBfX1pOM0pTQzEzRXZhbENvZGVCbG9jazE2Y29tcGlsZU9wdGltaXplZEVQTlNfOUV4
ZWNTdGF0ZUVQTlNfN0pTU2NvcGVFagpAQCAtNDM1NiwxNSArNDM0NywxMSBAQCBfX1pOM0pTQ0wy
NmRhdGVQcm90b0Z1bmNTZXRVVENTZWNvbmRzRVBOU185RXhlY1N0YXRlRQogX29wZXJhdGlvbkVu
c3VyZURvdWJsZQogX19aTjNKU0M4SlNPYmplY3QxNmVuc3VyZURvdWJsZVNsb3dFUk5TXzJWTUUK
IF9fWk4zSlNDNFlhcnIxMUludGVycHJldGVySXRFMjBiYWNrdHJhY2tQYXJlbnRoZXNlc0VSTlMw
XzhCeXRlVGVybUVQTlMyXzE4RGlzanVuY3Rpb25Db250ZXh0RQotX19aTjNKU0M3SlNQcm94eTE2
Z2V0UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3Bl
cnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0MxOUpTU3ltYm9sVGFi
bGVPYmplY3QyN2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185
RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQog
X19aTjNKU0NMMTdtYXRoUHJvdG9GdW5jQVNpbkVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDM0RG
RzE0U3BlY3VsYXRpdmVKSVQxNHNwZWN1bGF0ZU90aGVyRU5TMF80RWRnZUUKIF9fWk4zSlNDNlBh
cnNlcklOU181TGV4ZXJJdEVFRTE4cGFyc2VXaXRoU3RhdGVtZW50SU5TXzEwQVNUQnVpbGRlckVF
RU5UXzlTdGF0ZW1lbnRFUlM2XwogX19aTjNKU0MxMlN0cmluZ09iamVjdDE0ZGVsZXRlUHJvcGVy
dHlFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFCiBfX1pOM0pT
QzlFeGVjU3RhdGUyMHJlZ0V4cFByb3RvdHlwZVRhYmxlRVBTMF8KLV9fWk4zSlNDMTJSZWdFeHBP
YmplY3QxNmdldFByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNf
MTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKLV9fWk4zSlNDMTJSZWdF
eHBPYmplY3QyN2dldE93bk5vbkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185
RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQog
X19aTjNKU0M5RXhlY1N0YXRlOWRhdGVUYWJsZUVQUzBfCiBfX1pOM0pTQzlFeGVjU3RhdGUyMWFy
cmF5Q29uc3RydWN0b3JUYWJsZUVQUzBfCiBfX1pOM0pTQ0wxOWFycmF5UHJvdG9GdW5jRXZlcnlF
UE5TXzlFeGVjU3RhdGVFCkBAIC00NjkwLDcgKzQ2NzcsNiBAQCBfX1pOM0pTQzlFeGVjU3RhdGUy
Mm51bWJlckNvbnN0cnVjdG9yVGFibGVFUFMwXwogX19aTjNKU0M5RXhlY1N0YXRlMjJyZWdFeHBD
b25zdHJ1Y3RvclRhYmxlRVBTMF8KIF9fWk4zSlNDOUV4ZWNTdGF0ZTltYXRoVGFibGVFUFMwXwog
X19aTjNKU0M5RXhlY1N0YXRlOWpzb25UYWJsZUVQUzBfCi1fX1pOM0pTQzdKU1Byb3h5MTlnZXRP
d25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVy
dHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzlBcmd1bWVudHMyNGdl
dE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzEy
UHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOUFyZ3VtZW50
czE3ZGVmaW5lT3duUHJvcGVydHlFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlBy
b3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFYgogX19aTjNXVEY3SGFzaE1hcEl5
TjNKU0MxNlNwYXJzZUFycmF5RW50cnlFTlNfN0ludEhhc2hJeUVFTlNfMjlVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0c0l5RUVOU18xMEhhc2hUcmFpdHNJUzJfRUVFNGZpbmRFUkt5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA3NmE3
YjExMWE4ZDg3N2E2NzliNWM4YjhlODk2ZTFhN2IxYjZiOGFjLi4xMjIxNWE1MTI1MmRiZDg2MWY0
NGNkNjE1N2NmZTQwNGQxZDIwNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIFNjcmlwdFZhbHVl
Ojppc0Z1bmN0aW9uKCkgY29uc3QKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gaW5zcGVj
dG9yT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKHNjcmlwdFN0YXRlKTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1l
cywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3lt
Ym9sKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUo
KTsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gcHJvcGVydHlO
YW1lc1tpXTsKICAgICAgICAgICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0
KHNjcmlwdFN0YXRlLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaAppbmRleCA5Yjg4OTZiOTY4MDE0OTEzZjQ2YjMyYzQ4MGUwNTc4OTYzNzlk
ZmE0Li45YjYyZjhjN2YyMmRjNDQzOTY1YTMyNzUxNDE3NGYxMDY3NDc2ZjNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0zMSw3ICszMSw4
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogICAgIAotI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5f
TkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUo
SWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZShBU0NJSUxpdGVyYWwoIlN5bWJvbC4iICNuYW1l
KSkpKQorI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2
bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRl
TmFtZShQcml2YXRlTmFtZTo6Q3JlYXRlUHJpdmF0ZSkpKQorI2RlZmluZSBJTklUSUFMSVNFX0JV
SUxUSU5fU1lNQk9MUyhuYW1lKSAsIG1fIyNuYW1lKHZtLCAjbmFtZSksIG1fIyNuYW1lIyNQcml2
YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKEFTQ0lJTGl0ZXJhbCgiU3ltYm9s
LiIgI25hbWUpKSkpCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhuYW1lKSBjb25zdCBJ
ZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lIyNQcml2YXRlTmFt
ZTs7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwK
ICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV8jI25hbWU7IH0gXApAQCAtNDgsMTEgKzQ5LDE0IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAg
ICAgICAgIDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmllcnMtPmVtcHR5SWRlbnRp
ZmllcikKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
U0VfQlVJTFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJT
X0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAgICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJ
QUxJU0VfQlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkpCiAgICAg
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5J
VElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QUklWQVRF
X1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAgICAgICAgIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QVUJM
SUNfVE9fUFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9F
TlRSWSkKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjQsMTMgQEAgY2xhc3MgQnVpbHRpbk5h
bWVzIHsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFS
RV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9B
Q0NFU1NPUikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tO
T1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKIAogcHJpdmF0
ZToKICAgICBJZGVudGlmaWVyIG1fZW1wdHlJZGVudGlmaWVyOwogICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCiAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5f
TkFNRVMpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9X
Tl9TWU1CT0woREVDTEFSRV9CVUlMVElOX05BTUVTKQogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8U3RyaW5nSW1wbD4sIGNvbnN0IElkZW50aWZpZXIqLCBJZGVudGlmaWVyUmVwSGFzaD4gQnVp
bHRpbk5hbWVzTWFwOwogICAgIEJ1aWx0aW5OYW1lc01hcCBtX3B1YmxpY1RvUHJpdmF0ZU1hcDsK
ICAgICBCdWlsdGluTmFtZXNNYXAgbV9wcml2YXRlVG9QdWJsaWNNYXA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5o
CmluZGV4IDlhOWRiMGJjNzBiOWYxMzVmNjVkZDJkNzk2ZGU2NTI4OTZhZTBmYjEuLmM4MTg5YTI0
NmE5MjY5NjBjYmU3ZjM3YWNjYTA5ODdhZDg1M2VkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCkBAIC0x
MTgsNyArMTE4LDcgQEAgY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewogCiAgICAgICAg
IHNpemVfdCBjb3VudCA9IDA7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFt
ZUFycmF5KCZ2bSk7Ci0gICAgICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5
TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVBcnJheSwgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5
TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVBcnJheSwgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpJbmNsdWRlU3ltYm9sKTsKICAgICAgICAgUHJv
cGVydHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3Rv
ciA9IHByb3BlcnR5TmFtZUFycmF5LmRhdGEoKS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gcHJvdG90eXBlLT5nZXREaXJlY3Qodm0s
IHByb3BlcnR5TmFtZVZlY3RvcltpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGE1NmU2ZDU4YmQ3
OTZlZmUzOWI3M2JkNDliYTM0ZjlkODQwMDkzMWQuLjk3Nzk4MDFiMWE4MGVlMzY3ZWU0ZWU5ZWUy
ZjNmYmM5ZmY1YTZkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBuZXdMYWJl
bFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0
ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5v
ZGUpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1Rl
bXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRl
TmFtZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3
VGVtcG9yYXJ5KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJv
bCk7CiAgICAgewogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIDApOwogICAgICAg
ICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBzdWJqZWN0LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCAyZjc0
OTFmNWQyZmMxYzkwNDc4MDNlZGM0ZWI1NDg2ODMxZjQwN2NiLi4xYWQyMTQwYWE3YzdhODg1NTJl
MjkyMmFmMzI2ZTlmM2QzODBkOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC0xMTAsMTQgKzExMCwxNCBAQCBib29sIERlYnVn
Z2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi12b2lkIERl
YnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUpCit2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAg
IERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PERlYnVnZ2VyU2NvcGUqPihvYmplY3QpOwog
ICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9i
amVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKKyAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBib29sIERl
YnVnZ2VyU2NvcGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggMjI3Y2IxOWU3NWY3MzhkN2E2YTUx
YjZjMzU5YjRkMTgxYjFmNGY1Yi4uYjJkYjE1ZTkwZWIyYjI0M2JhOWIwZWVjNjc2MDYwMDM5Mjhj
ZmY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
U2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29w
ZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIERlYnVnZ2VyU2NvcGUgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJh
dGlvblR5cGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29s
IHNob3VsZFRocm93KTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAppbmRleCA2YjZiZWFjYjA0YjM5ZDFmYTMw
MTQzNjYxNDdkMzQ5NGM3YmZjZGNjLi5kNjI2MmYwYzM2ZTE2MWE5MjBmZmJmZGU3NjZmZGM3ZmE0
YWQ3ODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAK
QEAgLTE4NiwxNyArMTg2LDE3IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAKICAgICBpZiAo
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1lKSB7CisgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpIHsKICAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICAgICAgdGhpc09iamVj
dC0+SlNDX05BVElWRV9GVU5DVElPTihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2
YXRlTmFtZSwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgICAgIHRo
aXNPYmplY3QtPkpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJh
dG9yU3ltYm9sLCBhcmd1bWVudHNGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICAgICAg
aWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlw
ZSB0eXBlKQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMq
PihvYmplY3QpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX251
bUFyZ3VtZW50czsgKytpKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBBcmd1bWVudHM6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU4KICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNh
bGxlZSk7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgpOwogICAgIH0KLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsK
IH0KIAogdm9pZCBBcmd1bWVudHM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IGMwNTM4NjkwMDA0ZTU2
MzcyYzk0YTFhMDA5Y2U5MWQ0YjIwNWU4NGIuLmI4NzM0MTVkODk4MDJiOGM2Y2E1NTI3Yzc0NDBi
Mzc3OTI3Y2IwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5o
CkBAIC0xMTQsNyArMTE0LDcgQEAgY2xhc3MgQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUuY3BwCmluZGV4IGQ3OWNjNTJlMDkyYmM2ZTkwYjQxYmJlNzk5OGMyYWI3MDdh
YTNkMmMuLmM2OTA0ZmE1MDVhYjZhNTZjZGYzMTUwMTc4ZWI0YzU0Mjc1ZmViM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVy
YXRvclByb3RvdHlwZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBBcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2IKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFk
ZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5j
SXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJ
dGVyYXRvciwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBjODgw
MGUzY2RjYTYyNTJlYWI5OGZkMDIxMTg2MWUxZDBkYmVjMTEyLi5iZDM1NTVjNDQyMDliZDc1YTEz
OGY1ZjIzOGNiOTY3NWM2ZDI2YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDUsNyArNDUsNyBA
QCB2b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsK
ICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheUl0
ZXJhdG9yUHJvdG90eXBlSXRlcmF0ZSwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5SXRlcmF0b3JQcm90
b3R5cGVJdGVyYXRlLCBEb250RW51bSwgMCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
aW5kZXggYzc5OWNjMzFlMWJmMTA2NjZiOWU0YjdmNWY1MWJmODQxOGNkY2E3ZS4uZDQ2YjY0ZTZm
MzE5OGRhNzY2OTQ1NDJlNGE5N2RkNmQ4YTU2YWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZv
aWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhp
cyk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclBy
aXZhdGVOYW1lLCBhcnJheVByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5UHJv
dG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiB9CiAKIGJvb2wgQXJyYXlQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTczNSw3ICs3MzUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgbmFtZUFycmF5KGV4ZWMpOwotICAgIHRo
aXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmos
IGV4ZWMsIG5hbWVBcnJheSwgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgdGhpc09i
ai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwgZXhl
YywgbmFtZUFycmF5LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6
OkV4Y2x1ZGVTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBjYjUwNThjMmRjMDYyYjRkYjVkNjgyYTAx
NjE3YjM3NzhjMTQwNGJhLi5iODdhOTA4NmFiZDE2MzVhZTkwMjg2YjkwYzE3MzQ1ZWM2YjE0Njlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtNzMsMTMg
KzczLDEzIEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBKU1ZhbHVlICgqRGVm
YXVsdFZhbHVlRnVuY3Rpb25QdHIpKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgRGVmYXVsdFZhbHVlRnVuY3Rpb25QdHIgZGVmYXVsdFZh
bHVlOwogCi0gICAgdHlwZWRlZiB2b2lkICgqR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRy
KShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCpHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIp
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRy
IGdldE93blByb3BlcnR5TmFtZXM7CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpHZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXNGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgdHlwZWRlZiB2b2lkICgqR2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAg
ICAgR2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzOwogCi0gICAgdHlwZWRlZiB2b2lkICgqR2V0UHJvcGVydHlOYW1lc0Z1bmN0
aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCpHZXRQcm9wZXJ0eU5hbWVzRnVuY3Rpb25Q
dHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAgICAgR2V0UHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRy
IGdldFByb3BlcnR5TmFtZXM7CiAKICAgICB0eXBlZGVmIHVpbnQzMl90ICgqR2V0RW51bWVyYWJs
ZUxlbmd0aEZ1bmN0aW9uUHRyKShFeGVjU3RhdGUqLCBKU09iamVjdCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDU2
ZGYzNDUwMjg3ZmY5OTlhMzhmY2Y0Y2I3MTUwZTg2MWE1NjQzZTguLmFjYzI4MGRjNzBmYmE3NzMw
N2FiNDBiOTAzYjE1MDc2N2M0YTg2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZp
bmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2bSwgI25hbWUpCiAjZGVm
aW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQodm0sICNuYW1lKQog
I2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1l
KG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQorI2RlZmluZSBJTklUSUFMSVpF
X1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0
ZU5hbWUoKSkKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkK
ICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAgLTQxLDYgKzQyLDcgQEAKICAgICBKU0NfQ09NTU9O
X0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NP
TU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9O
QU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CmluZGV4IDY1ODE1Y2M5YTFlOWY3YzYyMTAzOTIyMDNhYzhmMTgxMDdkZjhhNzAuLmJiNWQ2YzRl
ZDNhMjU0ZDdmNTNjNzA5ZjlmMTg5MzI1Mjc0ZTA3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjM0LDcgKzIzNCw2IEBA
CiAgICAgbWFjcm8odW5zY29wYWJsZSkKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCi0gICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wobWFjcm8pIFwKICAgICBtYWNy
byhpdGVyYXRvck5leHQpIFwKICAgICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8ocmVqZWN0
KSBcCkBAIC0yODQsNyArMjgzLDExIEBACiAjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVf
UFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUj
I1ByaXZhdGVOYW1lOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9O
QU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVS
VFlfTkFNRV9HTE9CQUwKLSAgICAgICAgCisKKyNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFS
RV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVy
IG5hbWUjI1N5bWJvbDsKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExf
S05PV05fU1lNQk9MX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZB
VEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCisKICAgICAgICAgY29uc3QgSWRlbnRpZmllciog
Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVudGlm
aWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCmluZGV4IDRk
YmFmN2I0MTdkYzcwOGZiYzZjNzI1MDlmMTlmNTQ0ZjAxYjk2YmQuLmUyZWNlNDk2YTE2YTFkNjIy
MWRiZmI3MTE4MDg1NWExODFjY2FhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCkBAIC0zNSw2ICszNSwxMSBAQCBlbnVtIEVudW1lcmF0
aW9uTW9kZSB7CiAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdAog
fTsKIAorZW51bSBjbGFzcyBFbnVtZXJhdGlvblR5cGUgeworICAgIEluY2x1ZGVTeW1ib2wsCisg
ICAgRXhjbHVkZVN5bWJvbAorfTsKKwogaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5o
CmluZGV4IDc0NzJkODQ3ZDc1YjMwM2U2NDU0ZjA2ZDY5ZWQ2ZmM1ZWU2OTIzYWMuLjlmMjAwM2Fm
MzQzZGUwYzY4ZGQzNjc2OWVmY2JhMmVkYzRhNGVjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaApAQCAtMzcsNyArMzcsNyBAQCBp
bmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEF0b21pY1N0cmlu
Z0ltcGwqIHN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3Ry
aW5nVGFibGUoZXhlYyk7CiAgICAgaWYgKHN0cmluZykKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghc3RyaW5nLT5sZW5ndGgoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdU
YWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJl
YWQhIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwg
c3RyaW5nLT5pc1VuaXF1ZSgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxl
KHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEi
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogI2VuZGlmCkBAIC00OSw3ICs0OSw3
IEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0
b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgQXRvbWljU3RyaW5nOjpp
c0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nLmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBj
b21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghc3RyaW5nLmxlbmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBBdG9taWNTdHJpbmc6
OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9taWMgc3RyaW5n
IGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
aW5kZXggNTE3NzIxZTk4NDQ5ZTFlZDNlYTA1ZTUwOTZhNDNjMzE0ODI4ODg5MC4uNGM3MGFjMzNl
Yzc0NmE2MGFjMWY4MGY1MzNhODE3N2FiZmMyOTAwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTIyMiwxNCArMjIyLDE0IEBAIHN0YXRpYyBpbnQgY29t
cGFyZUtleXNGb3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQogICAgIHJldHVy
biAoZGEgPiBkYikgLSAoZGEgPCBkYik7CiB9CiAKLXZvaWQgSlNBcnJheTo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBK
U0FycmF5OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAKICAgICBpZiAoc2hvdWxkSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKLSAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
ICAgIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIC8vIFRoaXMgbWV0aG9kIG1ha2Vz
IHJvb20gaW4gdGhlIHZlY3RvciwgYnV0IGxlYXZlcyB0aGUgbmV3IHNwYWNlIGZvciBjb3VudCBz
bG90cyB1bmNsZWFyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5k
ZXggNzAwMjllNmRjOWY0OTQ2ZTM4MjBlOWZkNzIwMDYxMTU0MDY0ZTBmYi4uYTU1ZTkxNWYxZWM0
ZDk2NjMwY2ViZWIyYWMyMzZmMDdkOGEwYTEwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKIAogcHJpdmF0ZToKICAgICBi
b29sIGlzTGVuZ3RoV3JpdGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCBjMWNhZDEwNWM3ZTBkNWFkN2VmZDI5NmEzYmVmMDY5
NmM5NWY2MDA3Li5kNTU0MDNlZGQzOTRkYmQ1MTdmNTc0YTcyMzIyZDFhMzY2Yzg0ZjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAt
MTE1LDE0ICsxMTUsMTQgQEAgYm9vbCBKU0FycmF5QnVmZmVyOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKIH0KIAogdm9pZCBKU0Fy
cmF5QnVmZmVyOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoCi0gICAgSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyYXksIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQorICAgIEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lQXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25U
eXBlIHR5cGUpCiB7CiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fy
cmF5QnVmZmVyKj4ob2JqZWN0KTsKICAgICAKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5ieXRlTGVuZ3RoKTsKICAgICAKLSAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOworICAgIEJhc2U6OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSwgdHlwZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5oCmluZGV4IDMxOWI4MmU1YTBiMTE2ZThkZWIzOWE2MTAxMGZhOWFkMzZj
MDBmMTkuLjdmNTEzZTYzNGI2NzcyNzg0MmE1ZWNkYjY4N2RlNTU2ODI1NmQxNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKQEAgLTU0LDcgKzU0
LDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUs
IEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBjYjVjOGEyZjAzOTM0
M2M1YTI0MDUwYjA5MDgwOGRlZDI1ZTEwOTBiLi4yMDBhYzdlZDRkZGUzYzYxOTJkNGU4ODkxZWUz
ODk0ZjhmODNhMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgYm9vbCBKU0FycmF5QnVm
ZmVyVmlldzo6ZGVsZXRlUHJvcGVydHkoCiB9CiAKIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKLSAgICBKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBhcnJheSwgRW51bWVyYXRpb25Nb2RlIG1vZGUp
CisgICAgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsK
ICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KG9iamVjdCk7CiAgICAgCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBKU0FycmF5QnVm
ZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAogICAgICAgICBhcnJheS5hZGQo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1ZmZlcik7CiAgICAgfQogICAgIAotICAgIEJhc2U6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7
CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IGFycmF5LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6ZmluYWxp
emUoSlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggM2ZlYjAzYjcyMTkzMTRkMmI0MmY4MzFlNGVjMzhiY2Ex
OTcyOWY0NC4uZTZkYzg1ODljN2Y2MmE2M2M4NGJkMjAxN2U4ZGNkOTY5YTg0OTRmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBA
IC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgCi0gICAgc3RhdGljIHZvaWQgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIAogcHVibGljOgogICAgIFR5
cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNwcAppbmRleCAxZDNmMzQwMTg4NTdkYmQ4ZTY4
ZjMyYjAyZGM5MGE5NDdhYmIwZTA2Li5hOTIyMmQ0OWZjZWRlNzg0NjBhODdiMjA2ZTM4YTllYzk0
YjFhMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxl
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuY3BwCkBA
IC03Niw5ICs3Niw5IEBAIGJvb2wgSlNDYWxsZWU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgcmV0dXJuIEJhc2U6
OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKLXZvaWQgSlNDYWxsZWU6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNDYWxsZWU6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25U
eXBlIHR5cGUpCiB7Ci0gICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9
CiAKIHZvaWQgSlNDYWxsZWU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKaW5kZXggZGVkOGM4
NTgwYjBhYzM1ZDRkOTc3MTZhMDBhZGYwODBkY2I2ZTJlZS4uMGJjM2NkMTMxYTFmNTIzNDI1Yzk3
OGRhMWE1ZjMwNTdhMzc4N2Q3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nh
bGxlZS5oCkBAIC0xMDEsNyArMTAxLDcgQEAgY2xhc3MgSlNDYWxsZWUgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3Rh
dGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZSA9IEVudW1lcmF0
aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAy
YzQwM2M4MTNmYjM4NTY4YjBlNjBjZTc4OTg5ZGRlYTRjOTUzYzEyLi4yNjAyNWMwZDc4NzExMjk3
NGMzNDMyOWI4M2ZiMDUxN2YzMjI2NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAKQEAgLTE5NCwxMiArMTk0LDEyIEBAIGJvb2wgSlNDZWxsOjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKQordm9pZCBKU0NlbGw6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBl
KQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgSlNDZWxs
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSkKK3ZvaWQgSlNDZWxsOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0yMTUsNyArMjE1LDcgQEAgY29uc3QgY2hhciogSlND
ZWxsOjpjbGFzc05hbWUoKSBjb25zdAogICAgIHJldHVybiBjbGFzc0luZm8oKS0+Y2xhc3NOYW1l
OwogfQogCi12b2lkIEpTQ2VsbDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBKU0NlbGw6Omdl
dFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CkBAIC0yNTAsMTIgKzI1MCwxMiBAQCB1aW50MzJfdCBKU0NlbGw6
OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKQogICAgIHJldHVybiAw
OwogfQogCi12b2lkIEpTQ2VsbDo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBK
U0NlbGw6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgSlNDZWxsOjpnZXRH
ZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBKU0NlbGw6OmdldEdlbmVyaWNQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUsIEVudW1lcmF0aW9uVHlwZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA0ODM5ZjY0
ZmExYTgyMGVlYWNiNzA5Zjk4YzMwYjdhZjdjNGU4MTk0Li5iN2MyYTcxNGQ5YWMzNzE0NDIyMmQ1
ZWViMTM4NTA3M2NkNzE4OWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aApAQCAtMjExLDEzICsyMTEsMTMgQEAgY2xhc3MgSlNDZWxsIHsKIAogICAgIC8vIER1bW15IGlt
cGxlbWVudGF0aW9ucyBvZiBvdmVycmlkZS1hYmxlIHN0YXRpYyBmdW5jdGlvbnMgZm9yIGNsYXNz
ZXMgdG8gcHV0IGluIHRoZWlyIE1ldGhvZFRhYmxlCiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVs
dFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSk7Ci0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NS
QVNIIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9U
T19DUkFTSCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAg
ICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOworICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RP
X0NSQVNIIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogCiAgICAg
c3RhdGljIHVpbnQzMl90IGdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KTsKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldFN0cnVjdHVyZVBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBn
ZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsK
KyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFt
ZShjb25zdCBKU09iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1
c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGRjMzc3MTk3MGFh
NDA2OTFmNTkxYzFlMzkxMDgyMzg2ZTFiZmEyNzAuLjU4NDA0MDY3NzQzZjg5MjRhOWQ4ODUwZWY5
OGZiODhiYzM3MzUyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAg
ICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0Z1bmN0
aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0
LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIHNob3VsZEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMobW9kZSkpIHsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CiAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpOwogICAgIH0K
LSAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiB2
b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDlmNWZl
NjE0MTU5YmRjZjJlNWFiYzQ1NTBkMDQ4MTk4ZTNiMzhkYzcuLjYxMDk1ZjViZTQ1MjkyMTdiNDRl
MzdmMGUwZmFhNTU1MGI0MGU0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGlj
IEpTQ2FsbGVlIHsKICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogY3JlYXRlQWxsb2NhdGlv
blByb2ZpbGUoRXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsKIAogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMsIEVudW1lcmF0aW9uVHlwZSA9IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwogCiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCAxMzQzZWVl
M2Q3MjBhMjA2NmFkYzkyYjQzOWZkZjE5OTE4ZmE0NWY4Li5lZWUxNzU1ZjM0MTg0ZmI1MWVkYzk4
Mjk5N2RkNGEwOTZlNTUyNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI0MCw4ICsyNDAsOCBAQCBj
bGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7
CiAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAg
IHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5
cGUpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25U
eXBlKTsKICAgICAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5
VmlzaXRvciYsIENvcHlUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZk
MGQyMWZhNjFmMzk4OWY5ZDliNDE5OWRhYTg4OGU5ZjY2NDRlY2EuLmM0OTAxZTVlYWY0NDFhNTFk
ZmVjNjk2NThiNWUyMmM0ZDQ3ZmIwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBA
IC00MTEsMjYgKzQxMSwyNiBAQAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdm9pZCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKAotICAgIEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKKyAgICBKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBhcnJheSwgRW51bWVyYXRpb25N
b2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2Jq
ZWN0KTsKICAgICAKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2Rl
KSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAg
IAotICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBhcnJheSwgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlLCB0eXBlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIHZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93
blByb3BlcnR5TmFtZXMoCi0gICAgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgYXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQorICAgIEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5LCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqPihvYmplY3QpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlz
T2JqZWN0LT5tX2xlbmd0aDsgKytpKQogICAgICAgICBhcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpKSk7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CisgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSwgdHlwZSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggYjE0YTQ3OWM5YTlmMWVkYmRjNWY2
NTY5NWYzNGEzNjQ1ZTc2ODcxZS4uNWFhZWU5NjI0NzM2MWNmMzZmYzRjNzUyY2MzMjBhOGNjMDk1
Yzg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGlubGluZSBib29sIEpTTGV4
aWNhbEVudmlyb25tZW50OjpzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKK3ZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5
cGUpCiB7CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNM
ZXhpY2FsRW52aXJvbm1lbnQqPihvYmplY3QpOwogCkBAIC0xMTgsMTEgKzExOCwxMyBAQCB2b2lk
IEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5pc1ZhbGlkKGl0LT52YWx1ZSkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1
ZGVTeW1ib2wgJiYgaXQtPmtleS5nZXQoKS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywg
aXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIC8vIFNraXAgdGhlIEpTRW52
aXJvbm1lbnRSZWNvcmQgaW1wbGVtZW50YXRpb24gb2YgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzCi0gICAgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5
cGUpOwogfQogCiBpbmxpbmUgYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6c3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA5ZmIwM2M1ODdkMGE5
ZjliZjM4NjEwNmMwNGU3ZmI0YmFhOThkODUzLi41Yzc0YTU5N2VkMDE5N2E0NWZhY2VlNWNiNGRh
ZWE3MzA3NWMwYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgY2xhc3MgSlNMZXhpY2Fs
RW52aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7CiAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUs
IEVudW1lcmF0aW9uVHlwZSk7CiAKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAppbmRleCBhZjQ3
MzdlOWIwMmY1NzEwMzA2NWVlN2Q4ZTdiYTA0MGRlYzBkMmFjLi44YTYzZDk0NzkwZmYwYzdjYjhi
MGE5MjNmN2Y5YWJmYTI4NTAyN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU05vdEFuT2JqZWN0LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIEpTTm90QW5PYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSkKK3ZvaWQgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMs
IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuaAppbmRleCBlN2MwYTA0ODViY2M4ZThkN2E1NGZiY2YzYzRiMmEz
YjcyOTk2MDQ4Li44NzNkNWJiNzQ3OWFjYzA0YTIwNmE1MGZlODlhZDlkZWVjNmViZjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCkBAIC03Nyw3
ICs3Nyw3IEBAIGNsYXNzIEpTTm90QW5PYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAotICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDk5MDc0M2E1
NThlZWE4ODc5OTNlMjI3YTZlZDE4ZTU1MGMyM2UxYTMuLmM2NTNjMTQ5YzZmMzNlMzM1M2FhNDZh
MGVkMmY1NjFmMjIzOTdkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCkBAIC00OTUsNyArNDk1LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVy
OjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkK
ICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMgPSBzdHJpbmdpZmllci5tX2FycmF5UmVw
bGFjZXJQcm9wZXJ0eU5hbWVzLmRhdGEoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIFByb3BlcnR5TmFtZUFycmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAg
ICAgICAgICAgICAgbV9vYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMo
bV9vYmplY3QuZ2V0KCksIGV4ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5h
bWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVT
eW1ib2wpOwogICAgICAgICAgICAgICAgIG1fcHJvcGVydHlOYW1lcyA9IG9iamVjdFByb3BlcnR5
TmFtZXMucmVsZWFzZURhdGEoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fc2l6ZSA9
IG1fcHJvcGVydHlOYW1lcy0+cHJvcGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgpOwpAQCAtNzEyLDcg
KzcxMiw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmls
dGVyZWQpCiAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2sucHVzaChvYmplY3QpOwogICAgICAg
ICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3BlcnR5
U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAgICAgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhl
YywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgogICAgICAgICAgICAgRkFMTFRIUk9V
R0g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggODdj
MTkxOTQ3MjljNTI1NDk2ZDExMzNhMjFlOTg5MjhiMWVkZWU0Ni4uZTRjMTZmOTVhZjM2ZjIxYmIz
OTFhMDVlZjI4OWZjYTA3MDBmYWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcApAQCAtMTQ1MywxMCArMTQ1MywxMCBAQCBib29sIEpTT2JqZWN0OjpkZWZh
dWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHBy
b3RvKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNPYmplY3Q6Omdl
dFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0
aW9uVHlwZSB0eXBlKQogewogICAgIHByb3BlcnR5TmFtZXMuc2V0QmFzZU9iamVjdChvYmplY3Qp
OwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiAKICAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ2NSwxMCArMTQ2NSwxMCBAQCB2b2lkIEpT
T2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lQQogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBhc09iamVjdChvYmpl
Y3QtPnByb3RvdHlwZSgpKTsKICAgICB3aGlsZSgxKSB7CiAgICAgICAgIGlmIChwcm90b3R5cGUt
PnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKSB7
Ci0gICAgICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1l
cyhwcm90b3R5cGUsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgICAgICAgICAgcHJv
dG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgICAgIHByb3Rv
dHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiAgICAgICAgIEpTVmFsdWUgbmV4dFByb3Rv
ID0gcHJvdG90eXBlLT5wcm90b3R5cGUoKTsKICAgICAgICAgaWYgKG5leHRQcm90by5pc051bGwo
KSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3NiwxMSArMTQ3NiwxMSBAQCB2b2lkIEpTT2Jq
ZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQQogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1l
cmF0aW9uVHlwZSB0eXBlKQogewogICAgIGlmICghc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVy
dHlOYW1lcyhtb2RlKSkgewogICAgICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGdldCBub24taW5k
ZXhlZCBwcm9wZXJ0aWVzIGZyb20gYW55IHN1YmNsYXNzZXMgb2YgSlNPYmplY3QgdGhhdCBoYXZl
IHRoZW0uCi0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU0NywxMCArMTU0NywxMCBAQCB2b2lkIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIAotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCi12b2lkIEpT
T2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCit2b2lkIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQog
ewogICAgIGdldENsYXNzUHJvcGVydHlOYW1lcyhleGVjLCBvYmplY3QtPmNsYXNzSW5mbygpLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlLCBvYmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSk7CiAK
QEAgLTE1NTgsNyArMTU1OCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIG9iamVjdC0+c3RydWN0
dXJlKHZtKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZXMs
IG1vZGUpOworICAgIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21T
dHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBkb3VibGUgSlNP
YmplY3Q6OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKQEAgLTI3NDEsMTYgKzI3NDEs
MTYgQEAgdWludDMyX3QgSlNPYmplY3Q6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogb2JqZWN0KQogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6Z2V0U3Ry
dWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3Zv
aWQgSlNPYmplY3Q6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzRnJv
bVN0cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgb2JqZWN0LT5zdHJ1Y3R1
cmUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1lcywg
bW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU09iamVjdDo6Z2V0R2Vu
ZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1l
cmF0aW9uVHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlVGhhdFNraXBzSlNPYmplY3QobW9kZSkpOworICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpLCB0eXBlKTsKIAogICAgIGlmIChvYmpl
Y3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNzU4LDEwICsy
NzU4LDEwIEBAIHZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAgSlNPYmplY3QqIHByb3RvdHlw
ZSA9IGFzT2JqZWN0KG9iamVjdC0+cHJvdG90eXBlKCkpOwogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIGlmIChwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcygpKSB7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxl
KHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhwcm90b3R5cGUsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOworICAgICAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5
TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUo
dm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSk7CisgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiAgICAg
ICAgIEpTVmFsdWUgbmV4dFByb3RvID0gcHJvdG90eXBlLT5wcm90b3R5cGUoKTsKICAgICAgICAg
aWYgKG5leHRQcm90by5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYzk3MjEzOTRiNGE4ZjAyNjU2ZTk1NmY0
Nzc5ZDhkMDM3MDQ5ZGZjMi4uNTEzYzc4ZTdhNmJkNTZiZWEyYmRjMzA4NTJkZTEyYzhkMzBmOTNk
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC00NzQsMTMg
KzQ3NCwxMyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaGFz
SW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmYXVsdEhh
c0luc3RhbmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkp
OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlwZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0aW9uVHlw
ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
LCBFbnVtZXJhdGlvblR5cGUpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQz
Ml90IGdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogCiAg
ICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBl
ID0gTm9QcmVmZXJlbmNlKSBjb25zdDsKICAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVj
U3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4
IGYxYTJlNTYyZjlhYmY0MDJhYjYzOGRjMDljNmVmYzM4MGQxYzViNGQuLjJhNTE2OTcyMTFjNmQ4
YTNiZTRlNGU3ODJlMjlhZGMyYTVlYzkwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1MSw3ICsyNTEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVu
Y1JhY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9
IGpzQ2FzdDxKU1Byb21pc2VEZWZlcnJlZCo+KGRlZmVycmVkVmFsdWUpOwogCiAgICAgLy8gNC4g
TGV0ICdpdGVyYXRvcicgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEdldEl0ZXJhdG9yKGl0ZXJh
YmxlKS4KLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1ZSBpdGVy
YXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7CiAKQEAg
LTM2Nyw3ICszNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNv
bnN0cnVjdG9yRnVuY0FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQq
IGRlZmVycmVkID0ganNDYXN0PEpTUHJvbWlzZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAK
ICAgICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRl
cmF0b3IoaXRlcmFibGUpLgotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxl
LmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBK
U1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJy
ZWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaAppbmRleCBlZTE4YWJmNmViM2YzMmNmYzAxMjkxZWIxNDQ3
NDBlZjc4YTk2YTFjLi5hNjVhNjA3ZjdmNmYyZWJiMDY4YjYzOWU2ODQxOWQ5ZTViMzY4OWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaApAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IqIHN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoRXhlY1N0YXRlKiBl
eGVjCiAgICAgICAgIHJldHVybiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSk7
CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGJhc2Ut
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBiYXNlLT5tZXRo
b2RUYWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVy
dHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNs
dWRlU3ltYm9sKTsKIAogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZXMpOwogICAgIGlmIChzdHJ1Y3R1cmUtPmNhbkNhY2hlU3RydWN0dXJlUHJvcGVydHlOYW1l
RW51bWVyYXRvcigpKQpAQCAtMTQyLDkgKzE0Miw5IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqIGdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywK
ICAgICAvLyB0aGUgbmV3IGdlbmVyaWMgUHJvcGVydHlOYW1lQXJyYXkgYW5kIGZhaWxpbmcgYmVj
YXVzZSB3ZSd2ZSBhbHJlYWR5IHZpc2l0ZWQgdGhlbS4KICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0
cnVjdHVyZSA9IHN0cnVjdHVyZUVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZSh2bSk7CiAgICAg
aWYgKHN0cnVjdHVyZSA9PSBjYWNoZWRTdHJ1Y3R1cmUgJiYgc3RydWN0dXJlLT5jYW5BY2Nlc3NQ
cm9wZXJ0aWVzUXVpY2tseSgpICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihsZW5ndGgpID09IGJh
c2UtPmdldEFycmF5TGVuZ3RoKCkpCi0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
R2VuZXJpY1Byb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2Vu
ZXJpY1Byb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICBlbHNl
Ci0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNlLCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAg
YmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhj
bHVkZVN5bWJvbCk7CiAgICAgCiAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgc3Ry
dWN0dXJlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRl
eCBmNGM2ODI5ZTA0YmMyMWExZGUzOWY3ZTRmOTAzYTliZjQ1NGI4MzcxLi41MWU3NGViNTZhM2Fm
NmZlYjJkZmU2ZWEzOGFlYzFlMjNmY2VjODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmNwcApAQCAtMTA4LDEwICsxMDgsMTAgQEAgYm9vbCBKU1Byb3h5OjpkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3AKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiB9CiAKLXZvaWQgSlNQcm94eTo6Z2V0UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNQcm94eTo6Z2V0UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5
cGUpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0
KTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIHVpbnQzMl90IEpTUHJveHk6OmdldEVudW1lcmFibGVM
ZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQpAQCAtMTIwLDIzICsxMjAs
MjMgQEAgdWludDMyX3QgSlNQcm94eTo6Z2V0RW51bWVyYWJsZUxlbmd0aChFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0RW51bWVyYWJsZUxlbmd0aChleGVjLCB0aGlzT2Jq
ZWN0LT50YXJnZXQoKSk7CiB9CiAKLXZvaWQgSlNQcm94eTo6Z2V0U3RydWN0dXJlUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKQordm9pZCBKU1Byb3h5OjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1l
cmF0aW9uVHlwZSkKIHsKICAgICAvLyBTa2lwIHRoZSBzdHJ1Y3R1cmUgbG9vcCwgc2luY2UgaXQg
aXMgaW52YWxpZCBmb3IgcHJveGllcy4KIH0KIAotdm9pZCBKU1Byb3h5OjpnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNQcm94
eTo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7CiAgICAgLy8gR2V0ICphbGwqIG9mIHRoZSBwcm9wZXJ0
eSBuYW1lcywgbm90IGp1c3QgdGhlIGdlbmVyaWMgb25lcywgc2luY2Ugd2Ugc2tpcHBlZCB0aGUg
c3RydWN0dXJlCiAgICAgLy8gb25lcyBhYm92ZS4KLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFy
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdl
dCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQg
SlNQcm94eTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKK3ZvaWQgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNQcm94eSog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT50
YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNP
YmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlw
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5oCmluZGV4IGNkYTYyMWI0Y2JhNTk3MGUxZTNhZTFiMWNmMDFlYThkNDEzNjYwZGQu
LmFmZDBjZDdmNjM1OGJkMGQ0NDY2OTZlOWRjZGMwMWE2ZGM1MTY0ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKQEAgLTgxLDExICs4MSwxMSBAQCBjbGFzcyBKU1By
b3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBK
U1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVudW1lcmF0
aW9uVHlwZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQzMl90IGdldEVudW1l
cmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwg
RW51bWVyYXRpb25UeXBlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRH
ZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRo
cm93KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggYjhmYjIyODJhZmFlODdlY2M0MTEwMjQ1
Y2U5YmI4NzNlOTUwZjBmZi4uNGZiZmI5ZGNjODQyNWM4ZDJlMGM2N2QzYjMwM2RjOTI5NzhkOTcy
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKQEAgLTU0LDIxICs1NCwyMyBAQCBib29sIEpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lk
IEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAg
SlNTeW1ib2xUYWJsZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N5bWJvbFRhYmxlT2Jq
ZWN0Kj4ob2JqZWN0KTsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2Nr
ZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09i
amVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIGlmIChpdC0+
a2V5LT5pc1ByaXZhdGUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGlmICh0eXBlID09IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCAmJiBpdC0+a2V5LT5p
c1VuaXF1ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCEo
aXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBl
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggMmNkOWQxYmEyYjEyNzBiN2Ex
ODJhZmI4YzhhNDAyMDgxNzQ4ZmI0Yi4uNmM2MDRjMGVjODAyYzk5NjY0OTE0NTMwZTAxMzU1OGMx
NDVlNmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBKU1N5bWJvbFRhYmxlT2Jq
ZWN0IDogcHVibGljIEpTU2NvcGUgewogICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KICAgICAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsKICAgICAK
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJ
c0Vudmlyb25tZW50UmVjb3JkIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGIyMjBiOTg3NTg4NWM0MmY5Y2U2MzhmMzIy
MjQ3OTJjMzI3NjEwMTcuLjAzNTY0Zjg4ODExZjNlN2ZhYmZiMGFkYWI5YmJjOWFjYTFmYmFiZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRv
clByb3RvdHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBNYXBJdGVyYXRvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJv
dG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclByaXZhdGVOYW1lLCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwg
RG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51
bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
ck5leHRQcml2YXRlTmFtZSwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwgRG9udEVudW0s
IDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBl
LmNwcAppbmRleCA1NDgyMjI3Njk0MDBiNzE4NTJhZjdkYjhiNzVlZjUwNzU0NGVkZDRmLi5mODQz
NjdhZTgwYjcyNjM3NTA1ZWRjMTU2M2Q4YjI4ODhjNThjOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9p
ZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtl
eXMsIG1hcFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgbWFwUHJvdG9GdW5jVmFsdWVzLCBEb250RW51
bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVz
LCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNF
bnRyaWVzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDAp
OwogCiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5n
KCksIG1hcFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwMmU1NzUyODllMTZjZGMxNmEwYmJh
MzQ5Nzg1ZjJlMjdlZjE3ZGQuLjQwYjMzNDgxYjg2ZjllYTIwZDliZDg5NWNiYjM5NDNiNDZkZmE2
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3Jp
cHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiU3RhY2tW
aXNpdG9yLmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2Yo
RXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0
YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKik7
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJv
cGVydGllcyhFeGVjU3RhdGUqKTsKQEAgLTY2LDYgKzY4LDcgQEAKICAgZ2V0UHJvdG90eXBlT2Yg
ICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICBvYmplY3RDb25z
dHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAg
Z2V0T3duUHJvcGVydHlOYW1lcyAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
TmFtZXMgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZ2V0T3duUHJvcGVydHlTeW1ib2xz
ICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKICAga2V5cyAgICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3Rv
cktleXMgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZGVmaW5l
UHJvcGVydHkgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5ICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKICAgZGVmaW5lUHJvcGVydGllcyAgICAgICAgICBv
YmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKQEAgLTIwNiw3ICsyMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogICAgIGlm
ICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQg
cHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICBKU0FycmF5KiBuYW1lcyA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMg
PSBwcm9wZXJ0aWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3Bl
cnRpZXM7IGkrKykKQEAgLTIxNSwxMiArMjE4LDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhl
CiB9CiAKIC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQg
aXMgbm90IGFuIG9iamVjdC4iKSkpOworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMo
ZXhlYyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSks
IGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9u
VHlwZTo6SW5jbHVkZVN5bWJvbCk7CisgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOworICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5z
aXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsK
KyAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnRpZXNbaV0uaW1wbCgpOwor
ICAgICAgICBpZiAoaW1wbC0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIG5hbWVzLT5wdXNoKGV4
ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGltcGwpKTsKKyAgICB9CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShuYW1lcyk7Cit9CisKKy8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0
aW9uIGNhY2hlLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cktleXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQga2V5cyBvZiBhIHZhbHVlIHRoYXQgaXMg
bm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
Yyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4
ZWMsIHByb3BlcnRpZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0
KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3Bl
cnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wp
OwogICAgIEpTQXJyYXkqIGtleXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAg
IHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBAIC0zMzEsNyArMzUxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5
KEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvcGVydGllcykKIHsKICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KHBy
b3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhh
c09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgYXNPYmplY3QocHJvcGVydGllcyktPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6
OkluY2x1ZGVTeW1ib2wpOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydHlOYW1l
cy5zaXplKCk7CiAgICAgVmVjdG9yPFByb3BlcnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRvcnM7CiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFya0J1ZmZlcjsKQEAgLTM5OCw3ICs0MTgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3Rh
dGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQ
IG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlw
ZTo6SW5jbHVkZVN5bWJvbCk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhl
IFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00MzUs
NyArNDU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24g
cHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhl
eGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMs
IEVudW1lcmF0aW9uVHlwZTo6SW5jbHVkZVN5bWJvbCk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0
eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0
IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3
aXRoIFAuCkBAIC00ODMsNyArNTAzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZv
ciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpJbmNsdWRlU3ltYm9sKTsKICAgICBQ
cm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsK
ICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVy
dGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBk
ZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVy
bmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTUxMyw3ICs1MzMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKiBleGVj
KQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAog
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkluY2x1
ZGVTeW1ib2wpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBw
cm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAg
ICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93
blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKaW5kZXggMjE0MTY0NDY2NDVjN2ZmZjAzZjdj
ODJkMTc4NzM5YWQ1NjA4YmY2NC4uYmRmOGZmM2FjMzA3ZDVlOGFmMGZhYzlmOGI5MWIxYTZhYjgz
YzFjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5h
bWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCkBA
IC0zNSwxOSArMzUsMjUgQEAgY2xhc3MgUHJpdmF0ZU5hbWUgewogICAgIFByaXZhdGVOYW1lKCkK
ICAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkoKSkKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAgIH0KLSAgICBQcml2YXRl
TmFtZShjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQotICAgICAgICA6IG1faW1wbChTdHJpbmdJ
bXBsOjpjcmVhdGVVbmlxdWUoZGVzY3JpcHRpb24uaW1wbCgpKSkKKworICAgIGVudW0gQ3JlYXRl
UHJpdmF0ZVRhZyB7IENyZWF0ZVByaXZhdGUgfTsKKyAgICBQcml2YXRlTmFtZShDcmVhdGVQcml2
YXRlVGFnKQorICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVQcml2YXRl
KCkpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAgICB9CisK
ICAgICBleHBsaWNpdCBQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpCiAgICAgICAgIDogbV9p
bXBsKHVpZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAg
IH0KIAorICAgIGV4cGxpY2l0IFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
CisgICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5p
bXBsKCkpKQorICAgIHsKKyAgICB9CisKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4obV9pbXBsLmdldCgpKTsg
fQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1lJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gdWlkKCkgPT0gb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKaW5kZXggMzA3NGM3MmUxMDcwMTMzYjk3YjAzYjFkZmY0
YTQzZGUxMzJmYzBhNi4uZWQ1MWQ2NDgyZWQ3OTBhYzEzZmIxMWEyODY5MjkyMDkxY2E4YjdhZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTEw
NCwxNCArMTA0LDE0IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAKICAgICBBdG9taWNTdHJpbmdJ
bXBsKiBwdWJsaWNOYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmlz
VW5pcXVlKCkgPyBudWxscHRyIDogbV9pbXBsOworICAgICAgICByZXR1cm4gKCFtX2ltcGwgfHwg
bV9pbXBsLT5pc1VuaXF1ZSgpKSA/IG51bGxwdHIgOiBtX2ltcGw7CiAgICAgfQogCiAgICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5kZXggPSBVSU5UX01BWDsKIAogICAgIHVpbnQzMl90
IGFzSW5kZXgoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbCA/IHRvVUludDMyRnJvbVN0
cmluZ0ltcGwobV9pbXBsKSA6IE5vdEFuSW5kZXg7CisgICAgICAgIHJldHVybiAobV9pbXBsICYm
ICFtX2ltcGwtPmlzVW5pcXVlKCkpID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDog
Tm90QW5JbmRleDsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNw
cAppbmRleCA0ZDlkMGIyN2U0ZDBjOGM5MWY5ZmViNDVhMWQ1NGU1OTVkMzNkNTE5Li44ZDI5MTE5
ZWJjNGVkOWE2YTQ0ZTA2Mzc2OTRiYzAzZDI0MDZjZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTEwMywyNSArMTAzLDI1IEBAIGJv
b2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNl
bGwsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2
b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsKICAgICBpZiAo
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7Ci0gICAgQmFzZTo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CisgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0OjpnZXRQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBSZWdF
eHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKG1vZGUpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKLSAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0UHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCi12b2lkIFJl
Z0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCit2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQog
ewogICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQogICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKLSAg
ICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOworICAgIEJhc2U6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIHN0YXRpYyBib29sIHJlamVjdChF
eGVjU3RhdGUqIGV4ZWMsIGJvb2wgdGhyb3dFeGNlcHRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IDdj
NGI3NTA5NDViYmU4NWQxNjg1ZjVjNzU3OTE2OGM4ZjE0YmUxMjMuLmM1OTI2MjFhNzRlYTIzOTZk
MjQ1YmUwMWY5MjYwNjE3NTJmOGU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC04Miw5ICs4Miw5IEBAIGNsYXNzIFJlZ0V4cE9iamVjdCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBlKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJv
dG90eXBlLmNwcAppbmRleCA1NzNhY2ZhNWNkNzY0YjA5ZWU3NTQzYjM0N2I0OWE1MTExZTcwNTM3
Li44ZWE2MTA0OGQ3NDk3ZWFjMDVjOTExMWJjMTI2ODNiNmNmODI0OWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsK
IAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2
YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5h
bWUsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5kZXggZjg4
ZWE3Y2Y5ODY4ZjY2OGI4YzJlODg4MTVmZjY1Y2YzOTkyN2I0OS4uNDk5NmRhMGVhNTMxM2ZkMmU2
MWU3MWE2ZWY0MzgzNTFmYWEzYmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2V0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCBzZXRQcm90b0Z1
bmNLZXlzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT52YWx1ZXMsIHNldFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgc2V0UHJvdG9GdW5j
RW50cmllcywgRG9udEVudW0sIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0s
IDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKIAogICAgIEdldHRlclNldHRl
ciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLnN0cmluZygpLCBzZXRQcm90b0Z1bmNTaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmlu
ZGV4IDUwMDFiY2M0ZTFiN2UzNzkzZWQyNmUxNDIwYTgwYTYwNDY4ZTEzYzYuLjc1NzAxNzQ3YTc0
YjhmNDAxMGYzZjBlYmI2MmJmNjU5MWIzYmVhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgU3Ry
aW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiB9CiAKLXZvaWQgU3RyaW5nT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBTdHJp
bmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3QpOwogICAgIGludCBzaXplID0gdGhp
c09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5sZW5ndGgoKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2
b2lkIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcyhtb2RlKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHJldHVybiBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlLCB0eXBlKTsKIH0KIAogU3RyaW5nT2JqZWN0KiBjb25zdHJ1Y3RTdHJpbmcoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHN0cmluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggMGNlYmZkZTdhZjU1ODE3
Nzk5NjMwMGM3YThiNzJlYTkwNzY1MzY0Ni4uMjE0YzI3YmRhMGFhMjMzNDM1OTgxMTZlYjc3YWIz
NzNkNjgwNTI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3Jh
cHBlck9iamVjdCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAzZmNiNDI2Y2RhMGQ1YmJh
YzMxNzBhOGJjYjQ2NjE3NWYyOWM3NDI1Li4xOGJhYTNlMWJiOGY2MjFmMjA0ZDNiMDNkODhlZDM3
MDJhMjIzMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKQEAgLTkzNSw3ICs5MzUsNyBAQCB2b2lkIFN0cnVjdHVyZTo6Y3JlYXRlUHJvcGVydHlNYXAo
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpJVExvY2tlciYsIFZNJiB2bSwgdW5zaQogICAgIHByb3Bl
cnR5VGFibGUoKS5zZXQodm0sIHRoaXMsIFByb3BlcnR5VGFibGU6OmNyZWF0ZSh2bSwgY2FwYWNp
dHkpKTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJl
KFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQordm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZN
JiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBt
b2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVh
cCk7CiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KHZtLCBkZWZlckdDKTsK
QEAgLTk0Nyw3ICs5NDcsOSBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21T
dHJ1Y3R1cmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydAogICAgIFByb3BlcnR5
VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHByb3BlcnR5VGFibGUoKS0+ZW5kKCk7CiAgICAgZm9yIChQ
cm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gcHJvcGVydHlUYWJsZSgpLT5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChoYXNOb25FbnVtZXJhYmxlUHJv
cGVydGllcygpIHx8ICEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSk7Ci0gICAgICAgIGlm
ICghaXRlci0+a2V5LT5pc1VuaXF1ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51
bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpIHsKKyAgICAgICAg
aWYgKCFpdGVyLT5rZXktPmlzUHJpdmF0ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250
RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpIHsKKyAgICAg
ICAgICAgIGlmICh0eXBlID09IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCAmJiBpdGVy
LT5rZXktPmlzVW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpZiAoa25vd25VbmlxdWUpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGRLbm93
blVuaXF1ZShpdGVyLT5rZXkpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA0ZDdlNWMxNDdmZmFjMzA1OTYyMmE5MDQ3MmUx
MmJlM2I3MTNmNzBhLi5jMTViYjJhNDkyZGVhMDMzMWNiYjBlNmQ2NjRlODc3MTVjYThkNzIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMzIzLDcgKzMy
Myw3IEBAIGNsYXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgY2FuQ2Fj
aGVHZW5lcmljUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0OwogICAgIGJvb2wgY2FuQWNj
ZXNzUHJvcGVydGllc1F1aWNrbHkoKSBjb25zdDsKIAotICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1l
c0Zyb21TdHJ1Y3R1cmUoVk0mLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CisgICAgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShWTSYsIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5cGUpOwogCiAgICAgSlNTdHJp
bmcqIG9iamVjdFRvU3RyaW5nVmFsdWUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAppbmRleCA5OWNlNjg2Mjc0ZmQ3
NzM5MjhkZGQ1OWZmMWY5Y2FmNGVlYmUyMTFlLi4xOGU3MjgyYjQ3YjhjMTc0NWE3MmQ5ZmU5ZDU1
OGQ2NjViMWNjNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBACiB9CiAKICNkZWZpbmUgSU5J
VElBTElaRV9XRUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSMjU3ltYm9sLmltcGwoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KTsKIAogdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
eW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5k
ZXggMjY2Yjk3ZTRjODg2NjdiZjE0NjBlN2I5MWJiMDUxYzRiYTUzODk3Yi4uMmUxODNlM2NiYWQ4
ZmYxNzYwMzgxYTlhZjljM2RkNWU0ZDI3MjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
QEAgLTI3MywxNCArMjczLDE0IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICBTVFJJTkdf
U1RBVFNfQUREXzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwogICAgIH0KIAotICAgIGVu
dW0gQ3JlYXRlRW1wdHlVbmlxdWVUYWcgeyBDcmVhdGVFbXB0eVVuaXF1ZSB9OwotICAgIFN0cmlu
Z0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWVUYWcpCisgICAgZW51bSBDcmVhdGVVbmlxdWVFbXB0eVRh
ZyB7IENyZWF0ZVVuaXF1ZUVtcHR5IH07CisgICAgU3RyaW5nSW1wbChDcmVhdGVVbmlxdWVFbXB0
eVRhZywgYm9vbCBpc1ByaXZhdGUpCiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5j
cmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgIC8vIFdlIGV4cGVjdCBtX2xl
bmd0aCB0byBiZSBpbml0aWFsaXplZCB0byAwIGFzIHdlIHVzZSBpdAogICAgICAgICAvLyB0byBy
ZXByZXNlbnQgYSBudWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgogICAgICAgICAsIG1fZGF0YTgocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAgICwgbV9oYXNo
QW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVm
ZmVySW50ZXJuYWwpKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclVu
aXF1ZShzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsIHwgKGlzUHJpdmF0ZSA/
IHNfaGFzaEZsYWdJc1ByaXZhdGUgOiAwKSkpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRh
OCk7CiAKQEAgLTM4MCw3ICszODAsMTIgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pcXVlRW1wdHkoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVu
aXF1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZVVu
aXF1ZUVtcHR5LCBmYWxzZSkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlxdWVQcml2YXRlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlVW5pcXVlRW1wdHksIHRydWUpKTsKICAg
ICB9CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBj
cmVhdGVVbmlxdWUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApOwpAQCAtMzk1LDYgKzQwMCw3
IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXM4Qml0KCkg
eyByZXR1cm4gc19oYXNoRmxhZzhCaXRCdWZmZXI7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZmxh
Z0lzQXRvbWljKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzQXRvbWljOyB9CiAgICAgc3RhdGljIHVu
c2lnbmVkIGZsYWdJc1VuaXF1ZSgpIHsgcmV0dXJuIHNfaGFzaEZsYWdJc1VuaXF1ZTsgfQorICAg
IHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNQcml2YXRlKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzUHJp
dmF0ZTsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+CkBAIC00NTYsNiArNDYyLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBib29sIGlz
VW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNVbmlx
dWU7IH0KIAorICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxh
Z3MgJiBzX2hhc2hGbGFnSXNQcml2YXRlOyB9CisKICAgICBib29sIGlzQXRvbWljKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNBdG9taWM7IH0KICAgICB2b2lk
IHNldElzQXRvbWljKGJvb2wgaXNBdG9taWMpCiAgICAgewpAQCAtNzc4LDExICs3ODYsMTIgQEAg
Y2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRG
bGFnSXNTdGF0aWNTdHJpbmcgPSAweDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVm
Q291bnRJbmNyZW1lbnQgPSAweDI7IC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlZiAvIGRlcmVmIHdp
dGhvdXQgZGlzdHVyYmluZyB0aGUgc3RhdGljIHN0cmluZyBmbGFnLgogCi0gICAgLy8gVGhlIGJv
dHRvbSA3IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX2ZsYWdDb3VudCA9IDc7CisgICAgLy8gVGhlIGJvdHRvbSA4IGJpdHMgaW4gdGhlIGhh
c2ggYXJlIGZsYWdzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDg7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFnQ291
bnQpIC0gMTsKICAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJpbmdIYXNoZXI6
OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zvcl9TdHJpbmdJ
bXBsX2ZsYWdzKTsKIAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnSXNQcml2
YXRlID0gMXUgPDwgNzsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0lzVW5p
cXVlID0gMXUgPDwgNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZzhCaXRC
dWZmZXIgPSAxdSA8PCA1OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnSXNB
dG9taWMgPSAxdSA8PCA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmYzdkYThlMTllYTY2M2E1
MzJkZTNlNmEzODA1ZGY1N2NkZTE4ZTllLi5iMDRlZTBlYzUxZTdhMzgwNGNkZDZlOGM4ZWIxMWI2
ZDIwMDliYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzMzMiw3ICszMzMyLDcgQEAgX19a
TjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxs
RVBOU185RXhlY1N0YXRlRU5TXzEKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRm
aW5pc2hDcmVhdGlvbkVSTlNfMlZNRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qx
NmdldENvbnN0cnVjdERhdGFFUE5TXzZKU0NlbGxFUk5TXzEzQ29uc3RydWN0RGF0YUUKIF9fWk4z
SlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzhKU09i
amVjdEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMTJQcm9wZXJ0eVNsb3RF
Ci1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQ
TlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1
RW51bWVyYXRpb25Nb2RlRQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOWdldE93
blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0
eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUVOU18xNUVudW1lcmF0aW9uVHlwZUUKIF9f
Wk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNT
dGF0ZUVOU18xMlByb3BlcnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RF
CiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIK
aW5kZXggMTZiOWNkNTE3NjBjZjRlNTJlYmQyM2I3OWQyZjM1MzMzMDY3ZTJhYi4uNTY3MDcxZTM3
OWQ3ZjQxMWViYWJjODhkNmViYjYwM2JiYzFiMzc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0x
NTMxMiw3ICsxNTMxMiw2IEBAIF9fWk43V2ViQ29yZTI2anNIVE1MTWV0YUVsZW1lbnRIdHRwRXF1
aXZFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvCiBfX1pON1dlYkNvcmUx
N0pTVGltZVJhbmdlc093bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VOM0pTQzZIYW5k
bGVJTlMxXzdVbmtub3duRUVFUHZSTlMxXzExU2xvdFZpc2l0b3JFCiBfX1pON1dlYkNvcmUxN0pT
VGltZVJhbmdlc093bmVyOGZpbmFsaXplRU4zSlNDNkhhbmRsZUlOUzFfN1Vua25vd25FRUVQdgog
X19aTjdXZWJDb3JlMTJKU1RpbWVSYW5nZXM3ZGVzdHJveUVQTjNKU0M2SlNDZWxsRQotX19aTjdX
ZWJDb3JlMTBKU05vZGVMaXN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQ
TlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9u
TW9kZUUKIF9fWkwxOWtDTVRpbWVaZXJvRnVuY3Rpb252CiBfX1pON1dlYkNvcmUxNkhUTUxNZWRp
YUVsZW1lbnQzNWNoYW5nZU5ldHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlRXYKIF9fWk5LN1dl
YkNvcmUzME1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjE1bWluVGltZVNlZWthYmxlRXYK
QEAgLTE3OTU5LDcgKzE3OTU4LDYgQEAgX19aTjdXZWJDb3JlMTFKU0RPTVBsdWdpbjExaW5kZXhH
ZXR0ZXJFUE4zSlNDOUV4ZWNTdGF0ZUVOUzFfN0pTVmFsdWVFagogX19aTjdXZWJDb3JlOURPTVBs
dWdpbjRpdGVtRWoKIF9fWk43V2ViQ29yZTE3anNET01NaW1lVHlwZVR5cGVFUE4zSlNDOUV4ZWNT
dGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydHlOYW1lRQogX19aTks3V2ViQ29yZTExRE9N
TWltZVR5cGU0dHlwZUV2Ci1fX1pON1dlYkNvcmU5SlNTdG9yYWdlMTlnZXRPd25Qcm9wZXJ0eU5h
bWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk5LN1dlYkNvcmUxOFJlbmRlclRleHRGcmFn
bWVudDE0aXNUZXh0RnJhZ21lbnRFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNWhhbmRs
ZVRleHROb2RlRmlyc3RMZXR0ZXJFUE5TXzE4UmVuZGVyVGV4dEZyYWdtZW50RQogX19aTjNXVEYx
MlN0cmluZ0FwcGVuZElOU182U3RyaW5nRVBLY0U3d3JpdGVUb0VQdApAQCAtMTgyMjgsOCArMTgy
MjYsNiBAQCBfX1pOSzdXZWJDb3JlMjNSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDI5Y29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxXaWR0aHNFUk5TXzEwTGF5bwogX19aTks3V2ViQ29yZTExUmVuZGVyVGhl
bWUyMGZpbGVMaXN0RGVmYXVsdExhYmVsRWIKIF9fWk43V2ViQ29yZTI5ZmlsZUJ1dHRvbk5vRmls
ZVNlbGVjdGVkTGFiZWxFdgogX19aTks3V2ViQ29yZTIzUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wz
NnJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbkV2Ci1fX1pON1dlYkNvcmUxMUpT
RE9NV2luZG93MTZnZXRQcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3Rh
dGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKLV9fWk43
V2ViQ29yZTExSlNET01XaW5kb3cxOWdldE93blByb3BlcnR5TmFtZXNFUE4zSlNDOEpTT2JqZWN0
RVBOUzFfOUV4ZWNTdGF0ZUVSTlMxXzE3UHJvcGVydHlOYW1lQXJyYXlFTlMxXzE1RW51bWVyYXRp
b25Nb2RlRQogX19aTjdXZWJDb3JlOURPTVdpbmRvdzE4Y2FuU2hvd01vZGFsRGlhbG9nRVBLTlNf
NUZyYW1lRQogX19aTks3V2ViQ29yZTZDaHJvbWUxMWNhblJ1bk1vZGFsRXYKIF9fWk43V2ViQ29y
ZTMxanNYTUxIdHRwUmVxdWVzdFdpdGhDcmVkZW50aWFsc0VQTjNKU0M5RXhlY1N0YXRlRU5TMF83
SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCkBAIC0xODI3Miw3ICsxODI2OCw2IEBAIF9fWk43
V2ViQ29yZTIyanNET01XaW5kb3dPbm1vdXNlZG93bkVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNW
YWx1ZUVOUzBfMTJQcm9wZXJ0CiBfX1pON1dlYkNvcmUyNGpzRE9NV2luZG93T25jb250ZXh0bWVu
dUVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCiBfX1pO
SzdXZWJDb3JlMTNGaWxlSW5wdXRUeXBlMjBzYXZlRm9ybUNvbnRyb2xTdGF0ZUV2CiBfX1pON1dl
YkNvcmUyM1JlbmRlckZpbGVVcGxvYWRDb250cm9sRDBFdgotX19aTjdXZWJDb3JlMTBKU0xvY2F0
aW9uMTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVF
Uk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlND
MThnZXRTdGF0aWNWYWx1ZVNsb3RJTjdXZWJDb3JlMTVKU0RPTVN0cmluZ0xpc3RFTlMxXzEySlNE
T01XcmFwcGVyRUVFYlBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hUYWJsZUVQVF9OU18xMlByb3Bl
cnR5TmFtZUVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pON1dlYkNvcmUyNEpTRE9NU3RyaW5nTGlz
dFByb3RvdHlwZTE4Z2V0T3duUHJvcGVydHlTbG90RVBOM0pTQzZKU0NlbGxFUE5TMV85RXhlY1N0
YXRlRU5TMV8xMlByb3BlcnR5TmFtZUVSTlMxXzEyUHJvcGVydHlTbG90RQogX19aTjdXZWJDb3Jl
MTFTVkdGb250RGF0YUMxRVBOU18xOFNWR0ZvbnRGYWNlRWxlbWVudEUKQEAgLTE4NDUzLDcgKzE4
NDQ4LDYgQEAgX19aTjdXZWJDb3JlMTlIVE1MUHJvZ3Jlc3NFbGVtZW50NmF0dGFjaEVSS05TXzRO
b2RlMTNBdHRhY2hDb250ZXh0RQogX19aTks3V2ViQ29yZTE0UmVuZGVyVGhlbWVNYWMyMmFkanVz
dFByb2dyZXNzQmFyU3R5bGVFUE5TXzEzU3R5bGVSZXNvbHZlckVQTlNfMTFSZW5kZXJTdHlsZUVQ
TlNfN0VsZW1lbnRFCiBfX1pON1dlYkNvcmUyMkNTU0NhbGNCaW5hcnlPcGVyYXRpb25EMEV2CiBf
X1pON1dlYkNvcmUyMUNTU0NhbGNQcmltaXRpdmVWYWx1ZUQwRXYKLV9fWk43V2ViQ29yZTE1SlNE
T01TdHJpbmdMaXN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlF
eGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUK
IF9fWk43V2ViQ29yZUwyM2dldEpTRE9NU3RyaW5nTGlzdFRhYmxlRVBOM0pTQzlFeGVjU3RhdGVF
CiBfX1pON1dlYkNvcmVMMjJnZXRKU01lc3NhZ2VFdmVudFRhYmxlRVBOM0pTQzlFeGVjU3RhdGVF
CiBfX1pON1dlYkNvcmVMMzFnZXRKU01lc3NhZ2VFdmVudFByb3RvdHlwZVRhYmxlRVBOM0pTQzlF
eGVjU3RhdGVFCkBAIC0yNzIxMCw3ICsyNzIwNCw2IEBAIF9fWlpON1dlYkNvcmVMMTlzZWxlY3Rv
cnNGcm9tU291cmNlRVBLTlNfMTdDU1NSdWxlU291cmNlRGF0YUVSS04zV1RGNlN0cmluZ0VFN2Nv
CiBfX1pHVlpON1dlYkNvcmVMMTlzZWxlY3RvcnNGcm9tU291cmNlRVBLTlNfMTdDU1NSdWxlU291
cmNlRGF0YUVSS04zV1RGNlN0cmluZ0VFN2NvbW1lbnQuYgogX19aWk43V2ViQ29yZTIySW5zcGVj
dG9yVGltZWxpbmVBZ2VudDI0aW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzE1SW5zcGVjdG9yT2JqZWN0RUVFUktOUzFfNlN0cmluZ0VTN19FN3Byb2dyYW0KIF9f
WkdWWk43V2ViQ29yZTIySW5zcGVjdG9yVGltZWxpbmVBZ2VudDI0aW5uZXJBZGRSZWNvcmRUb1Rp
bWVsaW5lRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1SW5zcGVjdG9yT2JqZWN0RUVFUktOUzFfNlN0
cmluZ0VTN19FN3Byb2dyYW0uYgotX19aWk43V2ViQ29yZTIxSlNDU1NTdHlsZURlY2xhcmF0aW9u
MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5T
MV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUVFMTlwcm9wZXJ0eUlk
ZW50aWZpZXJzCiBfX1paTjdXZWJDb3JlMjNKU0luc3BlY3RvckZyb250ZW5kSG9zdDhwbGF0Zm9y
bUVQTjNKU0M5RXhlY1N0YXRlRUU4cGxhdGZvcm0KIF9fWkdWWk43V2ViQ29yZTIzSlNJbnNwZWN0
b3JGcm9udGVuZEhvc3Q4cGxhdGZvcm1FUE4zSlNDOUV4ZWNTdGF0ZUVFOHBsYXRmb3JtLmIKIF9f
WlpON1dlYkNvcmUyM0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0NHBvcnRFUE4zSlNDOUV4ZWNTdGF0
ZUVFNHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25h
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKaW5kZXgg
ZGY0ZGM3ODYyZDJkYWFhOWYyYjY3NmQxZWQzMTcyYTJmM2VhZmQyOS4uM2NjOWY1NDk3NDJkZjQz
ZjkwZTJlZTJjMTExYTQ4NDBhYjMwOGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Q
cm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtYXApIGMK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKICAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJh
dGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5h
bWVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5n
KCk7CiAgICAgICAgIGlmIChzdHJpbmdLZXkuaXNFbXB0eSgpKQpAQCAtODgsNyArODgsNyBAQCBi
b29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMoVmVjdG9yPFN0cmluZz4mIG5hbWVz
KSBjb25zdAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsK
IAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMs
IEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVB
cnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHBy
b3BlcnR5TmFtZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0
LT5zdHJpbmcoKTsKICAgICAgICAgaWYgKCFzdHJpbmdLZXkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKaW5kZXggODk2Yjk5Y2U5MWI3MmM2Y2ZlODAyYjE3Y2JkMDcwZjI0NWQ0YTQ3ZC4u
YTU1NTQ1ZmM1M2ZiZDQ2OGU5M2FjMWU5NzY0OWU5YzI3YjBiNDQ4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwCkBAIC0zODIsNyArMzgyLDcgQEAgSlNWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb246
OmdldFByb3BlcnR5Q1NTVmFsdWUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihjc3NWYWx1ZSkpOwogfQogCi12b2lkIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5
cGUgdHlwZSkKIHsKICAgICBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBK
U0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGUKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRp
ZXM7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQocHJvcGVydHlJZGVudGlmaWVyc1tp
XSk7CiAKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
U3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3Ry
aW5nTWFwQ3VzdG9tLmNwcAppbmRleCAzYWZhYWUyMzQwNzc0OWFjN2E5ZjI3MjBmM2Y4OTdmMGJl
NTdjZGU3Li4wY2RjMDY1YTA0NDIxNmFjMmUyMTg4ZDEyZDgyMzIyYmQ4ZDFkOWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwgRW51bWVyYXRp
b25UeXBlIHR5cGUpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNET01TdHJpbmdNYXAqPihvYmplY3QpOwogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwpAQCAt
NTUsNyArNTUsNyBAQCB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXIoZXhlYywgbmFtZXNbaV0pKTsKIAotICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsK
IH0KIAogYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDQ4ZjgxODQ1MjI3Njgy
MGFhYWUxZmE0ODNjZjQ3ZTQ4NDE2MGI3NTIuLmUyYjVhNWMyNzdhMzYzMjI1NDBkMDJlMzY2N2M2
MjA3MDUxZGI5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAKQEAgLTM4NCw0MCArMzg0LDQwIEBAIHVpbnQzMl90IEpTRE9NV2luZG93
OjpnZXRFbnVtZXJhYmxlTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkK
ICAgICByZXR1cm4gQmFzZTo6Z2V0RW51bWVyYWJsZUxlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsK
IH0KIAotdm9pZCBKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNET01XaW5kb3c6OmdldFN0cnVjdHVy
ZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0
aW9uVHlwZSB0eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
RE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51
bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmlt
cGwoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6Omdl
dFN0cnVjdHVyZVByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3c6OmdldEdlbmVyaWNQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0RPTVdpbmRvdzo6
Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUs
IEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5k
b3cgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNP
YmplY3QtPmltcGwoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBC
YXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlLCB0eXBlKTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNET01XaW5kb3c6Omdl
dFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0
aW9uVHlwZSB0eXBlKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
RE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51
bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmlt
cGwoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldFByb3BlcnR5
TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAK
LXZvaWQgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlLCBFbnVtZXJhdGlvblR5cGUgdHlwZSkKIHsK
ICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVj
dCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVz
IGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUsIHR5cGUpOwogfQogCiBib29sIEpTRE9N
V2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggODI1ODI3
MDA5ZjljN2Y4ZGE4YmE5NjM2Nzc4OTE2MjZlMDNkYWZkYy4uOGM5Mjg0NGQxNTJjNDhhMzBmMGI3
M2EzMmJjNGYyMTU3MzU0NTk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hpc3RvcnlDdXN0b20uY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBib29sIEpTSGlzdG9yeTo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcgogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTSGlzdG9y
eTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSwg
RW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTSGlzdG9yeSo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgaGlzdG9yeSBv
YmplY3QgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlm
ICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFt
ZSgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTsK
IH0KIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnN0YXRlKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXgg
ZjE1OGEyZjRmODQ3OWNhYmEyMzJjNmUwMjgyYTBjMGFlMWYyNjg0MS4uYzg3ZTNiNmJjNjY1ZWRh
ZGU4Y2VlZjJhMTdjYTdmMzQyM2M3OTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTExNiwxMyArMTE2LDEzIEBAIGJvb2wgSlNM
b2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBwCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi12b2lkIEpTTG9jYXRpb246Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lk
IEpTTG9jYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewogICAgIEpTTG9jYXRpb24qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0
aGUgbG9jYXRpb24gb2JqZWN0IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9y
aWdpbi4KICAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0
LT5pbXBsKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJh
c2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSwgdHlwZSk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcApp
bmRleCA5NDJjNGRmYjZlN2U2OGY4OWEwY2Y3OWQ1NDVlMzE5MTQ2YmMyNzM3Li4yNzM5YTU4Njk1
ZDE2MzMzNzcyNDQwMmE2YTlmNWRiYzMwMTdiYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBKU1N0
b3JhZ2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHIKICAgICByZXR1cm4gZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAotdm9pZCBKU1N0b3JhZ2U6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2
b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTU3RvcmFnZSo+KG9iamVjdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwg
dHlwZSk7CiB9CiAKIGJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCBkY2E1NjAzZjljMzk5NjE4MzM4YWY3ZTBkYjMxYWRmMTBjYjZiNmY5
Li4yNTA2NTljNmFmYTdjYjYzZGFiNmRjNDMwNTUxZDcwZTQ4YWNhZmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTEyNDgsNyArMTI0OCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXpl
cjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNr
LnJlbW92ZUxhc3QoKTsKIAogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVu
ZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXkt
Pm1ldGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwgbV9leGVj
LCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
ICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBA
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFs
dWUgaW4pCiAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3Qp
OwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAg
IHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAg
ICAgICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGlu
T2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcywgRW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTEzODEsNyArMTM4MSw3IEBAIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAg
ICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsK
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihvYmplY3Qp
IHx8IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihvYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwog
ICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgICAgIGdv
dG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjk4ZjMzZDFjNDk1YzMwZThiMTVm
YThhNGY3MzAxY2IxMmRjYTRlNS4uODU3Mzk2OGIwMzkwYWM4NWI0NmI1NjRkY2ZkMmY4NGMyNDc0
ZTYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KQEAgLTk1MywxNiArOTUzLDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAg
ICAgIyBDdXN0b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2luZG93
CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4i
KTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5l
cmljUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0
aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
LCBKU0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51bWVyYXRpb25UeXBlOjpFeGNsdWRlU3lt
Ym9sKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lk
IGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcywgSlNDOjpFbnVtZXJhdGlvblR5cGUgPSBKU0M6OkVudW1l
cmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywgSlNDOjpFbnVt
ZXJhdGlvblR5cGUgPSBKU0M6OkVudW1lcmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0RW51
bWVyYWJsZUxlbmd0aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwogICAg
ICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0g
MTsKICAgICB9CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQ
cm9wZXJ0eSJ9IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzLCBKU0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51bWVyYXRpb25UeXBlOjpF
eGNsdWRlU3ltYm9sKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsgICAgICAgCiAgICAgfQogCkBAIC0yNjg0LDEzICsy
Njg0LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRp
bmRleGVkR2V0dGVyRnVuY3Rpb24gJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lk
ICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0
aCgpOyBpIDwgY291bnQ7ICsraSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCB0eXBlKTtcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAppbmRl
eCAxZDU5MTg5YjQ3MjA1MTE3MTc5YzYzOWE2MDViMzA4NmVkZGJmNmVmLi5mOTk1ZjRkY2NlNGQ0
ZWFmYzVjODdjNmQ5YzE1NzkxNTc4Mzc2YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKQEAgLTIz
NSwxMyArMjM1LDEzIEBAIHZvaWQgSlNGbG9hdDY0QXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKCiAgICAgQmFzZTo6cHV0QnlJ
bmRleChjZWxsLCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotdm9pZCBK
U0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSkKK3ZvaWQgSlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUsIEVudW1lcmF0aW9uVHlwZSB0eXBlKQogewog
ICAgIEpTRmxvYXQ2NEFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4o
b2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PEZsb2F0NjRBcnJh
eSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAg
IEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSwgdHlwZSk7CiB9CiAKIEpTVmFsdWUgSlNGbG9hdDY0QXJyYXk6OmdldENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRB
cnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2
NEFycmF5LmgKaW5kZXggZmYzODhjYTAxNzYwYzEyYjk1NzUwMzlmZWM3NjQzMjkzZmU4NGUzNC4u
N2Y4ZTRkNWY4NmFkZjQ3MGUwYjM4NGUyY2Q4NmE0YzYwOTFkOWRkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5
LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSlNGbG9hdDY0QXJyYXkgOiBwdWJsaWMgSlNBcnJh
eUJ1ZmZlclZpZXcgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jiwg
SlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEpT
Qzo6RW51bWVyYXRpb25UeXBlID0gSlNDOjpFbnVtZXJhdGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wp
OwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgRmxvYXQ2NEFycmF5KiBpbXBsKCkgY29uc3QK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAwNjdmODM5OTM1MjM1MzAwNTc4
MTEwNzFkMDczZjI1YWI3OGJhNjdkLi5hYjFlM2RhYzc5ODIyYjJhMTc0ODZmOGZmZmY1MWE1N2I1
MTVkOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTIxOCwxMyArMjE4LDEzIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCosIEVuY29kZWRKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgZG9tT2JqZWN0LT5nbG9i
YWxPYmplY3QoKSkpOwogfQogCi12b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU1Rlc3RFdmVu
dFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50
OyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywg
aSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7CiB9CiAKIEpTVmFsdWUgSlNU
ZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggZWZmMWE2MmVkNWFjYzY4YWVl
ODFhZjBmNzBjZTQ2ZDUxZmEyNjgzMy4uMjE3ODc4MmQxMWE0M2U2YjNmZjNjMjhkOTk4Njc1YWVi
ZWY5OGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3Mg
SlNUZXN0RXZlbnRUYXJnZXQgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICAgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
IH0KIAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRp
b25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBKU0M6OkVudW1lcmF0aW9uVHlwZSA9IEpTQzo6RW51
bWVyYXRpb25UeXBlOjpFeGNsdWRlU3ltYm9sKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmluZGV4IDkwMDEwMTM4YWI0NmNlN2Q5NzUzY2Jm
ZjI5NWU1M2NkZmFjZDBiNWEuLjE4YjA2YTEwZWFmMmVkOTA5ZDkwN2E3ZTk0ODcwMjA2Mzg5YTE4
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3
IEBAIGJvb2wgX05QTl9FbnVtZXJhdGUoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyKiog
aWRlbnRpZmllciwgdWludDMyX3QqIGNvdW50CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwogCi0g
ICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+aW1w
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAg
ICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1lcmF0aW9u
VHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwogICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgcmVhbGx5IGNhbGwgTlBOX01lbUFsbG9jIGJ1dCB0aGF0J3MgaW4gV2ViS2l0CiAg
ICAgICAgIE5QSWRlbnRpZmllciogaWRlbnRpZmllcnMgPSBzdGF0aWNfY2FzdDxOUElkZW50aWZp
ZXIqPihtYWxsb2Moc2l6ZW9mKE5QSWRlbnRpZmllcikgKiBzaXplKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggMDIyMjE5MDVjNDBlNmVkZmVkNTc5OTllYjIz
NWY1ODkxYTdhMmUwOC4uNTE3MjQ0YjIyMDRmNGMxYjU3MjcxYjFiYzc3ZmY2ZTQ0NzJkZjU5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtNjgsNyArNjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIodGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpKTsKIH0KIAotdm9pZCBSdW50aW1lQXJyYXk6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2
b2lkIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSwgRW51bWVyYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgUnVudGltZUFycmF5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KG9iamVjdCk7CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCk7CkBAIC03OCw3ICs3OCw3IEBAIHZv
aWQgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMobW9kZSkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpOwogCi0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSwgdHlwZSk7
CiB9CiAKIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCBiNmQx
ZjY4OTEzN2MxNGI2MzcyMTM4YmFkYWI0MzAwMTBiNDE2YmY4Li5jMDI3ODJjOWY3NTkwMjY2ZDU0
NGQ3NWE1NGMyYzQ0MjljNzJlNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9hcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkg
ewogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUsIEVu
dW1lcmF0aW9uVHlwZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggOTFmMDdiYzUzN2NmMGYz
ZjIwMzBmNWVkNGZlZWM2MzI3MjRlYjIzOC4uOTY4NzhmZmY0Y2QxNmQ5OGY2NmNkNTQzMzc5NGRj
Y2UzMDVhM2E0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBA
IC0yNTQsNyArMjU0LDcgQEAgQ29uc3RydWN0VHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0RGF0YSYgY29uc3QKICAgICByZXR1cm4gQ29u
c3RydWN0VHlwZUhvc3Q7CiB9CiAKLXZvaWQgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUpCit2b2lkIFJ1bnRpbWVPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlv
blR5cGUpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1l
T2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggNGQ5Nzc3YTk5M2E5ZjNlYWYz
ZjgzOGNlMjI0NjdjNjQ0YjEwNDljMi4uYzRjOWQzZmNjYzYzNzJlMmEzMjg1OWUwNWMxN2E0YzUw
NmRlOGRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTUyLDcg
KzUyLDcgQEAgY2xhc3MgUnVudGltZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVj
dCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSwgRW51bWVyYXRpb25UeXBl
KTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KaW5kZXggY2FkZTllMWU5ZmRmN2I2ZjY0MTA4NWRiNDcwM2FiODQzMzg1M2E2ZC4uNjZhOGUw
NzI0Njg3NWJlNzRkZjQzMTAzZDhhM2E5MjNmYzI5ODJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQpAQCAtMTIzMSw3ICsxMjMxLDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OmVudW1lcmF0ZSh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90JiByZXN1bHREYXQK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVy
dHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsIEVudW1l
cmF0aW9uVHlwZTo6RXhjbHVkZVN5bWJvbCk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXkqPiBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE9iamVjdC5jcHAKaW5kZXggMWNlZDI5M2ViOGNjYzc3ZDM3MDliOWJkMzk4MDhjYzM5ODEy
NzM3Ny4uZTE4ODE5OGExODYxYmRkODhjZDk2OWVkZGY5YTUzZGFlZWIyMzgyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIGJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lQXJyYXksIEVudW1lcmF0aW9uTW9kZSkKK3ZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlLCBFbnVtZXJhdGlvblR5
cGUpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU05QT2JqZWN0Kj4o
b2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuaAppbmRleCA3OWRhZjViOTBmNzA1Y2UzMGE2ZmM5NWY5NGViMjgwZjBk
ZmJiZGZhLi5kZGQ3MTM4NWM3YmIyZDBhYWNkM2YzNDg1MmY3MGI2YTVmYzZkNWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgSlNOUE9iamVjdCA6IHB1YmxpYyBKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpF
eGVjU3RhdGUqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKIAotICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSwgSlNDOjpFbnVt
ZXJhdGlvblR5cGUpOwogCiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgcHJvcGVydHlH
ZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIG1l
dGhvZEdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXggMGQxNjY3
NGU1YzE1ZjQ3MTcxODU0M2QyNWNhNGYzMTA5YzA1MmQyMi4uZWYzNWI5OGYxYmU1YzMzMjkyYTA2
ZTNiZWNkZGI3ZmJmMWVlMjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtMjQwLDcgKzI0MCw3
IEBAIGJvb2wgTlBKU09iamVjdDo6ZW51bWVyYXRlKE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXJz
LCB1aW50MzJfdCogaWRlbnRpZmllckNvdW50CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG1fanNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVjdC5nZXQoKSwg
ZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgbV9q
c09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgp
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLCBFbnVtZXJh
dGlvblR5cGU6OkV4Y2x1ZGVTeW1ib2wpOwogCiAgICAgTlBJZGVudGlmaWVyKiBuYW1lSWRlbnRp
ZmllcnMgPSBucG5NZW1OZXdBcnJheTxOUElkZW50aWZpZXI+KHByb3BlcnR5TmFtZXMuc2l6ZSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIgYi9Tb3Vy
Y2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgppbmRleCBhZTYyNWY3YzE2YzZiYWY1NDA3NDlh
Y2ViNDY1ZjI3MjM3NWY5YzViLi4wNTRhYmI0NmNjYzRmZWY0YzA0NmU0NGI1ZGU2YzUzOGM4Mjhj
NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgpAQCAtOTQyNCw3ICs5NDI0LDYgQEAgX19a
TjNXVEY2VmVjdG9ySU42V2ViS2l0MTZOUElkZW50aWZpZXJEYXRhRUxtMEVOU18xNUNyYXNoT25P
dmVyZmxvd0VFNnNocmlua0VtCiBfX1pON0NvcmVJUEMxMEFyZ3VtZW50czJJUmJSTjNXVEY2VmVj
dG9ySU42V2ViS2l0MTZOUElkZW50aWZpZXJEYXRhRUxtMEVOUzJfMTVDcmFzaE9uT3ZlcmZsb3dF
RUVFNmRlY29kZUVSTlNfMTVBcmd1bWVudERlY29kZXJFUlM5XwogX19aTjdDb3JlSVBDMTlWZWN0
b3JBcmd1bWVudENvZGVySUxiMEVONldlYktpdDE2TlBJZGVudGlmaWVyRGF0YUVFNmRlY29kZUVS
TlNfMTVBcmd1bWVudERlY29kZXJFUk4zV1RGNlZlY3RvcklTMl9MbTBFTlM2XzE1Q3Jhc2hPbk92
ZXJmbG93RUVFCiBfX1pOM1dURjZWZWN0b3JJTjZXZWJLaXQxNk5QSWRlbnRpZmllckRhdGFFTG0w
RU5TXzE1Q3Jhc2hPbk92ZXJmbG93RUUxNHNocmlua0NhcGFjaXR5RW0KLV9fWk42V2ViS2l0MTBK
U05QT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVj
U3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9f
Wk42V2ViS2l0TDIwTlBOX0dldEludElkZW50aWZpZXJFaQogX19aTjZXZWJLaXRMMTNOUE5fSGFz
TWV0aG9kRVA0X05QUFA4TlBPYmplY3RQdgogX19aTjZXZWJLaXQxME5QSlNPYmplY3QxMk5QX0hh
c01ldGhvZEVQOE5QT2JqZWN0UHYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMTUyMDAwYmUxNTc3ZjY0Njk0NmE2NWI1ZDI0
NmE3ZmE4OGJlMjFiLi4zZTdiYTU0YzdmMmM4ZmU5ZTQ5MDRkZDVjYWM5ZmFhYWI5ZDlmZGE2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGpzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBqcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL29iamVjdC1nZXQtb3duLXByb3BlcnR5
LXN5bWJvbHMuanM6IEFkZGVkLgorICAgICAgICAoZm9ySW4pOgorICAgICAgICAqIGpzL3Njcmlw
dC10ZXN0cy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9z
Y3JpcHQtdGVzdHMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qczogQWRkZWQuCisgICAgICAgICog
anMvc2NyaXB0LXRlc3RzL3N5bWJvbC13aXRoLWpzb24uanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3N5bWJvbC1kZWZpbmUtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3N5bWJv
bC1zZWFsLWFuZC1mcmVlemUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1i
b2wtc2VhbC1hbmQtZnJlZXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3N5bWJvbC13aXRo
LWpzb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtd2l0aC1qc29u
Lmh0bWw6IEFkZGVkLgorCiAyMDE1LTAyLTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQVNTRVJUIHJlcGFpbnRDb250YWluZXItPmhhc0xheWVyKCkgaW4gV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50VXNpbmdDb250YWluZXIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAppbmRl
eCAxYjUxNjlmNjZjNjI5ZDY2NWJhZDQyNDJjNTkwNDNlNDc5MmNiYTdkLi5mZDE2ZDBhOWFmOWRj
OGIzYjg3YmFkOWY5ZjU1ZjM2NjIxYjU3ZGMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9P
YmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
anMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CkBAIC00MCw3ICs0MCw3
IEBAIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhkZWNvZGVVUkkpIGlzIFsnbGVuZ3Ro
JywgJ25hbWUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKGRlY29kZVVSSUNvbXBv
bmVudCkgaXMgWydsZW5ndGgnLCAnbmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFt
ZXMoZW5jb2RlVVJJKSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJv
cGVydHlOYW1lcyhlbmNvZGVVUklDb21wb25lbnQpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQotUEFT
UyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5l
UHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNF
eHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25h
bWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXQorUEFTUyBnZXRT
b3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVy
dGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywgJ2dl
dFByb3RvdHlwZU9mJywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdr
ZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScs
ICdzZWFsJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBl
KSBpcyBbJ19fZGVmaW5lR2V0dGVyX18nLCAnX19kZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdl
dHRlcl9fJywgJ19fbG9va3VwU2V0dGVyX18nLCAnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywg
J2hhc093blByb3BlcnR5JywgJ2lzUHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUn
LCAndG9Mb2NhbGVTdHJpbmcnLCAndG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoRnVuY3Rpb24pIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90
eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhGdW5jdGlvbi5wcm90b3R5cGUp
IGlzIFsnYXBwbHknLCAnYmluZCcsICdjYWxsJywgJ2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICdu
YW1lJywgJ3RvU3RyaW5nJ10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL29iamVjdC1nZXQt
b3duLXByb3BlcnR5LXN5bWJvbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvb2JqZWN0
LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM0OGJj
NGY3YWMxM2NmOTBlNmM5MDdiMWMyYzQ4NDNkMzAzMWFkZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdHMgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3ByaXZhdGUgbmFtZXMgZm9yIHBy
aXZpbGVnZWQgY29kZSBzaG91bGQgbm90IGJlIGV4cG9zZWQuCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eVN5bWJvbHMoZ2xvYmFsKS5sZW5ndGggaXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKG9iamVjdClbMF0gaXMgc3ltYm9sCitQQVNTIGZvckluKG9iamVjdCkubGVuZ3RoIGlz
IDAKK1BBU1MgT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGggaXMgMAorUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuaHRtbCBiL0xheW91dFRlc3RzL2pzL29i
amVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjFmMjU5YTIz
OWMxMWQ5NTFkZGI4ZDBlOGNlZDA2OTg5YzNkMjg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5odG1sCkBAIC0wLDAgKzEs
MTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9vYmpl
Y3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJv
cGVydHlOYW1lcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3du
UHJvcGVydHlOYW1lcy5qcwppbmRleCAxODExYjI2Nzk4NWUzM2FjOTg4MmExY2Q3ODg3MmRhODA2
ZTEyNGYyLi5lMTBlNzcxNTBlMDI2Y2VmNGIwNTc3ZjVjOGEwYWUwOWEwMDRjOWVlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9w
ZXJ0eU5hbWVzLmpzCkBAIC00OCw3ICs0OCw3IEBACiAgICAgImVuY29kZVVSSSI6ICJbJ2xlbmd0
aCcsICduYW1lJ10iLAogICAgICJlbmNvZGVVUklDb21wb25lbnQiOiAiWydsZW5ndGgnLCAnbmFt
ZSddIiwKIC8vIEJ1aWx0LWluIEVDTUEgb2JqZWN0cwotICAgICJPYmplY3QiOiAiWydjcmVhdGUn
LCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0UHJvdG90eXBl
T2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVu
Z3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXSIs
CisgICAgIk9iamVjdCI6ICJbJ2NyZWF0ZScsICdkZWZpbmVQcm9wZXJ0aWVzJywgJ2RlZmluZVBy
b3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCAnZ2V0T3duUHJv
cGVydHlOYW1lcycsICdnZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCAnZ2V0UHJvdG90eXBlT2YnLCAn
aXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywg
J25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXSIsCiAgICAg
Ik9iamVjdC5wcm90b3R5cGUiOiAiWydfX2RlZmluZUdldHRlcl9fJywgJ19fZGVmaW5lU2V0dGVy
X18nLCAnX19sb29rdXBHZXR0ZXJfXycsICdfX2xvb2t1cFNldHRlcl9fJywgJ19fcHJvdG9fXycs
ICdjb25zdHJ1Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3Bl
cnR5SXNFbnVtZXJhYmxlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2Yn
XSIsCiAgICAgIkZ1bmN0aW9uIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAog
ICAgICJGdW5jdGlvbi5wcm90b3R5cGUiOiAiWydhcHBseScsICdiaW5kJywgJ2NhbGwnLCAnY29u
c3RydWN0b3InLCAnbGVuZ3RoJywgJ25hbWUnLCAndG9TdHJpbmcnXSIsCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9s
cy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0
eS1zeW1ib2xzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YmRhNGFhNjFjNWMxNzgyMjcwYzMzNDBhMWYwNGM5
MDY5OTFmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
b2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcwpAQCAtMCwwICsxLDMxIEBACitkZXNj
cmlwdGlvbigKKyJUaGlzIHRlc3RzIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMuIgorKTsK
KwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpKTsKKworZGVidWcoInBy
aXZhdGUgbmFtZXMgZm9yIHByaXZpbGVnZWQgY29kZSBzaG91bGQgbm90IGJlIGV4cG9zZWQuIik7
CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhnbG9iYWwpLmxlbmd0aCIs
ICIwIik7CisKK3ZhciBvYmplY3QgPSB7fTsKK3ZhciBzeW1ib2wgPSBTeW1ib2woIkNvY29hIik7
CitvYmplY3Rbc3ltYm9sXSA9ICJDYXBwdWNjaW5vIjsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgiT2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiT2Jq
ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIiwgInN5bWJvbCIpOworCitmdW5j
dGlvbiBmb3JJbihvYmopIHsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICAvLyBTeW1ib2wgc2hv
dWxkIG5vdCBiZSBlbnVtZXJhdGVkLgorICAgIGZvciAodmFyIGtleSBpbiBvYmopIGFycmF5LnB1
c2goa2V5KTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK3Nob3VsZEJlKCJmb3JJbihvYmplY3Qp
Lmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgiT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGgiLCAi
MCIpOworCitkZWxldGUgb2JqZWN0W3N5bWJvbF07CitzaG91bGRCZSgiT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0KS5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGgiLCAiMCIpOworCitzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5
bWJvbC1kZWZpbmUtcHJvcGVydHkuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3lt
Ym9sLWRlZmluZS1wcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MGZkZjVlM2Q5MGY2ODVmMjEyMmQ2
NjcyMjVlN2QzNGRlODY0YWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuanMKQEAgLTAsMCArMSw0MiBAQAorZGVz
Y3JpcHRpb24oCisiVGhpcyB0ZXN0cyBPYmplY3QuY3JlYXRlLCBPYmplY3QuZGVmaW5lUHJvcGVy
dHksIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIHdvcmsgd2l0aCBTeW1ib2wuIgorKTsKKworZGVi
dWcoIk9iamVjdC5jcmVhdGUgd2l0aCBTeW1ib2wiKTsKK3ZhciBvYmplY3QgPSBPYmplY3QuY3Jl
YXRlKE9iamVjdC5wcm90b3R5cGUsIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogeworICAgICAg
ICB2YWx1ZTogNDIKKyAgICB9Cit9KTsKK3Nob3VsZEJlVHJ1ZSgib2JqZWN0Lmhhc093blByb3Bl
cnR5KFN5bWJvbC5pdGVyYXRvcikiKTsKK3Nob3VsZEJlRmFsc2UoIm9iamVjdC5wcm9wZXJ0eUlz
RW51bWVyYWJsZShTeW1ib2wuaXRlcmF0b3IpIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpT
T04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1i
b2wuaXRlcmF0b3IpKSIsICd7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxl
IjpmYWxzZSwiY29uZmlndXJhYmxlIjpmYWxzZX0nKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3du
UHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJPYmplY3Qu
Z2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0iLCAiU3ltYm9sLml0ZXJhdG9yIik7CisK
KworZGVidWcoIk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIHdpdGggU3ltYm9sIik7Cit2YXIgb2Jq
ZWN0ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9y
XTogeworICAgICAgICB2YWx1ZTogNDIKKyAgICB9Cit9KTsKKworc2hvdWxkQmVUcnVlKCJvYmpl
Y3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSIpOworc2hvdWxkQmVGYWxzZSgib2Jq
ZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJvbC5pdGVyYXRvcikiKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIiwgJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFs
c2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUiOmZhbHNlfScpOworc2hvdWxkQmUo
Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGgiLCAiMSIpOworc2hv
dWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSIsICJTeW1ib2wu
aXRlcmF0b3IiKTsKKworZGVidWcoIk9iamVjdC5kZWZpbmVQcm9wZXJ0eSB3aXRoIFN5bWJvbCIp
OwordmFyIG9iamVjdCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgU3ltYm9sLml0ZXJhdG9y
LCB7CisgICAgdmFsdWU6IDQyCit9KTsKKworc2hvdWxkQmVUcnVlKCJvYmplY3QuaGFzT3duUHJv
cGVydHkoU3ltYm9sLml0ZXJhdG9yKSIpOworc2hvdWxkQmVGYWxzZSgib2JqZWN0LnByb3BlcnR5
SXNFbnVtZXJhYmxlKFN5bWJvbC5pdGVyYXRvcikiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
SlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5
bWJvbC5pdGVyYXRvcikpIiwgJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFi
bGUiOmZhbHNlLCJjb25maWd1cmFibGUiOmZhbHNlfScpOworc2hvdWxkQmUoIk9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIk9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSIsICJTeW1ib2wuaXRlcmF0b3IiKTsK
Kworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRlYjRi
YTgyNGE2ZmFlOWZlYjdmNDU5MzZiMjQyNGFkYjhhMGVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzCkBAIC0w
LDAgKzEsMjMgQEAKK2Rlc2NyaXB0aW9uKAorIlRoaXMgdGVzdHMgT2JqZWN0LnNlYWwgYW5kIE9i
amVjdC5mcmVlemUgYWZmZWN0IG9uIFN5bWJvbCBwcm9wZXJ0aWVzLiIKKyk7CisKK3ZhciBvYmpl
Y3QgPSB7CisgICAgW1N5bWJvbC5pdGVyYXRvcl06IDQyCit9OworCitzaG91bGRCZVRydWUoIm9i
amVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIik7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIkpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2Jq
ZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSIsICd7InZhbHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVu
dW1lcmFibGUiOnRydWUsImNvbmZpZ3VyYWJsZSI6dHJ1ZX0nKTsKK3Nob3VsZEJlKCJPYmplY3Qu
Z2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0iLCAiU3ltYm9sLml0ZXJhdG9y
Iik7CisKK2RlYnVnKCJPYmplY3Quc2VhbChvYmplY3QpIik7CitPYmplY3Quc2VhbChvYmplY3Qp
Oworc2hvdWxkQmVUcnVlKCJvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkiLCAneyJ2YWx1ZSI6NDIs
IndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOmZhbHNlfScp
OworCitkZWJ1ZygiT2JqZWN0LmZyZWV6ZShvYmplY3QpIik7CitPYmplY3QuZnJlZXplKG9iamVj
dCk7CitzaG91bGRCZVRydWUoIm9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3Ip
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSIsICd7InZhbHVlIjo0
Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOmZhbHNl
fScpOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLXdp
dGgtanNvbi5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZjNjVmOWExNmU5ZmI4MDNhNGM5NTBhMGMzN2UwY2E1ZTYzZTIyODgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLXdp
dGgtanNvbi5qcwpAQCAtMCwwICsxLDE4IEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRlc3RzIEpT
T04gY29ycmVjdGx5IGJlaGF2ZXMgd2l0aCBTeW1ib2wuIgorKTsKKworZGVidWcoIkpTT04uc3Ry
aW5naWlmeSBkb2Vzbid0IHN0cmluZ2lmeSBTeW1ib2wuIik7CitzaG91bGRCZSgiSlNPTi5zdHJp
bmdpZnkoU3ltYm9sKCdDb2NvYScpKSIsICJ1bmRlZmluZWQiKTsKKwordmFyIG9iamVjdCA9IHt9
OwordmFyIHN5bWJvbCA9IFN5bWJvbCgiQ29jb2EiKTsKK29iamVjdFtzeW1ib2xdID0gNDI7Citv
YmplY3RbJ0NhcHB1Y2Npbm8nXSA9IDQyOworZGVidWcoIkpTT04uc3RyaW5naWlmeSBpZ25vcmVz
IHByb3BlcnR5IHdpdGggU3ltYm9sLiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0
cmluZ2lmeShvYmplY3QpIiwgJ3siQ2FwcHVjY2lubyI6NDJ9Jyk7CisKK2RlYnVnKCJTeW1ib2xz
IGluIHJlcGxhY2VyIGFycmF5IGFyZSBpZ25vcmVkLiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJKU09OLnN0cmluZ2lmeShvYmplY3QsIFsgU3ltYm9sKCdDb2NvYScpIF0pIiwgInt9Iik7CisK
K3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9z
eW1ib2wtZGVmaW5lLXByb3BlcnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3N5bWJv
bC1kZWZpbmUtcHJvcGVydHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjYjc2MTY3YWI4ZTQ3
MmUxMGIyZDU0ZmJkNmJkMGU5Y2I2OWJhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBA
CitUaGlzIHRlc3RzIE9iamVjdC5jcmVhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgT2JqZWN0
LmRlZmluZVByb3BlcnRpZXMgd29yayB3aXRoIFN5bWJvbC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK09iamVjdC5jcmVhdGUgd2l0aCBTeW1ib2wKK1BBU1Mgb2JqZWN0Lmhhc093
blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikgaXMgdHJ1ZQorUEFTUyBvYmplY3QucHJvcGVydHlJ
c0VudW1lcmFibGUoU3ltYm9sLml0ZXJhdG9yKSBpcyBmYWxzZQorUEFTUyBKU09OLnN0cmluZ2lm
eShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9y
KSkgaXMgIntcInZhbHVlXCI6NDIsXCJ3cml0YWJsZVwiOmZhbHNlLFwiZW51bWVyYWJsZVwiOmZh
bHNlLFwiY29uZmlndXJhYmxlXCI6ZmFsc2V9IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKG9iamVjdCkubGVuZ3RoIGlzIDEKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyhvYmplY3QpWzBdIGlzIFN5bWJvbC5pdGVyYXRvcgorT2JqZWN0LmRlZmluZVByb3BlcnRp
ZXMgd2l0aCBTeW1ib2wKK1BBU1Mgb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRv
cikgaXMgdHJ1ZQorUEFTUyBvYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9sLml0ZXJh
dG9yKSBpcyBmYWxzZQorUEFTUyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgaXMgIntcInZhbHVlXCI6NDIsXCJ3
cml0YWJsZVwiOmZhbHNlLFwiZW51bWVyYWJsZVwiOmZhbHNlLFwiY29uZmlndXJhYmxlXCI6ZmFs
c2V9IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIGlz
IDEKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIGlzIFN5bWJv
bC5pdGVyYXRvcgorT2JqZWN0LmRlZmluZVByb3BlcnR5IHdpdGggU3ltYm9sCitQQVNTIG9iamVj
dC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIGlzIHRydWUKK1BBU1Mgb2JqZWN0LnBy
b3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJvbC5pdGVyYXRvcikgaXMgZmFsc2UKK1BBU1MgSlNPTi5z
dHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5p
dGVyYXRvcikpIGlzICJ7XCJ2YWx1ZVwiOjQyLFwid3JpdGFibGVcIjpmYWxzZSxcImVudW1lcmFi
bGVcIjpmYWxzZSxcImNvbmZpZ3VyYWJsZVwiOmZhbHNlfSIKK1BBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCBpcyAxCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMob2JqZWN0KVswXSBpcyBTeW1ib2wuaXRlcmF0b3IKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9zeW1i
b2wtZGVmaW5lLXByb3BlcnR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY4NDMyYTI2YjQ0NDBjOWVlZmJh
Y2ZmNmVjMzU5NGQ1ZDhiNTgwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3N5
bWJvbC1kZWZpbmUtcHJvcGVydHkuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9z
eW1ib2wtc2VhbC1hbmQtZnJlZXplLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3N5bWJv
bC1zZWFsLWFuZC1mcmVlemUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YzU1Mzk1NjE3NjBl
NzRlNWM0YmNiMzNhNzA5Mjk1MzQ2ZWFlYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBA
CitUaGlzIHRlc3RzIE9iamVjdC5zZWFsIGFuZCBPYmplY3QuZnJlZXplIGFmZmVjdCBvbiBTeW1i
b2wgcHJvcGVydGllcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgb2Jq
ZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikgaXMgdHJ1ZQorUEFTUyBKU09OLnN0
cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0
ZXJhdG9yKSkgaXMgIntcInZhbHVlXCI6NDIsXCJ3cml0YWJsZVwiOnRydWUsXCJlbnVtZXJhYmxl
XCI6dHJ1ZSxcImNvbmZpZ3VyYWJsZVwiOnRydWV9IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIGlzIDEKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scyhvYmplY3QpWzBdIGlzIFN5bWJvbC5pdGVyYXRvcgorT2JqZWN0LnNlYWwob2JqZWN0
KQorUEFTUyBvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSBpcyB0cnVlCitQ
QVNTIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0
LCBTeW1ib2wuaXRlcmF0b3IpKSBpcyAie1widmFsdWVcIjo0MixcIndyaXRhYmxlXCI6dHJ1ZSxc
ImVudW1lcmFibGVcIjp0cnVlLFwiY29uZmlndXJhYmxlXCI6ZmFsc2V9IgorT2JqZWN0LmZyZWV6
ZShvYmplY3QpCitQQVNTIG9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIGlz
IHRydWUKK1BBU1MgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIGlzICJ7XCJ2YWx1ZVwiOjQyLFwid3JpdGFibGVc
IjpmYWxzZSxcImVudW1lcmFibGVcIjp0cnVlLFwiY29uZmlndXJhYmxlXCI6ZmFsc2V9IgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuaHRtbCBiL0xheW91dFRl
c3RzL2pzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzhmOGQzZTkx
M2U5M2Q3MDA1Y2FmODdkMmVkY2UyYThhNzA4ZTk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zeW1ib2wtc2VhbC1h
bmQtZnJlZXplLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3N5bWJvbC13aXRoLWpzb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
c3ltYm9sLXdpdGgtanNvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkyNmQ3OTk3YjdlZTU2
NTQ2MmE0ZjViMGNjZDBjYmMxNTc5OTZiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3N5bWJvbC13aXRoLWpzb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMg
dGVzdHMgSlNPTiBjb3JyZWN0bHkgYmVoYXZlcyB3aXRoIFN5bWJvbC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK0pTT04uc3RyaW5naWlmeSBkb2Vzbid0IHN0cmluZ2lmeSBTeW1i
b2wuCitQQVNTIEpTT04uc3RyaW5naWZ5KFN5bWJvbCgnQ29jb2EnKSkgaXMgdW5kZWZpbmVkCitK
U09OLnN0cmluZ2lpZnkgaWdub3JlcyBwcm9wZXJ0eSB3aXRoIFN5bWJvbC4KK1BBU1MgSlNPTi5z
dHJpbmdpZnkob2JqZWN0KSBpcyAie1wiQ2FwcHVjY2lub1wiOjQyfSIKK1N5bWJvbHMgaW4gcmVw
bGFjZXIgYXJyYXkgYXJlIGlnbm9yZWQuCitQQVNTIEpTT04uc3RyaW5naWZ5KG9iamVjdCwgWyBT
eW1ib2woJ0NvY29hJykgXSkgaXMgInt9IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC13
aXRoLWpzb24uaHRtbCBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC13aXRoLWpzb24uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMzY4MzUwNzk5ZmNmYTYyYjFiOWY4ZTYxMzNiOTNhN2E5NGFiYzFkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9z
eW1ib2wtd2l0aC1qc29uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246384</attachid>
            <date>2015-02-11 04:27:55 -0800</date>
            <delta_ts>2015-02-16 20:07:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150211212757.patch</filename>
            <type>text/plain</type>
            <size>149469</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjExNDMwY2RmZWYxOTM3NzAxZWFlNTMzZGRlMDcyMzdlZmYyOTE2Li42N2I4NTU4ZmM2YzkwZDAw
ZDVlYWYzYWFiZjI2MmQ1ZDRjYTA1Y2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzEgQEAKKzIwMTUtMDItMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGluL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIGBTdHJpbmdJbXBsKmAgcmVw
cmVzZW50cyB3aGV0aGVyIGl0J3MgcHJpdmF0ZSBvciBub3QuCisKKyAgICAgICAgVG8gcmVwcmVz
ZW50IGl0IGluIGBTdHJpbmdJbXBsYCwgd2UgaW50cm9kdWNlIGBTdHJpbmdLaW5kYCBpbnRvIGBT
dHJpbmdJbXBsYC4gVGhlcmUncyA0IGtpbmRzCisgICAgICAgIDEpIFN0cmluZ05vcm1hbCAobm90
IHByaXZhdGUsIG5vdCBhdG9taWMsIG5vdCB1bmlxdWUpLCAyKSBTdHJpbmdBdG9taWMgKG5vdCBw
cml2YXRlLCBhdG9taWMsIG5vdCB1bmlxdWUpLAorICAgICAgICAzKSBTdHJpbmdVbmlxdWUgKG5v
dCBwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpIGFuZCA0KSBTdHJpbmdVbmlxdWVQcml2YXRl
IChwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpLgorICAgICAgICBUaGV5IGFyZSBtdXR1YWxs
eSBleGNsdXNpdmUuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEpIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzLCAyKSBJbmNsdWRlL0V4Y2x1ZGUgU3ltYm9scyBhbmQgMykgSW5jbHVkZS9FeGNsdWRl
IEpTT2JqZWN0IHByb3BlcnR5IG5hbWVzLgorICAgICAgICBJbiB0aGUgYSBsb3Qgb2YgY29kZSwg
d2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBhIGxvdCBvZiBjYWxs
ZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1lQXJyYXlgIGRvZXNu
J3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25zZXJ2YXRpdmUgYXNz
dW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAgICogQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS5vcmRlcjoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6
OkJ1aWx0aW5OYW1lcyk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVm
YXVsdFByb3BlcnR5Q291bnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24p
OgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkRlc2lyZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKToKKworICAgICAgICBUbyBicmFuY2gg
b24gdGhlIHN0cmluZyBhdG9taWNpdHkgZWZmaWNpZW50bHksIHdlIG5lZWQgdG8gY2FyZWZ1bGx5
IGNob29zZSBTdHJpbmdLaW5kIGZvciBTdHJpbmdBdG9taWMuCisgICAgICAgIFdlIHNlbGVjdCBg
MGAgZm9yIFN0cmluZ0F0b21pYy4gU28gd2UgY2FuIGNoZWNrIHRoZSBhdG9taWNpdHkgb2YgU3Ry
aW5nSW1wbCBieSBzZWVpbmcgd2hldGhlciBTdHJpbmdLaW5kIGlzIHplcm8uCisgICAgICAgIEl0
IGVuYWJsZXMgeDg2IGNvZGUgdG8gYnJhbmNoIHdpdGggYHRlc3RgIGluc3RydWN0aW9uIGVmZmlj
aWVudGx5LgorCisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlU3RyaW5nSWRlbnQpOgorCisgICAg
ICAgIEFzIG5vdGVkIGluIGRmZyBzZWN0aW9uLCB3ZSBjYW4gY2hlY2sgdGhlIGF0b21pY2l0eSBv
ZiBTdHJpbmdJbXBsIHdpdGggdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisKKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBleHBsY2l0bHkgY2hl
Y2sgYGlzVW5pcXVlKClgIGluIHRoZSBjYWxsZXIgc2lkZS4gV2UgY2FuIGp1c3QgdXNlIGBJZGVu
dGlmaWVyOjpmcm9tYC4KKworICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YWRkVmFyKToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRz
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJy
YXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1
bmNTb3J0KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9FbnVtZXJh
dGlvbk1vZGUuaDoKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFbnVtZXJhdGlvbk1v
ZGUpOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZEluY2x1
ZGVKU09iamVjdFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6
OnNob3VsZEluY2x1ZGVTeW1ib2xzKToKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpj
cmVhdGVUaGF0U2tpcHNKU09iamVjdCk6CisgICAgICAgIChKU0M6OnNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzaG91bGRFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c2hvdWxkSW5jbHVkZUpT
T2JqZWN0UHJvcGVydHlOYW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Om1vZGVUaGF0U2tp
cHNKU09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6Cisg
ICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJZGVu
dGlmaWVyOjpmcm9tKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJZGVu
dGlmaWVyOjpmcm9tKToKKworICAgICAgICBJbiB0aGUgYSBsb3Qgb2YgcGxhY2UsIGBJZGVudGlm
aWVyKFZNKi9FeGVjU3RhdGUqLCBTdHJpbmdJbXBsKilgIGNvbnN0cnVjdG9yIGlzIHVzZWQuCisg
ICAgICAgIEhvd2V2ZXIsIGl0J3MgYW1iaWd1b3VzIGJlY2F1c2UgYFN0cmluZ0ltcGwqYCBoYXMg
MiBkaWZmZXJlbnQgbWVhbmluZ3MuCisgICAgICAgIDEpIG5vcm1hbCBzdHJpbmcsIGl0IGlzIHJl
cGxhY2FibGUgd2l0aCBgV1RGU3RyaW5nYCBhbmQgMikgYHVpZGAsIHdoaWNoIGhvbGRzIGBpc1Vu
aXF1ZWAgaW5mb3JtYXRpb24gdG8gcmVwcmVzZW50IFN5bWJvbHMuCisgICAgICAgIFNvIHdlIGRy
b3BwZWQgYElkZW50aWZpZXIoVk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAgYW5kIGluc3Rl
YWQsIGludHJvZHVjZWQgYElkZW50aWZpZXI6OmZyb20oVk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0lt
cGwqKWAuCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgMikgYHVpZGAuIFNvIHVu
aXF1ZW5lc3Mgb2YgYFN0cmluZ0ltcGwqYCBpcyBzYXZlZC4KKyAgICAgICAgVG8ganVzdCBjb25z
dHJ1Y3QgYElkZW50aWZpZXJgIGZyb20gc3RyaW5nIHR5cGUsIHdlIGNhbiB1c2UgYElkZW50aWZp
ZXIoVk0qL0V4ZWNTdGF0ZSosIGNvbnN0IFdURlN0cmluZyYpYCBpbnN0ZWFkLgorCisgICAgICAg
ICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXIuY3Bw
OgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAo
SlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ2FsbGVlLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZp
ZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3
YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0
Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZSk6CisgICAgICAgIChKU0M6OkpTUHJv
bWlzZUNvbnN0cnVjdG9yRnVuY0FsbCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6c3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVy
YXRvcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBJ
dGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWFw
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKToKKyAgICAgICAgKEpTQzo6
b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJ
c1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWU6
OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZS5oOgorICAgICAg
ICAoSlNDOjpQcm9wZXJ0eU5hbWU6OlByb3BlcnR5TmFtZSk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5TmFtZTo6cHVibGljTmFtZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6YXNJbmRl
eCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHA6CisgICAgICAgIChK
U0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZEtub3duVW5p
cXVlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OlJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6UmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9TZXRJ
dGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlNldEl0ZXJhdG9yUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Z2V0
T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKwogMjAxNS0wMi0xMCAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFNwbGl0IEZUTDo6SlNDYWxs
IGludG8gdGhlIHBhcnQgdGhhdCBrbm93cyBhYm91dCBjYWxsIGlubGluZSBjYWNoaW5nIGFuZCB0
aGUgcGFydCB0aGF0IGludGVyYWN0cyB3aXRoIExMVk0gcGF0Y2hwb2ludHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODg5ODZh
YzQ4NTM4OTk3ZjgxNTU3OGMwNGRjMTQyZDZlN2I5ZDY4OS4uOWZjNzM1MWIzMDdmYmNhMmY2N2Zm
ZDM3NjU5YWVhODNhYTlkMjRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxNS0wMi0xMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
RVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBTdHJpbmdLaW5kIGludG8gYFN0cmlu
Z0ltcGxgLiBUaGVyZSdzIDQga2luZHMKKyAgICAgICAgMSkgU3RyaW5nTm9ybWFsIChub3QgcHJp
dmF0ZSwgbm90IGF0b21pYywgbm90IHVuaXF1ZSksIDIpIFN0cmluZ0F0b21pYyAobm90IHByaXZh
dGUsIGF0b21pYywgbm90IHVuaXF1ZSksCisgICAgICAgIDMpIFN0cmluZ1VuaXF1ZSAobm90IHBy
aXZhdGUsIG5vdCBhdG9taWMsIHVuaXF1ZSkgYW5kIDQpIFN0cmluZ1VuaXF1ZVByaXZhdGUgKHBy
aXZhdGUsIG5vdCBhdG9taWMsIHVuaXF1ZSkuCisgICAgICAgIFRoZXkgYXJlIG11dHVhbGx5IGV4
Y2x1c2l2ZS4KKworICAgICAgICBTdHJpbmdVbmlxdWVQcml2YXRlIGlzIHVzZWQgdG8gcmVwcmVz
ZW50IHRoYXQgdGhlIHRhcmdldCBzdHJpbmcgaXMgdXNlZCBmb3IgYSBwcml2YXRlIChwcml2aWxl
Z2VkKSBuYW1lLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAg
ICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZSk6CisgICAgICAgIChXVEY6OkF0b21p
Y1N0cmluZzo6ZmluZFNsb3dDYXNlKToKKworICAgICAgICBXaGVuIHJlZ2lzdGVyaW5nIGEgc3Ry
aW5nIGludG8gQXRvbWljU3RyaW5nVGFibGUsIGl0IHNob3VsZCBub3QgYmUgYW4gdW5pcXVlIHN0
cmluZyBiZWNhdXNlIHVuaXF1ZSB0eXBlcyBhbmQgYXRvbWljIHR5cGUgYXJlIG11dHVhbGx5IGV4
Y2x1c2l2ZS4KKyAgICAgICAgV2hlbiBhbiB1bmlxdWUgc3RyaW5nIGNvbWVzLCB3ZSBleHRyYWN0
IGFuIG93bmVyIHN0cmluZyBmcm9tIGFuIHVuaXF1ZSBzdHJpbmcgYnkgdXNpbmcgYFN0cmluZ0lt
cGw6OmV4dHJhY3RGb2xkZWRTdHJpbmdJblVuaXF1ZSgpYC4gSXQgYWx3YXlzIHN1Y2NlZWRzIGJl
Y2F1c2UgYW4gdW5pcXVlIChub24gZW1wdHkpIHN0cmluZyBpcyBhbHdheXMgQnVmZmVyU3Vic3Ry
aW5nIGFuZCBoYXMgYW4gb3duZXIgc3RyaW5nLgorICAgICAgICBFbXB0eSB1bmlxdWUgKGFuZCB1
bmlxdWUgcHJpdmF0ZSkgc3RyaW5nIGRvZXNuJ3QgaGF2ZSBhbiBvd25lciBzdHJpbmcuIFRoaXMg
Y2FzZSBpcyBmaWx0ZXJlZCBieSBgIXN0cmluZy5sZW5ndGgoKWAgZ3VhcmQuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjph
ZGQpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZFdpdGhTdHJpbmdUYWJsZVByb3Zp
ZGVyKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBs
Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OlN0cmluZ0ltcGwpOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVFbXB0eSk6CisgICAgICAgIChXVEY6OlN0cmluZ0lt
cGw6OmNyZWF0ZVVuaXF1ZVByaXZhdGVFbXB0eSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OmZsYWdJc05vdEF0b21pYyk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om1hc2tTdHJpbmdL
aW5kKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c3RyaW5nS2luZCk6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmlzVW5pcXVlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aXNQ
cml2YXRlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aXNBdG9taWMpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpzZXRJc0F0b21pYyk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OmV4dHJhY3RGb2xkZWRTdHJpbmdJblVuaXF1ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OmZsYWdJc0F0b21pYyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZsYWdJ
c1VuaXF1ZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc2hBbmRGbGFnc0ZvclVuaXF1ZSk6CisKIDIw
MTUtMDItMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0
aGUgY3Jhc2gtb24tZmFpbHVyZSBiZWhhdmlvciB0byBibWFsbG9jLWJhc2VkIGZhc3RNYWxsb2MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjMDc0ODQxMWUxYWFhMTNlYmNhMTg3ZTQ3OGVmM2E3OGUwZWQ4YzMyLi5k
NjYxYTk0MDc4YjU4NWVmMzFmNDhkMzRkYjlhNjU1M2RjODJjYTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTUtMDItMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
czoganMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5odG1sCisgICAgICAgICAgICAg
ICBqcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5Lmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5bWJv
bC1zZWFsLWFuZC1mcmVlemUuaHRtbAorICAgICAgICAgICAgICAganMvc3ltYm9sLXdpdGgtanNv
bi5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJv
cGVydGllc0FzU3RyaW5nSGFzaE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0
aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpz
ZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXku
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5oOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6CisgICAgICAgIChfTlBO
X0VudW1lcmF0ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAg
ICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMpOgorCiAyMDE1LTAyLTEx
ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBE
aXYgaGF2aW5nIGNvbnRlbnRFZGl0YWJsZSBhbmQgZGlzcGxheTpmbGV4IGNhbm5vdCBiZSBlZGl0
ZWQgaWYgaXQgaXMgZW1wdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYjhhMjY2Y2Q1ZmJmMjAyZmRh
OWEwY2Y0YzE4MjYyNmVkMzIxMTRkNi4uNGIwZmM3MjY4NWZjN2Y2MTFlYjJkNDI4OTFhZjQ5N2E2
MGY4YWVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTExICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6ZW51bWVyYXRlKToKKwogMjAxNS0wMi0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bi5mYWJsZXRAY3JmLmNhbm9uLmZyPiBhbmQgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgPGNhbHZh
cmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgYSBiYXJl
Ym9uZSBSZWFkYWJsZVN0cmVhbSBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmYzA2M2FhNDI5Y2Q4
NDFlMzExY2MxNTZlMjFjMGM1MDQ2ODlhNDBlLi4yMTYxZjg1NTk0NjVhNDgwNTBlMDdhOGRkZWIx
NWYwNWE5NDM5MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDItMTEgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViS2l0OjppZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXApOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJhdGUpOgorICAgICAgICAqIG1hYy9X
ZWJLaXQyLm9yZGVyOgorCiAyMDE1LTAyLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgZGVmYXVsdCBjb2xvciBjaG9vc2Vy
IGltcGxlbWVudGF0aW9uIHVzaW5nIEd0a0NvbG9yQ2hvb3NlckRpYWxvZwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRl
eCA5OWEwOWRmZWExMGMxY2ExM2MxNTY3ODdlYjA3YWY4OWNhNDI0NjIzLi5kNGI2ODBlMWRkMWQ2
MGU2NjVlOTRlNDhhYzY2YTNkYzdkZGFjOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTE2LDggKzUxNiw4
IEBACiAgICAgICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gc3RhdGljVmFsdWVzLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0g
aXQtPmtleS5nZXQoKTsKICAgICAgICAgICAgICAgICBTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9
IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZW50cnktPmdldFByb3BlcnR5
ICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkg
fHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpCi0gICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgbmFtZSkpOworICAgICAg
ICAgICAgICAgIGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMg
JiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMoKSkpCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXI6OmZyb20oZXhlYywgbmFtZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIApAQCAtNTI3LDggKzUyNyw4IEBACiAgICAgICAgICAgICBmb3IgKGl0ZXJhdG9y
IGl0ID0gc3RhdGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAg
ICAgICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0gaXQtPmtleS5nZXQoKTsKICAgICAgICAgICAg
ICAgICBTdGF0aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCi0gICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgbmFtZSkp
OworICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KCkpCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZy
b20oZXhlYywgbmFtZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCAyMzRkMjQ4OGZmODkwYjhi
ZWU2OTdlZjU1YWE2ODAzODBhMTgxYTQyLi5lMTEyMWMzM2ExOTE0MWEwNjNlODg2ODhjM2U3ZTkx
YzE0ZTM3MjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApA
QCAtNjk4LDcgKzY5OCw3IEBAIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgSlNPYmplY3RDb3B5UHJv
cGVydHlOYW1lcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgICAgSlNPYmplY3Qq
IGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgcHJv
cGVydHlOYW1lcyA9IG5ldyBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5KHZtKTsKICAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBhcnJheSh2bSk7Ci0gICAganNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdl
dFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhq
c09iamVjdCwgZXhlYywgYXJyYXksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJv
cGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKIAogICAgIHNpemVfdCBzaXplID0gYXJyYXkuc2l6
ZSgpOwogICAgIHByb3BlcnR5TmFtZXMtPmFycmF5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3Jk
ZXIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKaW5kZXggMjZi
ZTBlZTI3NmUwZWU1Yzg2ZTYxMDk5OWYyZDQ3NmIwZGQ4MDZkZS4uMWUxOTQxNTVhMzE5NTA2NGI3
NGNlMDdkZDJjNjQxMmJhY2ViMmM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5vcmRlcgpAQCAtOTM4LDcgKzkzOCw2IEBAIF9fWk4zSlNDNUxMSW50MzlmdW5jdGlv
bkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3JFUE5TXzJWTUUKIF9fWk4zSlNDNUxMSW50
NDRmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvckVQTlNfMlZNRQog
X19aTjNKU0MxMEpTRnVuY3Rpb24yM2NyZWF0ZUFsbG9jYXRpb25Qcm9maWxlRVBOU185RXhlY1N0
YXRlRW0KIF9fWk5LM0pTQzhKU09iamVjdDNnZXRFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0
eU5hbWVFCi1fX1pOM0pTQzlTdHJ1Y3R1cmUyOWdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJl
RVJOU18yVk1FUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBf
X1pOM0pTQzE3UHJvcGVydHlOYW1lQXJyYXkxNGFkZEtub3duVW5pcXVlRVBOM1dURjEwU3RyaW5n
SW1wbEUKIF9fWk4zSlNDMTdQcm9wZXJ0eU5hbWVBcnJheUQyRXYKIF9fWk4zSlNDOFdhdGNoZG9n
NVNjb3BlRDFFdgpAQCAtMTM1MSw5ICsxMzUwLDYgQEAgX19aTjNKU0MxMVBvc3RmaXhOb2RlMTFl
bWl0UmVzb2x2ZUVSTlNfMTdCeXRlY29kZUdlbmVyYXRvckVQTlNfMTBSZWdpc3RlcklERQogX19a
TjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yN2VtaXRJbmNFUE5TXzEwUmVnaXN0ZXJJREUKIF9fWk4z
SlNDMTRqc0lzT2JqZWN0VHlwZUVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUUKIF9fWk4zSlND
NkpTQ2VsbDExZ2V0Q2FsbERhdGFFUFMwX1JOU184Q2FsbERhdGFFCi1fX1pOM0pTQzhKU09iamVj
dDE2Z2V0UHJvcGVydHlOYW1lc0VQUzBfUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1l
QXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCi1fX1pOM0pTQzhKU09iamVjdDE5Z2V0T3duUHJv
cGVydHlOYW1lc0VQUzBfUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNf
MTVFbnVtZXJhdGlvbk1vZGVFCi1fX1pOM0pTQzhKU09iamVjdDI3Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18x
NUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zV1RGNlZlY3RvcklOM0pTQzEwSWRlbnRpZmllckVMbTIw
RU5TXzE1Q3Jhc2hPbk92ZXJmbG93RUUxNXJlc2VydmVDYXBhY2l0eUVtCiBfX1pOM0pTQzEzanNP
d25lZFN0cmluZ0VQTlNfMlZNRVJLTjNXVEY2U3RyaW5nRQogX19aTjNKU0M5U3RydWN0dXJlMTZh
bGxvY2F0ZVJhcmVEYXRhRVJOU18yVk1FCkBAIC0xNzQzLDcgKzE3MzksNiBAQCBfX1pOM0pTQ0wy
MGRhdGVQcm90b0Z1bmNHZXRUaW1lRVBOU185RXhlY1N0YXRlRQogX19aTkszSlNDMTJKU1JvcGVT
dHJpbmcyMHJlc29sdmVSb3BlU2xvd0Nhc2U4RVBoCiBfX1pOSzNXVEY2U3RyaW5nOGZvbGRDYXNl
RXYKIF9fWk4zV1RGMTBTdHJpbmdJbXBsOGZvbGRDYXNlRXYKLV9fWk4zSlNDMTBKU0Z1bmN0aW9u
MjdnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0
ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlND
MTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMUludGVy
cHJldGVyMjRhZGRTdGFja1RyYWNlSWZOZWNlc3NhcnlFUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFs
dWVFCiBfX1pOM0pTQzExSW50ZXJwcmV0ZXIxM2dldFN0YWNrVHJhY2VFUE5TXzJWTUVSTjNXVEY2
VmVjdG9ySU5TXzEwU3RhY2tGcmFtZUVMbTBFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFbQpAQCAt
Mjk3MCw3ICsyOTY1LDYgQEAgX19aTjNKU0M1c2hpZnRJTE5TXzdKU0FycmF5MTRTaGlmdENvdW50
TW9kZUUwRUVFdlBOU185RXhlY1N0YXRlRVBOU184SlNPYmplY3RFamoKIF9fWk4zSlNDN0pTQXJy
YXkyNnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlRWpqUE5TXzEyQXJyYXlTdG9yYWdlRQogX19a
TjNKU0NMMTdhcnJheVByb3RvRnVuY1BvcEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDN0pTQXJy
YXkzcG9wRVBOU185RXhlY1N0YXRlRQotX19aTjNKU0M3SlNBcnJheTI3Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlO
YW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzVMZXhlckl0RTI0cGFyc2VG
b3VyRGlnaXRVbmljb2RlSGV4RXYKIF9KU09iamVjdEdldFByaXZhdGVQcm9wZXJ0eQogX19aTksz
SlNDMjBKU0NhbGxiYWNrT2JqZWN0RGF0YTE4Z2V0UHJpdmF0ZVByb3BlcnR5RVJLTlNfMTBJZGVu
dGlmaWVyRQpAQCAtMzgyOSw3ICszODIzLDYgQEAgX19aTjNKU0MzREZHMTRTcGVjdWxhdGl2ZUpJ
VDE4Y29tcGlsZUFyaXRoTmVnYXRlRVBOUzBfNE5vZGVFCiBfX1pOM0pTQzIzTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24xMm5lZ2F0ZURvdWJsZUVOU18xMlg4NlJlZ2lzdGVyczEzWE1NUmVnaXN0ZXJJ
REVTMl8KIF9fWk4zSlNDMjNNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjlkaXZEb3VibGVFTlNfMTJY
ODZSZWdpc3RlcnMxM1hNTVJlZ2lzdGVySURFUzJfUzJfCiBfY3RpX29wX2luYwotX19aTjNKU0Mx
MlN0cmluZ09iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhl
Y1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19a
TjNKU0MxNGdsb2JhbEZ1bmNFdmFsRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M4SlNPYmplY3Qx
OGNyZWF0ZUFycmF5U3RvcmFnZUVSTlNfMlZNRWpqCiBfb3BlcmF0aW9uQ29udmVydFRoaXMKQEAg
LTQxNTAsNyArNDE0Myw2IEBAIF9fWk4zSlNDMTFDb3BpZWRTcGFjZTE2ZG9uZUZpbGxpbmdCbG9j
a0VQTlNfMTFDb3BpZWRCbG9ja0VQUzJfCiBfX1pOM0pTQzExQ29weVZpc2l0b3IxNGNvcHlGcm9t
U2hhcmVkRXYKIF9fWk4zSlNDOEpTT2JqZWN0MTZjb3B5QmFja2luZ1N0b3JlRVBOU182SlNDZWxs
RVJOU18xMUNvcHlWaXNpdG9yRQogX19aTjNKU0MxOEdDVGhyZWFkU2hhcmVkRGF0YTE2ZGlkRmlu
aXNoQ29weWluZ0V2Ci1fX1pOM0pTQzlBcmd1bWVudHMxOWdldE93blByb3BlcnR5TmFtZXNFUE5T
XzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVu
dW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDOEpTT2JqZWN0NmZyZWV6ZUVSTlNfMlZNRQogX19aTjNK
U0M5U3RydWN0dXJlOGlzRnJvemVuRVJOU18yVk1FCiBfX1pOM0pTQzlTdHJ1Y3R1cmUxNmZyZWV6
ZVRyYW5zaXRpb25FUk5TXzJWTUVQUzBfCkBAIC00MjUwLDcgKzQyNDIsNiBAQCBfX1pOM0pTQzEz
RGF0ZVByb3RvdHlwZTI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5T
XzlFeGVjU3RhdGVFTgogX19aTjNKU0MyN2dldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcklOU184
SlNPYmplY3RFRUViUE5TXzlFeGVjU3RhdGVFUEtOU185SGFzaFRhYmxlRVBTMV9OU18xMlByb3Bl
cnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzIyQ2xvc3VyZUNhbGxT
dHViUm91dGluZTI3bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsRVJOU18xMVNsb3RWaXNpdG9y
RQogX19aTjNXVEY5Qml0VmVjdG9yN3NldFNsb3dFUktTMF8KLV9fWk4zSlNDMThSZWdFeHBNYXRj
aGVzQXJyYXkxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0
ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9KU1ZhbHVl
R2V0VHlwZQogX19aTjNKU0MxM0V2YWxDb2RlQmxvY2sxMXJlcGxhY2VtZW50RXYKIF9fWk4zSlND
MTNFdmFsQ29kZUJsb2NrMTZjb21waWxlT3B0aW1pemVkRVBOU185RXhlY1N0YXRlRVBOU183SlNT
Y29wZUVqCkBAIC00MzU2LDE1ICs0MzQ3LDExIEBAIF9fWk4zSlNDTDI2ZGF0ZVByb3RvRnVuY1Nl
dFVUQ1NlY29uZHNFUE5TXzlFeGVjU3RhdGVFCiBfb3BlcmF0aW9uRW5zdXJlRG91YmxlCiBfX1pO
M0pTQzhKU09iamVjdDE2ZW5zdXJlRG91YmxlU2xvd0VSTlNfMlZNRQogX19aTjNKU0M0WWFycjEx
SW50ZXJwcmV0ZXJJdEUyMGJhY2t0cmFja1BhcmVudGhlc2VzRVJOUzBfOEJ5dGVUZXJtRVBOUzJf
MThEaXNqdW5jdGlvbkNvbnRleHRFCi1fX1pOM0pTQzdKU1Byb3h5MTZnZXRQcm9wZXJ0eU5hbWVz
RVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNf
MTVFbnVtZXJhdGlvbk1vZGVFCi1fX1pOM0pTQzE5SlNTeW1ib2xUYWJsZU9iamVjdDI3Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3
UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQ0wxN21hdGhQ
cm90b0Z1bmNBU2luRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MzREZHMTRTcGVjdWxhdGl2ZUpJ
VDE0c3BlY3VsYXRlT3RoZXJFTlMwXzRFZGdlRQogX19aTjNKU0M2UGFyc2VySU5TXzVMZXhlckl0
RUVFMThwYXJzZVdpdGhTdGF0ZW1lbnRJTlNfMTBBU1RCdWlsZGVyRUVFTlRfOVN0YXRlbWVudEVS
UzZfCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfNkpTQ2VsbEVQ
TlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUUKIF9fWk4zSlNDOUV4ZWNTdGF0ZTIwcmVn
RXhwUHJvdG90eXBlVGFibGVFUFMwXwotX19aTjNKU0MxMlJlZ0V4cE9iamVjdDE2Z2V0UHJvcGVy
dHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0MxMlJlZ0V4cE9iamVjdDI3Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3
UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzlFeGVjU3Rh
dGU5ZGF0ZVRhYmxlRVBTMF8KIF9fWk4zSlNDOUV4ZWNTdGF0ZTIxYXJyYXlDb25zdHJ1Y3RvclRh
YmxlRVBTMF8KIF9fWk4zSlNDTDE5YXJyYXlQcm90b0Z1bmNFdmVyeUVQTlNfOUV4ZWNTdGF0ZUUK
QEAgLTQ2OTAsNyArNDY3Nyw2IEBAIF9fWk4zSlNDOUV4ZWNTdGF0ZTIybnVtYmVyQ29uc3RydWN0
b3JUYWJsZUVQUzBfCiBfX1pOM0pTQzlFeGVjU3RhdGUyMnJlZ0V4cENvbnN0cnVjdG9yVGFibGVF
UFMwXwogX19aTjNKU0M5RXhlY1N0YXRlOW1hdGhUYWJsZUVQUzBfCiBfX1pOM0pTQzlFeGVjU3Rh
dGU5anNvblRhYmxlRVBTMF8KLV9fWk4zSlNDN0pTUHJveHkxOWdldE93blByb3BlcnR5TmFtZXNF
UE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18x
NUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDOUFyZ3VtZW50czI0Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5T
XzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0M5QXJndW1lbnRzMTdkZWZpbmVPd25Qcm9w
ZXJ0eUVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRVJOU18x
OFByb3BlcnR5RGVzY3JpcHRvckViCiBfX1pOM1dURjdIYXNoTWFwSXlOM0pTQzE2U3BhcnNlQXJy
YXlFbnRyeUVOU183SW50SGFzaEl5RUVOU18yOVVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
SXlFRU5TXzEwSGFzaFRyYWl0c0lTMl9FRUU0ZmluZEVSS3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDc2YTdiMTExYThkODc3YTY3OWI1
YzhiOGU4OTZlMWE3YjFiNmI4YWMuLjhkM2I5ZDI3M2I0NjJjYmNiZWE2MzBmYzY2OWZmMTUzZDc5
MmE2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVl
LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmlzRnVuY3Rpb24oKSBj
b25zdAogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBpbnNwZWN0b3JPYmplY3QgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUu
Z2V0T2JqZWN0KCk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoc2Ny
aXB0U3RhdGUpOwotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIHNjcmlwdFN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykgewogICAg
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSA9IHByb3BlcnR5TmFtZXNbaV07CiAgICAg
ICAgICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdldChzY3JpcHRTdGF0ZSwg
bmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
aW5kZXggOWI4ODk2Yjk2ODAxNDkxM2Y0NmIzMmM0ODBlMDU3ODk2Mzc5ZGZhNC4uN2M4MTI1YTE1
MGQyYmUzNTg4MzVmZTgzODIxODk5NzFlYTEwZGE1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMzEsMTIgKzMxLDE4IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogICAgIAotI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkg
LCBtXyMjbmFtZSh2bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6
ZnJvbShQcml2YXRlTmFtZShBU0NJSUxpdGVyYWwoIlN5bWJvbC4iICNuYW1lKSkpKQotI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsg
Y29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7OworI2RlZmluZSBJTklUSUFM
SVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUpLCBtXyMjbmFtZSMj
UHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZShQcml2YXRlTmFtZTo6Q3Jl
YXRlUHJpdmF0ZSkpKQorI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3Qg
SWRlbnRpZmllciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJpdmF0ZU5h
bWU7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwK
ICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV8jI25hbWU7IH0gXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1ByaXZhdGVOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1ByaXZhdGVOYW1lOyB9CiAKKyNkZWZpbmUgSU5JVElB
TElTRV9CVUlMVElOX1NZTUJPTFMobmFtZSkgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUp
LCBtXyMjbmFtZSMjU3ltYm9sKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoQVNDSUlMaXRl
cmFsKCJTeW1ib2wuIiAjbmFtZSkpKSkKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTFMo
bmFtZSkgREVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbV8jI25h
bWUjI1N5bWJvbDsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUihuYW1l
KSBcCisgICAgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IobmFtZSkgXAorICAg
IGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1l
IyNTeW1ib2w7IH0KKwogI2RlZmluZSBJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZ
KG5hbWUpIG1fcHJpdmF0ZVRvUHVibGljTWFwLmFkZChtXyMjbmFtZSMjUHJpdmF0ZU5hbWUuaW1w
bCgpLCAmbV8jI25hbWUpOwogI2RlZmluZSBJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VO
VFJZKG5hbWUpIG1fcHVibGljVG9Qcml2YXRlTWFwLmFkZChtXyMjbmFtZS5pbXBsKCksICZtXyMj
bmFtZSMjUHJpdmF0ZU5hbWUpOwogICAgIApAQCAtNDgsMTEgKzU0LDE0IEBAIGNsYXNzIEJ1aWx0
aW5OYW1lcyB7CiAgICAgICAgIDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmllcnMt
PmVtcHR5SWRlbnRpZmllcikKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRF
X0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMp
CisgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05f
U1lNQk9MKElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNf
RU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BF
UlRZX05BTUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAgICAgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElB
TElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAgICAg
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5J
VElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QVUJMSUNf
VE9fUFJJVkFURV9FTlRSWSkKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2
YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjksMTMgQEAgY2xh
c3MgQnVpbHRpbk5hbWVzIHsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9O
X05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5f
SURFTlRJRklFUl9BQ0NFU1NPUikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SKQog
CiBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CiAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKICAgICBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVf
QlVJTFRJTl9OQU1FUykKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9X
RUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MUykKICAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBjb25zdCBJZGVudGlmaWVyKiwgSWRlbnRpZmllclJl
cEhhc2g+IEJ1aWx0aW5OYW1lc01hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wdWJsaWNUb1By
aXZhdGVNYXA7CiAgICAgQnVpbHRpbk5hbWVzTWFwIG1fcHJpdmF0ZVRvUHVibGljTWFwOwpAQCAt
NzMsNyArODQsOSBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewogI3VuZGVmIERFQ0xBUkVfQlVJTFRJ
Tl9OQU1FUwogI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUwogI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SCi0KKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU1lN
Qk9MUworI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTCisjdW5kZWYgREVDTEFSRV9C
VUlMVElOX1NZTUJPTF9BQ0NFU1NPUgogCiBpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRp
bk5hbWVzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0
aW9uUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9j
YXRpb25Qcm9maWxlLmgKaW5kZXggOWE5ZGIwYmM3MGI5ZjEzNWY2NWRkMmQ3OTZkZTY1Mjg5NmFl
MGZiMS4uNTc4MGYwMGM3MjgxNGEzMTg1MGUxYzgyYTVhZGMyZTJlYjI4ODMxMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Q
cm9maWxlLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSB7CiAKICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lQXJyYXkoJnZtKTsKLSAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBF
bnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9s
cyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBw
cm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnByb3BlcnR5TmFt
ZVZlY3RvcigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZVZl
Y3Rvci5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHByb3RvdHlw
ZS0+Z2V0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCBhNTZlNmQ1OGJkNzk2ZWZlMzliNzNiZDQ5YmEzNGY5ZDg0MDA5MzFkLi5iNWZkNzBlMTJk
OWJjNzBjZjc3NTg5MjRhMTYwNTM1MDliZjY0MzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDgy
LDcgKzQ4Miw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcigKICAgICBWZWN0b3I8
SWRlbnRpZmllciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHZhcmlhYmxlczsKICAgICB2YXJp
YWJsZXMucmVzZXJ2ZUNhcGFjaXR5KG51bVZhcmlhYmxlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkgewotICAgICAgICBBU1NFUlQodmFyU3RhY2tbaV0u
Zmlyc3QuaW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKHZhclN0YWNrW2ldLmZp
cnN0LmltcGwoKS0+aXNBdG9taWMoKSB8fCB2YXJTdGFja1tpXS5maXJzdC5pbXBsKCktPmlzVW5p
cXVlKCkpOwogICAgICAgICB2YXJpYWJsZXMuYXBwZW5kKHZhclN0YWNrW2ldLmZpcnN0KTsKICAg
ICB9CiAgICAgY29kZUJsb2NrLT5hZG9wdFZhcmlhYmxlcyh2YXJpYWJsZXMpOwpAQCAtMjY0Myw3
ICsyNjQzLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICBMYWJlbFNjb3BlUHRyIHNj
b3BlID0gbmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc3ViamVjdCA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0
KCksIHN1YmplY3ROb2RlKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0
R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgc3ViamVjdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLml0
ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCku
aXRlcmF0b3JTeW1ib2wpOwogICAgIHsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlz
LCAwKTsKICAgICAgICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgc3ViamVjdC5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVu
dGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlm
aWVycy5jcHAKaW5kZXggNjBhNDk0ZGRjZjRiMTUzODFhY2FmMGM1ODE4OTY0NjRlN2EyZTQzYi4u
MWU3ZDEzZDg2NTI5ZTA2OWQxZjg4YjkxZjk4NmEwMmMwYzk3Y2NkZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcApAQCAtNzMs
NyArNzMsNyBAQCB2b2lkIERlc2lyZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKFZNJiB2bSwgQ29t
bW9uRGF0YSogY29tbW9uRGF0YSkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hZGRl
ZElkZW50aWZpZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZ0ltcGwqIHJlcCA9IG1f
YWRkZWRJZGVudGlmaWVyc1tpXTsKICAgICAgICAgQVNTRVJUKHJlcC0+aGFzQXRMZWFzdE9uZVJl
ZigpKTsKLSAgICAgICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZp
ZXIoJnZtLCByZXApKTsKKyAgICAgICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5k
KElkZW50aWZpZXI6OmZyb20oJnZtLCByZXApKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggODg4NjQ3NTc0YTAw
OGI1OWFhMmViYWM3N2YzOTM0YWY4NTI2ZDQzMS4uNWRhZGVhMzY4ZDVlMTc2NjBlZjA4MTI3YmVm
MTkxNmQ5MDgwMTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKQEAgLTQ2NjgsOSArNDY2OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3Ry
aW5nCiAgICAgICAgIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0
b3JhZ2UpKTsKICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICBCYWRUeXBlLCBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChzdHJpbmcpLCBlZGdlLCBtX2ppdC5icmFuY2hUZXN0MzIoCi0g
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZSwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJc0F0b21pYygpKSkpOworICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXNOb3RBdG9t
aWMoKSkpKTsKICAgICAKICAgICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5n
SWRlbnQgfCB+U3BlY1N0cmluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGU1NzUzN2M3OTNmNGNjOTVlMmFjNmNhNjE4OWQ3
OTJkNTdhY2JiYmEuLjNhYjE2YTA3ZDE1YzVhMWQwODAzZTUzN2IyNjNhZDgyOTE2NGEzYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBA
IC02MjA4LDkgKzYyMDgsOSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIHNwZWN1
bGF0ZShCYWRUeXBlLCBqc1ZhbHVlVmFsdWUoc3RyaW5nKSwgZWRnZS5ub2RlKCksIG1fb3V0Lmlz
TnVsbChzdHJpbmdJbXBsKSk7CiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZFR5
cGUsIGpzVmFsdWVWYWx1ZShzdHJpbmcpLCBlZGdlLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0
LnRlc3RJc1plcm8zMigKKyAgICAgICAgICAgIG1fb3V0LnRlc3ROb25aZXJvMzIoCiAgICAgICAg
ICAgICAgICAgbV9vdXQubG9hZDMyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9oYXNo
QW5kRmxhZ3MpLAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6
ZmxhZ0lzQXRvbWljKCkpKSk7CisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJp
bmdJbXBsOjpmbGFnSXNOb3RBdG9taWMoKSkpKTsKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0
ZXIoZWRnZSwgU3BlY1N0cmluZ0lkZW50IHwgflNwZWNTdHJpbmcpOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDI0NGI0YmU5
Y2M2ZTE3ZThhYmVjNzczZGQwODcxOTExMWM0MWQ5NTcuLjRlMjE4NzFjMDBlYjNmYzkyOWU1NDVh
OWM0MDZjMzE5MTQxYjZjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvCiAg
ICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1
aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xv
dCkpOwogfQogCkBAIC0xNDIsNyArMTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXIKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
OwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0x
NTksNyArMTU5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
LSAgICBJZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc1VuaXF1ZSgpID8gSWRlbnRpZmllcjo6ZnJv
bShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7CisgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVpZCk7CiAKICAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
VmFsdWUpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJCiAgICAg
CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8tPmFjY2Vzc1R5cGUpOwogCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKKyAg
ICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwga2V5KTsKICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJlc3VsdCA9IGFzT2JqZWN0KGJhc2UpLT5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIApAQCAtMjEwLDcgKzIxMCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwga2V5KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNlKS0+aGFzUHJv
cGVydHkoZXhlYywgaWRlbnQpKSk7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQo
dm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVp
ZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTdHViSW5mbyoKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZt
LCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQp
OwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSks
IGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZVN0dWJJbgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0s
IHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVpZCk7
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwg
dHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGFzT2JqZWN0
KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRl
bnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI1Nyw3ICsy
NTcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmlj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAg
IElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb20odm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKSwgZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29u
dGV4dCgpKTsKICAgICBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwg
c2xvdCk7CiB9CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWIKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElk
ZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwog
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAt
MzE1LDcgKzMxNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAg
ICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUg
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0zMzksNyAr
MzM5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJp
Y3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAg
ICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVu
dGlmaWVyOjpmcm9tKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTM2Myw3ICszNjMsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50
aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb20odm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBp
ZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2
bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NU
eXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3QKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZt
LCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQp
OwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1
aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQpOwog
ICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJ
bmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAK
aW5kZXggYWIwMTUwMWIxMjkxN2Q5ZWU4MGVkMzE1MjNmOTI1OGRjNDQyZGEyZS4uZWRmZDY3MDFk
YzBmM2Q1OTFjYjM3OGQzOTk4Y2I3ZDQyZjkwNGM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIERhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PGludCoqPigmdGVz
dFZlY3RvcilbMF0gPT0gdGVzdFZlY3Rvci5iZWdpbigpKTsKICNlbmRpZgogCi0gICAgQVNTRVJU
KFN0cmluZ0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVmZmVyID09IDMyKTsKKyAgICBBU1NFUlQoU3Ry
aW5nSW1wbDo6c19oYXNoRmxhZzhCaXRCdWZmZXIgPT0gOCk7CiB9CiAjaWYgQ09NUElMRVIoQ0xB
TkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNmI5NThhZDZjMjA3
YTQ1YWJjMWNkMWI3M2RlMGNlOTA2MjlkYzY5Mi4uZTcxODMyODNiMDcwNmUyNzc1NzE0NDY2MzU0
MWZmNzI0NDRlY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTc0LDcgKzE3NCw3IEBAIGNvbnN0IEZ1bmN0aW9u
Q29kZSA9IDIKIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
CiAKICMgU3RyaW5nIGZsYWdzLgotY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDMyCitjb25z
dCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gOAogCiAjIENvcGllZCBmcm9tIFByb3BlcnR5T2Zmc2V0
LmgKIGNvbnN0IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ID0gMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGMzY2MxZmZiOTg4ODg1YzY0OTQ1YjVlNjUzNThm
ZDQyNzBjYjY1ODIuLjlmNmFkNGYzYTg1MjRjN2JkYWYyNDE3YmYyZDRkMmNlNmExNzhlODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC01NjEsNyArNTYx
LDcgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgewogICAgICAgICBpZiAobV92bS0+cHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMo
KTsKLSAgICAgICAgQVNTRVJUKGlkZW50LT5pbXBsKCktPmlzQXRvbWljKCkpOworICAgICAgICBB
U1NFUlQoaWRlbnQtPmltcGwoKS0+aXNBdG9taWMoKSB8fCBpZGVudC0+aW1wbCgpLT5pc1VuaXF1
ZSgpKTsKICAgICAgICAgbV9zY29wZS5tX3ZhckRlY2xhcmF0aW9ucy5hcHBlbmQoc3RkOjptYWtl
X3BhaXIoKmlkZW50LCBhdHRycykpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCmluZGV4IDM2YTIzNDE3NmE1MzQ0ZWNhM2FlMGQ1NTYzNGM3YjM0MTdmMWFm
MTYuLjFlOWIzZDEyM2JlNTdiODM2MDQ4MWJjMzFjMGRiMTAyYTMzYTMyNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4NiwxMCArMjg2LDEwIEBACiAgICAg
ICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKICAgICAgICAgc2NvcGUtPmdldFVzZWRW
YXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFi
bGUgOiB1c2VkVmFyaWFibGVzKSB7Ci0gICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVk
VmFyaWFibGUoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAg
aWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXI6OmZyb20obV92bSwgdmFy
aWFibGUuZ2V0KCkpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyKG1f
dm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVk
UGFyYW1ldGVyKElkZW50aWZpZXI6OmZyb20obV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKHZhcmlhYmxlID09IG1fdm0t
PnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpCkBAIC01MTgsNyArNTE4LDcgQEAKICAg
ICBBU1NFUlQoIW5hbWUuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW5hbWUuaXNOdWxsKCkpOwog
ICAgIAotICAgIEFTU0VSVChuYW1lLmltcGwoKS0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUKG5h
bWUuaW1wbCgpLT5pc0F0b21pYygpIHx8IG5hbWUuaW1wbCgpLT5pc1VuaXF1ZSgpKTsKICAgICBp
ZiAoZGVwdGgpIHsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb1ZhcmlhYmxlcykK
ICAgICAgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKCZuYW1lKSwg
IkNhbm5vdCBkZWNvbnN0cnVjdCB0byBhIHZhcmlhYmxlIG5hbWVkICciLCBuYW1lLmltcGwoKSwg
IicgaW4gc3RyaWN0IG1vZGUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuY3BwCmluZGV4IDI4YjhjMTNmNDllN2YxM2EyNzExZmIzNTdlY2FiZmU2ZjBmMzY4M2Eu
Ljg3NTIyMGE5NzdjZTZmOGM4MmY1YzcyNTgyNjk4YzdiNDU3YTcwYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtMTgwLDEwICsxODAsMTAgQEAg
Ym9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKIAogICAgIGlmIChKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
Lml0ZXJhdG9yUHJpdmF0ZU5hbWUpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCkgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOwotICAgICAgICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNUSU9O
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1lLCBhcmd1bWVudHNGdW5j
SXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICAgICAgdGhpc09iamVjdC0+SlNDX05BVElWRV9G
VU5DVElPTihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wsIGFyZ3VtZW50c0Z1
bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAgICAgICBpZiAoSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQXJndW1l
bnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CiAgICAgfQotICAgIGlmIChzaG91bGRJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKG1vZGUuc2hvdWxkSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUpOwogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5j
cHAKaW5kZXggZDc5Y2M1MmUwOTJiYzZlOTBiNDFiYmU3OTk4YzJhYjcwN2FhM2QyYy4uYzY5MDRm
YTUwNWFiNmE1NmNkZjMxNTAxNzhlYjRjNTQyNzVmZWIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBl
LmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRo
aXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lLCBhcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9u
dEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250
RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvck5leHRQcml2YXRlTmFtZSwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwg
RG9udEVudW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGM4ODAwZTNjZGNhNjI1MmVh
Yjk4ZmQwMjExODYxZTFkMGRiZWMxMTIuLmJkMzU1NWM0NDIwOWJkNzVhMTM4ZjVmMjM4Y2I5Njc1
YzZkMjZjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgQXJyYXlJ
dGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3Rv
dHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFycmF5SXRlcmF0b3JQcm90b3R5
cGVJdGVyYXRlLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJyYXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUs
IERvbnRFbnVtLCAwKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0
ZXJhdG9yUHJvdG90eXBlSXRlcmF0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBjNzk5Y2Mz
MWUxYmYxMDY2NmI5ZTRiN2Y1ZjUxYmY4NDE4Y2RjYTdlLi4xZmQzMzQ4MWNjZWMzNmNiZGZiNmZj
NjJlOTZhN2ZhNTYzM2I1ZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBBcnJheVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5m
bygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLSAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFy
cmF5UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMs
IERvbnRFbnVtLCAwKTsKIH0KIAogYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtNzM1LDcgKzczNSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAKICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBuYW1lQXJyYXkoZXhlYyk7Ci0gICAgdGhpc09iai0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwgZXhlYywgbmFtZUFy
cmF5LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICB0aGlzT2JqLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqLCBleGVjLCBuYW1lQXJyYXks
IEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1i
b2xzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCA1NmRmMzQ1MDI4N2ZmOTk5
YTM4ZmNmNGNiNzE1MGU4NjFhNTY0M2U4Li45YjY3NDZkNjc4Yzg5YzljNTVlMjBhNjQ5NDY5MGI1
YTRhNTJhZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIElOSVRJQUxJWkVf
UFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUodm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFMSVpF
X0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5JVElB
TElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0aW5OYW1l
cy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkKKyNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wobmFtZSkg
LCBuYW1lIyNTeW1ib2wobV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQogCiBDb21tb25J
ZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZp
ZXIoKQpAQCAtNDEsNiArNDIsNyBAQAogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9L
RVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VB
Q0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BSSVZB
VEVfTkFNRSkKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tO
T1dOX1NZTUJPTChJTklUSUFMSVpFX1NZTUJPTCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNjU4MTVjYzlhMWU5
ZjdjNjIxMDM5MjIwM2FjOGYxODEwN2RmOGE3MC4uYmI1ZDZjNGVkM2EyNTRkN2Y1M2M3MDlmOWYx
ODkzMjUyNzRlMDcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCkBAIC0yMzQsNyArMjM0LDYgQEAKICAgICBtYWNybyh1bnNjb3Bh
YmxlKQogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BF
UlRZX05BTUUobWFjcm8pIFwKLSAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9XRUxMX0tOT1dOX1NZTUJPTChtYWNybykgXAogICAgIG1hY3JvKGl0ZXJhdG9yTmV4dCkgXAog
ICAgIG1hY3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhyZWplY3QpIFwKQEAgLTI4NCw3ICsyODMs
MTEgQEAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05B
TUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7CiAgICAg
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVm
IEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTAotICAg
ICAgICAKKworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9X
Tl9TWU1CT0xfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjU3ltYm9sOworICAg
ICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJP
TChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFM
KQorI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJP
TF9HTE9CQUwKKwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShj
b25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKaW5kZXggNGRiYWY3YjQxN2RjNzA4ZmJjNmM3
MjUwOWYxOWY1NDRmMDFiOTZiZC4uMjU2ZWUzZmNkNzdiYWYwMjlmOTdlYjQ0ODM5ZWI1NzRhZjVi
MTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRp
b25Nb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25N
b2RlLmgKQEAgLTI4LDYzICsyOCw1MiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBFbnVt
ZXJhdGlvbk1vZGUgewotICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCi0gICAgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdCwKLSAgICBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzLAotICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3QK
LX07CitjbGFzcyBFbnVtZXJhdGlvbk1vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2ZsYWdJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzID0gMXUgPDwgMDsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnU2tpcEpTT2JqZWN0ID0gMXUgPDwgMTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnSW5jbHVkZVN5bWJvbHMgPSAxdSA8PCAyOworCisg
ICAgZW51bSBFbnVtZXJhdGlvbk1vZGVSZXByZXNlbnRhdGlvblRhZyA6IHVuc2lnbmVkIHsKKyAg
ICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzID0gMCwKKyAg
ICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzID0gc19mbGFn
SW5jbHVkZVN5bWJvbHMsCisgICAgICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNs
dWRlU3ltYm9scyA9IHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRpZXMsCisgICAgICAgIElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyA9IHNfZmxhZ0luY2x1ZGVE
b250RW51bVByb3BlcnRpZXMgfCBzX2ZsYWdJbmNsdWRlU3ltYm9scywKKyAgICB9OworCisgICAg
aW5saW5lIEVudW1lcmF0aW9uTW9kZShFbnVtZXJhdGlvbk1vZGVSZXByZXNlbnRhdGlvblRhZyB0
YWcpCisgICAgICAgIDogbV9mbGFncyh0YWcpCisgICAgeworICAgIH0KIAotaW5saW5lIGJvb2wg
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsK
LSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXM6
Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9mbGFncyAmIHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3Bl
cnRpZXM7CiAgICAgfQotfQogCi1pbmxpbmUgYm9vbCBzaG91bGRFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAg
IGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbmxpbmUgYm9vbCBzaG91bGRJbmNs
dWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAh
KG1fZmxhZ3MgJiBzX2ZsYWdTa2lwSlNPYmplY3QpOwogICAgIH0KLX0KIAotaW5saW5lIGJvb2wg
c2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkK
LXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXM6Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6
Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZVN5bWJvbHMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJbmNsdWRlU3lt
Ym9sczsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQogCi1pbmxpbmUgRW51bWVyYXRpb25Nb2RlIG1vZGVUaGF0U2tpcHNKU09iamVjdChFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgICAgIHJldHVybiBJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OwotICAgIGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
czoKLSAgICAgICAgcmV0dXJuIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmpl
Y3Q7Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0Ogot
ICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICAg
ICAgcmV0dXJuIG1vZGU7CisgICAgc3RhdGljIGlubGluZSBFbnVtZXJhdGlvbk1vZGUgY3JlYXRl
VGhhdFNraXBzSlNPYmplY3QoRW51bWVyYXRpb25Nb2RlIG1vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gRW51bWVyYXRpb25Nb2RlKG1vZGUubV9mbGFncyB8IHNfZmxhZ1NraXBKU09iamVjdCk7
CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBtb2RlOwotfQor
Citwcml2YXRlOgorICAgIGlubGluZSBleHBsaWNpdCBFbnVtZXJhdGlvbk1vZGUodW5zaWduZWQg
ZmxhZ3MpCisgICAgICAgIDogbV9mbGFncyhmbGFncykKKyAgICB7CisgICAgfQorCisgICAgdW5z
aWduZWQgbV9mbGFnczsKK307CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggMDEzMmQwZTc1MjhlYTM2M2I4YzMx
MzZlY2U1YjAwOGM1MzlhMzhlZi4uNzZhYjRlZjM5NzdhYmJmYjEwM2U0OGEwMGE0NzgyNzAyMzMw
MWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAt
NDYsMTQgKzQ2LDIxIEBAIGNsYXNzIElkZW50aWZpZXIgewogCiAgICAgSWRlbnRpZmllcihFeGVj
U3RhdGUqLCBBdG9taWNTdHJpbmdJbXBsKik7CiAgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqLCBj
b25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
aW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZChleGVjLCByZXApKSB7IEFTU0VSVChtX3N0cmlu
Zy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQoZXhlYywgcy5pbXBsKCkpKSB7IEFTU0VS
VChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIDogSWRlbnRpZmllcihleGVjLCBBdG9taWNTdHJpbmco
cykpIHsgfQorICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMp
CisgICAgICAgIDogSWRlbnRpZmllcihleGVjLCBzLmltcGwoKSkKKyAgICB7CisgICAgfQorICAg
IElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKQorICAgICAgICA6IElk
ZW50aWZpZXIoZXhlYywgQXRvbWljU3RyaW5nKHMpKQorICAgIHsKKyAgICB9CiAKICAgICBJZGVu
dGlmaWVyKFZNKiB2bSwgY29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRk
KHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9
CiAgICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1f
c3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0
b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBTdHJpbmdJbXBsKiByZXApIDogbV9z
dHJpbmcoYWRkKHZtLCByZXApKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkp
OyB9Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhh
ZGQodm0sIHMuaW1wbCgpKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsg
fQorICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHMpCisgICAgICAgIDogSWRl
bnRpZmllcih2bSwgcy5pbXBsKCkpCisgICAgeworICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYg
c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICAgICBBdG9taWNTdHJpbmdJbXBs
KiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KG1f
c3RyaW5nLmltcGwoKSk7IH0KQEAgLTYzLDYgKzcwLDE2IEBAIGNsYXNzIElkZW50aWZpZXIgewog
ICAgIENTdHJpbmcgYXNjaWkoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5hc2NpaSgpOyB9CiAg
ICAgQ1N0cmluZyB1dGY4KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudXRmOCgpOyB9CiAKKyAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKFZNKiB2bSwgU3RyaW5nSW1wbCogdWlkKQorICAgIHsK
KyAgICAgICAgaWYgKCF1aWQgfHwgIXVpZC0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIHJldHVy
biBJZGVudGlmaWVyKHZtLCB1aWQpOworICAgICAgICBJZGVudGlmaWVyIHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0Lm1fc3RyaW5nID0gdWlkOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqIHVpZCk7
CisKICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKGNvbnN0IFByaXZhdGVOYW1lJiBuYW1lKQog
ICAgIHsKICAgICAgICAgSWRlbnRpZmllciByZXN1bHQ7CkBAIC0xMDUsNiArMTIyLDkgQEAgY2xh
c3MgSWRlbnRpZmllciB7CiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N0cmluZzsKIAorICAgIElk
ZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRk
KGV4ZWMsIHJlcCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KKyAg
ICBJZGVudGlmaWVyKFZNKiB2bSwgU3RyaW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZCh2bSwg
cmVwKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQz
Ml90IHRvVUludDMyRnJvbUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCwgYm9vbCYgb2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRleCA3NDcyZDg0N2Q3NWIzMDNlNjQ1NGYw
NmQ2OWVkNmZjNWVlNjkyM2FjLi4xMjQ1YjVlMGVjZWRjMWM0MzE2MzMzOTcxM2I4Mjg1MGZhMGE5
ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIo
RXhlY1N0YXRlKiBleGVjLCBBdG9taWNTdHJpbmdJbXBsKiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJV
RwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAgIGlmIChzdHJp
bmcpCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwgQXRv
bWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3Ry
aW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBBdG9taWNT
dHJpbmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcg
Y29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICNlbmRpZgpAQCAtNDksNyArNDksNyBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRp
ZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogI2lmbmRl
ZiBOREVCVUcKICAgICBjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGVjKTsKICAgICBp
ZiAoIXN0cmluZy5pc051bGwoKSkKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5n
Lmxlbmd0aCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZy5p
bXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcu
aW1wbCgpLT5pc1VuaXF1ZSgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxl
KHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0
aHJlYWQhIik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNlbmRpZgpAQCAtNzAs
NiArNzAsMTEgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gKkF0b21pY1N0cmluZzo6
YWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoKnZtLCByKTsKIH0KIAoraW5saW5lIElkZW50aWZp
ZXIgSWRlbnRpZmllcjo6ZnJvbShFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHVpZCkKK3sK
KyAgICByZXR1cm4gZnJvbSgmZXhlYy0+dm0oKSwgdWlkKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBJZGVudGlmaWVySW5saW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDIwZDQ5ZGI4YmEyZTJjNTg1NTA2Njc0OWVmOWRm
NTE1NTQxNTc2ODEuLmMxYjA0YTZlMjJlZDI4YTJmOTNkMjMwZDU2M2MzMDhlNjI2ZTEyZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0yMjYsNyArMjI2
LDcgQEAgdm9pZCBKU0FycmF5OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm8KIHsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQXJyYXkqPihvYmplY3QpOwogCi0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoKTsKIAogICAgIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCmluZGV4IGMxY2FkMTA1Yzdl
MGQ1YWQ3ZWZkMjk2YTNiZWYwNjk2Yzk1ZjYwMDcuLjViNjZjNDRmM2U4MTg0MjUwMDhiNjBhZWQ0
MjYxM2FiYzdlMThmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBKU0FycmF5QnVmZmVyOjpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoCiB7CiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyKj4ob2JqZWN0KTsKICAgICAKLSAgICBpZiAoc2hv
dWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBj
YjVjOGEyZjAzOTM0M2M1YTI0MDUwYjA5MDgwOGRlZDI1ZTEwOTBiLi5hZGE2NzNiZTc3NDk3ZDA2
NjJmY2VjYzc3YjBiODRiZGMyNmRhNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9p
ZCBKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAogICAgIEpT
QXJyYXlCdWZmZXJWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4o
b2JqZWN0KTsKICAgICAKICAgICAvLyBsZW5ndGgvYnl0ZU9mZnNldC9ieXRlTGVuZ3RoIGFyZSBE
b250RW51bSwgYXQgbGVhc3QgaW4gRmlyZWZveC4KLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcyhtb2RlKSkgeworICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMoKSkgewogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygp
LmJ5dGVPZmZzZXQpOwogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5
dGVMZW5ndGgpOwogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAppbmRleCBkZWQ4Yzg1
ODBiMGFjMzVkNGQ5NzcxNmEwMGFkZjA4MGRjYjZlMmVlLi5hNzU0OWI4OGI1MzQzMzFhM2NlMTI1
N2QwZDU2NDk2NGIzNmFiMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NhbGxlZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Fs
bGVlLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBjbGFzcyBKU0NhbGxlZSA6IHB1YmxpYyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
ID0gRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5
bWJvbHMpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBkYzM3NzE5NzBh
YTQwNjkxZjU5MWMxZTM5MTA4MjM4NmUxYmZhMjcwLi44MjYzNzIxMmMyNTE2MTdlOGM5ODQyNjUy
N2E3ODc2NWJiODY4ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2
b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JC
dWlsdGluRnVuY3Rpb24oKSAmJiBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUp
KSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIG1v
ZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVp
ZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggOWY1ZmU2MTQxNTliZGNmMmU1
YWJjNDU1MGQwNDgxOThlM2IzOGRjNy4uYTc3YzRhOWY1NWMwZmJkMWE0ZGI1ZTkxYjg1ODRlOGY5
NzYwOGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApA
QCAtMTQwLDcgKzE0MCw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewog
ICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVj
U3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2ZDBkMjFmYTYxZjM5ODlmOWQ5YjQx
OTlkYWE4ODhlOWY2NjQ0ZWNhLi5hOTk4ZWU4ODUyMWVmNjczOWEyMjExNTY3ZDM3ODMyYWUzNDg1
MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNDE1LDcgKzQxNSw3IEBACiB7
CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwogICAgIAotICAgIGlmIChzaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpOwogICAgIAogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggYjE0YTQ3OWM5
YTlmMWVkYmRjNWY2NTY5NWYzNGEzNjQ1ZTc2ODcxZS4uYTY3MTgwMThkMTdmMzViNWViM2I5ZDdk
ZTIwMDc3NWVlMzQ4MGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAtMTE0LDExICsxMTQsMTUgQEAgdm9p
ZCBKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGEKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
dGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tl
cik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgICAgIGlmIChpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0gJiYgIXNo
b3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgICAgICAgICBpZiAoaXQt
PnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtICYmICFtb2RlLnNob3VsZEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIGlmICghdGhpc09iamVjdC0+aXNWYWxpZChpdC0+dmFsdWUpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVj
LCBpdC0+a2V5LmdldCgpKSk7CisgICAgICAgICAgICBpZiAoaXQtPmtleS5nZXQoKS0+aXNQcml2
YXRlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIW1vZGUu
c2hvdWxkSW5jbHVkZVN5bWJvbHMoKSAmJiBpdC0+a2V5LmdldCgpLT5pc1VuaXF1ZSgpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgLy8gU2tpcCB0aGUgSlNFbnZpcm9ubWVudFJlY29yZCBpbXBsZW1lbnRhdGlvbiBvZiBnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPTk9iamVjdC5jcHAKaW5kZXggOTkwNzQzYTU1OGVlYTg4Nzk5M2UyMjdhNmVkMThlNTUwYzIz
ZTFhMy4uOGU3YzIxODU0Yzc0YjkyODVmMTVhZWYwMjFhYzEwNzY5ODg5YWM1YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTQ5NSw3ICs0OTUs
NyBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdp
ZmllciYgc3RyaW5naWZpZXIsIFN0cmluZ0J1aQogICAgICAgICAgICAgICAgIG1fcHJvcGVydHlO
YW1lcyA9IHN0cmluZ2lmaWVyLm1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMuZGF0YSgpOwog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgb2Jq
ZWN0UHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICAgICAgICAgICAgICBtX29iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQoKSwgZXhlYywgb2JqZWN0
UHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAg
ICAgbV9vYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMobV9vYmplY3Qu
Z2V0KCksIGV4ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICAgICAgICAgICAgICBt
X3Byb3BlcnR5TmFtZXMgPSBvYmplY3RQcm9wZXJ0eU5hbWVzLnJlbGVhc2VEYXRhKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBtX3NpemUgPSBtX3Byb3BlcnR5TmFtZXMtPnByb3BlcnR5
TmFtZVZlY3RvcigpLnNpemUoKTsKQEAgLTcxMiw3ICs3MTIsNyBAQCBORVZFUl9JTkxJTkUgSlNW
YWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIG9i
amVjdFN0YWNrLnB1c2gob2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVu
ZCgwKTsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVB
cnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3Rh
Y2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRF
eGNsdWRlU3ltYm9scyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvYmplY3RTdGFydFZp
c2l0TWVtYmVyOgogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggODdjMTkxOTQ3MjljNTI1NDk2ZDExMzNhMjFl
OTg5MjhiMWVkZWU0Ni4uZGU1MWYzZjRhODdjY2RjMTg2ZGI0ZGI4NjRlZTI1MjE0YWFhNTRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNzYsNyAr
NzYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzcwogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgZm9yIChhdXRvIGl0ZXIgPSB0YWJsZS0+YmVnaW4oKTsgaXRlciAhPSB0YWJsZS0+
ZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgaWYgKCghKGl0ZXItPmF0dHJpYnV0ZXMoKSAm
IERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSAmJiAh
KChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQor
ICAgICAgICAgICAgaWYgKCghKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2Rl
LnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgJiYgISgoaXRlci0+YXR0cmlidXRl
cygpICYgQnVpbHRpbk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKCZ2bSwgaXRlci5rZXkoKSkpOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTQ3OCw3ICsxNDc4LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUEKIAog
dm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSkKIHsKLSAgICBpZiAoIXNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFt
ZXMobW9kZSkpIHsKKyAgICBpZiAoIW1vZGUuc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlO
YW1lcygpKSB7CiAgICAgICAgIC8vIFdlIHN0aWxsIGhhdmUgdG8gZ2V0IG5vbi1pbmRleGVkIHBy
b3BlcnRpZXMgZnJvbSBhbnkgc3ViY2xhc3NlcyBvZiBKU09iamVjdCB0aGF0IGhhdmUgdGhlbS4K
ICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTE1MzIsNyArMTUzMiw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG1hcC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgICAgICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2Rl
KSB8fCAhKGl0LT52YWx1ZS5hdHRyaWJ1dGVzICYgRG9udEVudW0pKQorICAgICAgICAgICAgICAg
IGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSB8fCAhKGl0LT52YWx1
ZS5hdHRyaWJ1dGVzICYgRG9udEVudW0pKQogICAgICAgICAgICAgICAgICAgICBrZXlzLnVuY2hl
Y2tlZEFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaXQtPmtleSkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcgogewogICAgIGdldENsYXNzUHJvcGVydHlOYW1lcyhleGVjLCBvYmplY3QtPmNsYXNzSW5m
bygpLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCBvYmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQo
KSk7CiAKLSAgICBpZiAoIXNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMobW9kZSkp
CisgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0yNzUwLDcg
KzI3NTAsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogdm9pZCBKU09iamVjdDo6Z2V0R2Vu
ZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGVUaGF0U2tp
cHNKU09iamVjdChtb2RlKSk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6
OmNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpKTsKIAogICAgIGlmIChvYmplY3QtPnByb3Rv
dHlwZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjFhMmU1
NjJmOWFiZjQwMmFiNjM4ZGMwOWM2ZWZjMzgwZDFjNWI0ZC4uMmE1MTY5NzIxMWM2ZDhhM2JlNGU0
ZTc4MmUyOWFkYzJhNWVjOTA0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMjUxLDcgKzI1MSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0ganNDYXN0
PEpTUHJvbWlzZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0LiBMZXQgJ2l0
ZXJhdG9yJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRlcmFibGUpLgot
ICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVu
Y3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1i
b2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApAQCAtMzY3LDcg
KzM2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0
b3JGdW5jQWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJy
ZWQgPSBqc0Nhc3Q8SlNQcm9taXNlRGVmZXJyZWQqPihkZWZlcnJlZFZhbHVlKTsKIAogICAgIC8v
IDQuIExldCAnaXRlcmF0b3InIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBHZXRJdGVyYXRvcihp
dGVyYWJsZSkuCi0gICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4
ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUg
aXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFicnVwdFJlamVjdGlvbihleGVjLCBkZWZlcnJlZCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oCmluZGV4IGVlMThhYmY2ZWIzZjMyY2ZjMDEyOTFlYjE0NDc0MGVmNzhh
OTZhMWMuLjRjMTBjZGYyZmI1NjVlMTVjMTQ1ZjgxZjdlNWIxOWY0YjUxMjI0ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oCkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvciogc3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMKICAg
ICAgICAgcmV0dXJuIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtKTsKIAogICAg
IFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgYmFzZS0+bWV0aG9k
VGFibGUodm0pLT5nZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGJhc2UtPm1ldGhvZFRhYmxl
KHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3lt
Ym9scyk7CiAKICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWVz
KTsKICAgICBpZiAoc3RydWN0dXJlLT5jYW5DYWNoZVN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1l
cmF0b3IoKSkKQEAgLTE0Miw5ICsxNDIsOSBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKiBnZW5lcmljUHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsCiAgICAg
Ly8gdGhlIG5ldyBnZW5lcmljIFByb3BlcnR5TmFtZUFycmF5IGFuZCBmYWlsaW5nIGJlY2F1c2Ug
d2UndmUgYWxyZWFkeSB2aXNpdGVkIHRoZW0uCiAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1
cmUgPSBzdHJ1Y3R1cmVFbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmUodm0pOwogICAgIGlmIChz
dHJ1Y3R1cmUgPT0gY2FjaGVkU3RydWN0dXJlICYmIHN0cnVjdHVyZS0+Y2FuQWNjZXNzUHJvcGVy
dGllc1F1aWNrbHkoKSAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obGVuZ3RoKSA9PSBiYXNlLT5n
ZXRBcnJheUxlbmd0aCgpKQotICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldEdlbmVy
aWNQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOworICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldEdlbmVyaWNQ
cm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICBlbHNlCi0g
ICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNlLCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYmFz
ZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1
ZGVTeW1ib2xzKTsKICAgICAKICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBzdHJ1
Y3R1cmUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwCmluZGV4IGI4ZmIyMjgyYWZhZTg3ZWNjNDExMDI0NWNlOWJiODcz
ZTk1MGYwZmYuLjU3MGRjMTQwNzVkYzUxZTBkNWE1ZDg0MTBmZjY1ZmI3Mzg1ODMyNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuY3BwCkBAIC02MSwxMCArNjEsMTIgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+
bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09i
amVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFi
bGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihs
b2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1Vu
aXF1ZSgpKQorICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzUHJpdmF0ZSgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0
ZXMoKSAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUp
KQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQt
PmtleS5nZXQoKSkpOworICAgICAgICAgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVTeW1ib2xz
KCkgJiYgaXQtPmtleS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwg
bW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCisgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpdC0+a2V5LmdldCgpKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggYjIyMGI5ODc1ODg1YzQy
ZjljZTYzOGYzMjIyNDc5MmMzMjc2MTAxNy4uMDM1NjRmODg4MTFmM2U3ZmFiZmIwYWRhYjliYmM5
YWNhMWZiYWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
SXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIE1hcEl0ZXJh
dG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlw
ZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVu
Y0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0
b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPml0ZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0
LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCmluZGV4IDU0ODIyMjc2OTQwMGI3MTg1MmFmN2RiOGI3NWVmNTA3NTQ0
ZWRkNGYuLmY4NDM2N2FlODBiNzI2Mzc1MDVlZGMxNTYzZDhiMjg4OGM1OGM5NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtNjgsNyAr
NjgsNyBAQCB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+a2V5cywgbWFwUHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLCBtYXBQcm90b0Z1bmNWYWx1
ZXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmVudHJpZXMsIG1hcFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKLSAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIG1h
cFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBE
b250RW51bSwgMCk7CiAKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+
c2l6ZS5zdHJpbmcoKSwgbWFwUHJvdG9GdW5jU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjAyZTU3NTI4OWUx
NmNkYzE2YTBiYmEzNDk3ODVmMmUyN2VmMTdkZC4uM2E3ZWQzNWZhYmEzYjU0ZWQ1ZWU3ODM3NjU5
NGNhZWRjYWY2ZmIxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMzQsMTIgKzM0LDE0IEBACiAjaW5jbHVkZSAiUHJv
cGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNs
dWRlICJTdGFja1Zpc2l0b3IuaCIKKyNpbmNsdWRlICJTeW1ib2wuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRQ
cm90b3R5cGVPZihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKik7CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhFeGVjU3RhdGUqKTsKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShF
eGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSopOwpAQCAtNjYsNiArNjgsNyBAQAogICBnZXRQ
cm90b3R5cGVPZiAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ig
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICAgRG9udEVudW18RnVu
Y3Rpb24gMgogICBnZXRPd25Qcm9wZXJ0eU5hbWVzICAgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlOYW1lcyAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBnZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQogICBrZXlzICAgICAgICAgICAgICAgICAgICAgIG9iamVj
dENvbnN0cnVjdG9yS2V5cyAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQogICBkZWZpbmVQcm9wZXJ0eSAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJv
cGVydHkgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICBkZWZpbmVQcm9wZXJ0aWVz
ICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMgpAQCAtMjA2LDcgKzIwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSog
ZXhlCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlcXVlc3RlZCBwcm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVj
dC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3du
UHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRp
ZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1v
ZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7CiAgICAgSlNB
cnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBu
dW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBAIC0yMTUsMTIgKzIxOCwyOSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhF
eGVjU3RhdGUqIGV4ZQogfQogCiAvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4K
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYy0+YXJndW1lbnQo
MCkuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2Yg
YSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0aWVzKGV4ZWMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+
YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVE
b250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CisgICAgSlNBcnJheSogbmFtZXMg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVz
ID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9w
ZXJ0aWVzOyBpKyspIHsKKyAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnRp
ZXNbaV0uaW1wbCgpOworICAgICAgICBpZiAoaW1wbC0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAg
IG5hbWVzLT5wdXNoKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGltcGwpKTsKKyAg
ICB9CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuYW1lcyk7Cit9CisKKy8vIEZJWE1FOiBV
c2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+
YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQga2V5cyBvZiBh
IHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5
IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5h
cmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVj
LCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNB
bmRFeGNsdWRlU3ltYm9scyk7CiAgICAgSlNBcnJheSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkoZXhlYywgMCk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKQEAgLTMz
MSw3ICszNTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogc3RhdGljIEpTVmFsdWUgZGVmaW5l
UHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIEpTT2JqZWN0KiBw
cm9wZXJ0aWVzKQogewogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7
Ci0gICAgYXNPYmplY3QocHJvcGVydGllcyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJv
cGVydGllcyksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURv
bnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBzaXplX3QgbnVtUHJvcGVy
dGllcyA9IHByb3BlcnR5TmFtZXMuc2l6ZSgpOwogICAgIFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0
b3I+IGRlc2NyaXB0b3JzOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBA
IC0zOTgsNyArNDE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQg
b3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRp
ZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1
ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1l
QXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQ
cm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4o
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUg
cmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qg
b2YgTyB3aXRoIFAuCkBAIC00MzUsNyArNDU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAy
LiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1l
cmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5l
bmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
cHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEu
IExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1d
IGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTQ4Myw3ICs1MDMsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQoRXhlY1N0YXRl
KiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBv
ZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXNB
bmRJbmNsdWRlU3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhl
IFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC01MTMs
NyArNTMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cklzRnJvemVuKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93
biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVz
KGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIFByb3BlcnR5TmFtZUFy
cmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJv
cGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJl
c3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9m
IE8gd2l0aCBQLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJp
dmF0ZU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgK
aW5kZXggMjE0MTY0NDY2NDVjN2ZmZjAzZjdjODJkMTc4NzM5YWQ1NjA4YmY2NC4uNTczNmE0MDk0
MzRmYjBiNTdhMzlkNmZjODg2MDAzNTkyNzY3Mzc3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCkBAIC0zNSwxOSArMzUsMjUgQEAgY2xhc3MgUHJpdmF0
ZU5hbWUgewogICAgIFByaXZhdGVOYW1lKCkKICAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6
Y3JlYXRlVW5pcXVlRW1wdHkoKSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5p
cXVlKCkpOwogICAgIH0KLSAgICBQcml2YXRlTmFtZShjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
KQotICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWUoZGVzY3JpcHRpb24u
aW1wbCgpKSkKKworICAgIGVudW0gQ3JlYXRlUHJpdmF0ZVRhZyB7IENyZWF0ZVByaXZhdGUgfTsK
KyAgICBQcml2YXRlTmFtZShDcmVhdGVQcml2YXRlVGFnKQorICAgICAgICA6IG1faW1wbChTdHJp
bmdJbXBsOjpjcmVhdGVVbmlxdWVQcml2YXRlRW1wdHkoKSkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAgIH0KKwogICAgIGV4cGxpY2l0IFByaXZhdGVOYW1l
KFN0cmluZ0ltcGwqIHVpZCkKICAgICAgICAgOiBtX2ltcGwodWlkKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7CiAgICAgfQogCisgICAgZXhwbGljaXQgUHJpdmF0
ZU5hbWUoY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKKyAgICAgICAgOiBtX2ltcGwoU3RyaW5n
SW1wbDo6Y3JlYXRlVW5pcXVlKGRlc2NyaXB0aW9uLmltcGwoKSkpCisgICAgeworICAgIH0KKwog
ICAgIEF0b21pY1N0cmluZ0ltcGwqIHVpZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0
b21pY1N0cmluZ0ltcGwqPihtX2ltcGwuZ2V0KCkpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgUHJpdmF0ZU5hbWUmIG90aGVyKSBjb25zdCB7IHJldHVybiB1aWQoKSA9PSBvdGhlci51
aWQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaApp
bmRleCAzMDc0YzcyZTEwNzAxMzNiOTdiMDNiMWRmZjRhNDNkZTEzMmZjMGE2Li4wOTRiZDI1Y2Vm
NTk3ZjFhZDJmOWE0NWNjZmViMTEyMDI2MzJhYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBQcm9wZXJ0
eU5hbWUgewogICAgIFByb3BlcnR5TmFtZShBdG9taWNTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUp
CiAgICAgICAgIDogbV9pbXBsKHByb3BlcnR5TmFtZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgh
bV9pbXBsIHx8IG1faW1wbC0+aXNBdG9taWMoKSk7CisgICAgICAgIEFTU0VSVCghbV9pbXBsIHx8
IG1faW1wbC0+aXNBdG9taWMoKSB8fCBtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAgIH0KIAogICAg
IFByb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCkBAIC05NCw3ICs5
NCw2IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAgICAgewogICAgICAgICBBU1NFUlQobV9pbXBs
KTsKICAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7Ci0gICAgICAgIEFTU0VSVCht
X2ltcGwtPmlzQXRvbWljKCkpOwogICAgIH0KIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIHVpZCgp
IGNvbnN0CkBAIC0xMDQsMTQgKzEwMywxNCBAQCBjbGFzcyBQcm9wZXJ0eU5hbWUgewogCiAgICAg
QXRvbWljU3RyaW5nSW1wbCogcHVibGljTmFtZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gbV9pbXBsLT5pc1VuaXF1ZSgpID8gbnVsbHB0ciA6IG1faW1wbDsKKyAgICAgICAgcmV0dXJu
ICghbV9pbXBsIHx8IG1faW1wbC0+aXNVbmlxdWUoKSkgPyBudWxscHRyIDogbV9pbXBsOwogICAg
IH0KIAogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBOb3RBbkluZGV4ID0gVUlOVF9NQVg7CiAK
ICAgICB1aW50MzJfdCBhc0luZGV4KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwgPyB0
b1VJbnQzMkZyb21TdHJpbmdJbXBsKG1faW1wbCkgOiBOb3RBbkluZGV4OworICAgICAgICByZXR1
cm4gKG1faW1wbCAmJiAhbV9pbXBsLT5pc1VuaXF1ZSgpKSA/IHRvVUludDMyRnJvbVN0cmluZ0lt
cGwobV9pbXBsKSA6IE5vdEFuSW5kZXg7CiAgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCmluZGV4IDQ0NzViODk4YTk3NDk3N2NlNjhlNDc1OWRj
YWQwNmJkNmEwNDgzNzMuLjI5NDYzMDMxMWIyNzYwMzcyMzcwOTRiNjE2M2EyMTA4OGNlZWZkN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVB
cnJheS5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKIAogdm9pZCBQcm9wZXJ0eU5hbWVBcnJheTo6YWRk
KFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFpZGVudGlmaWVyIHx8IGlk
ZW50aWZpZXIgPT0gU3RyaW5nSW1wbDo6ZW1wdHkoKSB8fCBpZGVudGlmaWVyLT5pc0F0b21pYygp
KTsKKyAgICBBU1NFUlQoIWlkZW50aWZpZXIgfHwgaWRlbnRpZmllciA9PSBTdHJpbmdJbXBsOjpl
bXB0eSgpIHx8IGlkZW50aWZpZXItPmlzQXRvbWljKCkgfHwgaWRlbnRpZmllci0+aXNVbmlxdWUo
KSk7CiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgdWludDMyX3QgaW5kZXgg
PSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSkuYXNJbmRleCgpOwor
ICAgICAgICB1aW50MzJfdCBpbmRleCA9IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tKG1f
dm0sIGlkZW50aWZpZXIpKS5hc0luZGV4KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5kZXgs
IGluZGV4ID09IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCB8fCBpbmRleCA+PSBtX3ByZXZpb3Vz
bHlFbnVtZXJhdGVkTGVuZ3RoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCmluZGV4IDk5NGYwOWM5MDU0MDExZTQxYjIz
MzhmOWQwNTA0YjJkNDliZmYzOWEuLjY4MzY3NjE0OTk4OWMxNDhhOWJkMjY1ZmM3MmNiM2ZjNTBi
M2M5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TmFtZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaApAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheSB7CiAg
ICAgdm9pZCBhZGRLbm93blVuaXF1ZShTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogICAgIHsKICAg
ICAgICAgbV9zZXQtPmFkZChpZGVudGlmaWVyKTsKLSAgICAgICAgbV9kYXRhLT5wcm9wZXJ0eU5h
bWVWZWN0b3IoKS5hcHBlbmQoSWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSk7CisgICAgICAg
IG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXI6OmZyb20obV92
bSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNGQ5
ZDBiMjdlNGQwYzhjOTFmOWZlYjQ1YTFkNTRlNTk1ZDMzZDUxOS4uNTQ5YTNhMmY5YTc0YzNhMWE5
ZGM3MDAxMDQxMmZhNDc5ZDkxYTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMDUsMjEgKzEwNSwyMSBAQCBib29sIFJlZ0V4cE9i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcgogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQg
UmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUp
KQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAg
ICAgQmFzZTo6Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubGFzdEluZGV4KTsKICAgICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhv
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDU3
M2FjZmE1Y2Q3NjRiMDllZTc1NDNiMzQ3YjQ5YTUxMTFlNzA1MzcuLjhlYTYxMDQ4ZDc0OTdlYWMw
NWM5MTExYmMxMjY4M2I2Y2Y4MjQ5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
dm9pZCBTZXRJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAg
ICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBTZXRJdGVyYXRv
clByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIFNldEl0ZXJhdG9yUHJvdG90
eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvck5leHRQcml2YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90
b3R5cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCBmODhlYTdjZjk4NjhmNjY4YjhjMmU4
ODgxNWZmNjVjZjM5OTI3YjQ5Li40OTk2ZGEwZWE1MzEzZmQyZTYxZTcxYTZlZjQzODM1MWZhYTNi
YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5j
cHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAw
KTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgc2V0
UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwg
MCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclBy
aXZhdGVOYW1lLCBzZXRQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgc2V0UHJvdG9GdW5j
S2V5cywgRG9udEVudW0sIDApOwogCiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5
TmFtZXMtPnNpemUuc3RyaW5nKCksIHNldFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNTAwMWJjYzRlMWI3ZTM3
OTNlZDI2ZTE0MjBhODBhNjA0NjhlMTNjNi4uYWIzOTQ5ZTA3ZTMzZTFhMTlmNzUzNTlmMjk5ODFh
MjE0OWFmMGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAg
ICBpbnQgc2l6ZSA9IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCk7CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggM2ZjYjQyNmNkYTBkNWJiYWMzMTcw
YThiY2I0NjYxNzVmMjljNzQyNS4uOTUxOTg5YTg5OTAyNjkyNmU4NWM3MjgyYTRhZDg3NDgzMmE1
YTI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBA
IC05NDcsNyArOTQ3LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3Ry
dWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAgICBQcm9wZXJ0eVRh
YmxlOjppdGVyYXRvciBlbmQgPSBwcm9wZXJ0eVRhYmxlKCktPmVuZCgpOwogICAgIGZvciAoUHJv
cGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBBU1NFUlQoaGFzTm9uRW51bWVyYWJsZVByb3Bl
cnRpZXMoKSB8fCAhKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkpOwotICAgICAgICBpZiAo
IWl0ZXItPmtleS0+aXNVbmlxdWUoKSAmJiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0p
IHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAgIGlm
ICghaXRlci0+a2V5LT5pc1ByaXZhdGUoKSAmJiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVu
dW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSkgeworICAgICAg
ICAgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVTeW1ib2xzKCkgJiYgaXRlci0+a2V5LT5pc1Vu
aXF1ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGtub3du
VW5pcXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkS25vd25VbmlxdWUoaXRl
ci0+a2V5KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAppbmRleCA5OWNlNjg2Mjc0ZmQ3NzM5Mjhk
ZGQ1OWZmMWY5Y2FmNGVlYmUyMTFlLi4xOGU3MjgyYjQ3YjhjMTc0NWE3MmQ5ZmU5ZDU1OGQ2NjVi
MWNjNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
Q29uc3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBACiB9CiAKICNkZWZpbmUgSU5JVElBTEla
RV9XRUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSMjU3ltYm9sLmltcGwoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
IAogdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTeW1ib2xQ
cm90b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApp
bmRleCAwNjI5MGMyNGU0NzNkM2U5NjViNDUwNDAwMGE2M2EyYTcyMDA4ZjVjLi45ZjEzMGVkY2Yy
OGNiZjJmNWYwYTEwNTg3MTcwMTYxYjQxMjEwZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuY3BwCkBAIC00MDMsNiArNDAzLDkgQEAgc3RydWN0IENoYXJCdWZmZXJGcm9tTGl0ZXJh
bERhdGFUcmFuc2xhdG9yIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuICpTdHJpbmdJbXBsOjplbXB0eSgpOwogCisgICAgaWYgKHN0cmluZy5pc1VuaXF1ZSgpKQor
ICAgICAgICByZXR1cm4gYWRkKHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKSk7
CisKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0
cmluZyBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxyZWFk
eSBhdG9taWMuIik7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CkBAIC00
MjEsNiArNDI0LDkgQEAgc3RydWN0IENoYXJCdWZmZXJGcm9tTGl0ZXJhbERhdGFUcmFuc2xhdG9y
IHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICpTdHJpbmdJbXBs
OjplbXB0eSgpOwogCisgICAgaWYgKHN0cmluZy5pc1VuaXF1ZSgpKQorICAgICAgICByZXR1cm4g
YWRkKHN0cmluZ1RhYmxlLCBzdHJpbmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luVW5pcXVlKCkpOwor
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJp
bmcgc2hvdWxkIG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkg
YXRvbWljLiIpOwogCiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwpAQCAtNTAz
LDYgKzUwOSwxMiBAQCBBdG9taWNTdHJpbmdJbXBsKiBBdG9taWNTdHJpbmc6OmZpbmRTbG93Q2Fz
ZShTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5n
LmlzQXRvbWljKCksICJBdG9taWNTdHJpbmdJbXBscyBzaG91bGQgcmV0dXJuIGZyb20gdGhlIGZh
c3QgY2FzZS4iKTsKIAorICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOworCisg
ICAgaWYgKHN0cmluZy5pc1VuaXF1ZSgpKQorICAgICAgICByZXR1cm4gZmluZCgmc3RyaW5nLmV4
dHJhY3RGb2xkZWRTdHJpbmdJblVuaXF1ZSgpKTsKKwogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9j
a2VyIGxvY2tlcjsKICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgYXRvbWljU3RyaW5nVGFibGUg
PSBzdHJpbmdUYWJsZSgpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBhdG9taWNTdHJpbmdUYWJsZS5m
aW5kKCZzdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggYmFlOWQzNjJk
Mjc1MWU1YTczY2UwYjFiN2UyYTQxMWIwMTgzN2YzMy4uNjA5Y2Y3MzFkMjdiZmMwNjc4ZDZjNjk4
M2M0Y2IwOGI2YTIyOTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCkBAIC0xODMs
MTEgKzE4Myw5IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmUHRy
PFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiBzdHJpbmcpCiAgICAgewotICAgICAgICBpZiAo
IXN0cmluZyB8fCBzdHJpbmctPmlzQXRvbWljKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoIXN0cmluZyB8fCAhc3RyaW5nLT5sZW5ndGgoKSB8fCBzdHJpbmctPmlzVW5pcXVl
KCkgfHwgaXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBj
b21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAg
ICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhZGRTbG93
Q2FzZSgqc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIGFkZCgqc3RyaW5nKTsKICAgICB9CiAgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkRnJvbUxpdGVy
YWxEYXRhKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAjaWYgVVNF
KENGKQpAQCAtMTk3LDExICsxOTUsOSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFN0cmluZ1RhYmxlUHJvdmlkZXI+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFdpdGhTdHJpbmdUYWJsZVByb3ZpZGVyKFN0cmluZ1Rh
YmxlUHJvdmlkZXImIHN0cmluZ1RhYmxlUHJvdmlkZXIsIFN0cmluZ0ltcGwqIHN0cmluZykKICAg
ICB7Ci0gICAgICAgIGlmICghc3RyaW5nIHx8IHN0cmluZy0+aXNBdG9taWMoKSkgewotICAgICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nIHx8ICFzdHJpbmctPmxlbmd0aCgpIHx8
IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRo
ZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBp
ZiAoIXN0cmluZykKICAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGFkZFNsb3dDYXNlKCpzdHJpbmdUYWJsZVByb3ZpZGVyLmF0b21pY1N0cmluZ1Rh
YmxlKCksICpzdHJpbmcpOworICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmdUYWJsZVByb3ZpZGVy
LmF0b21pY1N0cmluZ1RhYmxlKCksICpzdHJpbmcpOwogICAgIH0KIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKQEAgLTIxMyw3ICsyMDksMjUgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAgICBBdG9t
aWNTdHJpbmcoQVNDSUlMaXRlcmFsKTsKIAogICAgIFN0cmluZyBtX3N0cmluZzsKLSAgICAKKwor
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCYg
c3RyaW5nKQorICAgIHsKKyAgICAgICAgaWYgKHN0cmluZy5pc0F0b21pYygpKSB7CisgICAgICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgaXNJbkF0b21pY1N0
cmluZ1RhYmxlKCZzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhl
ciB0aHJlYWQhIik7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBhZGRTbG93Q2FzZShzdHJpbmcpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGQoQXRvbWljU3RyaW5nVGFibGUmIHN0cmluZ1Rh
YmxlLCBTdHJpbmdJbXBsJiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoc3RyaW5nLmlzQXRv
bWljKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgo
KSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUoJnN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBj
b21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmc7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZ1RhYmxlLCBzdHJp
bmcpOworICAgIH0KKwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmlu
Z0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwmKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShBdG9taWNTdHJpbmdUYWJsZSYs
IFN0cmluZ0ltcGwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggYzI0OWY0
ZDdmZmQ1ZGFiZWUxNjQwNjRhNjIxOTI0ZGNmMzQ1N2RjOC4uMjcyZWM5YTk5ZDk4ZTFkZDY5Njcz
NWJlMDY2YTRmMTk4ZjIwMWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0y
OTIsNyArMjkyLDggQEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0ltcGwqIHN0cmlu
Z0ltcGwpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBjcmVhdGVVbmlxdWVFbXB0
eSgpOwogICAgIFJlZjxTdHJpbmdJbXBsPiBzdHJpbmcgPSBjcmVhdGVTdWJzdHJpbmdTaGFyaW5n
SW1wbChyZXAsIDAsIGxlbmd0aCk7Ci0gICAgc3RyaW5nLT5tX2hhc2hBbmRGbGFncyA9IGhhc2hB
bmRGbGFnc0ZvclVuaXF1ZShzdHJpbmctPm1faGFzaEFuZEZsYWdzKTsKKyAgICBBU1NFUlQoIXN0
cmluZy0+aXNBdG9taWMoKSk7CisgICAgc3RyaW5nLT5tX2hhc2hBbmRGbGFncyA9IGhhc2hBbmRG
bGFnc0ZvclVuaXF1ZShzdHJpbmctPm1faGFzaEFuZEZsYWdzLCBmYWxzZSk7CiAgICAgcmV0dXJu
IHN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAyNjZiOTdlNGM4ODY2
N2JmMTQ2MGU3YjkxYmIwNTFjNGJhNTM4OTdiLi44Y2VlODUwYmNlZTY2N2Y0ODRjNmZmZmNkNmQ3
MGFmNWM5ZjFiMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMTQxLDYgKzE0MSwy
NSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgQnVmZmVyU3Vic3RyaW5nLAogICAgIH07
CiAKKyAgICAvLyBUaGUgYm90dG9tIDYgYml0cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3MuCisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0NvdW50ID0gNjsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc19mbGFnTWFzayA9ICgxdSA8PCBzX2ZsYWdDb3VudCkgLSAxOworICAgIENPTVBJ
TEVfQVNTRVJUKHNfZmxhZ0NvdW50IDw9IFN0cmluZ0hhc2hlcjo6ZmxhZ0NvdW50LCBTdHJpbmdI
YXNoZXJfcmVzZXJ2ZXNfZW5vdWdoX2JpdHNfZm9yX1N0cmluZ0ltcGxfZmxhZ3MpOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdTdHJpbmdLaW5kQ291bnQgPSA0OworCisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNVbmlxdWUgPSAxdSA8PCAo
c19mbGFnU3RyaW5nS2luZENvdW50ICsgMSk7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
aGFzaE1hc2tTdHJpbmdLaW5kID0gKDF1IDw8IHNfZmxhZ1N0cmluZ0tpbmRDb3VudCkgfCBzX2hh
c2hGbGFnU3RyaW5nS2luZElzVW5pcXVlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hh
c2hGbGFnOEJpdEJ1ZmZlciA9IDF1IDw8IDM7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
aGFzaEZsYWdEaWRSZXBvcnRDb3N0ID0gMXUgPDwgMjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc19oYXNoTWFza0J1ZmZlck93bmVyc2hpcCA9ICgxdSA8PCAwKSB8ICgxdSA8PCAxKTsKKwor
ICAgIGVudW0gU3RyaW5nS2luZCB7CisgICAgICAgIFN0cmluZ0F0b21pYyA9IDB1IDw8IHNfZmxh
Z1N0cmluZ0tpbmRDb3VudCwKKyAgICAgICAgU3RyaW5nTm9ybWFsID0gMXUgPDwgc19mbGFnU3Ry
aW5nS2luZENvdW50LAorICAgICAgICBTdHJpbmdVbmlxdWUgPSAydSA8PCBzX2ZsYWdTdHJpbmdL
aW5kQ291bnQsCisgICAgICAgIFN0cmluZ1VuaXF1ZVByaXZhdGUgPSAzdSA8PCBzX2ZsYWdTdHJp
bmdLaW5kQ291bnQsCisgICAgfTsKKwogICAgIC8vIFVzZWQgdG8gY29uc3RydWN0IHN0YXRpYyBz
dHJpbmdzLCB3aGljaCBoYXZlIGFuIHNwZWNpYWwgcmVmQ291bnQgdGhhdCBjYW4gbmV2ZXIgaGl0
IHplcm8uCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBzdGF0aWMgc3RyaW5nIHdpbGwgbmV2
ZXIgYmUgZGVzdHJveWVkLCB3aGljaCBpcyBpbXBvcnRhbnQgYmVjYXVzZQogICAgIC8vIHN0YXRp
YyBzdHJpbmdzIHdpbGwgYmUgc2hhcmVkIGFjcm9zcyB0aHJlYWRzICYgcmVmLWNvdW50ZWQgaW4g
YSBub24tdGhyZWFkc2FmZSBtYW5uZXIuCkBAIC0xNTAsNyArMTY5LDcgQEAgY2xhc3MgU3RyaW5n
SW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5n
KQogICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgICwgbV9kYXRhOChyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oJm1fbGVuZ3RoKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhz
X2hhc2hGbGFnOEJpdEJ1ZmZlciB8IHNfaGFzaEZsYWdJc0F0b21pYyB8IEJ1ZmZlck93bmVkKQor
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nQXRv
bWljIHwgQnVmZmVyT3duZWQpCiAgICAgewogICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaGFz
aCBpcyBjb21wdXRlZCBzbyB0aGF0IEF0b21pY1N0cmluZ0hhc2ggY2FuIGNhbGwgZXhpc3RpbmdI
YXNoKCkKICAgICAgICAgLy8gd2l0aCBpbXB1bml0eS4gVGhlIGVtcHR5IHN0cmluZyBpcyBzcGVj
aWFsIGJlY2F1c2UgaXQgaXMgbmV2ZXIgZW50ZXJlZCBpbnRvCkBAIC0xNjcsNyArMTg2LDcgQEAg
Y2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVt
ZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KHRhaWxQ
b2ludGVyPExDaGFyPigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0
QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNo
RmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTE4
MCw3ICsxOTksNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNf
cmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAs
IG1fZGF0YTE2KHRhaWxQb2ludGVyPFVDaGFyPigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdz
KEJ1ZmZlckludGVybmFsKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8
IEJ1ZmZlckludGVybmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKICAgICAg
ICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTE5Myw3ICsyMTIsNyBAQCBjbGFzcyBTdHJpbmdJbXBs
IHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwg
bV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycy5sZWFrUHRyKCkp
Ci0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJP
d25lZCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0
cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgp
OwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjA2LDcgKzIyNSw3IEBAIGNsYXNzIFN0
cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAg
ICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykK
LSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hh
c2hBbmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX2RhdGExNik7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0yMTgsNyAr
MjM3LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNv
dW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2Rh
dGE4KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRC
dWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hG
bGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fZGF0YTgpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjMx
LDcgKzI1MCw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19y
ZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwg
bV9kYXRhMTYoY2hhcmFjdGVycy5sZWFrUHRyKCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Mo
QnVmZmVyT3duZWQpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwgQnVm
ZmVyT3duZWQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwogICAgICAgICBBU1NF
UlQobV9sZW5ndGgpOwpAQCAtMjQ0LDcgKzI2Myw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAg
ICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0
aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzKQotICAgICAgICAsIG1faGFz
aEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyU3Vic3RyaW5nKQorICAgICAg
ICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwg
QnVmZmVyU3Vic3RyaW5nKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzOEJpdCgpKTsKICAgICAg
ICAgQVNTRVJUKG1fZGF0YTgpOwpAQCAtMjYxLDcgKzI4MCw3IEBAIGNsYXNzIFN0cmluZ0ltcGwg
ewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBt
X2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKLSAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhCdWZmZXJTdWJzdHJpbmcpCisgICAgICAgICwgbV9oYXNoQW5kRmxh
Z3MoU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQogICAgIHsKICAgICAgICAgQVNTRVJU
KCFpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CkBAIC0yNzMsMTQgKzI5Miwx
NCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9T
VFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKICAgICB9CiAKLSAgICBlbnVtIENyZWF0ZUVtcHR5VW5p
cXVlVGFnIHsgQ3JlYXRlRW1wdHlVbmlxdWUgfTsKLSAgICBTdHJpbmdJbXBsKENyZWF0ZUVtcHR5
VW5pcXVlVGFnKQorICAgIGVudW0gQ3JlYXRlVW5pcXVlRW1wdHlUYWcgeyBDcmVhdGVVbmlxdWVF
bXB0eSB9OworICAgIFN0cmluZ0ltcGwoQ3JlYXRlVW5pcXVlRW1wdHlUYWcsIGJvb2wgaXNQcml2
YXRlKQogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAg
LCBtX2xlbmd0aCgwKQogICAgICAgICAvLyBXZSBleHBlY3QgbV9sZW5ndGggdG8gYmUgaW5pdGlh
bGl6ZWQgdG8gMCBhcyB3ZSB1c2UgaXQKICAgICAgICAgLy8gdG8gcmVwcmVzZW50IGEgbnVsbCB0
ZXJtaW5hdGVkIGJ1ZmZlci4KICAgICAgICAgLCBtX2RhdGE4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigmbV9sZW5ndGgpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRG
bGFnc0ZvclVuaXF1ZShzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKSkKKyAg
ICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc19oYXNoRmxhZzhC
aXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCwgaXNQcml2YXRlKSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX2RhdGE4KTsKIApAQCAtMzgwLDcgKzM5OSwxMiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsK
IAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlxdWVF
bXB0eSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENy
ZWF0ZUVtcHR5VW5pcXVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0lt
cGwoQ3JlYXRlVW5pcXVlRW1wdHksIGZhbHNlKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaXF1ZVByaXZhdGVFbXB0eSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZVVuaXF1ZUVt
cHR5LCB0cnVlKSk7CiAgICAgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pcXVlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwKTsK
QEAgLTM5Myw4ICs0MTcsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIHN0YXRpYyB1bnNp
Z25lZCBmbGFnc09mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBt
X2hhc2hBbmRGbGFncyk7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzOEJpdCgpIHsgcmV0
dXJuIHNfaGFzaEZsYWc4Qml0QnVmZmVyOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc0F0
b21pYygpIHsgcmV0dXJuIHNfaGFzaEZsYWdJc0F0b21pYzsgfQotICAgIHN0YXRpYyB1bnNpZ25l
ZCBmbGFnSXNVbmlxdWUoKSB7IHJldHVybiBzX2hhc2hGbGFnSXNVbmlxdWU7IH0KKyAgICBzdGF0
aWMgdW5zaWduZWQgZmxhZ0lzTm90QXRvbWljKCkgeyByZXR1cm4gc19oYXNoTWFza1N0cmluZ0tp
bmQ7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7IHJldHVybiBzX2hh
c2hNYXNrU3RyaW5nS2luZDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXI+CkBAIC00NTQsMTcgKzQ3OCwyMCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsK
IAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsK
IAotICAgIGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNf
aGFzaEZsYWdJc1VuaXF1ZTsgfQorICAgIFN0cmluZ0tpbmQgc3RyaW5nS2luZCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFN0cmluZ0tpbmQ+KG1faGFzaEFuZEZsYWdzICYgc19oYXNoTWFz
a1N0cmluZ0tpbmQpOyB9CisKKyAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gc3Ry
aW5nS2luZCgpICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1VuaXF1ZTsgfQorICAgIGJvb2wgaXNQ
cml2YXRlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nS2luZCgpID09IFN0cmluZ1VuaXF1ZVByaXZh
dGU7IH0KKyAgICBib29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nS2luZCgpID09
IFN0cmluZ0F0b21pYzsgfQogCi0gICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0lzQXRvbWljOyB9CiAgICAgdm9pZCBzZXRJc0F0b21p
Yyhib29sIGlzQXRvbWljKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1N0YXRpYygpKTsKICAg
ICAgICAgQVNTRVJUKCFpc1VuaXF1ZSgpKTsKICAgICAgICAgaWYgKGlzQXRvbWljKQotICAgICAg
ICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ0lzQXRvbWljOworICAgICAgICAgICAg
bV9oYXNoQW5kRmxhZ3MgPSAobV9oYXNoQW5kRmxhZ3MgJiAofnNfaGFzaE1hc2tTdHJpbmdLaW5k
KSkgfCBTdHJpbmdBdG9taWM7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faGFzaEFuZEZs
YWdzICY9IH5zX2hhc2hGbGFnSXNBdG9taWM7CisgICAgICAgICAgICBtX2hhc2hBbmRGbGFncyA9
IChtX2hhc2hBbmRGbGFncyAmICh+c19oYXNoTWFza1N0cmluZ0tpbmQpKSB8IFN0cmluZ05vcm1h
bDsKICAgICB9CiAKICNpZiBTVFJJTkdfU1RBVFMKQEAgLTcwNiw2ICs3MzMsMTYgQEAgY2xhc3Mg
U3RyaW5nSW1wbCB7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIGNvbnN0IFVD
aGFyIGxhdGluMUNhc2VGb2xkVGFibGVbMjU2XTsKIAorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBTdHJpbmdJbXBsJiBleHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKGlzVW5pcXVlKCkpOworICAgICAg
ICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsKKyAgICAgICAg
QVNTRVJUKHN1YnN0cmluZ0J1ZmZlcigpKTsKKyAgICAgICAgQVNTRVJUKCFzdWJzdHJpbmdCdWZm
ZXIoKS0+aXNVbmlxdWUoKSk7CisgICAgICAgIHJldHVybiAqc3Vic3RyaW5nQnVmZmVyKCk7Cisg
ICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29uc3QKICAgICB7CkBA
IC03NzIsMjMgKzgwOSwxMiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZUludGVybmFs
KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4sIHVuc2lnbmVkLCBDaGFyVHlwZSomKTsKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlSW50
ZXJuYWwoY29uc3QgQ2hhclR5cGUqLCB1bnNpZ25lZCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IE5FVkVSX0lOTElORSB1bnNpZ25lZCBoYXNoU2xvd0Nhc2UoKSBjb25zdDsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHVuc2lnbmVkIGhhc2hBbmRGbGFnc0ZvclVuaXF1ZSh1bnNpZ25l
ZCBmbGFncyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1bnNpZ25lZCBoYXNoQW5k
RmxhZ3NGb3JVbmlxdWUodW5zaWduZWQgZmxhZ3MsIGJvb2wgaXNQcml2YXRlKTsKIAogICAgIC8v
IFRoZSBib3R0b20gYml0IGluIHRoZSByZWYgY291bnQgaW5kaWNhdGVzIGEgc3RhdGljIChpbW1v
cnRhbCkgc3RyaW5nLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3JlZkNvdW50RmxhZ0lz
U3RhdGljU3RyaW5nID0gMHgxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3JlZkNvdW50
SW5jcmVtZW50ID0gMHgyOyAvLyBUaGlzIGFsbG93cyB1cyB0byByZWYgLyBkZXJlZiB3aXRob3V0
IGRpc3R1cmJpbmcgdGhlIHN0YXRpYyBzdHJpbmcgZmxhZy4KIAotICAgIC8vIFRoZSBib3R0b20g
NyBiaXRzIGluIHRoZSBoYXNoIGFyZSBmbGFncy4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c19mbGFnQ291bnQgPSA3OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdNYXNrID0g
KDF1IDw8IHNfZmxhZ0NvdW50KSAtIDE7Ci0gICAgQ09NUElMRV9BU1NFUlQoc19mbGFnQ291bnQg
PD0gU3RyaW5nSGFzaGVyOjpmbGFnQ291bnQsIFN0cmluZ0hhc2hlcl9yZXNlcnZlc19lbm91Z2hf
Yml0c19mb3JfU3RyaW5nSW1wbF9mbGFncyk7Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c19oYXNoRmxhZ0lzVW5pcXVlID0gMXUgPDwgNjsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c19oYXNoRmxhZzhCaXRCdWZmZXIgPSAxdSA8PCA1OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2hhc2hGbGFnSXNBdG9taWMgPSAxdSA8PCA0OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCA9IDF1IDw8IDM7Ci0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXAgPSAxdSB8ICgxdSA8PCAxKTsKLQogI2lm
IFNUUklOR19TVEFUUwogICAgIFdURl9FWFBPUlREQVRBIHN0YXRpYyBTdHJpbmdTdGF0cyBtX3N0
cmluZ1N0YXRzOwogI2VuZGlmCkBAIC04MDMsNyArODI5LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7
CiAKICAgICAgICAgLy8gVGhlc2UgdmFsdWVzIG1pbWljIENvbnN0cnVjdEZyb21MaXRlcmFsLgog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsUmVmQ291bnQgPSBzX3JlZkNv
dW50SW5jcmVtZW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsRmxh
Z3MgPSBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsRmxhZ3MgPSBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8
IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19oYXNoU2hpZnQgPSBzX2ZsYWdDb3VudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdTdGF0aWNzLmNwcAppbmRleCA2NWJiNjcyMWQ3NDNmYTEwNDFjMjkyYjYwZjRkMDMy
OTI4M2Q4ZTUxLi4wN2Q4ZGYyNWYzYjI4ZjBkNzYzMWNiYWQyMGJmYTM0MmQzMzI4ZWM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBTdHJp
bmdJbXBsKiBTdHJpbmdJbXBsOjplbXB0eSgpCiAvLyBrZXlzIG1lYW5zIHRoYXQgd2UgZG9uJ3Qg
bmVlZCB0aGVtIHRvIG1hdGNoIGFueSBvdGhlciBzdHJpbmcgKGluIGZhY3QsCiAvLyB0aGF0J3Mg
ZXhhY3RseSB0aGUgb3Bvc2l0ZSBvZiB3aGF0IHdlIHdhbnQhKSwgYW5kIHRoZSBub3JtYWwgaGFz
aCB3b3VsZAogLy8gbGVhZCB0byBsb3RzIG9mIGNvbmZsaWN0cy4KLXVuc2lnbmVkIFN0cmluZ0lt
cGw6Omhhc2hBbmRGbGFnc0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncykKK3Vuc2lnbmVkIFN0cmlu
Z0ltcGw6Omhhc2hBbmRGbGFnc0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncywgYm9vbCBpc1ByaXZh
dGUpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSA9
IDA7CiAgICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlICs9IDEgPDwgc19mbGFnQ291bnQ7
CiAgICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlIHw9IDEgPDwgMzE7Ci0gICAgdW5zaWdu
ZWQgZmxhZ3NGb3JVbmlxdWUgPSAoZmxhZ3MgJiBzX2ZsYWdNYXNrKSB8IHNfaGFzaEZsYWdJc0F0
b21pYyB8IHNfaGFzaEZsYWdJc1VuaXF1ZTsKKyAgICB1bnNpZ25lZCBmbGFnc0ZvclVuaXF1ZSA9
ICgoZmxhZ3MgJiBzX2ZsYWdNYXNrKSAmICh+c19oYXNoTWFza1N0cmluZ0tpbmQpKSB8IChpc1By
aXZhdGUgPyBTdHJpbmdVbmlxdWVQcml2YXRlIDogU3RyaW5nVW5pcXVlKTsKICAgICByZXR1cm4g
c19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlIHwgZmxhZ3NGb3JVbmlxdWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLm9yZGVyCmluZGV4IDE2YjljZDUxNzYwY2Y0ZTUyZWJkMjNiNzlkMmYzNTMzMzA2N2UyYWIu
LjU2NzA3MWUzNzlkN2Y0MTFlYmFiYzg4ZDZlYmI2MDNiYmMxYjM3N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5v
cmRlcgpAQCAtMTUzMTIsNyArMTUzMTIsNiBAQCBfX1pON1dlYkNvcmUyNmpzSFRNTE1ldGFFbGVt
ZW50SHR0cEVxdWl2RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TMF8xMlBybwogX19a
TjdXZWJDb3JlMTdKU1RpbWVSYW5nZXNPd25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHNF
TjNKU0M2SGFuZGxlSU5TMV83VW5rbm93bkVFRVB2Uk5TMV8xMVNsb3RWaXNpdG9yRQogX19aTjdX
ZWJDb3JlMTdKU1RpbWVSYW5nZXNPd25lcjhmaW5hbGl6ZUVOM0pTQzZIYW5kbGVJTlMxXzdVbmtu
b3duRUVFUHYKIF9fWk43V2ViQ29yZTEySlNUaW1lUmFuZ2VzN2Rlc3Ryb3lFUE4zSlNDNkpTQ2Vs
bEUKLV9fWk43V2ViQ29yZTEwSlNOb2RlTGlzdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTjNKU0M4
SlNPYmplY3RFUE5TMV85RXhlY1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFfMTVF
bnVtZXJhdGlvbk1vZGVFCiBfX1pMMTlrQ01UaW1lWmVyb0Z1bmN0aW9udgogX19aTjdXZWJDb3Jl
MTZIVE1MTWVkaWFFbGVtZW50MzVjaGFuZ2VOZXR3b3JrU3RhdGVGcm9tTG9hZGluZ1RvSWRsZUV2
CiBfX1pOSzdXZWJDb3JlMzBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24xNW1pblRpbWVT
ZWVrYWJsZUV2CkBAIC0xNzk1OSw3ICsxNzk1OCw2IEBAIF9fWk43V2ViQ29yZTExSlNET01QbHVn
aW4xMWluZGV4R2V0dGVyRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRWoKIF9fWk43V2Vi
Q29yZTlET01QbHVnaW40aXRlbUVqCiBfX1pON1dlYkNvcmUxN2pzRE9NTWltZVR5cGVUeXBlRVBO
M0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TMF8xMlByb3BlcnR5TmFtZUUKIF9fWk5LN1dl
YkNvcmUxMURPTU1pbWVUeXBlNHR5cGVFdgotX19aTjdXZWJDb3JlOUpTU3RvcmFnZTE5Z2V0T3du
UHJvcGVydHlOYW1lc0VQTjNKU0M4SlNPYmplY3RFUE5TMV85RXhlY1N0YXRlRVJOUzFfMTdQcm9w
ZXJ0eU5hbWVBcnJheUVOUzFfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOSzdXZWJDb3JlMThSZW5k
ZXJUZXh0RnJhZ21lbnQxNGlzVGV4dEZyYWdtZW50RXYKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJh
dG9yMjVoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyRVBOU18xOFJlbmRlclRleHRGcmFnbWVudEUK
IF9fWk4zV1RGMTJTdHJpbmdBcHBlbmRJTlNfNlN0cmluZ0VQS2NFN3dyaXRlVG9FUHQKQEAgLTE4
MjI4LDggKzE4MjI2LDYgQEAgX19aTks3V2ViQ29yZTIzUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wy
OWNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzRVJOU18xMExheW8KIF9fWk5LN1dlYkNvcmUx
MVJlbmRlclRoZW1lMjBmaWxlTGlzdERlZmF1bHRMYWJlbEViCiBfX1pON1dlYkNvcmUyOWZpbGVC
dXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsRXYKIF9fWk5LN1dlYkNvcmUyM1JlbmRlckZpbGVVcGxv
YWRDb250cm9sMzZyZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb25FdgotX19aTjdX
ZWJDb3JlMTFKU0RPTVdpbmRvdzE2Z2V0UHJvcGVydHlOYW1lc0VQTjNKU0M4SlNPYmplY3RFUE5T
MV85RXhlY1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFfMTVFbnVtZXJhdGlvbk1v
ZGVFCi1fX1pON1dlYkNvcmUxMUpTRE9NV2luZG93MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pT
QzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8x
NUVudW1lcmF0aW9uTW9kZUUKIF9fWk43V2ViQ29yZTlET01XaW5kb3cxOGNhblNob3dNb2RhbERp
YWxvZ0VQS05TXzVGcmFtZUUKIF9fWk5LN1dlYkNvcmU2Q2hyb21lMTFjYW5SdW5Nb2RhbEV2CiBf
X1pON1dlYkNvcmUzMWpzWE1MSHR0cFJlcXVlc3RXaXRoQ3JlZGVudGlhbHNFUE4zSlNDOUV4ZWNT
dGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydHlOYW1lRQpAQCAtMTgyNzIsNyArMTgyNjgs
NiBAQCBfX1pON1dlYkNvcmUyMmpzRE9NV2luZG93T25tb3VzZWRvd25FUE4zSlNDOUV4ZWNTdGF0
ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydAogX19aTjdXZWJDb3JlMjRqc0RPTVdpbmRvd09u
Y29udGV4dG1lbnVFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydHlO
YW1lRQogX19aTks3V2ViQ29yZTEzRmlsZUlucHV0VHlwZTIwc2F2ZUZvcm1Db250cm9sU3RhdGVF
dgogX19aTjdXZWJDb3JlMjNSZW5kZXJGaWxlVXBsb2FkQ29udHJvbEQwRXYKLV9fWk43V2ViQ29y
ZTEwSlNMb2NhdGlvbjE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTjNKU0M4SlNPYmplY3RFUE5TMV85
RXhlY1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFfMTVFbnVtZXJhdGlvbk1vZGVF
CiBfX1pOM0pTQzE4Z2V0U3RhdGljVmFsdWVTbG90SU43V2ViQ29yZTE1SlNET01TdHJpbmdMaXN0
RU5TMV8xMkpTRE9NV3JhcHBlckVFRWJQTlNfOUV4ZWNTdGF0ZUVQS05TXzlIYXNoVGFibGVFUFRf
TlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjdXZWJDb3JlMjRKU0RP
TVN0cmluZ0xpc3RQcm90b3R5cGUxOGdldE93blByb3BlcnR5U2xvdEVQTjNKU0M2SlNDZWxsRVBO
UzFfOUV4ZWNTdGF0ZUVOUzFfMTJQcm9wZXJ0eU5hbWVFUk5TMV8xMlByb3BlcnR5U2xvdEUKIF9f
Wk43V2ViQ29yZTExU1ZHRm9udERhdGFDMUVQTlNfMThTVkdGb250RmFjZUVsZW1lbnRFCkBAIC0x
ODQ1Myw3ICsxODQ0OCw2IEBAIF9fWk43V2ViQ29yZTE5SFRNTFByb2dyZXNzRWxlbWVudDZhdHRh
Y2hFUktOU180Tm9kZTEzQXR0YWNoQ29udGV4dEUKIF9fWk5LN1dlYkNvcmUxNFJlbmRlclRoZW1l
TWFjMjJhZGp1c3RQcm9ncmVzc0JhclN0eWxlRVBOU18xM1N0eWxlUmVzb2x2ZXJFUE5TXzExUmVu
ZGVyU3R5bGVFUE5TXzdFbGVtZW50RQogX19aTjdXZWJDb3JlMjJDU1NDYWxjQmluYXJ5T3BlcmF0
aW9uRDBFdgogX19aTjdXZWJDb3JlMjFDU1NDYWxjUHJpbWl0aXZlVmFsdWVEMEV2Ci1fX1pON1dl
YkNvcmUxNUpTRE9NU3RyaW5nTGlzdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTjNKU0M4SlNPYmpl
Y3RFUE5TMV85RXhlY1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFfMTVFbnVtZXJh
dGlvbk1vZGVFCiBfX1pON1dlYkNvcmVMMjNnZXRKU0RPTVN0cmluZ0xpc3RUYWJsZUVQTjNKU0M5
RXhlY1N0YXRlRQogX19aTjdXZWJDb3JlTDIyZ2V0SlNNZXNzYWdlRXZlbnRUYWJsZUVQTjNKU0M5
RXhlY1N0YXRlRQogX19aTjdXZWJDb3JlTDMxZ2V0SlNNZXNzYWdlRXZlbnRQcm90b3R5cGVUYWJs
ZUVQTjNKU0M5RXhlY1N0YXRlRQpAQCAtMjcyMTAsNyArMjcyMDQsNiBAQCBfX1paTjdXZWJDb3Jl
TDE5c2VsZWN0b3JzRnJvbVNvdXJjZUVQS05TXzE3Q1NTUnVsZVNvdXJjZURhdGFFUktOM1dURjZT
dHJpbmdFRTdjbwogX19aR1ZaTjdXZWJDb3JlTDE5c2VsZWN0b3JzRnJvbVNvdXJjZUVQS05TXzE3
Q1NTUnVsZVNvdXJjZURhdGFFUktOM1dURjZTdHJpbmdFRTdjb21tZW50LmIKIF9fWlpON1dlYkNv
cmUyMkluc3BlY3RvclRpbWVsaW5lQWdlbnQyNGlubmVyQWRkUmVjb3JkVG9UaW1lbGluZUVOM1dU
RjEwUGFzc1JlZlB0cklOU18xNUluc3BlY3Rvck9iamVjdEVFRVJLTlMxXzZTdHJpbmdFUzdfRTdw
cm9ncmFtCiBfX1pHVlpON1dlYkNvcmUyMkluc3BlY3RvclRpbWVsaW5lQWdlbnQyNGlubmVyQWRk
UmVjb3JkVG9UaW1lbGluZUVOM1dURjEwUGFzc1JlZlB0cklOU18xNUluc3BlY3Rvck9iamVjdEVF
RVJLTlMxXzZTdHJpbmdFUzdfRTdwcm9ncmFtLmIKLV9fWlpON1dlYkNvcmUyMUpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTjNKU0M4SlNPYmplY3RFUE5TMV85RXhl
Y1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFfMTVFbnVtZXJhdGlvbk1vZGVFRTE5
cHJvcGVydHlJZGVudGlmaWVycwogX19aWk43V2ViQ29yZTIzSlNJbnNwZWN0b3JGcm9udGVuZEhv
c3Q4cGxhdGZvcm1FUE4zSlNDOUV4ZWNTdGF0ZUVFOHBsYXRmb3JtCiBfX1pHVlpON1dlYkNvcmUy
M0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OHBsYXRmb3JtRVBOM0pTQzlFeGVjU3RhdGVFRThwbGF0
Zm9ybS5iCiBfX1paTjdXZWJDb3JlMjNKU0luc3BlY3RvckZyb250ZW5kSG9zdDRwb3J0RVBOM0pT
QzlFeGVjU3RhdGVFRTRwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnku
Y3BwCmluZGV4IGRmNGRjNzg2MmQyZGFhYTlmMmI2NzZkMWVkMzE3MmEyZjNlYWZkMjkuLjliYzQw
ZDFlYTMyMzZiYzI4MjQyZmM0NDVkNGVhNGMzYTZhNGNhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgRGljdGlvbmFy
eTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYgbWFwKSBjCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgp
OwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogICAgIGZvciAoUHJvcGVydHlO
YW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAh
PSBwcm9wZXJ0eU5hbWVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkg
PSBpdC0+c3RyaW5nKCk7CiAgICAgICAgIGlmIChzdHJpbmdLZXkuaXNFbXB0eSgpKQpAQCAtODgs
NyArODgsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMoVmVjdG9yPFN0
cmluZz4mIG5hbWVzKSBjb25zdAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5l
eGVjU3RhdGUoKTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7
Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICBmb3Ig
KFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMuYmVn
aW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAgICAgICBTdHJpbmcg
c3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwogICAgICAgICBpZiAoIXN0cmluZ0tleS5pc0VtcHR5
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHls
ZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA4OTZiOTljZTkxYjcyYzZjZmU4MDJiMTdjYmQw
NzBmMjQ1ZDRhNDdkLi5jNmM4ZDIxYjA1MmUyNjI4NmI1Y2FhNDI2MDdkMzZjM2ViZGVjODQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVE
ZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZQogCiAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnMgPSBuZXcgSWRlbnRpZmllcltu
dW1DU1NQcm9wZXJ0aWVzXTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9w
ZXJ0aWVzOyArK2kpCi0gICAgICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRlbnRp
ZmllcihleGVjLCBqc1Byb3BlcnR5TmFtZXNbaV0uaW1wbCgpKTsKKyAgICAgICAgICAgIHByb3Bl
cnR5SWRlbnRpZmllcnNbaV0gPSBJZGVudGlmaWVyKGV4ZWMsIGpzUHJvcGVydHlOYW1lc1tpXSk7
CiAgICAgfQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCBkY2E1NjAzZjljMzk5NjE4MzM4YWY3ZTBkYjMxYWRmMTBjYjZiNmY5Li5h
MGVkOGUyMGUwOGVmYmUwNzc3NmVkNWNlNTQ5MzY1MzZmMDRiMDMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEy
NDgsNyArMTI0OCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6
c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNrLnJl
bW92ZUxhc3QoKTsKIAogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQ
cm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXktPm1l
dGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwgbV9leGVjLCBw
cm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAg
ICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9k
ZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb3BlcnR5U3RhY2subGFzdCgpLnNpemUoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgd3JpdGUoTm9uSW5kZXhQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwpAQCAtMTI5OCw3ICsxMjk4LDcgQEAg
U2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1
ZSBpbikKICAgICAgICAgICAgICAgICBpbnB1dE9iamVjdFN0YWNrLmFwcGVuZChpbk9iamVjdCk7
CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAg
cHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAg
ICAgICAgICAgaW5PYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMoaW5P
YmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgICAgICAgICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKGluT2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVt
ZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgogICAg
ICAgICAgICAgRkFMTFRIUk9VR0g7CkBAIC0xMzgxLDcgKzEzODEsNyBAQCBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAg
ICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gaW5wdXRPYmplY3RTdGFjay5sYXN0KCk7
CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTU2V0Kj4ob2JqZWN0
KSB8fCBqc0R5bmFtaWNDYXN0PEpTTWFwKj4ob2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAg
ICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51
bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMp
OwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0aWVzVGFnKTsKICAgICAg
ICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgICAg
IGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNjQ1MGI0OTQzZjI2ZjdlOTBj
ZmZhOWU5YjIxNTRjNjk3YTkyYzQ5NC4uN2E5NzI1OThiNDlkMmM1N2M2NDFjMTc0NzZiM2NhOGZm
MzQxYzlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTk1MywxNiArOTUzLDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
CiAgICAgIyBDdXN0b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2lu
ZG93CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlND
OjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRH
ZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1l
cmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwor
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5
TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7XG4iKTsKKyAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1l
cyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5
JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURv
bnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTtcbiIpOworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMo
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYs
IEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7XG4iKTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0RW51bWVyYWJsZUxlbmd0aChKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxh
Z3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsKICAgICB9CiAKICAgICAj
IEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9IHx8ICRpbmRl
eGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2Rl
ID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6
RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7XG4iKTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdz
eyJKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMifSA9IDE7ICAgICAgIAogICAgIH0KIApA
QCAtMjY5MCw3ICsyNjkwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAo
dW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwg
Y291bnQ7ICsraSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7XG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
In1cblxuIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAppbmRleCAxZDU5MTg5YjQ3MjA1
MTE3MTc5YzYzOWE2MDViMzA4NmVkZGJmNmVmLi5kMjRhMmVhNzA2YWUyZDk0NDJiNzA3NWY5NWUy
ODgzMzY1NjIwNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2
b2lkIEpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhdGljX2Nh
c3Q8RmxvYXQ2NEFycmF5Kj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCk7ICsraSkKICAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7Ci0gICAg
IEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogSlNWYWx1ZSBKU0Zsb2F0NjRBcnJheTo6Z2V0
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNGbG9hdDY0QXJyYXkuaAppbmRleCBmZjM4OGNhMDE3NjBjMTJiOTU3NTAzOWZlYzc2NDMyOTNm
ZTg0ZTM0Li42OWM5NmNjZTdlNzdlMjkzZWI2NDc5OTY5MzMwMjliNTRlYjRiOGY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJy
YXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9h
dDY0QXJyYXkuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBKU0Zsb2F0NjRBcnJheSA6IHB1Ymxp
YyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
QXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgRmxvYXQ2NEFycmF5KiBpbXBsKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcAppbmRleCAwNjdmODM5OTM1MjM1MzAwNTc4MTEwNzFkMDczZjI1YWI3OGJh
NjdkLi4yNGU0ZmU2NTkyNWRmZDNiYjNlZjM3NTg0NGI3MTk1ODVkYmQyNWZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFy
Z2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5n
dGgoKTsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXI6OmZyb20oZXhlYywgaSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3Bl
cnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpT
VmFsdWUgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggOTYwNDAyNDM4
ZTRlNjAzYmY4ZjY5OTZkNzViZDMxMTM5ODJhZjFmNi4uN2JiN2YxZDQ2YjM5NjI4NzAzNzMyZWE5
NTdmOTliYjM2NjA4NzEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTUyLDcgKzUyLDcg
QEAgY2xhc3MgSlNUZXN0RXZlbnRUYXJnZXQgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6
RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2Rl
ID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNs
dWRlU3ltYm9scyk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pz
b2JqZWN0LmNwcAppbmRleCA5MDAxMDEzOGFiNDZjZTdkOTc1M2NiZmYyOTVlNTNjZGZhY2QwYjVh
Li5iZjUwYWQyMTFjMTliODM1NGVkNTJmY2UzYTlkOGFjMGE3OWJkNDI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBib29sIF9OUE5fRW51
bWVyYXRlKE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXIsIHVpbnQz
Ml90KiBjb3VudAogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKIAotICAgICAgICBvYmotPmltcC0+
bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmotPmltcCwgZXhlYywgcHJvcGVydHlO
YW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIG9iai0+aW1wLT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+aW1wLCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3lt
Ym9scyk7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJv
cGVydHlOYW1lcy5zaXplKCkpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5
IGNhbGwgTlBOX01lbUFsbG9jIGJ1dCB0aGF0J3MgaW4gV2ViS2l0CiAgICAgICAgIE5QSWRlbnRp
ZmllciogaWRlbnRpZmllcnMgPSBzdGF0aWNfY2FzdDxOUElkZW50aWZpZXIqPihtYWxsb2Moc2l6
ZW9mKE5QSWRlbnRpZmllcikgKiBzaXplKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAKaW5kZXggMDIyMjE5MDVjNDBlNmVkZmVkNTc5OTllYjIzNWY1ODkxYTdhMmUwOC4u
YzcxM2ZmYTRlMjMyOTNjNjZjYzY1Y2IyOTkzZGEzYTkyZWVkYTgyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFJ1bnRpbWVB
cnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKICAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CiAKLSAg
ICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9k
ZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogCiAgICAgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggY2FkZTllMWU5ZmRmN2I2ZjY0MTA4
NWRiNDcwM2FiODQzMzg1M2E2ZC4uOWQyOGM4ODlkMTNlNWU5Y2MyOTM4Yjk2Yjk5NTFhZDAyNWE0
ZDY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTIzMSw3ICsxMjMxLDcg
QEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSh1aW50MzJfdCBv
YmplY3RJRCwgZGF0YV90JiByZXN1bHREYXQKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
ICAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsK
IAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSo+IGFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBy
b3BlcnR5TmFtZXMuc2l6ZSgpOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCAxY2VkMjkz
ZWI4Y2NjNzdkMzcwOWI5YmQzOTgwOGNjMzk4MTI3Mzc3Li44MWZlZDUxOTBkNjM4ZGE1M2M2ODcw
OTAxMDIxNzNjMjRlNmEzNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC00MDcsNyArNDA3LDcg
QEAgdm9pZCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN0cmlu
ZyA9IGlkZW50aWZpZXJSZXAtPnN0cmluZygpOwogICAgICAgICAgICAgaW50IGxlbmd0aCA9IHN0
cmxlbihzdHJpbmcpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZGVudGlmaWVyID0gSWRl
bnRpZmllcihleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0cmluZywg
bGVuZ3RoKS5pbXBsKCkpOworICAgICAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZpZXIoZXhl
YywgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkpOwog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIGlkZW50aWZpZXJSZXAtPm51bWJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCmluZGV4
IDBkMTY2NzRlNWMxNWY0NzE3MTg1NDNkMjVjYTRmMzEwOWMwNTJkMjIuLjlmYjlhNDNlMWMwMmFh
OGUwMjUyNzQ4NDRmNzk3MjFjNGQzOGUwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKQEAgLTg3LDcg
Kzg3LDcgQEAgc3RhdGljIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKEV4
ZWNTdGF0ZSogZXhlYywgSWRlbnRpZmllclJlcCogaWQKICAgICBjb25zdCBjaGFyKiBzdHJpbmcg
PSBpZGVudGlmaWVyUmVwLT5zdHJpbmcoKTsKICAgICBpbnQgbGVuZ3RoID0gc3RybGVuKHN0cmlu
Zyk7CiAKLSAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKS5pbXBsKCkpOworICAgIHJldHVybiBJZGVudGlm
aWVyKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5n
dGgpKTsKIH0KIAogYm9vbCBOUEpTT2JqZWN0OjpoYXNNZXRob2QoTlBJZGVudGlmaWVyIG1ldGhv
ZE5hbWUpCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBOUEpTT2JqZWN0OjplbnVtZXJhdGUoTlBJ
ZGVudGlmaWVyKiogaWRlbnRpZmllcnMsIHVpbnQzMl90KiBpZGVudGlmaWVyQ291bnQKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5
TmFtZXMoZXhlYyk7Ci0gICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlO
YW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0
eU5hbWVzKG1fanNPYmplY3QuZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKIAogICAg
IE5QSWRlbnRpZmllciogbmFtZUlkZW50aWZpZXJzID0gbnBuTWVtTmV3QXJyYXk8TlBJZGVudGlm
aWVyPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L21hYy9XZWJLaXQyLm9yZGVyIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKaW5k
ZXggYWU2MjVmN2MxNmM2YmFmNTQwNzQ5YWNlYjQ2NWYyNzIzNzVmOWM1Yi4uMDU0YWJiNDZjY2M0
ZmVmNGMwNDZlNDRiNWRlNmM1MzhjODI4YzQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
bWFjL1dlYktpdDIub3JkZXIKKysrIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIK
QEAgLTk0MjQsNyArOTQyNCw2IEBAIF9fWk4zV1RGNlZlY3RvcklONldlYktpdDE2TlBJZGVudGlm
aWVyRGF0YUVMbTBFTlNfMTVDcmFzaE9uT3ZlcmZsb3dFRTZzaHJpbmtFbQogX19aTjdDb3JlSVBD
MTBBcmd1bWVudHMySVJiUk4zV1RGNlZlY3RvcklONldlYktpdDE2TlBJZGVudGlmaWVyRGF0YUVM
bTBFTlMyXzE1Q3Jhc2hPbk92ZXJmbG93RUVFRTZkZWNvZGVFUk5TXzE1QXJndW1lbnREZWNvZGVy
RVJTOV8KIF9fWk43Q29yZUlQQzE5VmVjdG9yQXJndW1lbnRDb2RlcklMYjBFTjZXZWJLaXQxNk5Q
SWRlbnRpZmllckRhdGFFRTZkZWNvZGVFUk5TXzE1QXJndW1lbnREZWNvZGVyRVJOM1dURjZWZWN0
b3JJUzJfTG0wRU5TNl8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjNXVEY2VmVjdG9ySU42V2Vi
S2l0MTZOUElkZW50aWZpZXJEYXRhRUxtMEVOU18xNUNyYXNoT25PdmVyZmxvd0VFMTRzaHJpbmtD
YXBhY2l0eUVtCi1fX1pONldlYktpdDEwSlNOUE9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQ
TjNKU0M4SlNPYmplY3RFUE5TMV85RXhlY1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVO
UzFfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pONldlYktpdEwyME5QTl9HZXRJbnRJZGVudGlmaWVy
RWkKIF9fWk42V2ViS2l0TDEzTlBOX0hhc01ldGhvZEVQNF9OUFBQOE5QT2JqZWN0UHYKIF9fWk42
V2ViS2l0MTBOUEpTT2JqZWN0MTJOUF9IYXNNZXRob2RFUDhOUE9iamVjdFB2CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWNl
ZGFkYjRjZDRkZjU3ZTQ4NmFhMjU2MDc5ZTEwNjAwZmQ0MTg0NS4uOWM1ODViOWQ2NDUxMzEyNzNl
MzYyMTAzYmZiMWUyYWZkNmZjN2IyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTAyLTEx
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9PYmplY3QtZ2V0T3duUHJvcGVydHlO
YW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvb2JqZWN0LWdldC1vd24tcHJvcGVydHkt
c3ltYm9scy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL29iamVjdC1nZXQtb3du
LXByb3BlcnR5LXN5bWJvbHMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3Rz
L09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZv
ckluKToKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5q
czogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1mcmVl
emUuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29u
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICoganMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9zeW1ib2wtd2l0aC1qc29uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvc3ltYm9sLXdpdGgtanNvbi5odG1sOiBBZGRlZC4KKwogMjAxNS0wMi0xMSAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
QWRkIGRlZmF1bHQgY29sb3IgY2hvb3NlciBpbXBsZW1lbnRhdGlvbiB1c2luZyBHdGtDb2xvckNo
b29zZXJEaWFsb2cKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9w
ZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9w
ZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAppbmRleCAxYjUxNjlmNjZjNjI5ZDY2NWJhZDQyNDJjNTkw
NDNlNDc5MmNiYTdkLi5mZDE2ZDBhOWFmOWRjOGIzYjg3YmFkOWY5ZjU1ZjM2NjIxYjU3ZGMzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMt
ZXhwZWN0ZWQudHh0CkBAIC00MCw3ICs0MCw3IEBAIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlO
YW1lcyhkZWNvZGVVUkkpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQogUEFTUyBnZXRTb3J0ZWRPd25Q
cm9wZXJ0eU5hbWVzKGRlY29kZVVSSUNvbXBvbmVudCkgaXMgWydsZW5ndGgnLCAnbmFtZSddCiBQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZW5jb2RlVVJJKSBpcyBbJ2xlbmd0aCcsICdu
YW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhlbmNvZGVVUklDb21wb25lbnQp
IGlzIFsnbGVuZ3RoJywgJ25hbWUnXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9i
amVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScs
ICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFt
ZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2Vh
bGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJv
dG90eXBlJywgJ3NlYWwnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdCkg
aXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVl
emUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAn
Z2V0T3duUHJvcGVydHlTeW1ib2xzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lzRXh0ZW5zaWJsZScs
ICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3ByZXZl
bnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJv
cGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBlKSBpcyBbJ19fZGVmaW5lR2V0dGVyX18nLCAnX19k
ZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdldHRlcl9fJywgJ19fbG9va3VwU2V0dGVyX18nLCAn
X19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ2hhc093blByb3BlcnR5JywgJ2lzUHJvdG90eXBl
T2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAndG9Mb2NhbGVTdHJpbmcnLCAndG9TdHJpbmcn
LCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRnVuY3Rpb24pIGlz
IFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVy
dHlOYW1lcyhGdW5jdGlvbi5wcm90b3R5cGUpIGlzIFsnYXBwbHknLCAnYmluZCcsICdjYWxsJywg
J2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICduYW1lJywgJ3RvU3RyaW5nJ10KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM0OGJjNGY3YWMxM2NmOTBlNmM5MDdiMWMyYzQ4NDNkMzAz
MWFkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXBy
b3BlcnR5LXN5bWJvbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdHMg
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK3ByaXZhdGUgbmFtZXMgZm9yIHByaXZpbGVnZWQgY29kZSBzaG91bGQgbm90IGJlIGV4
cG9zZWQuCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZ2xvYmFsKS5sZW5ndGgg
aXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCBpcyAw
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0gaXMgc3ltYm9sCitQ
QVNTIGZvckluKG9iamVjdCkubGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmtleXMob2JqZWN0KS5s
ZW5ndGggaXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0
aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGgg
aXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJv
bHMuaHRtbCBiL0xheW91dFRlc3RzL2pzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xZjFmMjU5YTIzOWMxMWQ5NTFkZGI4ZDBlOGNlZDA2OTg5YzNkMjg4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvb2JqZWN0LWdldC1vd24tcHJvcGVy
dHktc3ltYm9scy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwppbmRleCAxODExYjI2
Nzk4NWUzM2FjOTg4MmExY2Q3ODg3MmRhODA2ZTEyNGYyLi5lMTBlNzcxNTBlMDI2Y2VmNGIwNTc3
ZjVjOGEwYWUwOWEwMDRjOWVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCkBAIC00OCw3ICs0OCw3IEBA
CiAgICAgImVuY29kZVVSSSI6ICJbJ2xlbmd0aCcsICduYW1lJ10iLAogICAgICJlbmNvZGVVUklD
b21wb25lbnQiOiAiWydsZW5ndGgnLCAnbmFtZSddIiwKIC8vIEJ1aWx0LWluIEVDTUEgb2JqZWN0
cwotICAgICJPYmplY3QiOiAiWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQ
cm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blBy
b3BlcnR5TmFtZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVu
JywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lv
bnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXSIsCisgICAgIk9iamVjdCI6ICJbJ2NyZWF0ZScsICdk
ZWZpbmVQcm9wZXJ0aWVzJywgJ2RlZmluZVByb3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3InLCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRPd25Qcm9wZXJ0eVN5
bWJvbHMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lz
U2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAn
cHJvdG90eXBlJywgJ3NlYWwnXSIsCiAgICAgIk9iamVjdC5wcm90b3R5cGUiOiAiWydfX2RlZmlu
ZUdldHRlcl9fJywgJ19fZGVmaW5lU2V0dGVyX18nLCAnX19sb29rdXBHZXR0ZXJfXycsICdfX2xv
b2t1cFNldHRlcl9fJywgJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdoYXNPd25Qcm9wZXJ0
eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJ3RvTG9jYWxlU3Ry
aW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXSIsCiAgICAgIkZ1bmN0aW9uIjogIlsnbGVuZ3Ro
JywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAogICAgICJGdW5jdGlvbi5wcm90b3R5cGUiOiAiWydh
cHBseScsICdiaW5kJywgJ2NhbGwnLCAnY29uc3RydWN0b3InLCAnbGVuZ3RoJywgJ25hbWUnLCAn
dG9TdHJpbmcnXSIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2Jq
ZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YmRh
NGFhNjFjNWMxNzgyMjcwYzMzNDBhMWYwNGM5MDY5OTFmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9s
cy5qcwpAQCAtMCwwICsxLDMxIEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRlc3RzIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMuIgorKTsKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0
dXJuIHRoaXMiKSgpKTsKKworZGVidWcoInByaXZhdGUgbmFtZXMgZm9yIHByaXZpbGVnZWQgY29k
ZSBzaG91bGQgbm90IGJlIGV4cG9zZWQuIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scyhnbG9iYWwpLmxlbmd0aCIsICIwIik7CisKK3ZhciBvYmplY3QgPSB7fTsKK3Zh
ciBzeW1ib2wgPSBTeW1ib2woIkNvY29hIik7CitvYmplY3Rbc3ltYm9sXSA9ICJDYXBwdWNjaW5v
IjsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCIs
ICIwIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxl
bmd0aCIsICIxIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmpl
Y3QpWzBdIiwgInN5bWJvbCIpOworCitmdW5jdGlvbiBmb3JJbihvYmopIHsKKyAgICB2YXIgYXJy
YXkgPSBbXTsKKyAgICAvLyBTeW1ib2wgc2hvdWxkIG5vdCBiZSBlbnVtZXJhdGVkLgorICAgIGZv
ciAodmFyIGtleSBpbiBvYmopIGFycmF5LnB1c2goa2V5KTsKKyAgICByZXR1cm4gYXJyYXk7Cit9
CisKK3Nob3VsZEJlKCJmb3JJbihvYmplY3QpLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgiT2Jq
ZWN0LmtleXMob2JqZWN0KS5sZW5ndGgiLCAiMCIpOworCitkZWxldGUgb2JqZWN0W3N5bWJvbF07
CitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KS5sZW5ndGgiLCAi
MCIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5n
dGgiLCAiMCIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuanMgYi9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MGZkZjVlM2Q5MGY2ODVmMjEyMmQ2NjcyMjVlN2QzNGRlODY0YWQxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJvbC1kZWZpbmUtcHJvcGVy
dHkuanMKQEAgLTAsMCArMSw0MiBAQAorZGVzY3JpcHRpb24oCisiVGhpcyB0ZXN0cyBPYmplY3Qu
Y3JlYXRlLCBPYmplY3QuZGVmaW5lUHJvcGVydHksIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIHdv
cmsgd2l0aCBTeW1ib2wuIgorKTsKKworZGVidWcoIk9iamVjdC5jcmVhdGUgd2l0aCBTeW1ib2wi
KTsKK3ZhciBvYmplY3QgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5wcm90b3R5cGUsIHsKKyAgICBb
U3ltYm9sLml0ZXJhdG9yXTogeworICAgICAgICB2YWx1ZTogNDIKKyAgICB9Cit9KTsKK3Nob3Vs
ZEJlVHJ1ZSgib2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikiKTsKK3Nob3Vs
ZEJlRmFsc2UoIm9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZShTeW1ib2wuaXRlcmF0b3IpIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSIsICd7InZhbHVlIjo0Miwi
d3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjpmYWxzZSwiY29uZmlndXJhYmxlIjpmYWxzZX0n
KTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3Ro
IiwgIjEiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClb
MF0iLCAiU3ltYm9sLml0ZXJhdG9yIik7CisKKworZGVidWcoIk9iamVjdC5kZWZpbmVQcm9wZXJ0
aWVzIHdpdGggU3ltYm9sIik7Cit2YXIgb2JqZWN0ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMo
e30sIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogeworICAgICAgICB2YWx1ZTogNDIKKyAgICB9
Cit9KTsKKworc2hvdWxkQmVUcnVlKCJvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJh
dG9yKSIpOworc2hvdWxkQmVGYWxzZSgib2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJv
bC5pdGVyYXRvcikiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnkoT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIiwg
J3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1
cmFibGUiOmZhbHNlfScpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMo
b2JqZWN0KS5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMob2JqZWN0KVswXSIsICJTeW1ib2wuaXRlcmF0b3IiKTsKKworZGVidWcoIk9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSB3aXRoIFN5bWJvbCIpOwordmFyIG9iamVjdCA9IE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh7fSwgU3ltYm9sLml0ZXJhdG9yLCB7CisgICAgdmFsdWU6IDQyCit9KTsKKworc2hv
dWxkQmVUcnVlKCJvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSIpOworc2hv
dWxkQmVGYWxzZSgib2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJvbC5pdGVyYXRvciki
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIiwgJ3sidmFsdWUiOjQy
LCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUiOmZhbHNl
fScpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5n
dGgiLCAiMSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0
KVswXSIsICJTeW1ib2wuaXRlcmF0b3IiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wtc2VhbC1hbmQt
ZnJlZXplLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1m
cmVlemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRlYjRiYTgyNGE2ZmFlOWZlYjdmNDU5MzZiMjQyNGFkYjhh
MGVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1i
b2wtc2VhbC1hbmQtZnJlZXplLmpzCkBAIC0wLDAgKzEsMjMgQEAKK2Rlc2NyaXB0aW9uKAorIlRo
aXMgdGVzdHMgT2JqZWN0LnNlYWwgYW5kIE9iamVjdC5mcmVlemUgYWZmZWN0IG9uIFN5bWJvbCBw
cm9wZXJ0aWVzLiIKKyk7CisKK3ZhciBvYmplY3QgPSB7CisgICAgW1N5bWJvbC5pdGVyYXRvcl06
IDQyCit9OworCitzaG91bGRCZVRydWUoIm9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRl
cmF0b3IpIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSIsICd7InZh
bHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUiOnRydWUsImNvbmZpZ3VyYWJsZSI6
dHJ1ZX0nKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCku
bGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9i
amVjdClbMF0iLCAiU3ltYm9sLml0ZXJhdG9yIik7CisKK2RlYnVnKCJPYmplY3Quc2VhbChvYmpl
Y3QpIik7CitPYmplY3Quc2VhbChvYmplY3QpOworc2hvdWxkQmVUcnVlKCJvYmplY3QuaGFzT3du
UHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09O
LnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9s
Lml0ZXJhdG9yKSkiLCAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0
cnVlLCJjb25maWd1cmFibGUiOmZhbHNlfScpOworCitkZWJ1ZygiT2JqZWN0LmZyZWV6ZShvYmpl
Y3QpIik7CitPYmplY3QuZnJlZXplKG9iamVjdCk7CitzaG91bGRCZVRydWUoIm9iamVjdC5oYXNP
d25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpT
T04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1i
b2wuaXRlcmF0b3IpKSIsICd7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxl
Ijp0cnVlLCJjb25maWd1cmFibGUiOmZhbHNlfScpOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLXdpdGgtanNvbi5qcyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNjVmOWExNmU5ZmI4
MDNhNGM5NTBhMGMzN2UwY2E1ZTYzZTIyODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9sLXdpdGgtanNvbi5qcwpAQCAtMCwwICsxLDE4IEBACitk
ZXNjcmlwdGlvbigKKyJUaGlzIHRlc3RzIEpTT04gY29ycmVjdGx5IGJlaGF2ZXMgd2l0aCBTeW1i
b2wuIgorKTsKKworZGVidWcoIkpTT04uc3RyaW5naWlmeSBkb2Vzbid0IHN0cmluZ2lmeSBTeW1i
b2wuIik7CitzaG91bGRCZSgiSlNPTi5zdHJpbmdpZnkoU3ltYm9sKCdDb2NvYScpKSIsICJ1bmRl
ZmluZWQiKTsKKwordmFyIG9iamVjdCA9IHt9OwordmFyIHN5bWJvbCA9IFN5bWJvbCgiQ29jb2Ei
KTsKK29iamVjdFtzeW1ib2xdID0gNDI7CitvYmplY3RbJ0NhcHB1Y2Npbm8nXSA9IDQyOworZGVi
dWcoIkpTT04uc3RyaW5naWlmeSBpZ25vcmVzIHByb3BlcnR5IHdpdGggU3ltYm9sLiIpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShvYmplY3QpIiwgJ3siQ2FwcHVjY2lu
byI6NDJ9Jyk7CisKK2RlYnVnKCJTeW1ib2xzIGluIHJlcGxhY2VyIGFycmF5IGFyZSBpZ25vcmVk
LiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShvYmplY3QsIFsgU3lt
Ym9sKCdDb2NvYScpIF0pIiwgInt9Iik7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdjYjc2MTY3YWI4ZTQ3MmUxMGIyZDU0ZmJkNmJkMGU5Y2I2OWJhMTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitUaGlzIHRlc3RzIE9iamVjdC5jcmVhdGUsIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSwgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgd29yayB3aXRoIFN5
bWJvbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK09iamVjdC5jcmVhdGUgd2l0
aCBTeW1ib2wKK1BBU1Mgb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikgaXMg
dHJ1ZQorUEFTUyBvYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9sLml0ZXJhdG9yKSBp
cyBmYWxzZQorUEFTUyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgaXMgIntcInZhbHVlXCI6NDIsXCJ3cml0YWJs
ZVwiOmZhbHNlLFwiZW51bWVyYWJsZVwiOmZhbHNlLFwiY29uZmlndXJhYmxlXCI6ZmFsc2V9Igor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIGlzIDEKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIGlzIFN5bWJvbC5pdGVy
YXRvcgorT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgd2l0aCBTeW1ib2wKK1BBU1Mgb2JqZWN0Lmhh
c093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikgaXMgdHJ1ZQorUEFTUyBvYmplY3QucHJvcGVy
dHlJc0VudW1lcmFibGUoU3ltYm9sLml0ZXJhdG9yKSBpcyBmYWxzZQorUEFTUyBKU09OLnN0cmlu
Z2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJh
dG9yKSkgaXMgIntcInZhbHVlXCI6NDIsXCJ3cml0YWJsZVwiOmZhbHNlLFwiZW51bWVyYWJsZVwi
OmZhbHNlLFwiY29uZmlndXJhYmxlXCI6ZmFsc2V9IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIGlzIDEKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scyhvYmplY3QpWzBdIGlzIFN5bWJvbC5pdGVyYXRvcgorT2JqZWN0LmRlZmluZVByb3Bl
cnR5IHdpdGggU3ltYm9sCitQQVNTIG9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0
b3IpIGlzIHRydWUKK1BBU1Mgb2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJvbC5pdGVy
YXRvcikgaXMgZmFsc2UKK1BBU1MgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIGlzICJ7XCJ2YWx1ZVwiOjQyLFwi
d3JpdGFibGVcIjpmYWxzZSxcImVudW1lcmFibGVcIjpmYWxzZSxcImNvbmZpZ3VyYWJsZVwiOmZh
bHNlfSIKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCBp
cyAxCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSBpcyBTeW1i
b2wuaXRlcmF0b3IKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGY4NDMyYTI2YjQ0NDBjOWVlZmJhY2ZmNmVjMzU5NGQ1ZDhiNTgwYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuaHRtbApAQCAt
MCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE1YzU1Mzk1NjE3NjBlNzRlNWM0YmNiMzNhNzA5Mjk1MzQ2ZWFlYzgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIE9iamVjdC5zZWFsIGFuZCBP
YmplY3QuZnJlZXplIGFmZmVjdCBvbiBTeW1ib2wgcHJvcGVydGllcy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1Mgb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVy
YXRvcikgaXMgdHJ1ZQorUEFTUyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgaXMgIntcInZhbHVlXCI6NDIsXCJ3
cml0YWJsZVwiOnRydWUsXCJlbnVtZXJhYmxlXCI6dHJ1ZSxcImNvbmZpZ3VyYWJsZVwiOnRydWV9
IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIGlzIDEK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIGlzIFN5bWJvbC5p
dGVyYXRvcgorT2JqZWN0LnNlYWwob2JqZWN0KQorUEFTUyBvYmplY3QuaGFzT3duUHJvcGVydHko
U3ltYm9sLml0ZXJhdG9yKSBpcyB0cnVlCitQQVNTIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSBpcyAie1widmFs
dWVcIjo0MixcIndyaXRhYmxlXCI6dHJ1ZSxcImVudW1lcmFibGVcIjp0cnVlLFwiY29uZmlndXJh
YmxlXCI6ZmFsc2V9IgorT2JqZWN0LmZyZWV6ZShvYmplY3QpCitQQVNTIG9iamVjdC5oYXNPd25Q
cm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIGlzIHRydWUKK1BBU1MgSlNPTi5zdHJpbmdpZnkoT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIGlz
ICJ7XCJ2YWx1ZVwiOjQyLFwid3JpdGFibGVcIjpmYWxzZSxcImVudW1lcmFibGVcIjp0cnVlLFwi
Y29uZmlndXJhYmxlXCI6ZmFsc2V9IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC1zZWFs
LWFuZC1mcmVlemUuaHRtbCBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMzhmOGQzZTkxM2U5M2Q3MDA1Y2FmODdkMmVkY2UyYThhNzA4ZTk0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6
ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC13aXRoLWpzb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjkyNmQ3OTk3YjdlZTU2NTQ2MmE0ZjViMGNjZDBjYmMxNTc5OTZiMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC13aXRoLWpzb24tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMgSlNPTiBjb3JyZWN0bHkgYmVoYXZlcyB3
aXRoIFN5bWJvbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0pTT04uc3RyaW5n
aWlmeSBkb2Vzbid0IHN0cmluZ2lmeSBTeW1ib2wuCitQQVNTIEpTT04uc3RyaW5naWZ5KFN5bWJv
bCgnQ29jb2EnKSkgaXMgdW5kZWZpbmVkCitKU09OLnN0cmluZ2lpZnkgaWdub3JlcyBwcm9wZXJ0
eSB3aXRoIFN5bWJvbC4KK1BBU1MgSlNPTi5zdHJpbmdpZnkob2JqZWN0KSBpcyAie1wiQ2FwcHVj
Y2lub1wiOjQyfSIKK1N5bWJvbHMgaW4gcmVwbGFjZXIgYXJyYXkgYXJlIGlnbm9yZWQuCitQQVNT
IEpTT04uc3RyaW5naWZ5KG9iamVjdCwgWyBTeW1ib2woJ0NvY29hJykgXSkgaXMgInt9IgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3N5bWJvbC13aXRoLWpzb24uaHRtbCBiL0xheW91dFRlc3RzL2pz
L3N5bWJvbC13aXRoLWpzb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzY4MzUwNzk5ZmNmYTYyYjFiOWY4
ZTYxMzNiOTNhN2E5NGFiYzFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3lt
Ym9sLXdpdGgtanNvbi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1qc29uLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246719</attachid>
            <date>2015-02-16 20:07:32 -0800</date>
            <delta_ts>2015-02-25 10:23:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150217130726.patch</filename>
            <type>text/plain</type>
            <size>151319</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjExNDMwY2RmZWYxOTM3NzAxZWFlNTMzZGRlMDcyMzdlZmYyOTE2Li4zMDA1MDViZmY5NTQ4NjA2
Yjk2YTgxZjE3OGQ0ZTdiNTVmZjBjZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzUgQEAKKzIwMTUtMDItMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGluL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIGBTdHJpbmdJbXBsKmAgcmVw
cmVzZW50cyB3aGV0aGVyIGl0J3MgcHJpdmF0ZSBvciBub3QuCisKKyAgICAgICAgVG8gcmVwcmVz
ZW50IGl0IGluIGBTdHJpbmdJbXBsYCwgd2UgaW50cm9kdWNlIGBTdHJpbmdLaW5kYCBpbnRvIGBT
dHJpbmdJbXBsYC4gVGhlcmUncyA0IGtpbmRzCisgICAgICAgIDEpIFN0cmluZ05vcm1hbCAobm90
IHByaXZhdGUsIG5vdCBhdG9taWMsIG5vdCB1bmlxdWUpLCAyKSBTdHJpbmdBdG9taWMgKG5vdCBw
cml2YXRlLCBhdG9taWMsIG5vdCB1bmlxdWUpLAorICAgICAgICAzKSBTdHJpbmdVbmlxdWUgKG5v
dCBwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpIGFuZCA0KSBTdHJpbmdVbmlxdWVQcml2YXRl
IChwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpLgorICAgICAgICBUaGV5IGFyZSBtdXR1YWxs
eSBleGNsdXNpdmUuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEpIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzLCAyKSBJbmNsdWRlL0V4Y2x1ZGUgU3ltYm9scyBhbmQgMykgSW5jbHVkZS9FeGNsdWRl
IEpTT2JqZWN0IHByb3BlcnR5IG5hbWVzLgorICAgICAgICBJbiB0aGUgYSBsb3Qgb2YgY29kZSwg
d2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBhIGxvdCBvZiBjYWxs
ZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1lQXJyYXlgIGRvZXNu
J3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25zZXJ2YXRpdmUgYXNz
dW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAgICogQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS5vcmRlcjoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5O
YW1lcyk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAg
ICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3Bl
cnR5Q291bnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24pOgorICAgICAg
ICAqIGRmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRl
c2lyZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKToKKworICAgICAgICBUbyBicmFuY2ggb24gdGhlIHN0
cmluZyBhdG9taWNpdHkgZWZmaWNpZW50bHksIHdlIG5lZWQgdG8gY2FyZWZ1bGx5IGNob29zZSBT
dHJpbmdLaW5kIGZvciBTdHJpbmdBdG9taWMuCisgICAgICAgIFdlIHNlbGVjdCBgMGAgZm9yIFN0
cmluZ0F0b21pYy4gU28gd2UgY2FuIGNoZWNrIHRoZSBhdG9taWNpdHkgb2YgU3RyaW5nSW1wbCBi
eSBzZWVpbmcgd2hldGhlciBTdHJpbmdLaW5kIGlzIHplcm8uCisgICAgICAgIEl0IGVuYWJsZXMg
eDg2IGNvZGUgdG8gYnJhbmNoIHdpdGggYHRlc3RgIGluc3RydWN0aW9uIGVmZmljaWVudGx5Lgor
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlU3RyaW5nSWRlbnQpOgorCisgICAgICAgIEFzIG5v
dGVkIGluIGRmZyBzZWN0aW9uLCB3ZSBjYW4gY2hlY2sgdGhlIGF0b21pY2l0eSBvZiBTdHJpbmdJ
bXBsIHdpdGggdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6
CisKKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBleHBsY2l0bHkgY2hlY2sgYGlzVW5p
cXVlKClgIGluIHRoZSBjYWxsZXIgc2lkZS4gV2UgY2FuIGp1c3QgdXNlIGBJZGVudGlmaWVyOjpm
cm9tYC4KKworICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6YWRkVmFyKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9FbnVtZXJhdGlvbk1vZGUu
aDoKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFbnVtZXJhdGlvbk1vZGUpOgorICAg
ICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZEluY2x1ZGVKU09iamVj
dFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZElu
Y2x1ZGVTeW1ib2xzKToKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpjcmVhdGVUaGF0
U2tpcHNKU09iamVjdCk6CisgICAgICAgIChKU0M6OnNob3VsZEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzaG91bGRFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJv
cGVydHlOYW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Om1vZGVUaGF0U2tpcHNKU09iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgICogcnVu
dGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tKToKKworICAgICAgICBJbiB0aGUgYSBs
b3Qgb2YgcGxhY2UsIGBJZGVudGlmaWVyKFZNKi9FeGVjU3RhdGUqLCBTdHJpbmdJbXBsKilgIGNv
bnN0cnVjdG9yIGlzIHVzZWQuCisgICAgICAgIEhvd2V2ZXIsIGl0J3MgYW1iaWd1b3VzIGJlY2F1
c2UgYFN0cmluZ0ltcGwqYCBoYXMgMiBkaWZmZXJlbnQgbWVhbmluZ3MuCisgICAgICAgIDEpIG5v
cm1hbCBzdHJpbmcsIGl0IGlzIHJlcGxhY2FibGUgd2l0aCBgV1RGU3RyaW5nYCBhbmQgMikgYHVp
ZGAsIHdoaWNoIGhvbGRzIGBpc1VuaXF1ZWAgaW5mb3JtYXRpb24gdG8gcmVwcmVzZW50IFN5bWJv
bHMuCisgICAgICAgIFNvIHdlIGRyb3BwZWQgYElkZW50aWZpZXIoVk0qL0V4ZWNTdGF0ZSosIFN0
cmluZ0ltcGwqKWAgYW5kIGluc3RlYWQsIGludHJvZHVjZWQgYElkZW50aWZpZXI6OmZyb20oVk0q
L0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAuCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNl
ZCBmb3IgMikgYHVpZGAuIFNvIHVuaXF1ZW5lc3Mgb2YgYFN0cmluZ0ltcGwqYCBpcyBzYXZlZC4K
KyAgICAgICAgVG8ganVzdCBjb25zdHJ1Y3QgYElkZW50aWZpZXJgIGZyb20gc3RyaW5nIHR5cGUs
IHdlIGNhbiB1c2UgYElkZW50aWZpZXIoVk0qL0V4ZWNTdGF0ZSosIGNvbnN0IFdURlN0cmluZyYp
YCBpbnN0ZWFkLgorCisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyOjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2FsbGVlLmg6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25t
ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZSk6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0FsbCk6CisgICAgICAgICog
cnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6c3RydWN0
dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1i
b2xzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpT
Qzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2Vh
bCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0
cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OlByb3BlcnR5TmFtZSk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6cHVibGljTmFtZSk6CisgICAgICAgIChKU0M6
OlByb3BlcnR5TmFtZTo6YXNJbmRleCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVB
cnJheS5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGQpOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlO
YW1lQXJyYXk6OmFkZEtub3duVW5pcXVlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OlNldEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9TZXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OlN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFt
ZXNGcm9tU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cDoKKwogMjAxNS0wMi0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNwbGl0IEZUTDo6SlNDYWxsIGludG8gdGhlIHBhcnQgdGhhdCBrbm93cyBhYm91dCBjYWxs
IGlubGluZSBjYWNoaW5nIGFuZCB0aGUgcGFydCB0aGF0IGludGVyYWN0cyB3aXRoIExMVk0gcGF0
Y2hwb2ludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggODg5ODZhYzQ4NTM4OTk3ZjgxNTU3OGMwNGRjMTQyZDZlN2I5ZDY4OS4u
NjM4YTBlNGQwNjAwYTdhYjg5Zjk1M2ExNjQ5NTU2NjVhNTFiYmZjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
NyBAQAorMjAxNS0wMi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBT
dHJpbmdLaW5kIGludG8gYFN0cmluZ0ltcGxgLiBUaGVyZSdzIDQga2luZHMKKyAgICAgICAgMSkg
U3RyaW5nTm9ybWFsIChub3QgcHJpdmF0ZSwgbm90IGF0b21pYywgbm90IHVuaXF1ZSksIDIpIFN0
cmluZ0F0b21pYyAobm90IHByaXZhdGUsIGF0b21pYywgbm90IHVuaXF1ZSksCisgICAgICAgIDMp
IFN0cmluZ1VuaXF1ZSAobm90IHByaXZhdGUsIG5vdCBhdG9taWMsIHVuaXF1ZSkgYW5kIDQpIFN0
cmluZ1VuaXF1ZVByaXZhdGUgKHByaXZhdGUsIG5vdCBhdG9taWMsIHVuaXF1ZSkuCisgICAgICAg
IFRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKworICAgICAgICBTdHJpbmdVbmlxdWVQcml2
YXRlIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoYXQgdGhlIHRhcmdldCBzdHJpbmcgaXMgdXNlZCBm
b3IgYSBwcml2YXRlIChwcml2aWxlZ2VkKSBuYW1lLgorCisgICAgICAgICogd3RmL3RleHQvQXRv
bWljU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZSk6
CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6ZmluZFNsb3dDYXNlKToKKworICAgICAgICBX
aGVuIHJlZ2lzdGVyaW5nIGEgc3RyaW5nIGludG8gQXRvbWljU3RyaW5nVGFibGUsIGl0IHNob3Vs
ZCBub3QgYmUgYW4gdW5pcXVlIHN0cmluZyBiZWNhdXNlIHVuaXF1ZSB0eXBlcyBhbmQgYXRvbWlj
IHR5cGUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKyAgICAgICAgV2hlbiBhbiB1bmlxdWUgc3Ry
aW5nIGNvbWVzLCB3ZSBleHRyYWN0IGFuIG93bmVyIHN0cmluZyBmcm9tIGFuIHVuaXF1ZSBzdHJp
bmcgYnkgdXNpbmcgYFN0cmluZ0ltcGw6OmV4dHJhY3RGb2xkZWRTdHJpbmdJblVuaXF1ZSgpYC4g
SXQgYWx3YXlzIHN1Y2NlZWRzIGJlY2F1c2UgYW4gdW5pcXVlIChub24gZW1wdHkpIHN0cmluZyBp
cyBhbHdheXMgQnVmZmVyU3Vic3RyaW5nIGFuZCBoYXMgYW4gb3duZXIgc3RyaW5nLgorICAgICAg
ICBFbXB0eSB1bmlxdWUgKGFuZCB1bmlxdWUgcHJpdmF0ZSkgc3RyaW5nIGRvZXNuJ3QgaGF2ZSBh
biBvd25lciBzdHJpbmcuIFRoaXMgY2FzZSBpcyBmaWx0ZXJlZCBieSBgIXN0cmluZy5sZW5ndGgo
KWAgZ3VhcmQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAg
KFdURjo6QXRvbWljU3RyaW5nOjphZGQpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFk
ZFdpdGhTdHJpbmdUYWJsZVByb3ZpZGVyKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlKToKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OlN0cmlu
Z0ltcGwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVFbXB0eSk6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZVByaXZhdGVFbXB0eSk6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmZsYWdJc05vdEF0b21pYyk6CisgICAgICAgIChXVEY6OlN0
cmluZ0ltcGw6Om1hc2tTdHJpbmdLaW5kKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c3Ry
aW5nS2luZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzVW5pcXVlKToKKyAgICAgICAg
KFdURjo6U3RyaW5nSW1wbDo6aXNQcml2YXRlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
aXNBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpzZXRJc0F0b21pYyk6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmV4dHJhY3RGb2xkZWRTdHJpbmdJblVuaXF1ZSk6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmZsYWdJc0F0b21pYyk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmZsYWdJc1VuaXF1ZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nU3RhdGljcy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc2hBbmRG
bGFnc0ZvclVuaXF1ZSk6CisKIDIwMTUtMDItMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCB0aGUgY3Jhc2gtb24tZmFpbHVyZSBiZWhhdmlvciB0byBibWFs
bG9jLWJhc2VkIGZhc3RNYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMDc0ODQxMWUxYWFhMTNlYmNhMTg3
ZTQ3OGVmM2E3OGUwZWQ4YzMyLi4zYWZjMDUzYzIwZjJhZjk2Yjc2ZjlmMGNkOTJmZjY1ODRhMTU2
MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTUtMDItMTYgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czoganMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9s
cy5odG1sCisgICAgICAgICAgICAgICBqcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5Lmh0bWwKKyAg
ICAgICAgICAgICAgIGpzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuaHRtbAorICAgICAgICAgICAg
ICAganMvc3ltYm9sLXdpdGgtanNvbi5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFy
cmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNGbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVj
dC5jcHA6CisgICAgICAgIChfTlBOX0VudW1lcmF0ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5
TmFtZXMpOgorCiAyMDE1LTAyLTExICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFi
b3JhLmNvbT4KIAogICAgICAgICBEaXYgaGF2aW5nIGNvbnRlbnRFZGl0YWJsZSBhbmQgZGlzcGxh
eTpmbGV4IGNhbm5vdCBiZSBlZGl0ZWQgaWYgaXQgaXMgZW1wdHkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggYjhhMjY2Y2Q1ZmJmMjAyZmRhOWEwY2Y0YzE4MjYyNmVkMzIxMTRkNi4uNmI4MTNhZTQwODc2
Mzg3MDk0M2FkYjZjMjc4MDlkOWE4Y2M1MDNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE1LTAyLTE2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZW51bWVyYXRlKToKKwogMjAxNS0wMi0wNSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPiBhbmQgWGFiaWVyIFJv
ZHJpZ3VleiBDYWx2YXIgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1N0cmVhbXMg
QVBJXSBJbXBsZW1lbnQgYSBiYXJlYm9uZSBSZWFkYWJsZVN0cmVhbSBpbnRlcmZhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBmYzA2M2FhNDI5Y2Q4NDFlMzExY2MxNTZlMjFjMGM1MDQ2ODlhNDBlLi5lYzJjYjcx
ZDNlMGNhMzJlYWE5MzI5OTQxZTdhNzY5ODI4MzFiZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTUtMDItMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNO
UE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjppZGVudGlmaWVy
RnJvbUlkZW50aWZpZXJSZXApOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJh
dGUpOgorICAgICAgICAqIG1hYy9XZWJLaXQyLm9yZGVyOgorCiAyMDE1LTAyLTExICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQg
ZGVmYXVsdCBjb2xvciBjaG9vc2VyIGltcGxlbWVudGF0aW9uIHVzaW5nIEd0a0NvbG9yQ2hvb3Nl
ckRpYWxvZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAppbmRleCA5OWEwOWRmZWExMGMxY2ExM2MxNTY3ODdlYjA3YWY4OWNh
NDI0NjIzLi5kNGI2ODBlMWRkMWQ2MGU2NjVlOTRlNDhhYzY2YTNkYzdkZGFjOWZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaApAQCAtNTE2LDggKzUxNiw4IEBACiAgICAgICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0g
c3RhdGljVmFsdWVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAg
ICBTdHJpbmdJbXBsKiBuYW1lID0gaXQtPmtleS5nZXQoKTsKICAgICAgICAgICAgICAgICBTdGF0
aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoZW50cnktPmdldFByb3BlcnR5ICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyht
b2RlKSkpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIo
ZXhlYywgbmFtZSkpOworICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYg
KCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBt
b2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkpCisgICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgbmFtZSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApAQCAtNTI3LDggKzUyNyw4IEBACiAgICAg
ICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gc3RhdGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0gaXQtPmtl
eS5nZXQoKTsKICAgICAgICAgICAgICAgICBTdGF0aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IGl0
LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcyAm
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMobW9kZSkpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElk
ZW50aWZpZXIoZXhlYywgbmFtZSkpOworICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LT5hdHRy
aWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgbmFtZSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApp
bmRleCAyMzRkMjQ4OGZmODkwYjhiZWU2OTdlZjU1YWE2ODAzODBhMTgxYTQyLi5lMTEyMWMzM2Ex
OTE0MWEwNjNlODg2ODhjM2U3ZTkxYzE0ZTM3MjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNjk4LDcgKzY5OCw3IEBAIEpTUHJvcGVydHlOYW1lQXJy
YXlSZWYgSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTUHJv
cGVydHlOYW1lQXJyYXlSZWYgcHJvcGVydHlOYW1lcyA9IG5ldyBPcGFxdWVKU1Byb3BlcnR5TmFt
ZUFycmF5KHZtKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBhcnJheSh2bSk7Ci0gICAganNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5
LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBqc09iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0UHJvcGVydHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEVudW1lcmF0aW9uTW9k
ZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKIAogICAgIHNp
emVfdCBzaXplID0gYXJyYXkuc2l6ZSgpOwogICAgIHByb3BlcnR5TmFtZXMtPmFycmF5LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUub3JkZXIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUub3JkZXIKaW5kZXggMjZiZTBlZTI3NmUwZWU1Yzg2ZTYxMDk5OWYyZDQ3NmIwZGQ4MDZk
ZS4uMWUxOTQxNTVhMzE5NTA2NGI3NGNlMDdkZDJjNjQxMmJhY2ViMmM1YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgpAQCAtOTM4LDcgKzkzOCw2IEBAIF9f
Wk4zSlNDNUxMSW50MzlmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3JFUE5T
XzJWTUUKIF9fWk4zSlNDNUxMSW50NDRmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVu
a0dlbmVyYXRvckVQTlNfMlZNRQogX19aTjNKU0MxMEpTRnVuY3Rpb24yM2NyZWF0ZUFsbG9jYXRp
b25Qcm9maWxlRVBOU185RXhlY1N0YXRlRW0KIF9fWk5LM0pTQzhKU09iamVjdDNnZXRFUE5TXzlF
eGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFCi1fX1pOM0pTQzlTdHJ1Y3R1cmUyOWdldFByb3Bl
cnR5TmFtZXNGcm9tU3RydWN0dXJlRVJOU18yVk1FUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNf
MTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzE3UHJvcGVydHlOYW1lQXJyYXkxNGFkZEtub3du
VW5pcXVlRVBOM1dURjEwU3RyaW5nSW1wbEUKIF9fWk4zSlNDMTdQcm9wZXJ0eU5hbWVBcnJheUQy
RXYKIF9fWk4zSlNDOFdhdGNoZG9nNVNjb3BlRDFFdgpAQCAtMTM1MSw5ICsxMzUwLDYgQEAgX19a
TjNKU0MxMVBvc3RmaXhOb2RlMTFlbWl0UmVzb2x2ZUVSTlNfMTdCeXRlY29kZUdlbmVyYXRvckVQ
TlNfMTBSZWdpc3RlcklERQogX19aTjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yN2VtaXRJbmNFUE5T
XzEwUmVnaXN0ZXJJREUKIF9fWk4zSlNDMTRqc0lzT2JqZWN0VHlwZUVQTlNfOUV4ZWNTdGF0ZUVO
U183SlNWYWx1ZUUKIF9fWk4zSlNDNkpTQ2VsbDExZ2V0Q2FsbERhdGFFUFMwX1JOU184Q2FsbERh
dGFFCi1fX1pOM0pTQzhKU09iamVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQUzBfUE5TXzlFeGVjU3Rh
dGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCi1fX1pOM0pT
QzhKU09iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQUzBfUE5TXzlFeGVjU3RhdGVFUk5TXzE3
UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCi1fX1pOM0pTQzhKU09iamVj
dDI3Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQ
cm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zV1RGNlZlY3RvcklO
M0pTQzEwSWRlbnRpZmllckVMbTIwRU5TXzE1Q3Jhc2hPbk92ZXJmbG93RUUxNXJlc2VydmVDYXBh
Y2l0eUVtCiBfX1pOM0pTQzEzanNPd25lZFN0cmluZ0VQTlNfMlZNRVJLTjNXVEY2U3RyaW5nRQog
X19aTjNKU0M5U3RydWN0dXJlMTZhbGxvY2F0ZVJhcmVEYXRhRVJOU18yVk1FCkBAIC0xNzQzLDcg
KzE3MzksNiBAQCBfX1pOM0pTQ0wyMGRhdGVQcm90b0Z1bmNHZXRUaW1lRVBOU185RXhlY1N0YXRl
RQogX19aTkszSlNDMTJKU1JvcGVTdHJpbmcyMHJlc29sdmVSb3BlU2xvd0Nhc2U4RVBoCiBfX1pO
SzNXVEY2U3RyaW5nOGZvbGRDYXNlRXYKIF9fWk4zV1RGMTBTdHJpbmdJbXBsOGZvbGRDYXNlRXYK
LV9fWk4zSlNDMTBKU0Z1bmN0aW9uMjdnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXNFUE5TXzhK
U09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1l
cmF0aW9uTW9kZUUKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzdKU1Zh
bHVlRQogX19aTjNKU0MxMUludGVycHJldGVyMjRhZGRTdGFja1RyYWNlSWZOZWNlc3NhcnlFUE5T
XzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzExSW50ZXJwcmV0ZXIxM2dldFN0YWNr
VHJhY2VFUE5TXzJWTUVSTjNXVEY2VmVjdG9ySU5TXzEwU3RhY2tGcmFtZUVMbTBFTlMzXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFbQpAQCAtMjk3MCw3ICsyOTY1LDYgQEAgX19aTjNKU0M1c2hpZnRJTE5T
XzdKU0FycmF5MTRTaGlmdENvdW50TW9kZUUwRUVFdlBOU185RXhlY1N0YXRlRVBOU184SlNPYmpl
Y3RFamoKIF9fWk4zSlNDN0pTQXJyYXkyNnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlRWpqUE5T
XzEyQXJyYXlTdG9yYWdlRQogX19aTjNKU0NMMTdhcnJheVByb3RvRnVuY1BvcEVQTlNfOUV4ZWNT
dGF0ZUUKIF9fWk4zSlNDN0pTQXJyYXkzcG9wRVBOU185RXhlY1N0YXRlRQotX19aTjNKU0M3SlNB
cnJheTI3Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVj
U3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pO
M0pTQzVMZXhlckl0RTI0cGFyc2VGb3VyRGlnaXRVbmljb2RlSGV4RXYKIF9KU09iamVjdEdldFBy
aXZhdGVQcm9wZXJ0eQogX19aTkszSlNDMjBKU0NhbGxiYWNrT2JqZWN0RGF0YTE4Z2V0UHJpdmF0
ZVByb3BlcnR5RVJLTlNfMTBJZGVudGlmaWVyRQpAQCAtMzgyOSw3ICszODIzLDYgQEAgX19aTjNK
U0MzREZHMTRTcGVjdWxhdGl2ZUpJVDE4Y29tcGlsZUFyaXRoTmVnYXRlRVBOUzBfNE5vZGVFCiBf
X1pOM0pTQzIzTWFjcm9Bc3NlbWJsZXJYODZDb21tb24xMm5lZ2F0ZURvdWJsZUVOU18xMlg4NlJl
Z2lzdGVyczEzWE1NUmVnaXN0ZXJJREVTMl8KIF9fWk4zSlNDMjNNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjlkaXZEb3VibGVFTlNfMTJYODZSZWdpc3RlcnMxM1hNTVJlZ2lzdGVySURFUzJfUzJfCiBf
Y3RpX29wX2luYwotX19aTjNKU0MxMlN0cmluZ09iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQ
TlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1
RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0MxNGdsb2JhbEZ1bmNFdmFsRVBOU185RXhlY1N0YXRl
RQogX19aTjNKU0M4SlNPYmplY3QxOGNyZWF0ZUFycmF5U3RvcmFnZUVSTlNfMlZNRWpqCiBfb3Bl
cmF0aW9uQ29udmVydFRoaXMKQEAgLTQxNTAsNyArNDE0Myw2IEBAIF9fWk4zSlNDMTFDb3BpZWRT
cGFjZTE2ZG9uZUZpbGxpbmdCbG9ja0VQTlNfMTFDb3BpZWRCbG9ja0VQUzJfCiBfX1pOM0pTQzEx
Q29weVZpc2l0b3IxNGNvcHlGcm9tU2hhcmVkRXYKIF9fWk4zSlNDOEpTT2JqZWN0MTZjb3B5QmFj
a2luZ1N0b3JlRVBOU182SlNDZWxsRVJOU18xMUNvcHlWaXNpdG9yRQogX19aTjNKU0MxOEdDVGhy
ZWFkU2hhcmVkRGF0YTE2ZGlkRmluaXNoQ29weWluZ0V2Ci1fX1pOM0pTQzlBcmd1bWVudHMxOWdl
dE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9w
ZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDOEpTT2JqZWN0NmZy
ZWV6ZUVSTlNfMlZNRQogX19aTjNKU0M5U3RydWN0dXJlOGlzRnJvemVuRVJOU18yVk1FCiBfX1pO
M0pTQzlTdHJ1Y3R1cmUxNmZyZWV6ZVRyYW5zaXRpb25FUk5TXzJWTUVQUzBfCkBAIC00MjUwLDcg
KzQyNDIsNiBAQCBfX1pOM0pTQzEzRGF0ZVByb3RvdHlwZTI0Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTgogX19aTjNKU0MyN2dldFN0YXRpY0Z1
bmN0aW9uRGVzY3JpcHRvcklOU184SlNPYmplY3RFRUViUE5TXzlFeGVjU3RhdGVFUEtOU185SGFz
aFRhYmxlRVBTMV9OU18xMlByb3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBf
X1pOM0pTQzIyQ2xvc3VyZUNhbGxTdHViUm91dGluZTI3bWFya1JlcXVpcmVkT2JqZWN0c0ludGVy
bmFsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNXVEY5Qml0VmVjdG9yN3NldFNsb3dFUktTMF8K
LV9fWk4zSlNDMThSZWdFeHBNYXRjaGVzQXJyYXkxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhK
U09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1l
cmF0aW9uTW9kZUUKIF9KU1ZhbHVlR2V0VHlwZQogX19aTjNKU0MxM0V2YWxDb2RlQmxvY2sxMXJl
cGxhY2VtZW50RXYKIF9fWk4zSlNDMTNFdmFsQ29kZUJsb2NrMTZjb21waWxlT3B0aW1pemVkRVBO
U185RXhlY1N0YXRlRVBOU183SlNTY29wZUVqCkBAIC00MzU2LDE1ICs0MzQ3LDExIEBAIF9fWk4z
SlNDTDI2ZGF0ZVByb3RvRnVuY1NldFVUQ1NlY29uZHNFUE5TXzlFeGVjU3RhdGVFCiBfb3BlcmF0
aW9uRW5zdXJlRG91YmxlCiBfX1pOM0pTQzhKU09iamVjdDE2ZW5zdXJlRG91YmxlU2xvd0VSTlNf
MlZNRQogX19aTjNKU0M0WWFycjExSW50ZXJwcmV0ZXJJdEUyMGJhY2t0cmFja1BhcmVudGhlc2Vz
RVJOUzBfOEJ5dGVUZXJtRVBOUzJfMThEaXNqdW5jdGlvbkNvbnRleHRFCi1fX1pOM0pTQzdKU1By
b3h5MTZnZXRQcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3
UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCi1fX1pOM0pTQzE5SlNTeW1i
b2xUYWJsZU9iamVjdDI3Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RF
UE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1v
ZGVFCiBfX1pOM0pTQ0wxN21hdGhQcm90b0Z1bmNBU2luRVBOU185RXhlY1N0YXRlRQogX19aTjNK
U0MzREZHMTRTcGVjdWxhdGl2ZUpJVDE0c3BlY3VsYXRlT3RoZXJFTlMwXzRFZGdlRQogX19aTjNK
U0M2UGFyc2VySU5TXzVMZXhlckl0RUVFMThwYXJzZVdpdGhTdGF0ZW1lbnRJTlNfMTBBU1RCdWls
ZGVyRUVFTlRfOVN0YXRlbWVudEVSUzZfCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0MTRkZWxldGVQ
cm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUUKIF9f
Wk4zSlNDOUV4ZWNTdGF0ZTIwcmVnRXhwUHJvdG90eXBlVGFibGVFUFMwXwotX19aTjNKU0MxMlJl
Z0V4cE9iamVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRl
RVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0Mx
MlJlZ0V4cE9iamVjdDI3Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RF
UE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1v
ZGVFCiBfX1pOM0pTQzlFeGVjU3RhdGU5ZGF0ZVRhYmxlRVBTMF8KIF9fWk4zSlNDOUV4ZWNTdGF0
ZTIxYXJyYXlDb25zdHJ1Y3RvclRhYmxlRVBTMF8KIF9fWk4zSlNDTDE5YXJyYXlQcm90b0Z1bmNF
dmVyeUVQTlNfOUV4ZWNTdGF0ZUUKQEAgLTQ2OTAsNyArNDY3Nyw2IEBAIF9fWk4zSlNDOUV4ZWNT
dGF0ZTIybnVtYmVyQ29uc3RydWN0b3JUYWJsZUVQUzBfCiBfX1pOM0pTQzlFeGVjU3RhdGUyMnJl
Z0V4cENvbnN0cnVjdG9yVGFibGVFUFMwXwogX19aTjNKU0M5RXhlY1N0YXRlOW1hdGhUYWJsZUVQ
UzBfCiBfX1pOM0pTQzlFeGVjU3RhdGU5anNvblRhYmxlRVBTMF8KLV9fWk4zSlNDN0pTUHJveHkx
OWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQ
cm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDOUFyZ3VtZW50
czI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVF
TlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0M5QXJn
dW1lbnRzMTdkZWZpbmVPd25Qcm9wZXJ0eUVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5T
XzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckViCiBfX1pOM1dURjdIYXNo
TWFwSXlOM0pTQzE2U3BhcnNlQXJyYXlFbnRyeUVOU183SW50SGFzaEl5RUVOU18yOVVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzSXlFRU5TXzEwSGFzaFRyYWl0c0lTMl9FRUU0ZmluZEVSS3kK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCmluZGV4
IDc2YTdiMTExYThkODc3YTY3OWI1YzhiOGU4OTZlMWE3YjFiNmI4YWMuLjhkM2I5ZDI3M2I0NjJj
YmNiZWE2MzBmYzY2OWZmMTUzZDc5MmE2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wgU2NyaXB0
VmFsdWU6OmlzRnVuY3Rpb24oKSBjb25zdAogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBp
bnNwZWN0b3JPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnR5TmFtZXMoc2NyaXB0U3RhdGUpOwotICAgICAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlO
YW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIG9iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIHNjcmlwdFN0YXRlLCBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNs
dWRlU3ltYm9scyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1l
cy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSA9IHBy
b3BlcnR5TmFtZXNbaV07CiAgICAgICAgICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBvYmpl
Y3QtPmdldChzY3JpcHRTdGF0ZSwgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDlmY2RhYTFlMzhkYzY1
NzViYjc5MTM5OWE4ZTNhYWRjMDE5MTMzMjguLjJmY2NhMTc2NmFiODY3MzQ0ZGI1YjAxOGFmYTVk
OWQxMzk4OWQ4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KGNvbnN0IFNvCiAgICAgICAgIAogICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5w
cm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNVbmlxdWUoKSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsb3NlZFZhcmlhYmxlLT5pc1ByaXZhdGUoKSk7CiAg
ICAgfQogICAgIGJvZHktPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZSgmbV92bSwgc291cmNlLCBib2R5LCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXgg
OWI4ODk2Yjk2ODAxNDkxM2Y0NmIzMmM0ODBlMDU3ODk2Mzc5ZGZhNC4uN2M4MTI1YTE1MGQyYmUz
NTg4MzVmZTgzODIxODk5NzFlYTEwZGE1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMzEsMTIgKzMxLDE4IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogICAgIAotI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMj
bmFtZSh2bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQ
cml2YXRlTmFtZShBU0NJSUxpdGVyYWwoIlN5bWJvbC4iICNuYW1lKSkpKQotI2RlZmluZSBERUNM
QVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsgY29uc3Qg
SWRlbnRpZmllciBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7OworI2RlZmluZSBJTklUSUFMSVNFX0JV
SUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0
ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZShQcml2YXRlTmFtZTo6Q3JlYXRlUHJp
dmF0ZSkpKQorI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSWRlbnRp
ZmllciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7CiAj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwKICAgICBj
b25zdCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25h
bWU7IH0gXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1ByaXZhdGVOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV8jI25hbWUjI1ByaXZhdGVOYW1lOyB9CiAKKyNkZWZpbmUgSU5JVElBTElTRV9C
VUlMVElOX1NZTUJPTFMobmFtZSkgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUpLCBtXyMj
bmFtZSMjU3ltYm9sKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoQVNDSUlMaXRlcmFsKCJT
eW1ib2wuIiAjbmFtZSkpKSkKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTFMobmFtZSkg
REVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbV8jI25hbWUjI1N5
bWJvbDsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUihuYW1lKSBcCisg
ICAgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IobmFtZSkgXAorICAgIGNvbnN0
IElkZW50aWZpZXImIG5hbWUjI1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTeW1i
b2w7IH0KKwogI2RlZmluZSBJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKG5hbWUp
IG1fcHJpdmF0ZVRvUHVibGljTWFwLmFkZChtXyMjbmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpLCAm
bV8jI25hbWUpOwogI2RlZmluZSBJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKG5h
bWUpIG1fcHVibGljVG9Qcml2YXRlTWFwLmFkZChtXyMjbmFtZS5pbXBsKCksICZtXyMjbmFtZSMj
UHJpdmF0ZU5hbWUpOwogICAgIApAQCAtNDgsMTEgKzU0LDE0IEBAIGNsYXNzIEJ1aWx0aW5OYW1l
cyB7CiAgICAgICAgIDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmllcnMtPmVtcHR5
SWRlbnRpZmllcikKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElO
SVRJQUxJU0VfQlVJTFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAg
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9M
KElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAgICAgSlNDX0ZPUkVBQ0hf
QlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkp
CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9Q
UklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAgICAgICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElT
RV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJ
VkFURV9FTlRSWSkKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjksMTMgQEAgY2xhc3MgQnVp
bHRpbk5hbWVzIHsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
REVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJ
RklFUl9BQ0NFU1NPUikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9X
RUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SKQogCiBwcml2
YXRlOgogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CiAgICAgSlNDX0ZPUkVBQ0hf
QlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKICAgICBKU0NfQ09N
TU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVfQlVJTFRJ
Tl9OQU1FUykKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tO
T1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MUykKICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFN0cmluZ0ltcGw+LCBjb25zdCBJZGVudGlmaWVyKiwgSWRlbnRpZmllclJlcEhhc2g+
IEJ1aWx0aW5OYW1lc01hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wdWJsaWNUb1ByaXZhdGVN
YXA7CiAgICAgQnVpbHRpbk5hbWVzTWFwIG1fcHJpdmF0ZVRvUHVibGljTWFwOwpAQCAtNzMsNyAr
ODQsOSBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9OQU1F
UwogI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUwogI3VuZGVmIERFQ0xBUkVfQlVJTFRJ
Tl9JREVOVElGSUVSX0FDQ0VTU09SCi0KKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU1lNQk9MUwor
I3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTCisjdW5kZWYgREVDTEFSRV9CVUlMVElO
X1NZTUJPTF9BQ0NFU1NPUgogCiBpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVz
OjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Q
cm9maWxlLmgKaW5kZXggOWE5ZGIwYmM3MGI5ZjEzNWY2NWRkMmQ3OTZkZTY1Mjg5NmFlMGZiMS4u
NTc4MGYwMGM3MjgxNGEzMTg1MGUxYzgyYTVhZGMyZTJlYjI4ODMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxl
LmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSB7CiAK
ICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJv
cGVydHlOYW1lQXJyYXkoJnZtKTsKLSAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0
UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0
UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJh
dGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAg
ICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0
eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnByb3BlcnR5TmFtZVZlY3Rv
cigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZVZlY3Rvci5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHByb3RvdHlwZS0+Z2V0
RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBh
NTZlNmQ1OGJkNzk2ZWZlMzliNzNiZDQ5YmEzNGY5ZDg0MDA5MzFkLi5iNWZkNzBlMTJkOWJjNzBj
Zjc3NTg5MjRhMTYwNTM1MDliZjY0MzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDgyLDcgKzQ4
Miw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcigKICAgICBWZWN0b3I8SWRlbnRp
ZmllciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHZhcmlhYmxlczsKICAgICB2YXJpYWJsZXMu
cmVzZXJ2ZUNhcGFjaXR5KG51bVZhcmlhYmxlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1WYXJpYWJsZXM7ICsraSkgewotICAgICAgICBBU1NFUlQodmFyU3RhY2tbaV0uZmlyc3Qu
aW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKHZhclN0YWNrW2ldLmZpcnN0Lmlt
cGwoKS0+aXNBdG9taWMoKSB8fCB2YXJTdGFja1tpXS5maXJzdC5pbXBsKCktPmlzVW5pcXVlKCkp
OwogICAgICAgICB2YXJpYWJsZXMuYXBwZW5kKHZhclN0YWNrW2ldLmZpcnN0KTsKICAgICB9CiAg
ICAgY29kZUJsb2NrLT5hZG9wdFZhcmlhYmxlcyh2YXJpYWJsZXMpOwpAQCAtMjY0Myw3ICsyNjQz
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0g
bmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c3ViamVjdCA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1
YmplY3ROb2RlKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJ
ZChuZXdUZW1wb3JhcnkoKSwgc3ViamVjdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9y
UHJpdmF0ZU5hbWUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0
b3JTeW1ib2wpOwogICAgIHsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCAwKTsK
ICAgICAgICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgc3ViamVjdC5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5j
cHAKaW5kZXggNjBhNDk0ZGRjZjRiMTUzODFhY2FmMGM1ODE4OTY0NjRlN2EyZTQzYi4uMWU3ZDEz
ZDg2NTI5ZTA2OWQxZjg4YjkxZjk4NmEwMmMwYzk3Y2NkZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcApAQCAtNzMsNyArNzMs
NyBAQCB2b2lkIERlc2lyZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKFZNJiB2bSwgQ29tbW9uRGF0
YSogY29tbW9uRGF0YSkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hZGRlZElkZW50
aWZpZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZ0ltcGwqIHJlcCA9IG1fYWRkZWRJ
ZGVudGlmaWVyc1tpXTsKICAgICAgICAgQVNTRVJUKHJlcC0+aGFzQXRMZWFzdE9uZVJlZigpKTsK
LSAgICAgICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIoJnZt
LCByZXApKTsKKyAgICAgICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5kKElkZW50
aWZpZXI6OmZyb20oJnZtLCByZXApKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggODg4NjQ3NTc0YTAwOGI1OWFh
MmViYWM3N2YzOTM0YWY4NTI2ZDQzMS4uNWRhZGVhMzY4ZDVlMTc2NjBlZjA4MTI3YmVmMTkxNmQ5
MDgwMTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKQEAgLTQ2NjgsOSArNDY2OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nCiAg
ICAgICAgIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0b3JhZ2Up
KTsKICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChzdHJpbmcpLCBlZGdlLCBtX2ppdC5icmFuY2hUZXN0MzIoCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZSwgU3Ry
aW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJc0F0b21pYygpKSkpOworICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXNOb3RBdG9taWMoKSkp
KTsKICAgICAKICAgICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5nSWRlbnQg
fCB+U3BlY1N0cmluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwCmluZGV4IGU1NzUzN2M3OTNmNGNjOTVlMmFjNmNhNjE4OWQ3OTJkNTdh
Y2JiYmEuLjNhYjE2YTA3ZDE1YzVhMWQwODAzZTUzN2IyNjNhZDgyOTE2NGEzYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC02MjA4
LDkgKzYyMDgsOSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIHNwZWN1bGF0ZShC
YWRUeXBlLCBqc1ZhbHVlVmFsdWUoc3RyaW5nKSwgZWRnZS5ub2RlKCksIG1fb3V0LmlzTnVsbChz
dHJpbmdJbXBsKSk7CiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZFR5cGUsIGpz
VmFsdWVWYWx1ZShzdHJpbmcpLCBlZGdlLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0LnRlc3RJ
c1plcm8zMigKKyAgICAgICAgICAgIG1fb3V0LnRlc3ROb25aZXJvMzIoCiAgICAgICAgICAgICAg
ICAgbV9vdXQubG9hZDMyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9oYXNoQW5kRmxh
Z3MpLAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6ZmxhZ0lz
QXRvbWljKCkpKSk7CisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBs
OjpmbGFnSXNOb3RBdG9taWMoKSkpKTsKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIoZWRn
ZSwgU3BlY1N0cmluZ0lkZW50IHwgflNwZWNTdHJpbmcpOwogICAgIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDI0NGI0YmU5Y2M2ZTE3
ZThhYmVjNzczZGQwODcxOTExMWM0MWQ5NTcuLjRlMjE4NzFjMDBlYjNmYzkyOWU1NDVhOWM0MDZj
MzE5MTQxYjZjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvCiAgICAgCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOwog
fQogCkBAIC0xNDIsNyArMTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXIKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0xNTksNyAr
MTU5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc1VuaXF1ZSgpID8gSWRlbnRpZmllcjo6ZnJvbShQcml2
YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVpZCk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUp
OwpAQCAtMTg2LDcgKzE4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJCiAgICAgCiAgICAg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8t
PmFjY2Vzc1R5cGUpOwogCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKKyAgICBJZGVu
dGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwga2V5KTsKICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJlc3VsdCA9IGFzT2JqZWN0KGJhc2UpLT5nZXRQcm9w
ZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIApAQCAtMjEwLDcgKzIxMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEpTCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKKyAg
ICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwga2V5KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNlKS0+aGFzUHJvcGVydHko
ZXhlYywgaWRlbnQpKSk7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVp
ZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVpZCk7CiAg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1
ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyoKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQpOwogICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGZhbHNl
LCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpLCBzbG90KTsKIH0KQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0
dWJJbgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7
CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVpZCk7CiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwg
ZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGFzT2JqZWN0KEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI1Nyw3ICsyNTcsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50
aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb20odm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKSwgZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgp
KTsKICAgICBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7
CiB9CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWRTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWIKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZp
ZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsK
IAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAg
LTI5MSw3ICsyOTEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
ICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzE1LDcg
KzMxNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0g
ICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbSh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0zMzksNyArMzM5LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRp
bWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVu
dGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIg
aWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20o
dm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2
bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgdWlk
KTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3QKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQpOwogICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBT
dHIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQpOwogICAgIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXgg
YWIwMTUwMWIxMjkxN2Q5ZWU4MGVkMzE1MjNmOTI1OGRjNDQyZGEyZS4uZWRmZDY3MDFkYzBmM2Q1
OTFjYjM3OGQzOTk4Y2I3ZDQyZjkwNGM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3Nl
cnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PGludCoqPigmdGVzdFZlY3Rv
cilbMF0gPT0gdGVzdFZlY3Rvci5iZWdpbigpKTsKICNlbmRpZgogCi0gICAgQVNTRVJUKFN0cmlu
Z0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVmZmVyID09IDMyKTsKKyAgICBBU1NFUlQoU3RyaW5nSW1w
bDo6c19oYXNoRmxhZzhCaXRCdWZmZXIgPT0gOCk7CiB9CiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNmI5NThhZDZjMjA3YTQ1YWJj
MWNkMWI3M2RlMGNlOTA2MjlkYzY5Mi4uZTcxODMyODNiMDcwNmUyNzc1NzE0NDY2MzU0MWZmNzI0
NDRlY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQpAQCAtMTc0LDcgKzE3NCw3IEBAIGNvbnN0IEZ1bmN0aW9uQ29kZSA9
IDIKIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0CiAKICMg
U3RyaW5nIGZsYWdzLgotY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDMyCitjb25zdCBIYXNo
RmxhZ3M4Qml0QnVmZmVyID0gOAogCiAjIENvcGllZCBmcm9tIFByb3BlcnR5T2Zmc2V0LmgKIGNv
bnN0IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ID0gMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCmluZGV4IGMzY2MxZmZiOTg4ODg1YzY0OTQ1YjVlNjUzNThmZDQyNzBj
YjY1ODIuLjlmNmFkNGYzYTg1MjRjN2JkYWYyNDE3YmYyZDRkMmNlNmExNzhlODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC01NjEsNyArNTYxLDcgQEAg
Y2xhc3MgQVNUQnVpbGRlciB7CiAgICAgewogICAgICAgICBpZiAobV92bS0+cHJvcGVydHlOYW1l
cy0+YXJndW1lbnRzID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAg
ICAgICAgQVNTRVJUKGlkZW50LT5pbXBsKCktPmlzQXRvbWljKCkpOworICAgICAgICBBU1NFUlQo
aWRlbnQtPmltcGwoKS0+aXNBdG9taWMoKSB8fCBpZGVudC0+aW1wbCgpLT5pc1VuaXF1ZSgpKTsK
ICAgICAgICAgbV9zY29wZS5tX3ZhckRlY2xhcmF0aW9ucy5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
KmlkZW50LCBhdHRycykpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IDM2YTIzNDE3NmE1MzQ0ZWNhM2FlMGQ1NTYzNGM3YjM0MTdmMWFmMTYuLjFl
OWIzZDEyM2JlNTdiODM2MDQ4MWJjMzFjMGRiMTAyYTMzYTMyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4NiwxMCArMjg2LDEwIEBACiAgICAgICAgIElk
ZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKICAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJs
ZXModXNlZFZhcmlhYmxlcyk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1
c2VkVmFyaWFibGVzKSB7Ci0gICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFi
bGUoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgaWYgKHNj
b3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXI6OmZyb20obV92bSwgdmFyaWFibGUu
Z2V0KCkpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyKG1fdm0sIHZh
cmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1l
dGVyKElkZW50aWZpZXI6OmZyb20obV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKHZhcmlhYmxlID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpCkBAIC01MTgsNyArNTE4LDcgQEAKICAgICBBU1NF
UlQoIW5hbWUuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW5hbWUuaXNOdWxsKCkpOwogICAgIAot
ICAgIEFTU0VSVChuYW1lLmltcGwoKS0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUKG5hbWUuaW1w
bCgpLT5pc0F0b21pYygpIHx8IG5hbWUuaW1wbCgpLT5pc1VuaXF1ZSgpKTsKICAgICBpZiAoZGVw
dGgpIHsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb1ZhcmlhYmxlcykKICAgICAg
ICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKCZuYW1lKSwgIkNhbm5v
dCBkZWNvbnN0cnVjdCB0byBhIHZhcmlhYmxlIG5hbWVkICciLCBuYW1lLmltcGwoKSwgIicgaW4g
c3RyaWN0IG1vZGUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
Y3BwCmluZGV4IDI4YjhjMTNmNDllN2YxM2EyNzExZmIzNTdlY2FiZmU2ZjBmMzY4M2EuLjg3NTIy
MGE5NzdjZTZmOGM4MmY1YzcyNTgyNjk4YzdiNDU3YTcwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtMTgwLDEwICsxODAsMTAgQEAgYm9vbCBB
cmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmEKIAogICAgIGlmIChKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJh
dG9yUHJpdmF0ZU5hbWUpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5pdGVyYXRvclN5bWJvbCkgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwotICAgICAgICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNUSU9OKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1lLCBhcmd1bWVudHNGdW5jSXRlcmF0
b3IsIERvbnRFbnVtLCAwKTsKKyAgICAgICAgdGhpc09iamVjdC0+SlNDX05BVElWRV9GVU5DVElP
TihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wsIGFyZ3VtZW50c0Z1bmNJdGVy
YXRvciwgRG9udEVudW0sIDApOwogICAgICAgICBpZiAoSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
SWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CiAgICAgfQotICAgIGlmIChzaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jYWxsZWUpOwogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5k
ZXggZDc5Y2M1MmUwOTJiYzZlOTBiNDFiYmU3OTk4YzJhYjcwN2FhM2QyYy4uYzY5MDRmYTUwNWFi
NmE1NmNkZjMxNTAxNzhlYjRjNTQyNzVmZWIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcApA
QCAtNDIsNyArNDIsNyBAQCB2b2lkIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwog
Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZh
dGVOYW1lLCBhcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0s
IDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwg
MCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvck5l
eHRQcml2YXRlTmFtZSwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwgRG9udEVu
dW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGM4ODAwZTNjZGNhNjI1MmVhYjk4ZmQw
MjExODYxZTFkMGRiZWMxMTIuLmJkMzU1NWM0NDIwOWJkNzVhMTM4ZjVmMjM4Y2I5Njc1YzZkMjZj
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0
b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgQXJyYXlJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1h
cC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVJdGVy
YXRlLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCwgYXJyYXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUsIERvbnRF
bnVtLCAwKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9y
UHJvdG90eXBlSXRlcmF0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBjNzk5Y2MzMWUxYmYx
MDY2NmI5ZTRiN2Y1ZjUxYmY4NDE4Y2RjYTdlLi4xZmQzMzQ4MWNjZWMzNmNiZGZiNmZjNjJlOTZh
N2ZhNTYzM2I1ZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLSAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFycmF5UHJv
dG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIERvbnRF
bnVtLCAwKTsKIH0KIAogYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtNzM1LDcgKzczNSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAKICAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBuYW1lQXJyYXkoZXhlYyk7Ci0gICAgdGhpc09iai0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwgZXhlYywgbmFtZUFycmF5LCBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIEVudW1l
cmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCA1NmRmMzQ1MDI4N2ZmOTk5YTM4ZmNm
NGNiNzE1MGU4NjFhNTY0M2U4Li45YjY3NDZkNjc4Yzg5YzljNTVlMjBhNjQ5NDY5MGI1YTRhNTJh
ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVS
VFlfTkFNRShuYW1lKSAsIG5hbWUodm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdP
UkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5JVElBTElaRV9Q
UklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0aW5OYW1lcy0+bmFt
ZSMjUHJpdmF0ZU5hbWUoKSkKKyNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wobmFtZSkgLCBuYW1l
IyNTeW1ib2wobV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQogCiBDb21tb25JZGVudGlm
aWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQpA
QCAtNDEsNiArNDIsNyBAQAogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JE
KElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BSSVZBVEVfTkFN
RSkKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZ
TUJPTChJTklUSUFMSVpFX1NZTUJPTCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNjU4MTVjYzlhMWU5ZjdjNjIx
MDM5MjIwM2FjOGYxODEwN2RmOGE3MC4uYmI1ZDZjNGVkM2EyNTRkN2Y1M2M3MDlmOWYxODkzMjUy
NzRlMDcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCkBAIC0yMzQsNyArMjM0LDYgQEAKICAgICBtYWNybyh1bnNjb3BhYmxlKQog
CiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUobWFjcm8pIFwKLSAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxM
X0tOT1dOX1NZTUJPTChtYWNybykgXAogICAgIG1hY3JvKGl0ZXJhdG9yTmV4dCkgXAogICAgIG1h
Y3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhyZWplY3QpIFwKQEAgLTI4NCw3ICsyODMsMTEgQEAK
ICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xP
QkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7CiAgICAgICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVmIEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTAotICAgICAgICAK
KworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1C
T0xfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjU3ltYm9sOworICAgICAgICBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChKU0Nf
SURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMKQorI3Vu
ZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9C
QUwKKwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7CiAgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJ
ZGVudGlmaWVyJikgY29uc3Q7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKaW5kZXggNGRiYWY3YjQxN2RjNzA4ZmJjNmM3MjUwOWYx
OWY1NDRmMDFiOTZiZC4uMjU2ZWUzZmNkNzdiYWYwMjlmOTdlYjQ0ODM5ZWI1NzRhZjViMTc1YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgK
QEAgLTI4LDYzICsyOCw1MiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBFbnVtZXJhdGlv
bk1vZGUgewotICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCi0gICAgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdCwKLSAgICBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzLAotICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3QKLX07Citj
bGFzcyBFbnVtZXJhdGlvbk1vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2ZsYWdJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzID0gMXUgPDwgMDsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc19mbGFnU2tpcEpTT2JqZWN0ID0gMXUgPDwgMTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc19mbGFnSW5jbHVkZVN5bWJvbHMgPSAxdSA8PCAyOworCisgICAgZW51
bSBFbnVtZXJhdGlvbk1vZGVSZXByZXNlbnRhdGlvblRhZyA6IHVuc2lnbmVkIHsKKyAgICAgICAg
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzID0gMCwKKyAgICAgICAg
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzID0gc19mbGFnSW5jbHVk
ZVN5bWJvbHMsCisgICAgICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3lt
Ym9scyA9IHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRpZXMsCisgICAgICAgIEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyA9IHNfZmxhZ0luY2x1ZGVEb250RW51
bVByb3BlcnRpZXMgfCBzX2ZsYWdJbmNsdWRlU3ltYm9scywKKyAgICB9OworCisgICAgaW5saW5l
IEVudW1lcmF0aW9uTW9kZShFbnVtZXJhdGlvbk1vZGVSZXByZXNlbnRhdGlvblRhZyB0YWcpCisg
ICAgICAgIDogbV9mbGFncyh0YWcpCisgICAgeworICAgIH0KIAotaW5saW5lIGJvb2wgc2hvdWxk
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBz
d2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAg
Y2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW5s
aW5lIGJvb2wgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9mbGFncyAmIHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRpZXM7
CiAgICAgfQotfQogCi1pbmxpbmUgYm9vbCBzaG91bGRFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2Ug
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbmxpbmUgYm9vbCBzaG91bGRJbmNsdWRlSlNP
YmplY3RQcm9wZXJ0eU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKG1fZmxh
Z3MgJiBzX2ZsYWdTa2lwSlNPYmplY3QpOwogICAgIH0KLX0KIAotaW5saW5lIGJvb2wgc2hvdWxk
SW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAg
ICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0g
ICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAg
Y2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZVN5bWJvbHMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJbmNsdWRlU3ltYm9sczsK
ICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQog
Ci1pbmxpbmUgRW51bWVyYXRpb25Nb2RlIG1vZGVUaGF0U2tpcHNKU09iamVjdChFbnVtZXJhdGlv
bk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXM6Ci0gICAgICAgIHJldHVybiBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
QW5kU2tpcEpTT2JqZWN0OwotICAgIGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAg
ICAgICAgcmV0dXJuIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q7Ci0g
ICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgIGNh
c2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICAgICAgcmV0
dXJuIG1vZGU7CisgICAgc3RhdGljIGlubGluZSBFbnVtZXJhdGlvbk1vZGUgY3JlYXRlVGhhdFNr
aXBzSlNPYmplY3QoRW51bWVyYXRpb25Nb2RlIG1vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
RW51bWVyYXRpb25Nb2RlKG1vZGUubV9mbGFncyB8IHNfZmxhZ1NraXBKU09iamVjdCk7CiAgICAg
fQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBtb2RlOwotfQorCitwcml2
YXRlOgorICAgIGlubGluZSBleHBsaWNpdCBFbnVtZXJhdGlvbk1vZGUodW5zaWduZWQgZmxhZ3Mp
CisgICAgICAgIDogbV9mbGFncyhmbGFncykKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQg
bV9mbGFnczsKK307CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDEwNWFhZWY3ZjA5
YWFlMTUyYjg1ZjMyMDhiMTRiYmY5MGExZjVhYzMuLjIyMjFjZmFkODMxYmJkZWFjNmMxODFkMTYy
MGU3YzMwZThmNWU3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIEpTT2JqZWN0KiBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIEpTT2JqZWN0
KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCiB7CiAgICAgCi0gICAgaWYgKGlkZW50LmltcGwoKS0+aXNVbmlxdWUo
KSkgeworICAgIGlmIChpZGVudC5pbXBsKCktPmlzUHJpdmF0ZSgpKSB7CiAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOwogICAg
ICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDAxMzJkMGU3
NTI4ZWEzNjNiOGMzMTM2ZWNlNWIwMDhjNTM5YTM4ZWYuLjc2YWI0ZWYzOTc3YWJiZmIxMDNlNDhh
MDBhNDc4MjcwMjMzMDFjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmgKQEAgLTQ2LDE0ICs0NiwyMSBAQCBjbGFzcyBJZGVudGlmaWVyIHsKIAogICAgIElk
ZW50aWZpZXIoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5nSW1wbCopOwogICAgIElkZW50aWZpZXIo
RXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgSWRlbnRpZmllcihFeGVjU3Rh
dGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQoZXhlYywgcmVwKSkgeyBB
U1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKGV4ZWMsIHMuaW1w
bCgpKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50
aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKSA6IElkZW50aWZpZXIoZXhlYywg
QXRvbWljU3RyaW5nKHMpKSB7IH0KKyAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBzKQorICAgICAgICA6IElkZW50aWZpZXIoZXhlYywgcy5pbXBsKCkpCisgICAg
eworICAgIH0KKyAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogcykK
KyAgICAgICAgOiBJZGVudGlmaWVyKGV4ZWMsIEF0b21pY1N0cmluZyhzKSkKKyAgICB7CisgICAg
fQogCiAgICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6
IG1fc3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5p
c0F0b21pYygpKTsgfQogICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBVQ2hhciogcywgaW50
IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5n
LmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKFZNKiB2bSwgU3RyaW5nSW1w
bCogcmVwKSA6IG1fc3RyaW5nKGFkZCh2bSwgcmVwKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgp
LT5pc0F0b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHMp
IDogbV9zdHJpbmcoYWRkKHZtLCBzLmltcGwoKSkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+
aXNBdG9taWMoKSk7IH0KKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKQor
ICAgICAgICA6IElkZW50aWZpZXIodm0sIHMuaW1wbCgpKQorICAgIHsKKyAgICB9CiAKICAgICBj
b25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgQXRv
bWljU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0
cmluZ0ltcGwqPihtX3N0cmluZy5pbXBsKCkpOyB9CkBAIC02Myw2ICs3MCwxNiBAQCBjbGFzcyBJ
ZGVudGlmaWVyIHsKICAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
YXNjaWkoKTsgfQogICAgIENTdHJpbmcgdXRmOCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnV0
ZjgoKTsgfQogCisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShWTSogdm0sIFN0cmluZ0ltcGwq
IHVpZCkKKyAgICB7CisgICAgICAgIGlmICghdWlkIHx8ICF1aWQtPmlzVW5pcXVlKCkpCisgICAg
ICAgICAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgdWlkKTsKKyAgICAgICAgSWRlbnRpZmllciBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX3N0cmluZyA9IHVpZDsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqLCBTdHJp
bmdJbXBsKiB1aWQpOworCiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShjb25zdCBQcml2YXRl
TmFtZSYgbmFtZSkKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgcmVzdWx0OwpAQCAtMTA1LDYg
KzEyMiw5IEBAIGNsYXNzIElkZW50aWZpZXIgewogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJp
bmc7CiAKKyAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcmVwKSA6
IG1fc3RyaW5nKGFkZChleGVjLCByZXApKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRv
bWljKCkpOyB9CisgICAgSWRlbnRpZmllcihWTSogdm0sIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0
cmluZyhhZGQodm0sIHJlcCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7
IH0KKwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KICAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMkZyb21DaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wmIG9rKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKaW5kZXggNzQ3MmQ4NDdk
NzViMzAzZTY0NTRmMDZkNjllZDZmYzVlZTY5MjNhYy4uMTI0NWI1ZTBlY2VkYzFjNDMxNjMzMzk3
MTNiODI4NTBmYTBhOTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0zNyw3ICszNyw3IEBAIGlubGluZSBJZGVudGlmaWVy
OjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgQXRvbWljU3RyaW5nSW1wbCogc3RyaW5nKQog
I2lmbmRlZiBOREVCVUcKICAgICBjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGVjKTsK
ICAgICBpZiAoc3RyaW5nKQotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmctPmxl
bmd0aCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJU
aGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLT5sZW5ndGgoKSB8fCBzdHJpbmctPmlzVW5pcXVl
KCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBh
dG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAjZW5kaWYKQEAgLTQ5LDcgKzQ5LDcgQEAgaW5saW5lIElkZW50
aWZpZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0
cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUo
ZXhlYyk7CiAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdU
YWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3Ro
ZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3Ro
KCkgfHwgc3RyaW5nLmltcGwoKS0+aXNVbmlxdWUoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9t
aWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZy
b20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAj
ZW5kaWYKQEAgLTcwLDYgKzcwLDExIEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuICpB
dG9taWNTdHJpbmc6OmFkZFdpdGhTdHJpbmdUYWJsZVByb3ZpZGVyKCp2bSwgcik7CiB9CiAKK2lu
bGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb20oRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJ
bXBsKiB1aWQpCit7CisgICAgcmV0dXJuIGZyb20oJmV4ZWMtPnZtKCksIHVpZCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSWRlbnRpZmllcklubGluZXNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAyMGQ0OWRiOGJhMmUyYzU4
NTUwNjY3NDllZjlkZjUxNTU0MTU3NjgxLi5jMWIwNGE2ZTIyZWQyOGEyZjkzZDIzMGQ1NjNjMzA4
ZTYyNmUxMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApA
QCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgSlNBcnJheTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiB7CiAgICAgSlNBcnJh
eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKIAotICAgIGlmIChzaG91
bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKICAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRl
eCBjMWNhZDEwNWM3ZTBkNWFkN2VmZDI5NmEzYmVmMDY5NmM5NWY2MDA3Li41YjY2YzQ0ZjNlODE4
NDI1MDA4YjYwYWVkNDI2MTNhYmM3ZTE4ZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSlNB
cnJheUJ1ZmZlcjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAogewogICAgIEpTQXJyYXlC
dWZmZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KG9iamVjdCk7CiAgICAg
Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYg
KG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBhcnJheS5h
ZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5ndGgpOwogICAgIAogICAgIEJhc2U6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHAKaW5kZXggY2I1YzhhMmYwMzkzNDNjNWEyNDA1MGIwOTA4MDhkZWQyNWUxMDkwYi4uYWRh
NjczYmU3NzQ5N2QwNjYyZmNlY2M3N2IwYjg0YmRjMjZkYTZjMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMjAxLDcg
KzIwMSw3IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcygKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5
QnVmZmVyVmlldyo+KG9iamVjdCk7CiAgICAgCiAgICAgLy8gbGVuZ3RoL2J5dGVPZmZzZXQvYnl0
ZUxlbmd0aCBhcmUgRG9udEVudW0sIGF0IGxlYXN0IGluIEZpcmVmb3guCi0gICAgaWYgKHNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAgICBpZiAobW9kZS5zaG91bGRJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5ieXRlT2Zmc2V0KTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5ieXRlTGVuZ3RoKTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5idWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgK
aW5kZXggZGVkOGM4NTgwYjBhYzM1ZDRkOTc3MTZhMDBhZGYwODBkY2I2ZTJlZS4uYTc1NDliODhi
NTM0MzMxYTNjZTEyNTdkMGQ1NjQ5NjRiMzZhYjM5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NhbGxlZS5oCkBAIC0xMDEsNyArMTAxLDcgQEAgY2xhc3MgSlNDYWxsZWUgOiBw
dWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSA9IEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGll
c0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5k
ZXggZGMzNzcxOTcwYWE0MDY5MWY1OTFjMWUzOTEwODIzODZlMWJmYTI3MC4uODI2MzcyMTJjMjUx
NjE3ZThjOTg0MjY1MjdhNzg3NjViYjg2OGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBib29sIEpTRnVuY3Rp
b246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAoIXRoaXNPYmpl
Y3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyhtb2RlKSkgeworICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSAmJiBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewogICAg
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBl
IGhhcyBiZWVuIHJlaWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDlmNWZl
NjE0MTU5YmRjZjJlNWFiYzQ1NTBkMDQ4MTk4ZTNiMzhkYzcuLmE3N2M0YTlmNTVjMGZiZDFhNGRi
NWU5MWI4NTg0ZThmOTc2MDhiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGlj
IEpTQ2FsbGVlIHsKICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogY3JlYXRlQWxsb2NhdGlv
blByb2ZpbGUoRXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsKIAogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEVudW1lcmF0aW9uTW9kZTo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNmQwZDIxZmE2
MWYzOTg5ZjlkOWI0MTk5ZGFhODg4ZTlmNjY0NGVjYS4uYTk5OGVlODg1MjFlZjY3MzlhMjIxMTU2
N2QzNzgzMmFlMzQ4NTA1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQxNSw3
ICs0MTUsNyBAQAogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAKLSAgICBpZiAo
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91
bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIGFycmF5LmFkZChleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKICAgICAKICAgICBCYXNlOjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmlu
ZGV4IGIxNGE0NzljOWE5ZjFlZGJkYzVmNjU2OTVmMzRhMzY0NWU3Njg3MWUuLmE2NzE4MDE4ZDE3
ZjM1YjVlYjNiOWQ3ZGUyMDA3NzVlZTM0ODBmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTExNCwxMSAr
MTE0LDE1IEBAIHZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhCiAgICAgICAgIENvbmN1cnJlbnRKSVRM
b2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERv
bnRFbnVtICYmICFzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgICAg
ICAgICAgaWYgKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSAmJiAhbW9kZS5z
aG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzVmFsaWQoaXQtPnZhbHVlKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElk
ZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAgICAgICAgICAgaWYgKGl0LT5rZXku
Z2V0KCktPmlzUHJpdmF0ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVTeW1ib2xzKCkgJiYgaXQtPmtleS5nZXQoKS0+aXNV
bmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAg
ICB9CiAgICAgfQogICAgIC8vIFNraXAgdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQgaW1wbGVtZW50
YXRpb24gb2YgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDk5MDc0M2E1NThlZWE4ODc5OTNlMjI3
YTZlZDE4ZTU1MGMyM2UxYTMuLjhlN2MyMTg1NGM3NGI5Mjg1ZjE1YWVmMDIxYWMxMDc2OTg4OWFj
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBA
IC00OTUsNyArNDk1LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJv
cGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkKICAgICAgICAgICAgICAg
ICBtX3Byb3BlcnR5TmFtZXMgPSBzdHJpbmdpZmllci5tX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5h
bWVzLmRhdGEoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFByb3BlcnR5
TmFtZUFycmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgICAgICAgICAgICAgbV9v
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMobV9vYmplY3QuZ2V0KCks
IGV4ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7CiAgICAg
ICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gb2JqZWN0UHJvcGVydHlOYW1lcy5yZWxlYXNl
RGF0YSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9zaXplID0gbV9wcm9wZXJ0eU5h
bWVzLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5zaXplKCk7CkBAIC03MTIsNyArNzEyLDcgQEAgTkVW
RVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAg
ICAgICAgICAgICBvYmplY3RTdGFjay5wdXNoKG9iamVjdCk7CiAgICAgICAgICAgICAgICAgaW5k
ZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQo
UHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0
YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVj
LCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
b2JqZWN0U3RhcnRWaXNpdE1lbWJlcjoKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDg3YzE5MTk0NzI5YzUy
NTQ5NmQxMTMzYTIxZTk4OTI4YjFlZGVlNDYuLmRlNTFmM2Y0YTg3Y2NkYzE4NmRiNGRiODY0ZWUy
NTIxNGFhYTU0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0
ZXIgIT0gdGFibGUtPmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmICgoIShpdGVyLT5h
dHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyhtb2RlKSkgJiYgISgoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pICYm
IGRpZFJlaWZ5KSkKKyAgICAgICAgICAgIGlmICgoIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBEb250
RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpICYmICEoKGl0
ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcigmdm0sIGl0ZXIua2V5KCkp
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE0NzgsNyArMTQ3OCw3IEBAIHZvaWQgSlNPYmplY3Q6
OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBCiAKIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKCFzaG91bGRJbmNsdWRlSlNPYmpl
Y3RQcm9wZXJ0eU5hbWVzKG1vZGUpKSB7CisgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVKU09i
amVjdFByb3BlcnR5TmFtZXMoKSkgewogICAgICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGdldCBu
b24taW5kZXhlZCBwcm9wZXJ0aWVzIGZyb20gYW55IHN1YmNsYXNzZXMgb2YgSlNPYmplY3QgdGhh
dCBoYXZlIHRoZW0uCiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOwogICAgICAgICByZXR1cm47CkBAIC0xNTMyLDcgKzE1MzIsNyBAQCB2b2lkIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYQogICAgICAgICAgICAgCiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwogICAgICAgICAgICAgZm9yIChTcGFy
c2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMobW9kZSkgfHwgIShpdC0+dmFsdWUuYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKKyAg
ICAgICAgICAgICAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkg
fHwgIShpdC0+dmFsdWUuYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKICAgICAgICAgICAgICAgICAg
ICAga2V5cy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0LT5rZXkpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTU1NCw3ICsxNTU0LDcgQEAgdm9pZCBK
U09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHIKIHsKICAgICBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoZXhlYywgb2Jq
ZWN0LT5jbGFzc0luZm8oKSwgcHJvcGVydHlOYW1lcywgbW9kZSwgb2JqZWN0LT5zdGF0aWNGdW5j
dGlvbnNSZWlmaWVkKCkpOwogCi0gICAgaWYgKCFzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0
eU5hbWVzKG1vZGUpKQorICAgIGlmICghbW9kZS5zaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0
eU5hbWVzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwpAQCAtMjc1MCw3ICsyNzUwLDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0U3RydWN0dXJlUHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKIHZvaWQgSlNP
YmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlVGhhdFNraXBzSlNPYmplY3QobW9kZSkpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlOjpjcmVhdGVUaGF0U2tpcHNKU09iamVjdChtb2RlKSk7CiAKICAgICBpZiAo
b2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
CmluZGV4IGYxYTJlNTYyZjlhYmY0MDJhYjYzOGRjMDljNmVmYzM4MGQxYzViNGQuLjJhNTE2OTcy
MTFjNmQ4YTNiZTRlNGU3ODJlMjlhZGMyYTVlYzkwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1MSw3
ICsyNTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY1JhY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZl
cnJlZCA9IGpzQ2FzdDxKU1Byb21pc2VEZWZlcnJlZCo+KGRlZmVycmVkVmFsdWUpOwogCiAgICAg
Ly8gNC4gTGV0ICdpdGVyYXRvcicgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEdldEl0ZXJhdG9y
KGl0ZXJhYmxlKS4KLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQo
ZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1
ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7
CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJv
bWlzZUNvbnN0cnVjdG9yRnVuY0FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNQcm9taXNlRGVm
ZXJyZWQqIGRlZmVycmVkID0ganNDYXN0PEpTUHJvbWlzZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1
ZSk7CiAKICAgICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcg
R2V0SXRlcmF0b3IoaXRlcmFibGUpLgotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0
ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKTsK
KyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywg
ZGVmZXJyZWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAppbmRleCBlZTE4YWJmNmViM2YzMmNmYzAxMjkx
ZWIxNDQ3NDBlZjc4YTk2YTFjLi40YzEwY2RmMmZiNTY1ZTE1YzE0NWY4MWY3ZTViMTlmNGI1MTIy
NGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaApAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIHN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoRXhlY1N0
YXRlKiBleGVjCiAgICAgICAgIHJldHVybiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0
ZSh2bSk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAg
IGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBiYXNl
LT5tZXRob2RUYWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
QW5kRXhjbHVkZVN5bWJvbHMpOwogCiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVt
ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lcyk7CiAgICAgaWYgKHN0cnVjdHVyZS0+Y2FuQ2FjaGVTdHJ1Y3R1cmVQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKCkpCkBAIC0xNDIsOSArMTQyLDkgQEAgaW5saW5lIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogZ2VuZXJpY1Byb3BlcnR5TmFtZUVudW1lcmF0b3IoRXhlY1N0YXRl
KiBleGVjLAogICAgIC8vIHRoZSBuZXcgZ2VuZXJpYyBQcm9wZXJ0eU5hbWVBcnJheSBhbmQgZmFp
bGluZyBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGVtLgogICAgIFN0cnVjdHVyZSog
Y2FjaGVkU3RydWN0dXJlID0gc3RydWN0dXJlRW51bWVyYXRvci0+Y2FjaGVkU3RydWN0dXJlKHZt
KTsKICAgICBpZiAoc3RydWN0dXJlID09IGNhY2hlZFN0cnVjdHVyZSAmJiBzdHJ1Y3R1cmUtPmNh
bkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5KCkgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxlbmd0
aCkgPT0gYmFzZS0+Z2V0QXJyYXlMZW5ndGgoKSkKLSAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUo
dm0pLT5nZXRHZW5lcmljUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUodm0p
LT5nZXRHZW5lcmljUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7
CiAgICAgZWxzZQotICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFt
ZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CisgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNlLCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7CiAgICAgCiAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hh
aW4oZXhlYywgc3RydWN0dXJlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBiOGZiMjI4MmFmYWU4N2VjYzQx
MTAyNDVjZTliYjg3M2U5NTBmMGZmLi41NzBkYzE0MDc1ZGM1MWUwZDVhNWQ4NDEwZmY2NWZiNzM4
NTgzMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjEsMTAgKzYxLDEyIEBAIHZvaWQgSlNTeW1ib2xUYWJs
ZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5
bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBm
b3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFi
bGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAo
aXQtPmtleS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1ByaXZhdGUo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICghKGl0LT52YWx1
ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyhtb2RlKSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlmICghbW9kZS5zaG91bGRJ
bmNsdWRlU3ltYm9scygpICYmIGl0LT5rZXktPmlzVW5pcXVlKCkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYg
RG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQorICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaXQt
PmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGIy
MjBiOTg3NTg4NWM0MmY5Y2U2MzhmMzIyMjQ3OTJjMzI3NjEwMTcuLjAzNTY0Zjg4ODExZjNlN2Zh
YmZiMGFkYWI5YmJjOWFjYTFmYmFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
dm9pZCBNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAg
ICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBNYXBJdGVyYXRv
clByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIE1hcEl0ZXJhdG9yUHJvdG90
eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvck5leHRQcml2YXRlTmFtZSwgTWFwSXRlcmF0b3JQcm90
b3R5cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCA1NDgyMjI3Njk0MDBiNzE4NTJhZjdk
YjhiNzVlZjUwNzU0NGVkZDRmLi5mODQzNjdhZTgwYjcyNjM3NTA1ZWRjMTU2M2Q4YjI4ODhjNThj
OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAw
KTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgbWFw
UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwg
MCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclBy
aXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgbWFwUHJvdG9G
dW5jRW50cmllcywgRG9udEVudW0sIDApOwogCiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9
IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnBy
b3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIG1hcFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4
IDYwMmU1NzUyODllMTZjZGMxNmEwYmJhMzQ5Nzg1ZjJlMjdlZjE3ZGQuLjNhN2VkMzVmYWJhM2I1
NGVkNWVlNzgzNzY1OTRjYWVkY2FmNmZiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAog
I2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFy
cmF5LmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0
YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVm
aW5lUHJvcGVydHkoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKQEAgLTY2LDYgKzY4
LDcgQEAKICAgZ2V0UHJvdG90eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldFBy
b3RvdHlwZU9mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlOYW1lcyAgICAgICBvYmplY3RD
b25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgZ2V0T3duUHJvcGVydHlTeW1ib2xzICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5U3ltYm9scyAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAga2V5cyAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcktleXMgICAgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKICAgZGVmaW5lUHJvcGVydHkgICAgICAgICAgICBvYmplY3RDb25zdHJ1
Y3RvckRlZmluZVByb3BlcnR5ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKICAgZGVm
aW5lUHJvcGVydGllcyAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKQEAgLTIwNiw3ICsyMDksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqIGV4ZQogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlz
IG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4
ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBl
eGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVj
dChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywg
RW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJv
bHMpOwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsK
ICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMjE1LDEyICsyMTgsMjkg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGUKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVy
YXRpb24gY2FjaGUuCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIHByb3Bl
cnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CisgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1
bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFz
T2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25N
b2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOworICAgIEpT
QXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBzaXplX3Qg
bnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7CisgICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGlt
cGwgPSBwcm9wZXJ0aWVzW2ldLmltcGwoKTsKKyAgICAgICAgaWYgKGltcGwtPmlzVW5pcXVlKCkp
CisgICAgICAgICAgICBuYW1lcy0+cHVzaChleGVjLCBTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgp
LCBpbXBsKSk7CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZXMpOworfQor
CisvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVz
dGVkIGtleXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogICAgIEpTQXJyYXkqIGtleXMgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJv
cGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVz
OyBpKyspCkBAIC0zMzEsNyArMzUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRpYyBK
U1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0
LCBKU09iamVjdCogcHJvcGVydGllcykKIHsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3Qo
cHJvcGVydGllcyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgc2l6
ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsKICAgICBWZWN0b3I8UHJv
cGVydHlEZXNjcmlwdG9yPiBkZXNjcmlwdG9yczsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBt
YXJrQnVmZmVyOwpAQCAtMzk4LDcgKzQxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZv
ciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRp
b25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAg
IFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgp
OwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9w
ZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0
IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50
ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDM1LDcgKzQ1NSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVj
KQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAog
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNs
dWRlU3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewog
ICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0
T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00ODMsNyArNTAz
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2Vh
bGVkKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9w
ZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMp
OwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
KyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlO
YW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBv
ZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0
aCBQLgpAQCAtNTEzLDcgKzUzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3Ig
ZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9u
TW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBQ
cm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsK
ICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVy
dGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBk
ZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVy
bmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cml2YXRlTmFtZS5oCmluZGV4IDIxNDE2NDQ2NjQ1YzdmZmYwM2Y3YzgyZDE3ODczOWFkNTYwOGJm
NjQuLjU3MzZhNDA5NDM0ZmIwYjU3YTM5ZDZmYzg4NjAwMzU5Mjc2NzM3NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAtMzUsMTkgKzM1LDI1IEBA
IGNsYXNzIFByaXZhdGVOYW1lIHsKICAgICBQcml2YXRlTmFtZSgpCiAgICAgICAgIDogbV9pbXBs
KFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZUVtcHR5KCkpCiAgICAgewotICAgICAgICBBU1NFUlQo
bV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAgICB9Ci0gICAgUHJpdmF0ZU5hbWUoY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbikKLSAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVl
KGRlc2NyaXB0aW9uLmltcGwoKSkpCisKKyAgICBlbnVtIENyZWF0ZVByaXZhdGVUYWcgeyBDcmVh
dGVQcml2YXRlIH07CisgICAgUHJpdmF0ZU5hbWUoQ3JlYXRlUHJpdmF0ZVRhZykKKyAgICAgICAg
OiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlUHJpdmF0ZUVtcHR5KCkpCiAgICAgewot
ICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAgICB9CisKICAgICBleHBsaWNp
dCBQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpCiAgICAgICAgIDogbV9pbXBsKHVpZCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAgIH0KIAorICAgIGV4
cGxpY2l0IFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCisgICAgICAgIDog
bV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5pbXBsKCkpKQorICAg
IHsKKyAgICB9CisKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4obV9pbXBsLmdldCgpKTsgfQogCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdWlk
KCkgPT0gb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlOYW1lLmgKaW5kZXggMzA3NGM3MmUxMDcwMTMzYjk3YjAzYjFkZmY0YTQzZGUxMzJmYzBh
Ni4uMDk0YmQyNWNlZjU5N2YxYWQyZjlhNDVjY2ZlYjExMjAyNjMyYWEyNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTgxLDcgKzgxLDcgQEAg
Y2xhc3MgUHJvcGVydHlOYW1lIHsKICAgICBQcm9wZXJ0eU5hbWUoQXRvbWljU3RyaW5nSW1wbCog
cHJvcGVydHlOYW1lKQogICAgICAgICA6IG1faW1wbChwcm9wZXJ0eU5hbWUpCiAgICAgewotICAg
ICAgICBBU1NFUlQoIW1faW1wbCB8fCBtX2ltcGwtPmlzQXRvbWljKCkpOworICAgICAgICBBU1NF
UlQoIW1faW1wbCB8fCBtX2ltcGwtPmlzQXRvbWljKCkgfHwgbV9pbXBsLT5pc1VuaXF1ZSgpKTsK
ICAgICB9CiAKICAgICBQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQpAQCAtOTQsNyArOTQsNiBAQCBjbGFzcyBQcm9wZXJ0eU5hbWUgewogICAgIHsKICAgICAgICAg
QVNTRVJUKG1faW1wbCk7CiAgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwotICAg
ICAgICBBU1NFUlQobV9pbXBsLT5pc0F0b21pYygpKTsKICAgICB9CiAKICAgICBBdG9taWNTdHJp
bmdJbXBsKiB1aWQoKSBjb25zdApAQCAtMTA0LDE0ICsxMDMsMTQgQEAgY2xhc3MgUHJvcGVydHlO
YW1lIHsKIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIHB1YmxpY05hbWUoKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1faW1wbC0+aXNVbmlxdWUoKSA/IG51bGxwdHIgOiBtX2ltcGw7Cisg
ICAgICAgIHJldHVybiAoIW1faW1wbCB8fCBtX2ltcGwtPmlzVW5pcXVlKCkpID8gbnVsbHB0ciA6
IG1faW1wbDsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgTm90QW5JbmRleCA9
IFVJTlRfTUFYOwogCiAgICAgdWludDMyX3QgYXNJbmRleCgpCiAgICAgewotICAgICAgICByZXR1
cm4gbV9pbXBsID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDogTm90QW5JbmRleDsK
KyAgICAgICAgcmV0dXJuIChtX2ltcGwgJiYgIW1faW1wbC0+aXNVbmlxdWUoKSkgPyB0b1VJbnQz
MkZyb21TdHJpbmdJbXBsKG1faW1wbCkgOiBOb3RBbkluZGV4OwogICAgIH0KICAgICAKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAppbmRleCA0NDc1Yjg5OGE5NzQ5
NzdjZTY4ZTQ3NTlkY2FkMDZiZDZhMDQ4MzczLi42ZDgyNDQ2MTY3NjAzNzllY2IzODBkNzczMWUy
YWY0ZDNjNTFhMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lQXJyYXkuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAKIHZvaWQgUHJvcGVydHlO
YW1lQXJyYXk6OmFkZChTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghaWRl
bnRpZmllciB8fCBpZGVudGlmaWVyID09IFN0cmluZ0ltcGw6OmVtcHR5KCkgfHwgaWRlbnRpZmll
ci0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUKCFpZGVudGlmaWVyIHx8ICghaWRlbnRpZmllci0+
aXNQcml2YXRlKCkgJiYgaWRlbnRpZmllciA9PSBTdHJpbmdJbXBsOjplbXB0eSgpIHx8IGlkZW50
aWZpZXItPmlzQXRvbWljKCkgfHwgaWRlbnRpZmllci0+aXNVbmlxdWUoKSkpOwogICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgIHVpbnQzMl90IGluZGV4ID0gUHJvcGVydHlOYW1l
KElkZW50aWZpZXIobV92bSwgaWRlbnRpZmllcikpLmFzSW5kZXgoKTsKKyAgICAgICAgdWludDMy
X3QgaW5kZXggPSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbShtX3ZtLCBpZGVudGlmaWVy
KSkuYXNJbmRleCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGluZGV4LCBpbmRleCA9PSBQcm9w
ZXJ0eU5hbWU6Ok5vdEFuSW5kZXggfHwgaW5kZXggPj0gbV9wcmV2aW91c2x5RW51bWVyYXRlZExl
bmd0aCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlOYW1lQXJyYXkuaAppbmRleCA5OTRmMDljOTA1NDAxMWU0MWIyMzM4ZjlkMDUwNGIyZDQ5
YmZmMzlhLi42ODM2NzYxNDk5ODljMTQ4YTliZDI2NWZjNzJjYjNmYzUwYjNjOTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAg
LTk4LDcgKzk4LDcgQEAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXkgewogICAgIHZvaWQgYWRkS25v
d25VbmlxdWUoU3RyaW5nSW1wbCogaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIG1fc2V0LT5h
ZGQoaWRlbnRpZmllcik7Ci0gICAgICAgIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBw
ZW5kKElkZW50aWZpZXIobV92bSwgaWRlbnRpZmllcikpOworICAgICAgICBtX2RhdGEtPnByb3Bl
cnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tKG1fdm0sIGlkZW50aWZpZXIp
KTsKICAgICB9CiAKICAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgcmV0
dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IDRkOWQwYjI3ZTRkMGM4Yzkx
ZjlmZWI0NWExZDU0ZTU5NWQzM2Q1MTkuLjU0OWEzYTJmOWE3NGMzYTFhOWRjNzAwMTA0MTJmYTQ3
OWQ5MWE4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcApAQCAtMTA1LDIxICsxMDUsMjEgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHIKIAog
dm9pZCBSZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sYXN0SW5kZXgpOwogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6
Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAg
ICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9k
ZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpOwogICAgIEJhc2U6OmdldFBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogdm9p
ZCBSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
KSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJ
bmRleCk7CiAgICAgQmFzZTo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCA1NzNhY2ZhNWNkNzY0YjA5
ZWU3NTQzYjM0N2I0OWE1MTExZTcwNTM3Li44ZWE2MTA0OGQ3NDk3ZWFjMDVjOTExMWJjMTI2ODNi
NmNmODI0OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJ
dGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2V0SXRlcmF0
b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBl
TWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5j
SXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRv
ciwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQs
IERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dFByb3RvdHlwZS5jcHAKaW5kZXggZjg4ZWE3Y2Y5ODY4ZjY2OGI4YzJlODg4MTVmZjY1Y2YzOTky
N2I0OS4uNDk5NmRhMGVhNTMxM2ZkMmU2MWU3MWE2ZWY0MzgzNTFmYWEzYmFmNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC02Nyw3ICs2
Nyw3IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5rZXlzLCBzZXRQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIHNldFByb3RvRnVuY1ZhbHVl
cywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+ZW50cmllcywgc2V0UHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwotICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgc2V0
UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVt
LCAwKTsKIAogICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLnN0
cmluZygpLCBzZXRQcm90b0Z1bmNTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDUwMDFiY2M0ZTFiN2UzNzkzZWQyNmUxNDIwYTgw
YTYwNDY4ZTEzYzYuLmFiMzk0OWUwN2UzM2UxYTE5Zjc1MzU5ZjI5OTgxYTIxNDlhZjBiZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAt
MTUwLDcgKzE1MCw3IEBAIHZvaWQgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAgaW50IHNpemUgPSB0
aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmxlbmd0aCgpOwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIGkpKTsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyht
b2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwog
ICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDNmY2I0MjZjZGEwZDViYmFjMzE3MGE4YmNiNDY2MTc1ZjI5
Yzc0MjUuLjQ1MGJlMWZiODRjN2IxMjNmNDM5ZjAzMTFhYTdiNzQwMDljNTZhMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtOTQ3LDcgKzk0Nywx
MSBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0mIHZt
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydAogICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9y
IGVuZCA9IHByb3BlcnR5VGFibGUoKS0+ZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjpp
dGVyYXRvciBpdGVyID0gcHJvcGVydHlUYWJsZSgpLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7CiAgICAgICAgIEFTU0VSVChoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIHx8ICEo
aXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSk7Ci0gICAgICAgIGlmICghaXRlci0+a2V5LT5p
c1VuaXF1ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgc2hvdWxkSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpIHsKKyAgICAgICAgaWYgKCEoaXRlci0+YXR0
cmlidXRlcyAmIERvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkgeworICAgICAgICAgICAgaWYgKGl0ZXItPmtleS0+aXNQcml2YXRlKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIW1vZGUuc2hvdWxkSW5jbHVkZVN5
bWJvbHMoKSAmJiBpdGVyLT5rZXktPmlzVW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBpZiAoa25vd25VbmlxdWUpCiAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGRLbm93blVuaXF1ZShpdGVyLT5rZXkpOwogICAgICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDk5Y2U2ODYyNzRmZDc3MzkyOGRkZDU5ZmYxZjljYWY0ZWViZTIxMWUuLjE4ZTcyODJi
NDdiOGMxNzQ1YTcyZDlmZTlkNTU4ZDY2NWIxY2M2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAKIH0KIAogI2RlZmluZSBJTklUSUFMSVpFX1dFTExfS05PV05fU1lNQk9MUyhuYW1lKSBcCi0g
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAjbmFtZSks
IFN5bWJvbDo6Y3JlYXRlKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZS5p
bXBsKCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAjbmFtZSksIFN5bWJvbDo6Y3Jl
YXRlKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNTeW1ib2wuaW1wbCgpKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiB2b2lkIFN5bWJvbENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSogcHJvdG90eXBlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IDA2MjkwYzI0ZTQ3M2QzZTk2NWI0NTA0MDAw
YTYzYTJhNzIwMDhmNWMuLjlmMTMwZWRjZjI4Y2JmMmY1ZjBhMTA1ODcxNzAxNjFiNDEyMTBmYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTQwMyw2ICs0MDMsOSBAQCBz
dHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3IgewogICAgIGlmICghc3Ry
aW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7CiAKKyAg
ICBpZiAoc3RyaW5nLmlzVW5pcXVlKCkpCisgICAgICAgIHJldHVybiBhZGQoc3RyaW5nLmV4dHJh
Y3RGb2xkZWRTdHJpbmdJblVuaXF1ZSgpKTsKKwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0
cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNh
c2UgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGF0b21pYy4iKTsKIAogICAgIEF0b21pY1N0cmlu
Z1RhYmxlTG9ja2VyIGxvY2tlcjsKQEAgLTQyMSw2ICs0MjQsOSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZl
ckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3IgewogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7CiAKKyAgICBpZiAoc3RyaW5nLmlz
VW5pcXVlKCkpCisgICAgICAgIHJldHVybiBhZGQoc3RyaW5nVGFibGUsIHN0cmluZy5leHRyYWN0
Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKSk7CisKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJp
bmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZyBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNl
IGlmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBhdG9taWMuIik7CiAKICAgICBBdG9taWNTdHJpbmdU
YWJsZUxvY2tlciBsb2NrZXI7CkBAIC01MDMsNiArNTA5LDEyIEBAIEF0b21pY1N0cmluZ0ltcGwq
IEF0b21pY1N0cmluZzo6ZmluZFNsb3dDYXNlKFN0cmluZ0ltcGwmIHN0cmluZykKIHsKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZ0ltcGxz
IHNob3VsZCByZXR1cm4gZnJvbSB0aGUgZmFzdCBjYXNlLiIpOwogCisgICAgaWYgKCFzdHJpbmcu
bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4o
U3RyaW5nSW1wbDo6ZW1wdHkoKSk7CisKKyAgICBpZiAoc3RyaW5nLmlzVW5pcXVlKCkpCisgICAg
ICAgIHJldHVybiBmaW5kKCZzdHJpbmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luVW5pcXVlKCkpOwor
CiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwogICAgIEhhc2hTZXQ8U3RyaW5n
SW1wbCo+JiBhdG9taWNTdHJpbmdUYWJsZSA9IHN0cmluZ1RhYmxlKCk7CiAgICAgYXV0byBpdGVy
YXRvciA9IGF0b21pY1N0cmluZ1RhYmxlLmZpbmQoJnN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaAppbmRleCBiYWU5ZDM2MmQyNzUxZTVhNzNjZTBiMWI3ZTJhNDExYjAxODM3ZjMz
Li42MDljZjczMWQyN2JmYzA2NzhkNmM2OTgzYzRjYjA4YjZhMjI5MTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmgKQEAgLTE4MywxMSArMTgzLDkgQEAgY2xhc3MgQXRvbWljU3RyaW5n
IHsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBh
ZGQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHN0
cmluZykKICAgICB7Ci0gICAgICAgIGlmICghc3RyaW5nIHx8IHN0cmluZy0+aXNBdG9taWMoKSkg
ewotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nIHx8ICFzdHJpbmctPmxl
bmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUoc3Ry
aW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwor
ICAgICAgICBpZiAoIXN0cmluZykKICAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKCpzdHJpbmcpOworICAgICAgICByZXR1cm4g
YWRkKCpzdHJpbmcpOwogICAgIH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKTsKICNpZiBVU0UoQ0YpCkBAIC0xOTcsMTEgKzE5NSw5IEBAIGNsYXNz
IEF0b21pY1N0cmluZyB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVGFibGVQcm92aWRl
cj4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkV2l0aFN0
cmluZ1RhYmxlUHJvdmlkZXIoU3RyaW5nVGFibGVQcm92aWRlciYgc3RyaW5nVGFibGVQcm92aWRl
ciwgU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIHsKLSAgICAgICAgaWYgKCFzdHJpbmcgfHwgc3Ry
aW5nLT5pc0F0b21pYygpKSB7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJp
bmcgfHwgIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5pc1VuaXF1ZSgpIHx8IGlzSW5BdG9t
aWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBv
dGhlciB0aHJlYWQhIik7CisgICAgICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJu
IHN0cmluZzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoKnN0cmluZ1Rh
YmxlUHJvdmlkZXIuYXRvbWljU3RyaW5nVGFibGUoKSwgKnN0cmluZyk7CisgICAgICAgIHJldHVy
biBhZGQoKnN0cmluZ1RhYmxlUHJvdmlkZXIuYXRvbWljU3RyaW5nVGFibGUoKSwgKnN0cmluZyk7
CiAgICAgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMjEzLDcgKzIwOSwyNSBAQCBjbGFz
cyBBdG9taWNTdHJpbmcgewogICAgIEF0b21pY1N0cmluZyhBU0NJSUxpdGVyYWwpOwogCiAgICAg
U3RyaW5nIG1fc3RyaW5nOwotICAgIAorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0
cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsJiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoc3Ry
aW5nLmlzQXRvbWljKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmlu
Zy5sZW5ndGgoKSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUoJnN0cmluZyksICJUaGUgYXRvbWlj
IHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgICAgIHJldHVy
biBzdHJpbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZyk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChB
dG9taWNTdHJpbmdUYWJsZSYgc3RyaW5nVGFibGUsIFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICB7
CisgICAgICAgIGlmIChzdHJpbmcuaXNBdG9taWMoKSkgeworICAgICAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZSgmc3Ry
aW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYWRk
U2xvd0Nhc2Uoc3RyaW5nVGFibGUsIHN0cmluZyk7CisgICAgfQorCiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYp
OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZFNs
b3dDYXNlKEF0b21pY1N0cmluZ1RhYmxlJiwgU3RyaW5nSW1wbCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmNwcAppbmRleCBjMjQ5ZjRkN2ZmZDVkYWJlZTE2NDA2NGE2MjE5MjRkY2YzNDU3
ZGM4Li4yNzJlYzlhOTlkOThlMWRkNjk2NzM1YmUwNjZhNGYxOThmMjAxZmY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTI5Miw3ICsyOTIsOCBAQCB2b2lkIFN0cmluZ0ltcGw6
OmRlc3Ryb3koU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVVuaXF1ZUVtcHR5KCk7CiAgICAgUmVmPFN0cmluZ0ltcGw+IHN0cmlu
ZyA9IGNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKHJlcCwgMCwgbGVuZ3RoKTsKLSAgICBzdHJp
bmctPm1faGFzaEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHN0cmluZy0+bV9oYXNo
QW5kRmxhZ3MpOworICAgIEFTU0VSVCghc3RyaW5nLT5pc0F0b21pYygpKTsKKyAgICBzdHJpbmct
Pm1faGFzaEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHN0cmluZy0+bV9oYXNoQW5k
RmxhZ3MsIGZhbHNlKTsKICAgICByZXR1cm4gc3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCmluZGV4IDI2NmI5N2U0Yzg4NjY3YmYxNDYwZTdiOTFiYjA1MWM0YmE1Mzg5N2IuLjhj
ZWU4NTBiY2VlNjY3ZjQ4NGM2ZmZmY2Q2ZDcwYWY1YzlmMWIxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCkBAIC0xNDEsNiArMTQxLDI1IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAg
ICBCdWZmZXJTdWJzdHJpbmcsCiAgICAgfTsKIAorICAgIC8vIFRoZSBib3R0b20gNiBiaXRzIGlu
IHRoZSBoYXNoIGFyZSBmbGFncy4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnQ291
bnQgPSA2OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdNYXNrID0gKDF1IDw8IHNf
ZmxhZ0NvdW50KSAtIDE7CisgICAgQ09NUElMRV9BU1NFUlQoc19mbGFnQ291bnQgPD0gU3RyaW5n
SGFzaGVyOjpmbGFnQ291bnQsIFN0cmluZ0hhc2hlcl9yZXNlcnZlc19lbm91Z2hfYml0c19mb3Jf
U3RyaW5nSW1wbF9mbGFncyk7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ1N0cmlu
Z0tpbmRDb3VudCA9IDQ7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ1N0
cmluZ0tpbmRJc1VuaXF1ZSA9IDF1IDw8IChzX2ZsYWdTdHJpbmdLaW5kQ291bnQgKyAxKTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoTWFza1N0cmluZ0tpbmQgPSAoMXUgPDwgc19m
bGFnU3RyaW5nS2luZENvdW50KSB8IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNVbmlxdWU7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWc4Qml0QnVmZmVyID0gMXUgPDwgMzsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgPSAxdSA8PCAy
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hNYXNrQnVmZmVyT3duZXJzaGlwID0g
KDF1IDw8IDApIHwgKDF1IDw8IDEpOworCisgICAgZW51bSBTdHJpbmdLaW5kIHsKKyAgICAgICAg
U3RyaW5nQXRvbWljID0gMHUgPDwgc19mbGFnU3RyaW5nS2luZENvdW50LAorICAgICAgICBTdHJp
bmdOb3JtYWwgPSAxdSA8PCBzX2ZsYWdTdHJpbmdLaW5kQ291bnQsCisgICAgICAgIFN0cmluZ1Vu
aXF1ZSA9IDJ1IDw8IHNfZmxhZ1N0cmluZ0tpbmRDb3VudCwKKyAgICAgICAgU3RyaW5nVW5pcXVl
UHJpdmF0ZSA9IDN1IDw8IHNfZmxhZ1N0cmluZ0tpbmRDb3VudCwKKyAgICB9OworCiAgICAgLy8g
VXNlZCB0byBjb25zdHJ1Y3Qgc3RhdGljIHN0cmluZ3MsIHdoaWNoIGhhdmUgYW4gc3BlY2lhbCBy
ZWZDb3VudCB0aGF0IGNhbiBuZXZlciBoaXQgemVyby4KICAgICAvLyBUaGlzIG1lYW5zIHRoYXQg
dGhlIHN0YXRpYyBzdHJpbmcgd2lsbCBuZXZlciBiZSBkZXN0cm95ZWQsIHdoaWNoIGlzIGltcG9y
dGFudCBiZWNhdXNlCiAgICAgLy8gc3RhdGljIHN0cmluZ3Mgd2lsbCBiZSBzaGFyZWQgYWNyb3Nz
IHRocmVhZHMgJiByZWYtY291bnRlZCBpbiBhIG5vbi10aHJlYWRzYWZlIG1hbm5lci4KQEAgLTE1
MCw3ICsxNjksNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNf
cmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcpCiAgICAgICAgICwgbV9sZW5ndGgoMCkKICAgICAg
ICAgLCBtX2RhdGE4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9sZW5ndGgpKQot
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgc19oYXNoRmxh
Z0lzQXRvbWljIHwgQnVmZmVyT3duZWQpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNo
RmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdBdG9taWMgfCBCdWZmZXJPd25lZCkKICAgICB7CiAgICAg
ICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBoYXNoIGlzIGNvbXB1dGVkIHNvIHRoYXQgQXRvbWljU3Ry
aW5nSGFzaCBjYW4gY2FsbCBleGlzdGluZ0hhc2goKQogICAgICAgICAvLyB3aXRoIGltcHVuaXR5
LiBUaGUgZW1wdHkgc3RyaW5nIGlzIHNwZWNpYWwgYmVjYXVzZSBpdCBpcyBuZXZlciBlbnRlcmVk
IGludG8KQEAgLTE2Nyw3ICsxODYsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBt
X3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3Ro
KQogICAgICAgICAsIG1fZGF0YTgodGFpbFBvaW50ZXI8TENoYXI+KCkpCi0gICAgICAgICwgbV9o
YXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkKKyAgICAg
ICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8
IEJ1ZmZlckludGVybmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwogICAgICAg
ICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMTgwLDcgKzE5OSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwg
ewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBt
X2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYodGFpbFBvaW50ZXI8VUNoYXI+KCkp
Ci0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9o
YXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV9kYXRhMTYpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMTkzLDcg
KzIxMiw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZD
b3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9k
YXRhOChjaGFyYWN0ZXJzLmxlYWtQdHIoKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hh
c2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlck93bmVkKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdz
KHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBA
IC0yMDYsNyArMjI1LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3Vu
dChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAg
ICAgLCBtX2RhdGExNihjaGFyYWN0ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZl
ckludGVybmFsKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZl
ckludGVybmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKICAgICAgICAgQVNT
RVJUKG1fbGVuZ3RoKTsKQEAgLTIxOCw3ICsyMzcsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAg
ICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5n
dGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hh
c2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKQorICAgICAg
ICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwg
QnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAgICAgICAg
IEFTU0VSVChtX2xlbmd0aCk7CkBAIC0yMzEsNyArMjUwLDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7
CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1f
bGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGExNihjaGFyYWN0ZXJzLmxlYWtQdHIoKSkK
LSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJPd25lZCkKKyAgICAgICAgLCBtX2hhc2hB
bmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJPd25lZCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2RhdGExNik7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0yNDQsNyArMjYzLDcg
QEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5j
cmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KGNo
YXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIg
fCBCdWZmZXJTdWJzdHJpbmcpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhC
aXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJTdWJzdHJpbmcpCiAgICAgewogICAgICAg
ICBBU1NFUlQoaXM4Qml0KCkpOwogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CkBAIC0yNjEsNyAr
MjgwLDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNv
dW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2Rh
dGExNihjaGFyYWN0ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlclN1YnN0cmlu
ZykKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJTdWJzdHJp
bmcpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlzOEJpdCgpKTsKICAgICAgICAgQVNTRVJUKG1f
ZGF0YTE2KTsKQEAgLTI3MywxNCArMjkyLDE0IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAg
ICBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwogICAgIH0K
IAotICAgIGVudW0gQ3JlYXRlRW1wdHlVbmlxdWVUYWcgeyBDcmVhdGVFbXB0eVVuaXF1ZSB9Owot
ICAgIFN0cmluZ0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWVUYWcpCisgICAgZW51bSBDcmVhdGVVbmlx
dWVFbXB0eVRhZyB7IENyZWF0ZVVuaXF1ZUVtcHR5IH07CisgICAgU3RyaW5nSW1wbChDcmVhdGVV
bmlxdWVFbXB0eVRhZywgYm9vbCBpc1ByaXZhdGUpCiAgICAgICAgIDogbV9yZWZDb3VudChzX3Jl
ZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgIC8vIFdlIGV4
cGVjdCBtX2xlbmd0aCB0byBiZSBpbml0aWFsaXplZCB0byAwIGFzIHdlIHVzZSBpdAogICAgICAg
ICAvLyB0byByZXByZXNlbnQgYSBudWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgogICAgICAgICAsIG1f
ZGF0YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAg
ICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHNfaGFzaEZsYWc4Qml0QnVm
ZmVyIHwgQnVmZmVySW50ZXJuYWwpKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRG
bGFnc0ZvclVuaXF1ZShzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsLCBpc1By
aXZhdGUpKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwogCkBAIC0zODAsNyArMzk5
LDEyIEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVVuaXF1ZUVtcHR5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWUpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChDcmVhdGVVbmlxdWVFbXB0eSwgZmFsc2UpKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRl
VW5pcXVlUHJpdmF0ZUVtcHR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0cmluZ0ltcGwoQ3JlYXRlVW5pcXVlRW1wdHksIHRydWUpKTsKICAgICB9CiAKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlxdWUoUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiByZXApOwpAQCAtMzkzLDggKzQxNyw4IEBAIGNsYXNzIFN0cmlu
Z0ltcGwgewogCiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdzT2Zmc2V0KCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1faGFzaEFuZEZsYWdzKTsgfQogICAgIHN0YXRpYyB1
bnNpZ25lZCBmbGFnSXM4Qml0KCkgeyByZXR1cm4gc19oYXNoRmxhZzhCaXRCdWZmZXI7IH0KLSAg
ICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzQXRvbWljKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzQXRv
bWljOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc1VuaXF1ZSgpIHsgcmV0dXJuIHNfaGFz
aEZsYWdJc1VuaXF1ZTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNOb3RBdG9taWMoKSB7
IHJldHVybiBzX2hhc2hNYXNrU3RyaW5nS2luZDsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBtYXNr
U3RyaW5nS2luZCgpIHsgcmV0dXJuIHNfaGFzaE1hc2tTdHJpbmdLaW5kOyB9CiAgICAgc3RhdGlj
IHVuc2lnbmVkIGRhdGFPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RyaW5nSW1w
bCwgbV9kYXRhOCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KQEAgLTQ1NCwxNyArNDc4
LDIwIEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNp
emVfdCBzaXplSW5CeXRlcygpIGNvbnN0OwogCi0gICAgYm9vbCBpc1VuaXF1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0lzVW5pcXVlOyB9CisgICAgU3RyaW5n
S2luZCBzdHJpbmdLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RyaW5nS2luZD4o
bV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hNYXNrU3RyaW5nS2luZCk7IH0KKworICAgIGJvb2wgaXNV
bmlxdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmdLaW5kKCkgJiBzX2hhc2hGbGFnU3RyaW5nS2lu
ZElzVW5pcXVlOyB9CisgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBzdHJpbmdL
aW5kKCkgPT0gU3RyaW5nVW5pcXVlUHJpdmF0ZTsgfQorICAgIGJvb2wgaXNBdG9taWMoKSBjb25z
dCB7IHJldHVybiBzdHJpbmdLaW5kKCkgPT0gU3RyaW5nQXRvbWljOyB9CiAKLSAgICBib29sIGlz
QXRvbWljKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNBdG9t
aWM7IH0KICAgICB2b2lkIHNldElzQXRvbWljKGJvb2wgaXNBdG9taWMpCiAgICAgewogICAgICAg
ICBBU1NFUlQoIWlzU3RhdGljKCkpOwogICAgICAgICBBU1NFUlQoIWlzVW5pcXVlKCkpOwogICAg
ICAgICBpZiAoaXNBdG9taWMpCi0gICAgICAgICAgICBtX2hhc2hBbmRGbGFncyB8PSBzX2hhc2hG
bGFnSXNBdG9taWM7CisgICAgICAgICAgICBtX2hhc2hBbmRGbGFncyA9IChtX2hhc2hBbmRGbGFn
cyAmICh+c19oYXNoTWFza1N0cmluZ0tpbmQpKSB8IFN0cmluZ0F0b21pYzsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgJj0gfnNfaGFzaEZsYWdJc0F0b21pYzsKKyAg
ICAgICAgICAgIG1faGFzaEFuZEZsYWdzID0gKG1faGFzaEFuZEZsYWdzICYgKH5zX2hhc2hNYXNr
U3RyaW5nS2luZCkpIHwgU3RyaW5nTm9ybWFsOwogICAgIH0KIAogI2lmIFNUUklOR19TVEFUUwpA
QCAtNzA2LDYgKzczMywxNiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgY29uc3QgVUNoYXIgbGF0aW4xQ2FzZUZvbGRUYWJsZVsyNTZdOwog
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZ0ltcGwmIGV4dHJhY3RGb2xkZWRTdHJp
bmdJblVuaXF1ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoKCkpOworICAgICAgICBB
U1NFUlQoaXNVbmlxdWUoKSk7CisgICAgICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBC
dWZmZXJTdWJzdHJpbmcpOworICAgICAgICBBU1NFUlQoc3Vic3RyaW5nQnVmZmVyKCkpOworICAg
ICAgICBBU1NFUlQoIXN1YnN0cmluZ0J1ZmZlcigpLT5pc1VuaXF1ZSgpKTsKKyAgICAgICAgcmV0
dXJuICpzdWJzdHJpbmdCdWZmZXIoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgYm9vbCByZXF1
aXJlc0NvcHkoKSBjb25zdAogICAgIHsKQEAgLTc3MiwyMyArODA5LDEyIEBAIGNsYXNzIFN0cmlu
Z0ltcGwgewogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiByZWFsbG9jYXRlSW50ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiwgdW5zaWdu
ZWQsIENoYXJUeXBlKiYpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSosIHVuc2lnbmVk
KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIGhhc2hTbG93
Q2FzZSgpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdW5zaWduZWQgaGFz
aEFuZEZsYWdzRm9yVW5pcXVlKHVuc2lnbmVkIGZsYWdzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHVuc2lnbmVkIGhhc2hBbmRGbGFnc0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncywg
Ym9vbCBpc1ByaXZhdGUpOwogCiAgICAgLy8gVGhlIGJvdHRvbSBiaXQgaW4gdGhlIHJlZiBjb3Vu
dCBpbmRpY2F0ZXMgYSBzdGF0aWMgKGltbW9ydGFsKSBzdHJpbmcuCiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcgPSAweDE7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRJbmNyZW1lbnQgPSAweDI7IC8vIFRoaXMgYWxsb3dz
IHVzIHRvIHJlZiAvIGRlcmVmIHdpdGhvdXQgZGlzdHVyYmluZyB0aGUgc3RhdGljIHN0cmluZyBm
bGFnLgogCi0gICAgLy8gVGhlIGJvdHRvbSA3IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDc7Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFnQ291bnQpIC0gMTsKLSAgICBD
T01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJpbmdIYXNoZXI6OmZsYWdDb3VudCwgU3Ry
aW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zvcl9TdHJpbmdJbXBsX2ZsYWdzKTsKLQot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnSXNVbmlxdWUgPSAxdSA8PCA2Owot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9IDF1IDw8IDU7
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdJc0F0b21pYyA9IDF1IDw8IDQ7
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0ID0gMXUg
PDwgMzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoTWFza0J1ZmZlck93bmVyc2hp
cCA9IDF1IHwgKDF1IDw8IDEpOwotCiAjaWYgU1RSSU5HX1NUQVRTCiAgICAgV1RGX0VYUE9SVERB
VEEgc3RhdGljIFN0cmluZ1N0YXRzIG1fc3RyaW5nU3RhdHM7CiAjZW5kaWYKQEAgLTgwMyw3ICs4
MjksNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgbWlt
aWMgQ29uc3RydWN0RnJvbUxpdGVyYWwuCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBz
X2luaXRpYWxSZWZDb3VudCA9IHNfcmVmQ291bnRJbmNyZW1lbnQ7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9IHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVm
ZmVySW50ZXJuYWw7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxGbGFn
cyA9IHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWw7
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hTaGlmdCA9IHNfZmxhZ0NvdW50
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGlj
cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCmluZGV4IDY1YmI2
NzIxZDc0M2ZhMTA0MWMyOTJiNjBmNGQwMzI5MjgzZDhlNTEuLjA3ZDhkZjI1ZjNiMjhmMGQ3NjMx
Y2JhZDIwYmZhMzQyZDMzMjhlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nU3RhdGljcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNw
cApAQCAtNTIsMTIgKzUyLDEyIEBAIFN0cmluZ0ltcGwqIFN0cmluZ0ltcGw6OmVtcHR5KCkKIC8v
IGtleXMgbWVhbnMgdGhhdCB3ZSBkb24ndCBuZWVkIHRoZW0gdG8gbWF0Y2ggYW55IG90aGVyIHN0
cmluZyAoaW4gZmFjdCwKIC8vIHRoYXQncyBleGFjdGx5IHRoZSBvcG9zaXRlIG9mIHdoYXQgd2Ug
d2FudCEpLCBhbmQgdGhlIG5vcm1hbCBoYXNoIHdvdWxkCiAvLyBsZWFkIHRvIGxvdHMgb2YgY29u
ZmxpY3RzLgotdW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yVW5pcXVlKHVuc2ln
bmVkIGZsYWdzKQordW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yVW5pcXVlKHVu
c2lnbmVkIGZsYWdzLCBib29sIGlzUHJpdmF0ZSkKIHsKICAgICBzdGF0aWMgdW5zaWduZWQgc19u
ZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlID0gMDsKICAgICBzX25leHRIYXNoQW5kRmxhZ3NGb3JV
bmlxdWUgKz0gMSA8PCBzX2ZsYWdDb3VudDsKICAgICBzX25leHRIYXNoQW5kRmxhZ3NGb3JVbmlx
dWUgfD0gMSA8PCAzMTsKLSAgICB1bnNpZ25lZCBmbGFnc0ZvclVuaXF1ZSA9IChmbGFncyAmIHNf
ZmxhZ01hc2spIHwgc19oYXNoRmxhZ0lzQXRvbWljIHwgc19oYXNoRmxhZ0lzVW5pcXVlOworICAg
IHVuc2lnbmVkIGZsYWdzRm9yVW5pcXVlID0gKChmbGFncyAmIHNfZmxhZ01hc2spICYgKH5zX2hh
c2hNYXNrU3RyaW5nS2luZCkpIHwgKGlzUHJpdmF0ZSA/IFN0cmluZ1VuaXF1ZVByaXZhdGUgOiBT
dHJpbmdVbmlxdWUpOwogICAgIHJldHVybiBzX25leHRIYXNoQW5kRmxhZ3NGb3JVbmlxdWUgfCBm
bGFnc0ZvclVuaXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5v
cmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMTZiOWNkNTE3NjBjZjRl
NTJlYmQyM2I3OWQyZjM1MzMzMDY3ZTJhYi4uNTY3MDcxZTM3OWQ3ZjQxMWViYWJjODhkNmViYjYw
M2JiYzFiMzc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0xNTMxMiw3ICsxNTMxMiw2IEBAIF9f
Wk43V2ViQ29yZTI2anNIVE1MTWV0YUVsZW1lbnRIdHRwRXF1aXZFUE4zSlNDOUV4ZWNTdGF0ZUVO
UzBfN0pTVmFsdWVFTlMwXzEyUHJvCiBfX1pON1dlYkNvcmUxN0pTVGltZVJhbmdlc093bmVyMjZp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VOM0pTQzZIYW5kbGVJTlMxXzdVbmtub3duRUVFUHZS
TlMxXzExU2xvdFZpc2l0b3JFCiBfX1pON1dlYkNvcmUxN0pTVGltZVJhbmdlc093bmVyOGZpbmFs
aXplRU4zSlNDNkhhbmRsZUlOUzFfN1Vua25vd25FRUVQdgogX19aTjdXZWJDb3JlMTJKU1RpbWVS
YW5nZXM3ZGVzdHJveUVQTjNKU0M2SlNDZWxsRQotX19aTjdXZWJDb3JlMTBKU05vZGVMaXN0MTln
ZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8x
N1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWkwxOWtDTVRpbWVa
ZXJvRnVuY3Rpb252CiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQzNWNoYW5nZU5ldHdv
cmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlRXYKIF9fWk5LN1dlYkNvcmUzME1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbjE1bWluVGltZVNlZWthYmxlRXYKQEAgLTE3OTU5LDcgKzE3OTU4LDYg
QEAgX19aTjdXZWJDb3JlMTFKU0RPTVBsdWdpbjExaW5kZXhHZXR0ZXJFUE4zSlNDOUV4ZWNTdGF0
ZUVOUzFfN0pTVmFsdWVFagogX19aTjdXZWJDb3JlOURPTVBsdWdpbjRpdGVtRWoKIF9fWk43V2Vi
Q29yZTE3anNET01NaW1lVHlwZVR5cGVFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMw
XzEyUHJvcGVydHlOYW1lRQogX19aTks3V2ViQ29yZTExRE9NTWltZVR5cGU0dHlwZUV2Ci1fX1pO
N1dlYkNvcmU5SlNTdG9yYWdlMTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQ
TlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9u
TW9kZUUKIF9fWk5LN1dlYkNvcmUxOFJlbmRlclRleHRGcmFnbWVudDE0aXNUZXh0RnJhZ21lbnRF
dgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNWhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXJF
UE5TXzE4UmVuZGVyVGV4dEZyYWdtZW50RQogX19aTjNXVEYxMlN0cmluZ0FwcGVuZElOU182U3Ry
aW5nRVBLY0U3d3JpdGVUb0VQdApAQCAtMTgyMjgsOCArMTgyMjYsNiBAQCBfX1pOSzdXZWJDb3Jl
MjNSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDI5Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHNF
Uk5TXzEwTGF5bwogX19aTks3V2ViQ29yZTExUmVuZGVyVGhlbWUyMGZpbGVMaXN0RGVmYXVsdExh
YmVsRWIKIF9fWk43V2ViQ29yZTI5ZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWxFdgogX19a
Tks3V2ViQ29yZTIzUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wzNnJlcXVpcmVzRm9yY2VkU3R5bGVS
ZWNhbGNQcm9wYWdhdGlvbkV2Ci1fX1pON1dlYkNvcmUxMUpTRE9NV2luZG93MTZnZXRQcm9wZXJ0
eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFt
ZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKLV9fWk43V2ViQ29yZTExSlNET01XaW5kb3cx
OWdldE93blByb3BlcnR5TmFtZXNFUE4zSlNDOEpTT2JqZWN0RVBOUzFfOUV4ZWNTdGF0ZUVSTlMx
XzE3UHJvcGVydHlOYW1lQXJyYXlFTlMxXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjdXZWJDb3Jl
OURPTVdpbmRvdzE4Y2FuU2hvd01vZGFsRGlhbG9nRVBLTlNfNUZyYW1lRQogX19aTks3V2ViQ29y
ZTZDaHJvbWUxMWNhblJ1bk1vZGFsRXYKIF9fWk43V2ViQ29yZTMxanNYTUxIdHRwUmVxdWVzdFdp
dGhDcmVkZW50aWFsc0VQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0
eU5hbWVFCkBAIC0xODI3Miw3ICsxODI2OCw2IEBAIF9fWk43V2ViQ29yZTIyanNET01XaW5kb3dP
bm1vdXNlZG93bkVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0CiBf
X1pON1dlYkNvcmUyNGpzRE9NV2luZG93T25jb250ZXh0bWVudUVQTjNKU0M5RXhlY1N0YXRlRU5T
MF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCiBfX1pOSzdXZWJDb3JlMTNGaWxlSW5wdXRU
eXBlMjBzYXZlRm9ybUNvbnRyb2xTdGF0ZUV2CiBfX1pON1dlYkNvcmUyM1JlbmRlckZpbGVVcGxv
YWRDb250cm9sRDBFdgotX19aTjdXZWJDb3JlMTBKU0xvY2F0aW9uMTlnZXRPd25Qcm9wZXJ0eU5h
bWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDMThnZXRTdGF0aWNWYWx1ZVNsb3RJ
TjdXZWJDb3JlMTVKU0RPTVN0cmluZ0xpc3RFTlMxXzEySlNET01XcmFwcGVyRUVFYlBOU185RXhl
Y1N0YXRlRVBLTlNfOUhhc2hUYWJsZUVQVF9OU18xMlByb3BlcnR5TmFtZUVSTlNfMTJQcm9wZXJ0
eVNsb3RFCiBfX1pON1dlYkNvcmUyNEpTRE9NU3RyaW5nTGlzdFByb3RvdHlwZTE4Z2V0T3duUHJv
cGVydHlTbG90RVBOM0pTQzZKU0NlbGxFUE5TMV85RXhlY1N0YXRlRU5TMV8xMlByb3BlcnR5TmFt
ZUVSTlMxXzEyUHJvcGVydHlTbG90RQogX19aTjdXZWJDb3JlMTFTVkdGb250RGF0YUMxRVBOU18x
OFNWR0ZvbnRGYWNlRWxlbWVudEUKQEAgLTE4NDUzLDcgKzE4NDQ4LDYgQEAgX19aTjdXZWJDb3Jl
MTlIVE1MUHJvZ3Jlc3NFbGVtZW50NmF0dGFjaEVSS05TXzROb2RlMTNBdHRhY2hDb250ZXh0RQog
X19aTks3V2ViQ29yZTE0UmVuZGVyVGhlbWVNYWMyMmFkanVzdFByb2dyZXNzQmFyU3R5bGVFUE5T
XzEzU3R5bGVSZXNvbHZlckVQTlNfMTFSZW5kZXJTdHlsZUVQTlNfN0VsZW1lbnRFCiBfX1pON1dl
YkNvcmUyMkNTU0NhbGNCaW5hcnlPcGVyYXRpb25EMEV2CiBfX1pON1dlYkNvcmUyMUNTU0NhbGNQ
cmltaXRpdmVWYWx1ZUQwRXYKLV9fWk43V2ViQ29yZTE1SlNET01TdHJpbmdMaXN0MTlnZXRPd25Q
cm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3Bl
cnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk43V2ViQ29yZUwyM2dldEpT
RE9NU3RyaW5nTGlzdFRhYmxlRVBOM0pTQzlFeGVjU3RhdGVFCiBfX1pON1dlYkNvcmVMMjJnZXRK
U01lc3NhZ2VFdmVudFRhYmxlRVBOM0pTQzlFeGVjU3RhdGVFCiBfX1pON1dlYkNvcmVMMzFnZXRK
U01lc3NhZ2VFdmVudFByb3RvdHlwZVRhYmxlRVBOM0pTQzlFeGVjU3RhdGVFCkBAIC0yNzIxMCw3
ICsyNzIwNCw2IEBAIF9fWlpON1dlYkNvcmVMMTlzZWxlY3RvcnNGcm9tU291cmNlRVBLTlNfMTdD
U1NSdWxlU291cmNlRGF0YUVSS04zV1RGNlN0cmluZ0VFN2NvCiBfX1pHVlpON1dlYkNvcmVMMTlz
ZWxlY3RvcnNGcm9tU291cmNlRVBLTlNfMTdDU1NSdWxlU291cmNlRGF0YUVSS04zV1RGNlN0cmlu
Z0VFN2NvbW1lbnQuYgogX19aWk43V2ViQ29yZTIySW5zcGVjdG9yVGltZWxpbmVBZ2VudDI0aW5u
ZXJBZGRSZWNvcmRUb1RpbWVsaW5lRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1SW5zcGVjdG9yT2Jq
ZWN0RUVFUktOUzFfNlN0cmluZ0VTN19FN3Byb2dyYW0KIF9fWkdWWk43V2ViQ29yZTIySW5zcGVj
dG9yVGltZWxpbmVBZ2VudDI0aW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzE1SW5zcGVjdG9yT2JqZWN0RUVFUktOUzFfNlN0cmluZ0VTN19FN3Byb2dyYW0uYgot
X19aWk43V2ViQ29yZTIxSlNDU1NTdHlsZURlY2xhcmF0aW9uMTlnZXRPd25Qcm9wZXJ0eU5hbWVz
RVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5
RU5TMV8xNUVudW1lcmF0aW9uTW9kZUVFMTlwcm9wZXJ0eUlkZW50aWZpZXJzCiBfX1paTjdXZWJD
b3JlMjNKU0luc3BlY3RvckZyb250ZW5kSG9zdDhwbGF0Zm9ybUVQTjNKU0M5RXhlY1N0YXRlRUU4
cGxhdGZvcm0KIF9fWkdWWk43V2ViQ29yZTIzSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q4cGxhdGZv
cm1FUE4zSlNDOUV4ZWNTdGF0ZUVFOHBsYXRmb3JtLmIKIF9fWlpON1dlYkNvcmUyM0pTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0NHBvcnRFUE4zSlNDOUV4ZWNTdGF0ZUVFNHBvcnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKaW5kZXggZGY0ZGM3ODYyZDJkYWFhOWYyYjY3
NmQxZWQzMTcyYTJmM2VhZmQyOS4uOWJjNDBkMWVhMzIzNmJjMjgyNDJmYzQ0NWQ0ZWE0YzNhNmE0
Y2E3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNo
TWFwKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtYXApIGMKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0eU5hbWVzKGV4ZWMpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3lt
Ym9scyk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBw
cm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5TmFtZXMuZW5kKCk7ICsraXQpIHsK
ICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0LT5zdHJpbmcoKTsKICAgICAgICAgaWYgKHN0
cmluZ0tleS5pc0VtcHR5KCkpCkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0
T3duUHJvcGVydHlOYW1lcyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpOwogCiAgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5k
RXhjbHVkZVN5bWJvbHMpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5hbWVzLmVuZCgp
OyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5nKCk7CiAgICAg
ICAgIGlmICghc3RyaW5nS2V5LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCmluZGV4IDg5
NmI5OWNlOTFiNzJjNmNmZTgwMmIxN2NiZDA3MGYyNDVkNGE0N2QuLmM2YzhkMjFiMDUyZTI2Mjg2
YjVjYWE0MjYwN2QzNmMzZWJkZWM4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApAQCAtNDAwLDcg
KzQwMCw3IEBAIHZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiAKICAgICAgICAgcHJvcGVydHlJZGVu
dGlmaWVycyA9IG5ldyBJZGVudGlmaWVyW251bUNTU1Byb3BlcnRpZXNdOwogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkKLSAgICAgICAgICAgIHByb3Bl
cnR5SWRlbnRpZmllcnNbaV0gPSBJZGVudGlmaWVyKGV4ZWMsIGpzUHJvcGVydHlOYW1lc1tpXS5p
bXBsKCkpOworICAgICAgICAgICAgcHJvcGVydHlJZGVudGlmaWVyc1tpXSA9IElkZW50aWZpZXIo
ZXhlYywganNQcm9wZXJ0eU5hbWVzW2ldKTsKICAgICB9CiAKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGRjYTU2MDNmOWMzOTk2MTgz
MzhhZjdlMGRiMzFhZGYxMGNiNmI2ZjkuLmEwZWQ4ZTIwZTA4ZWZiZTA3Nzc2ZWQ1Y2U1NDkzNjUz
NmYwNGIwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTI0OCw3ICsxMjQ4LDcgQEAgU2VyaWFsaXphdGlvblJl
dHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoU3RhY2sucmVtb3ZlTGFzdCgpOwogCiAgICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAg
ICAgICAgICAgICAgICAgICBhcnJheS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKGFycmF5LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxl
KCktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwgbV9leGVjLCBwcm9wZXJ0eVN0
YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5k
RXhjbHVkZVN5bWJvbHMpOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlTdGFjay5s
YXN0KCkuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25JbmRleFBy
b3BlcnRpZXNUYWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQo
MCk7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgIGlucHV0T2Jq
ZWN0U3RhY2suYXBwZW5kKGluT2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFw
cGVuZCgwKTsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5h
bWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxh
c3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgaW5PYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMoaW5PYmplY3QsIG1fZXhlYywg
cHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJv
cGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9i
amVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTEzODEs
NyArMTM4MSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2Vy
aWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpz
RHluYW1pY0Nhc3Q8SlNTZXQqPihvYmplY3QpIHx8IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihvYmpl
Y3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlO
YW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5s
YXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMs
IHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7CiAgICAgICAgICAgICAgICAgICAgIHdyaXRlKE5v
bk1hcFByb3BlcnRpZXNUYWcpOwogICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVu
ZCgwKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBvYmplY3RTdGFydFZpc2l0TWVtYmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQppbmRleCA2NDUwYjQ5NDNmMjZmN2U5MGNmZmE5ZTliMjE1NGM2OTdhOTJjNDk0Li43YTk3MjU5
OGI0OWQyYzU3YzY0MWMxNzQ3NmIzY2E4ZmYzNDFjOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtOTUzLDE2ICs5NTMs
MTYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEN1c3RvbSBnZXRQcm9wZXJ0eU5hbWVz
IGZ1bmN0aW9uIGV4aXN0cyBvbiBET01XaW5kb3cKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEg
IkRPTVdpbmRvdyIpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
dm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1l
cmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVy
ZVByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBK
U0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVT
eW1ib2xzKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2
b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6
RW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJv
bHMpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQg
Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVu
dW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xz
KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB1aW50MzJf
dCBnZXRFbnVtZXJhYmxlTGVuZ3RoKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCopO1xu
Iik7CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIn0gPSAxOwogICAgIH0KIAogICAgICMgQ3VzdG9tIGdldE93blByb3BlcnR5TmFtZXMgZnVu
Y3Rpb24KICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUVu
dW1lcmF0ZVByb3BlcnR5In0gfHwgJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbikgewotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYs
IEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0
aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTtcbiIp
OwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyJ9ID0gMTsgICAgICAgCiAgICAgfQogCkBAIC0yNjkwLDcgKzI2OTAsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2Jq
ZWN0LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIGkpKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgQmFzZTo6
Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJy
YXkuY3BwCmluZGV4IDFkNTkxODliNDcyMDUxMTcxNzljNjM5YTYwNWIzMDg2ZWRkYmY2ZWYuLmQy
NGEyZWE3MDZhZTJkOTQ0MmI3MDc1Zjk1ZTI4ODMzNjU2MjA2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5
LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgSlNGbG9hdDY0QXJyYXk6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxGbG9hdDY0QXJyYXkqPih0aGlzT2JqZWN0LT5p
bXBsKCkpLT5sZW5ndGgoKTsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIGkpKTsKLSAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBK
U1ZhbHVlIEpTRmxvYXQ2NEFycmF5OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCmluZGV4IGZmMzg4Y2Ew
MTc2MGMxMmI5NTc1MDM5ZmVjNzY0MzI5M2ZlODRlMzQuLjY5Yzk2Y2NlN2U3N2UyOTNlYjY0Nzk5
NjkzMzAyOWI1NGViNGI4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCkBAIC01MSw3ICs1MSw3IEBAIGNs
YXNzIEpTRmxvYXQ2NEFycmF5IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09i
amVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51
bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0g
SlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRl
U3ltYm9scyk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBGbG9hdDY0QXJyYXkqIGltcGwo
KSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDA2N2Y4Mzk5MzUy
MzUzMDA1NzgxMTA3MWQwNzNmMjVhYjc4YmE2N2QuLjI0ZTRmZTY1OTI1ZGZkM2JiM2VmMzc1ODQ0
YjcxOTU4NWRiZDI1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMjI0LDcgKzIy
NCw3IEBAIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50
ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwgY291bnQ7ICsraSkKICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7Ci0gICAgIEJhc2U6
OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29u
c3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuaAppbmRleCA5NjA0MDI0MzhlNGU2MDNiZjhmNjk5NmQ3NWJkMzExMzk4MmFmMWY2
Li43YmI3ZjFkNDZiMzk2Mjg3MDM3MzJlYTk1N2Y5OWJiMzY2MDg3MTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBKU1Rlc3RFdmVudFRhcmdldCA6IHB1
YmxpYyBKU0RPTVdyYXBwZXIgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFy
cmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmluZGV4IDkwMDEwMTM4YWI0NmNl
N2Q5NzUzY2JmZjI5NWU1M2NkZmFjZDBiNWEuLmJmNTBhZDIxMWMxOWI4MzU0ZWQ1MmZjZTNhOWQ4
YWMwYTc5YmQ0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtNDQ3
LDcgKzQ0Nyw3IEBAIGJvb2wgX05QTl9FbnVtZXJhdGUoTlBQLCBOUE9iamVjdCogbywgTlBJZGVu
dGlmaWVyKiogaWRlbnRpZmllciwgdWludDMyX3QqIGNvdW50CiAgICAgICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4
ZWMpOwogCi0gICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVz
KG9iai0+aW1wLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2Jq
LT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRF
bnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgY2FsbCBOUE5fTWVtQWxsb2MgYnV0IHRoYXQncyBp
biBXZWJLaXQKICAgICAgICAgTlBJZGVudGlmaWVyKiBpZGVudGlmaWVycyA9IHN0YXRpY19jYXN0
PE5QSWRlbnRpZmllcio+KG1hbGxvYyhzaXplb2YoTlBJZGVudGlmaWVyKSAqIHNpemUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCAwMjIyMTkwNWM0MGU2ZWRm
ZWQ1Nzk5OWViMjM1ZjU4OTFhN2EyZTA4Li5jNzEzZmZhNGUyMzI5M2M2NmNjNjVjYjI5OTNkYTNh
OTJlZWRhODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC03
NSw3ICs3NSw3IEBAIHZvaWQgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIGkpKTsKIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCk7CiAKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpp
bmRleCBjYWRlOWUxZTlmZGY3YjZmNjQxMDg1ZGI0NzAzYWI4NDMzODUzYTZkLi45ZDI4Yzg4OWQx
M2U1ZTljYzI5MzhiOTZiOTk1MWFkMDI1YTRkNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCkBAIC0xMjMxLDcgKzEyMzEsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6ZW51bWVyYXRlKHVpbnQzMl90IG9iamVjdElELCBkYXRhX3QmIHJlc3VsdERhdAogICAg
IEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3Bl
cnR5TmFtZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5h
bWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
Kj4gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwCmluZGV4IDFjZWQyOTNlYjhjY2M3N2QzNzA5YjliZDM5ODA4Y2MzOTgxMjcz
NzcuLjgxZmVkNTE5MGQ2MzhkYTUzYzY4NzA5MDEwMjE3M2MyNGU2YTM0YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5jcHAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAg
ICAgICAgICAgY29uc3QgY2hhciogc3RyaW5nID0gaWRlbnRpZmllclJlcC0+c3RyaW5nKCk7CiAg
ICAgICAgICAgICBpbnQgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhX
aXRoTGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5ndGgpLmltcGwoKSk7CisgICAgICAgICAgICBp
ZGVudGlmaWVyID0gSWRlbnRpZmllcihleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZh
bGxiYWNrKHN0cmluZywgbGVuZ3RoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmllclJlcC0+bnVtYmVyKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXggMGQxNjY3NGU1YzE1ZjQ3MTcxODU0M2QyNWNhNGYz
MTA5YzA1MmQyMi4uOWZiOWE0M2UxYzAyYWE4ZTAyNTI3NDg0NGY3OTcyMWM0ZDM4ZTA5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgSWRlbnRpZmllciBpZGVu
dGlmaWVyRnJvbUlkZW50aWZpZXJSZXAoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyUmVwKiBp
ZAogICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IGlkZW50aWZpZXJSZXAtPnN0cmluZygpOwogICAg
IGludCBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKIAotICAgIHJldHVybiBJZGVudGlmaWVyKGV4
ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5ndGgpLmlt
cGwoKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpmcm9tVVRGOFdpdGhM
YXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkpOwogfQogCiBib29sIE5QSlNPYmplY3Q6Omhh
c01ldGhvZChOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBib29s
IE5QSlNPYmplY3Q6OmVudW1lcmF0ZShOUElkZW50aWZpZXIqKiBpZGVudGlmaWVycywgdWludDMy
X3QqIGlkZW50aWZpZXJDb3VudAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCiAgICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBtX2pzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG1fanNPYmplY3QuZ2V0KCksIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG1fanNPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVjdC5nZXQoKSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
QW5kRXhjbHVkZVN5bWJvbHMpOwogCiAgICAgTlBJZGVudGlmaWVyKiBuYW1lSWRlbnRpZmllcnMg
PSBucG5NZW1OZXdBcnJheTxOUElkZW50aWZpZXI+KHByb3BlcnR5TmFtZXMuc2l6ZSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIgYi9Tb3VyY2UvV2Vi
S2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgppbmRleCBhZTYyNWY3YzE2YzZiYWY1NDA3NDlhY2ViNDY1
ZjI3MjM3NWY5YzViLi4wNTRhYmI0NmNjYzRmZWY0YzA0NmU0NGI1ZGU2YzUzOGM4MjhjNDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgpAQCAtOTQyNCw3ICs5NDI0LDYgQEAgX19aTjNXVEY2
VmVjdG9ySU42V2ViS2l0MTZOUElkZW50aWZpZXJEYXRhRUxtMEVOU18xNUNyYXNoT25PdmVyZmxv
d0VFNnNocmlua0VtCiBfX1pON0NvcmVJUEMxMEFyZ3VtZW50czJJUmJSTjNXVEY2VmVjdG9ySU42
V2ViS2l0MTZOUElkZW50aWZpZXJEYXRhRUxtMEVOUzJfMTVDcmFzaE9uT3ZlcmZsb3dFRUVFNmRl
Y29kZUVSTlNfMTVBcmd1bWVudERlY29kZXJFUlM5XwogX19aTjdDb3JlSVBDMTlWZWN0b3JBcmd1
bWVudENvZGVySUxiMEVONldlYktpdDE2TlBJZGVudGlmaWVyRGF0YUVFNmRlY29kZUVSTlNfMTVB
cmd1bWVudERlY29kZXJFUk4zV1RGNlZlY3RvcklTMl9MbTBFTlM2XzE1Q3Jhc2hPbk92ZXJmbG93
RUVFCiBfX1pOM1dURjZWZWN0b3JJTjZXZWJLaXQxNk5QSWRlbnRpZmllckRhdGFFTG0wRU5TXzE1
Q3Jhc2hPbk92ZXJmbG93RUUxNHNocmlua0NhcGFjaXR5RW0KLV9fWk42V2ViS2l0MTBKU05QT2Jq
ZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVF
Uk5TMV8xN1Byb3BlcnR5TmFtZUFycmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk42V2Vi
S2l0TDIwTlBOX0dldEludElkZW50aWZpZXJFaQogX19aTjZXZWJLaXRMMTNOUE5fSGFzTWV0aG9k
RVA0X05QUFA4TlBPYmplY3RQdgogX19aTjZXZWJLaXQxME5QSlNPYmplY3QxMk5QX0hhc01ldGhv
ZEVQOE5QT2JqZWN0UHYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1Y2VkYWRiNGNkNGRmNTdlNDg2YWEyNTYwNzllMTA2MDBm
ZDQxODQ1Li4wYjJkYTg4MjMyNWIyNWE1NjU0NmQ4YmQ5OTg5ZjhhYjFhMWI5ZmZkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTUtMDItMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGpzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBq
cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICoganMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanM6
CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJv
bHMuanM6IEFkZGVkLgorICAgICAgICAoZm9ySW4pOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQt
dGVzdHMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qczogQWRkZWQuCisgICAgICAgICoganMvc2Ny
aXB0LXRlc3RzL3N5bWJvbC13aXRoLWpzb24uanM6IEFkZGVkLgorICAgICAgICAqIGpzL3N5bWJv
bC1kZWZpbmUtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1i
b2wtZGVmaW5lLXByb3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3N5bWJvbC1zZWFs
LWFuZC1mcmVlemUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtc2Vh
bC1hbmQtZnJlZXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3N5bWJvbC13aXRoLWpzb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zeW1ib2wtd2l0aC1qc29uLmh0bWw6
IEFkZGVkLgorCiAyMDE1LTAyLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgZGVmYXVsdCBjb2xvciBjaG9vc2VyIGltcGxl
bWVudGF0aW9uIHVzaW5nIEd0a0NvbG9yQ2hvb3NlckRpYWxvZwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CmluZGV4IDFi
NTE2OWY2NmM2MjlkNjY1YmFkNDI0MmM1OTA0M2U0NzkyY2JhN2QuLmZkMTZkMGE5YWY5ZGM4YjNi
ODdiYWQ5ZjlmNTVmMzY2MjFiNTdkYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL09iamVj
dC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9P
YmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKQEAgLTQwLDcgKzQwLDcgQEAg
UEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKGRlY29kZVVSSSkgaXMgWydsZW5ndGgnLCAn
bmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZGVjb2RlVVJJQ29tcG9uZW50
KSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhl
bmNvZGVVUkkpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0
eU5hbWVzKGVuY29kZVVSSUNvbXBvbmVudCkgaXMgWydsZW5ndGgnLCAnbmFtZSddCi1QQVNTIGdl
dFNvcnRlZE93blByb3BlcnR5TmFtZXMoT2JqZWN0KSBpcyBbJ2NyZWF0ZScsICdkZWZpbmVQcm9w
ZXJ0aWVzJywgJ2RlZmluZVByb3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3InLCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRQcm90b3R5cGVPZicsICdpc0V4dGVu
c2libGUnLCAnaXNGcm96ZW4nLCAnaXNTZWFsZWQnLCAna2V5cycsICdsZW5ndGgnLCAnbmFtZScs
ICdwcmV2ZW50RXh0ZW5zaW9ucycsICdwcm90b3R5cGUnLCAnc2VhbCddCitQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoT2JqZWN0KSBpcyBbJ2NyZWF0ZScsICdkZWZpbmVQcm9wZXJ0aWVz
JywgJ2RlZmluZVByb3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3In
LCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCAnZ2V0UHJv
dG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMn
LCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3Nl
YWwnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5wcm90b3R5cGUpIGlz
IFsnX19kZWZpbmVHZXR0ZXJfXycsICdfX2RlZmluZVNldHRlcl9fJywgJ19fbG9va3VwR2V0dGVy
X18nLCAnX19sb29rdXBTZXR0ZXJfXycsICdfX3Byb3RvX18nLCAnY29uc3RydWN0b3InLCAnaGFz
T3duUHJvcGVydHknLCAnaXNQcm90b3R5cGVPZicsICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICd0
b0xvY2FsZVN0cmluZycsICd0b1N0cmluZycsICd2YWx1ZU9mJ10KIFBBU1MgZ2V0U29ydGVkT3du
UHJvcGVydHlOYW1lcyhGdW5jdGlvbikgaXMgWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUn
XQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0aW9uLnByb3RvdHlwZSkgaXMg
WydhcHBseScsICdiaW5kJywgJ2NhbGwnLCAnY29uc3RydWN0b3InLCAnbGVuZ3RoJywgJ25hbWUn
LCAndG9TdHJpbmcnXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvb2JqZWN0LWdldC1vd24t
cHJvcGVydHktc3ltYm9scy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9vYmplY3QtZ2V0
LW93bi1wcm9wZXJ0eS1zeW1ib2xzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzQ4YmM0Zjdh
YzEzY2Y5MGU2YzkwN2IxYzJjNDg0M2QzMDMxYWRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxOCBAQAorVGhpcyB0ZXN0cyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworcHJpdmF0ZSBuYW1lcyBmb3IgcHJpdmls
ZWdlZCBjb2RlIHNob3VsZCBub3QgYmUgZXhwb3NlZC4KK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scyhnbG9iYWwpLmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCkubGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyhvYmplY3QpLmxlbmd0aCBpcyAxCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMob2JqZWN0KVswXSBpcyBzeW1ib2wKK1BBU1MgZm9ySW4ob2JqZWN0KS5sZW5ndGggaXMgMAor
UEFTUyBPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvb2Jq
ZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5odG1sIGIvTGF5b3V0VGVzdHMvanMvb2JqZWN0
LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMWYyNTlhMjM5YzEx
ZDk1MWRkYjhkMGU4Y2VkMDY5ODljM2QyODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmh0bWwKQEAgLTAsMCArMSwxMCBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL29iamVjdC1n
ZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0
eU5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9w
ZXJ0eU5hbWVzLmpzCmluZGV4IDE4MTFiMjY3OTg1ZTMzYWM5ODgyYTFjZDc4ODcyZGE4MDZlMTI0
ZjIuLmUxMGU3NzE1MGUwMjZjZWY0YjA1NzdmNWM4YTBhZTA5YTAwNGM5ZWUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5q
cworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5
TmFtZXMuanMKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICAiZW5jb2RlVVJJIjogIlsnbGVuZ3RoJywg
J25hbWUnXSIsCiAgICAgImVuY29kZVVSSUNvbXBvbmVudCI6ICJbJ2xlbmd0aCcsICduYW1lJ10i
LAogLy8gQnVpbHQtaW4gRUNNQSBvYmplY3RzCi0gICAgIk9iamVjdCI6ICJbJ2NyZWF0ZScsICdk
ZWZpbmVQcm9wZXJ0aWVzJywgJ2RlZmluZVByb3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3InLCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRQcm90b3R5cGVPZics
ICdpc0V4dGVuc2libGUnLCAnaXNGcm96ZW4nLCAnaXNTZWFsZWQnLCAna2V5cycsICdsZW5ndGgn
LCAnbmFtZScsICdwcmV2ZW50RXh0ZW5zaW9ucycsICdwcm90b3R5cGUnLCAnc2VhbCddIiwKKyAg
ICAiT2JqZWN0IjogIlsnY3JlYXRlJywgJ2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVy
dHknLCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0
eU5hbWVzJywgJ2dldE93blByb3BlcnR5U3ltYm9scycsICdnZXRQcm90b3R5cGVPZicsICdpc0V4
dGVuc2libGUnLCAnaXNGcm96ZW4nLCAnaXNTZWFsZWQnLCAna2V5cycsICdsZW5ndGgnLCAnbmFt
ZScsICdwcmV2ZW50RXh0ZW5zaW9ucycsICdwcm90b3R5cGUnLCAnc2VhbCddIiwKICAgICAiT2Jq
ZWN0LnByb3RvdHlwZSI6ICJbJ19fZGVmaW5lR2V0dGVyX18nLCAnX19kZWZpbmVTZXR0ZXJfXycs
ICdfX2xvb2t1cEdldHRlcl9fJywgJ19fbG9va3VwU2V0dGVyX18nLCAnX19wcm90b19fJywgJ2Nv
bnN0cnVjdG9yJywgJ2hhc093blByb3BlcnR5JywgJ2lzUHJvdG90eXBlT2YnLCAncHJvcGVydHlJ
c0VudW1lcmFibGUnLCAndG9Mb2NhbGVTdHJpbmcnLCAndG9TdHJpbmcnLCAndmFsdWVPZiddIiwK
ICAgICAiRnVuY3Rpb24iOiAiWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCiAgICAg
IkZ1bmN0aW9uLnByb3RvdHlwZSI6ICJbJ2FwcGx5JywgJ2JpbmQnLCAnY2FsbCcsICdjb25zdHJ1
Y3RvcicsICdsZW5ndGgnLCAnbmFtZScsICd0b1N0cmluZyddIiwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpz
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5
bWJvbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjViZGE0YWE2MWM1YzE3ODIyNzBjMzM0MGExZjA0YzkwNjk5
MWY4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmpl
Y3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2Rlc2NyaXB0
aW9uKAorIlRoaXMgdGVzdHMgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scy4iCispOworCit2
YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCkpOworCitkZWJ1ZygicHJpdmF0
ZSBuYW1lcyBmb3IgcHJpdmlsZWdlZCBjb2RlIHNob3VsZCBub3QgYmUgZXhwb3NlZC4iKTsKK3No
b3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGdsb2JhbCkubGVuZ3RoIiwgIjAi
KTsKKwordmFyIG9iamVjdCA9IHt9OwordmFyIHN5bWJvbCA9IFN5bWJvbCgiQ29jb2EiKTsKK29i
amVjdFtzeW1ib2xdID0gIkNhcHB1Y2Npbm8iOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3du
UHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJPYmplY3Qu
Z2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0iLCAic3ltYm9sIik7CisKK2Z1bmN0aW9u
IGZvckluKG9iaikgeworICAgIHZhciBhcnJheSA9IFtdOworICAgIC8vIFN5bWJvbCBzaG91bGQg
bm90IGJlIGVudW1lcmF0ZWQuCisgICAgZm9yICh2YXIga2V5IGluIG9iaikgYXJyYXkucHVzaChr
ZXkpOworICAgIHJldHVybiBhcnJheTsKK30KKworc2hvdWxkQmUoImZvckluKG9iamVjdCkubGVu
Z3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCIsICIwIik7
CisKK2RlbGV0ZSBvYmplY3Rbc3ltYm9sXTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QpLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blBy
b3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCIsICIwIik7CisKK3N1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3ltYm9s
LWRlZmluZS1wcm9wZXJ0eS5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wt
ZGVmaW5lLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwZmRmNWUzZDkwZjY4NWYyMTIyZDY2NzIy
NWU3ZDM0ZGU4NjRhZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDQyIEBACitkZXNjcmlw
dGlvbigKKyJUaGlzIHRlc3RzIE9iamVjdC5jcmVhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwg
T2JqZWN0LmRlZmluZVByb3BlcnRpZXMgd29yayB3aXRoIFN5bWJvbC4iCispOworCitkZWJ1Zygi
T2JqZWN0LmNyZWF0ZSB3aXRoIFN5bWJvbCIpOwordmFyIG9iamVjdCA9IE9iamVjdC5jcmVhdGUo
T2JqZWN0LnByb3RvdHlwZSwgeworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7CisgICAgICAgIHZh
bHVlOiA0MgorICAgIH0KK30pOworc2hvdWxkQmVUcnVlKCJvYmplY3QuaGFzT3duUHJvcGVydHko
U3ltYm9sLml0ZXJhdG9yKSIpOworc2hvdWxkQmVGYWxzZSgib2JqZWN0LnByb3BlcnR5SXNFbnVt
ZXJhYmxlKFN5bWJvbC5pdGVyYXRvcikiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5z
dHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5p
dGVyYXRvcikpIiwgJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOmZh
bHNlLCJjb25maWd1cmFibGUiOmZhbHNlfScpOworc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSIsICJTeW1ib2wuaXRlcmF0b3IiKTsKKworCitk
ZWJ1ZygiT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgd2l0aCBTeW1ib2wiKTsKK3ZhciBvYmplY3Qg
PSBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSwgeworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7
CisgICAgICAgIHZhbHVlOiA0MgorICAgIH0KK30pOworCitzaG91bGRCZVRydWUoIm9iamVjdC5o
YXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIik7CitzaG91bGRCZUZhbHNlKCJvYmplY3Qu
cHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9sLml0ZXJhdG9yKSIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
amVjdCwgU3ltYm9sLml0ZXJhdG9yKSkiLCAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjpmYWxzZSwi
ZW51bWVyYWJsZSI6ZmFsc2UsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9Jyk7CitzaG91bGRCZSgiT2Jq
ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCIsICIxIik7CitzaG91bGRC
ZSgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIiwgIlN5bWJvbC5pdGVy
YXRvciIpOworCitkZWJ1ZygiT2JqZWN0LmRlZmluZVByb3BlcnR5IHdpdGggU3ltYm9sIik7Cit2
YXIgb2JqZWN0ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCBTeW1ib2wuaXRlcmF0b3IsIHsK
KyAgICB2YWx1ZTogNDIKK30pOworCitzaG91bGRCZVRydWUoIm9iamVjdC5oYXNPd25Qcm9wZXJ0
eShTeW1ib2wuaXRlcmF0b3IpIik7CitzaG91bGRCZUZhbHNlKCJvYmplY3QucHJvcGVydHlJc0Vu
dW1lcmFibGUoU3ltYm9sLml0ZXJhdG9yKSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09O
LnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9s
Lml0ZXJhdG9yKSkiLCAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjpmYWxzZSwiZW51bWVyYWJsZSI6
ZmFsc2UsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9Jyk7CitzaG91bGRCZSgiT2JqZWN0LmdldE93blBy
b3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiT2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdIiwgIlN5bWJvbC5pdGVyYXRvciIpOworCitz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGViNGJhODI0
YTZmYWU5ZmViN2Y0NTkzNmIyNDI0YWRiOGEwZWViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanMKQEAgLTAsMCAr
MSwyMyBAQAorZGVzY3JpcHRpb24oCisiVGhpcyB0ZXN0cyBPYmplY3Quc2VhbCBhbmQgT2JqZWN0
LmZyZWV6ZSBhZmZlY3Qgb24gU3ltYm9sIHByb3BlcnRpZXMuIgorKTsKKwordmFyIG9iamVjdCA9
IHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogNDIKK307CisKK3Nob3VsZEJlVHJ1ZSgib2JqZWN0
Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3Qs
IFN5bWJvbC5pdGVyYXRvcikpIiwgJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6dHJ1ZSwiZW51bWVy
YWJsZSI6dHJ1ZSwiY29uZmlndXJhYmxlIjp0cnVlfScpOworc2hvdWxkQmUoIk9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIk9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSIsICJTeW1ib2wuaXRlcmF0b3IiKTsK
KworZGVidWcoIk9iamVjdC5zZWFsKG9iamVjdCkiKTsKK09iamVjdC5zZWFsKG9iamVjdCk7Citz
aG91bGRCZVRydWUoIm9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSIsICd7InZhbHVlIjo0Miwid3Jp
dGFibGUiOnRydWUsImVudW1lcmFibGUiOnRydWUsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9Jyk7CisK
K2RlYnVnKCJPYmplY3QuZnJlZXplKG9iamVjdCkiKTsKK09iamVjdC5mcmVlemUob2JqZWN0KTsK
K3Nob3VsZEJlVHJ1ZSgib2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikiKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpIiwgJ3sidmFsdWUiOjQyLCJ3
cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOnRydWUsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9Jyk7
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1q
c29uLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N5bWJvbC13aXRoLWpzb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmM2NWY5YTE2ZTlmYjgwM2E0Yzk1MGEwYzM3ZTBjYTVlNjNlMjI4OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zeW1ib2wtd2l0aC1q
c29uLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Rlc2NyaXB0aW9uKAorIlRoaXMgdGVzdHMgSlNPTiBj
b3JyZWN0bHkgYmVoYXZlcyB3aXRoIFN5bWJvbC4iCispOworCitkZWJ1ZygiSlNPTi5zdHJpbmdp
aWZ5IGRvZXNuJ3Qgc3RyaW5naWZ5IFN5bWJvbC4iKTsKK3Nob3VsZEJlKCJKU09OLnN0cmluZ2lm
eShTeW1ib2woJ0NvY29hJykpIiwgInVuZGVmaW5lZCIpOworCit2YXIgb2JqZWN0ID0ge307Cit2
YXIgc3ltYm9sID0gU3ltYm9sKCJDb2NvYSIpOworb2JqZWN0W3N5bWJvbF0gPSA0MjsKK29iamVj
dFsnQ2FwcHVjY2lubyddID0gNDI7CitkZWJ1ZygiSlNPTi5zdHJpbmdpaWZ5IGlnbm9yZXMgcHJv
cGVydHkgd2l0aCBTeW1ib2wuIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5n
aWZ5KG9iamVjdCkiLCAneyJDYXBwdWNjaW5vIjo0Mn0nKTsKKworZGVidWcoIlN5bWJvbHMgaW4g
cmVwbGFjZXIgYXJyYXkgYXJlIGlnbm9yZWQuIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpT
T04uc3RyaW5naWZ5KG9iamVjdCwgWyBTeW1ib2woJ0NvY29hJykgXSkiLCAie30iKTsKKworc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJv
bC1kZWZpbmUtcHJvcGVydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLWRl
ZmluZS1wcm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NiNzYxNjdhYjhlNDcyZTEw
YjJkNTRmYmQ2YmQwZTljYjY5YmExNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3N5bWJvbC1kZWZpbmUtcHJvcGVydHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1Ro
aXMgdGVzdHMgT2JqZWN0LmNyZWF0ZSwgT2JqZWN0LmRlZmluZVByb3BlcnR5LCBPYmplY3QuZGVm
aW5lUHJvcGVydGllcyB3b3JrIHdpdGggU3ltYm9sLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworT2JqZWN0LmNyZWF0ZSB3aXRoIFN5bWJvbAorUEFTUyBvYmplY3QuaGFzT3duUHJv
cGVydHkoU3ltYm9sLml0ZXJhdG9yKSBpcyB0cnVlCitQQVNTIG9iamVjdC5wcm9wZXJ0eUlzRW51
bWVyYWJsZShTeW1ib2wuaXRlcmF0b3IpIGlzIGZhbHNlCitQQVNTIEpTT04uc3RyaW5naWZ5KE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSBp
cyAie1widmFsdWVcIjo0MixcIndyaXRhYmxlXCI6ZmFsc2UsXCJlbnVtZXJhYmxlXCI6ZmFsc2Us
XCJjb25maWd1cmFibGVcIjpmYWxzZX0iCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMob2JqZWN0KS5sZW5ndGggaXMgMQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
KG9iamVjdClbMF0gaXMgU3ltYm9sLml0ZXJhdG9yCitPYmplY3QuZGVmaW5lUHJvcGVydGllcyB3
aXRoIFN5bWJvbAorUEFTUyBvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSBp
cyB0cnVlCitQQVNTIG9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZShTeW1ib2wuaXRlcmF0b3Ip
IGlzIGZhbHNlCitQQVNTIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSBpcyAie1widmFsdWVcIjo0MixcIndyaXRh
YmxlXCI6ZmFsc2UsXCJlbnVtZXJhYmxlXCI6ZmFsc2UsXCJjb25maWd1cmFibGVcIjpmYWxzZX0i
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0gaXMgU3ltYm9sLml0
ZXJhdG9yCitPYmplY3QuZGVmaW5lUHJvcGVydHkgd2l0aCBTeW1ib2wKK1BBU1Mgb2JqZWN0Lmhh
c093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikgaXMgdHJ1ZQorUEFTUyBvYmplY3QucHJvcGVy
dHlJc0VudW1lcmFibGUoU3ltYm9sLml0ZXJhdG9yKSBpcyBmYWxzZQorUEFTUyBKU09OLnN0cmlu
Z2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJh
dG9yKSkgaXMgIntcInZhbHVlXCI6NDIsXCJ3cml0YWJsZVwiOmZhbHNlLFwiZW51bWVyYWJsZVwi
OmZhbHNlLFwiY29uZmlndXJhYmxlXCI6ZmFsc2V9IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoIGlzIDEKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scyhvYmplY3QpWzBdIGlzIFN5bWJvbC5pdGVyYXRvcgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuaHRtbCBiL0xheW91dFRlc3RzL2pzL3N5bWJvbC1k
ZWZpbmUtcHJvcGVydHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Zjg0MzJhMjZiNDQ0MGM5ZWVmYmFjZmY2
ZWMzNTk0ZDVkOGI1ODBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9s
LWRlZmluZS1wcm9wZXJ0eS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N5bWJv
bC1zZWFsLWFuZC1mcmVlemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXNl
YWwtYW5kLWZyZWV6ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVjNTUzOTU2MTc2MGU3NGU1
YzRiY2IzM2E3MDkyOTUzNDZlYWVjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3N5bWJvbC1zZWFsLWFuZC1mcmVlemUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Ro
aXMgdGVzdHMgT2JqZWN0LnNlYWwgYW5kIE9iamVjdC5mcmVlemUgYWZmZWN0IG9uIFN5bWJvbCBw
cm9wZXJ0aWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBvYmplY3Qu
aGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSBpcyB0cnVlCitQQVNTIEpTT04uc3RyaW5n
aWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0
b3IpKSBpcyAie1widmFsdWVcIjo0MixcIndyaXRhYmxlXCI6dHJ1ZSxcImVudW1lcmFibGVcIjp0
cnVlLFwiY29uZmlndXJhYmxlXCI6dHJ1ZX0iCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMob2JqZWN0KS5sZW5ndGggaXMgMQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzKG9iamVjdClbMF0gaXMgU3ltYm9sLml0ZXJhdG9yCitPYmplY3Quc2VhbChvYmplY3QpCitQ
QVNTIG9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpIGlzIHRydWUKK1BBU1Mg
SlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5
bWJvbC5pdGVyYXRvcikpIGlzICJ7XCJ2YWx1ZVwiOjQyLFwid3JpdGFibGVcIjp0cnVlLFwiZW51
bWVyYWJsZVwiOnRydWUsXCJjb25maWd1cmFibGVcIjpmYWxzZX0iCitPYmplY3QuZnJlZXplKG9i
amVjdCkKK1BBU1Mgb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikgaXMgdHJ1
ZQorUEFTUyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
amVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgaXMgIntcInZhbHVlXCI6NDIsXCJ3cml0YWJsZVwiOmZh
bHNlLFwiZW51bWVyYWJsZVwiOnRydWUsXCJjb25maWd1cmFibGVcIjpmYWxzZX0iCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5odG1sIGIvTGF5b3V0VGVzdHMv
anMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOGY4ZDNlOTEzZTkz
ZDcwMDVjYWY4N2QyZWRjZTJhOGE3MDhlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N5bWJvbC1zZWFsLWFuZC1m
cmVlemUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvc3ltYm9sLXdpdGgtanNvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9zeW1i
b2wtd2l0aC1qc29uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTI2ZDc5OTdiN2VlNTY1NDYy
YTRmNWIwY2NkMGNiYzE1Nzk5NmIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
c3ltYm9sLXdpdGgtanNvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0
cyBKU09OIGNvcnJlY3RseSBiZWhhdmVzIHdpdGggU3ltYm9sLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworSlNPTi5zdHJpbmdpaWZ5IGRvZXNuJ3Qgc3RyaW5naWZ5IFN5bWJvbC4K
K1BBU1MgSlNPTi5zdHJpbmdpZnkoU3ltYm9sKCdDb2NvYScpKSBpcyB1bmRlZmluZWQKK0pTT04u
c3RyaW5naWlmeSBpZ25vcmVzIHByb3BlcnR5IHdpdGggU3ltYm9sLgorUEFTUyBKU09OLnN0cmlu
Z2lmeShvYmplY3QpIGlzICJ7XCJDYXBwdWNjaW5vXCI6NDJ9IgorU3ltYm9scyBpbiByZXBsYWNl
ciBhcnJheSBhcmUgaWdub3JlZC4KK1BBU1MgSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBbIFN5bWJv
bCgnQ29jb2EnKSBdKSBpcyAie30iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgt
anNvbi5odG1sIGIvTGF5b3V0VGVzdHMvanMvc3ltYm9sLXdpdGgtanNvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAzNjgzNTA3OTlmY2ZhNjJiMWI5ZjhlNjEzM2I5M2E3YTk0YWJjMWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9zeW1ib2wtd2l0aC1qc29uLmh0bWwKQEAgLTAsMCArMSwx
MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N5bWJv
bC13aXRoLWpzb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247333</attachid>
            <date>2015-02-25 10:23:27 -0800</date>
            <delta_ts>2015-02-28 17:58:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150226032314.patch</filename>
            <type>text/plain</type>
            <size>147692</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OTY3MDE4YmNkY2EwZWY5NTdmYzU2MDQ0ZTU1OWMwZDdkZTUyYWJlLi45ZWYzM2JlMzZkMDAxYzE1
ZDcwM2QwNDU4Y2E2MTkxYjg1OTdjYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODggQEAKKzIwMTUtMDItMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGluL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIGBTdHJpbmdJbXBsKmAgcmVw
cmVzZW50cyB3aGV0aGVyIGl0J3MgcHJpdmF0ZSBvciBub3QuCisKKyAgICAgICAgVG8gcmVwcmVz
ZW50IGl0IGluIGBTdHJpbmdJbXBsYCwgd2UgaW50cm9kdWNlIGBTdHJpbmdLaW5kYCBpbnRvIGBT
dHJpbmdJbXBsYC4gVGhlcmUncyA0IGtpbmRzCisgICAgICAgIDEpIFN0cmluZ05vcm1hbCAobm90
IHByaXZhdGUsIG5vdCBhdG9taWMsIG5vdCB1bmlxdWUpLCAyKSBTdHJpbmdBdG9taWMgKG5vdCBw
cml2YXRlLCBhdG9taWMsIG5vdCB1bmlxdWUpLAorICAgICAgICAzKSBTdHJpbmdVbmlxdWUgKG5v
dCBwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpIGFuZCA0KSBTdHJpbmdVbmlxdWVQcml2YXRl
IChwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpLgorICAgICAgICBUaGV5IGFyZSBtdXR1YWxs
eSBleGNsdXNpdmUuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEpIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzLCAyKSBJbmNsdWRlL0V4Y2x1ZGUgU3ltYm9scyBhbmQgMykgSW5jbHVkZS9FeGNsdWRl
IEpTT2JqZWN0IHByb3BlcnR5IG5hbWVzLgorICAgICAgICBJbiB0aGUgYSBsb3Qgb2YgY29kZSwg
d2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBhIGxvdCBvZiBjYWxs
ZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1lQXJyYXlgIGRvZXNu
J3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25zZXJ2YXRpdmUgYXNz
dW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAgICogQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS5vcmRlcjoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5O
YW1lcyk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAg
ICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3Bl
cnR5Q291bnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24pOgorICAgICAg
ICAqIGRmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRl
c2lyZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKToKKworICAgICAgICBUbyBicmFuY2ggb24gdGhlIHN0
cmluZyBhdG9taWNpdHkgZWZmaWNpZW50bHksIHdlIG5lZWQgdG8gY2FyZWZ1bGx5IGNob29zZSBT
dHJpbmdLaW5kIGZvciBTdHJpbmdBdG9taWMuCisgICAgICAgIFdlIHNlbGVjdCBgMGAgZm9yIFN0
cmluZ0F0b21pYy4gU28gd2UgY2FuIGNoZWNrIHRoZSBhdG9taWNpdHkgb2YgU3RyaW5nSW1wbCBi
eSBzZWVpbmcgd2hldGhlciBTdHJpbmdLaW5kIGlzIHplcm8uCisgICAgICAgIEl0IGVuYWJsZXMg
eDg2IGNvZGUgdG8gYnJhbmNoIHdpdGggYHRlc3RgIGluc3RydWN0aW9uIGVmZmljaWVudGx5Lgor
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlU3RyaW5nSWRlbnQpOgorCisgICAgICAgIEFzIG5v
dGVkIGluIGRmZyBzZWN0aW9uLCB3ZSBjYW4gY2hlY2sgdGhlIGF0b21pY2l0eSBvZiBTdHJpbmdJ
bXBsIHdpdGggdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6
CisKKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBleHBsY2l0bHkgY2hlY2sgYGlzVW5p
cXVlKClgIGluIHRoZSBjYWxsZXIgc2lkZS4gV2UgY2FuIGp1c3QgdXNlIGBJZGVudGlmaWVyOjpm
cm9tYC4KKworICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6YWRkVmFyKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9FbnVtZXJhdGlvbk1vZGUu
aDoKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFbnVtZXJhdGlvbk1vZGUpOgorICAg
ICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZEluY2x1ZGVKU09iamVj
dFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZElu
Y2x1ZGVTeW1ib2xzKToKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpjcmVhdGVUaGF0
U2tpcHNKU09iamVjdCk6CisgICAgICAgIChKU0M6OnNob3VsZEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzaG91bGRFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJv
cGVydHlOYW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Om1vZGVUaGF0U2tpcHNKU09iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgICogcnVu
dGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tKToKKworICAgICAgICBJbiB0aGUgYSBs
b3Qgb2YgcGxhY2UsIGBJZGVudGlmaWVyKFZNKi9FeGVjU3RhdGUqLCBTdHJpbmdJbXBsKilgIGNv
bnN0cnVjdG9yIGlzIHVzZWQuCisgICAgICAgIEhvd2V2ZXIsIGl0J3MgYW1iaWd1b3VzIGJlY2F1
c2UgYFN0cmluZ0ltcGwqYCBoYXMgMiBkaWZmZXJlbnQgbWVhbmluZ3MuCisgICAgICAgIDEpIG5v
cm1hbCBzdHJpbmcsIGl0IGlzIHJlcGxhY2FibGUgd2l0aCBgV1RGU3RyaW5nYCBhbmQgMikgYHVp
ZGAsIHdoaWNoIGhvbGRzIGBpc1VuaXF1ZWAgaW5mb3JtYXRpb24gdG8gcmVwcmVzZW50IFN5bWJv
bHMuCisgICAgICAgIFNvIHdlIGRyb3BwZWQgYElkZW50aWZpZXIoVk0qL0V4ZWNTdGF0ZSosIFN0
cmluZ0ltcGwqKWAgYW5kIGluc3RlYWQsIGludHJvZHVjZWQgYElkZW50aWZpZXI6OmZyb20oVk0q
L0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAuCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNl
ZCBmb3IgMikgYHVpZGAuIFNvIHVuaXF1ZW5lc3Mgb2YgYFN0cmluZ0ltcGwqYCBpcyBzYXZlZC4K
KyAgICAgICAgVG8ganVzdCBjb25zdHJ1Y3QgYElkZW50aWZpZXJgIGZyb20gc3RyaW5nIHR5cGUs
IHdlIGNhbiB1c2UgYElkZW50aWZpZXIoVk0qL0V4ZWNTdGF0ZSosIGNvbnN0IFdURlN0cmluZyYp
YCBpbnN0ZWFkLgorCisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyOjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2FsbGVlLmg6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJ1bnRp
bWVGbGFncyk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OldhbGtlcjo6d2Fsayk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OmdldENsYXNzUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JhY2UpOgorICAgICAgICAo
SlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmg6CisgICAgICAgIChKU0M6OnN0cnVjdHVyZVByb3BlcnR5
TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpnZW5lcmljUHJvcGVydHlOYW1lRW51bWVy
YXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6TWFwSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChK
U0M6Om9iamVjdENvbnN0cnVjdG9yS2V5cyk6CisgICAgICAgIChKU0M6OmRlZmluZVByb3BlcnRp
ZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9ySXNTZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok9i
amVjdENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUu
aDoKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5TmFtZS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OlByb3Bl
cnR5TmFtZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6cHVibGljTmFtZSk6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5TmFtZTo6YXNJbmRleCk6CisgICAgICAgICogcnVudGltZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlOYW1lQXJyYXk6OmFkZEtub3duVW5pcXVlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlO
YW1lcyk6CisgICAgICAgICogcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OlNldEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9TZXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldFBy
b3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVy
dHktc3ltYm9scy5qczogQWRkZWQuCisgICAgICAgIChmb3JJbik6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuanM6IEFkZGVkLgorICAgICAgICAodGVzdFN5
bWJvbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wtd2l0aC1qc29uLmpzOiBBZGRl
ZC4KKwogMjAxNS0wMi0yNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIE5lZWQgdG8gcGFzcyBSVExEX0RFRVBCSU5EIHRvIGRsb3BlbigpIHRvIGVuc3VyZSB0aGF0
IG91ciBMTFZNT3ZlcnJpZGVzIHRha2UgZWZmZWN0IG9uIExpbnV4CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVmNzZmYjViMDlh
MTZmYjc5NzM3ZTYxZGI3Y2M0ZWI5YTRjYTMzMzEuLmNhNDQ0NDhjZmYzZWE5MGZmYTY1NWRjYjk5
ZjRkOGIxYWJjZGVhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTUtMDItMjUgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU3RyaW5nS2luZCBpbnRvIGBTdHJpbmdJbXBs
YC4gVGhlcmUncyA0IGtpbmRzCisgICAgICAgIDEpIFN0cmluZ05vcm1hbCAobm90IHByaXZhdGUs
IG5vdCBhdG9taWMsIG5vdCB1bmlxdWUpLCAyKSBTdHJpbmdBdG9taWMgKG5vdCBwcml2YXRlLCBh
dG9taWMsIG5vdCB1bmlxdWUpLAorICAgICAgICAzKSBTdHJpbmdVbmlxdWUgKG5vdCBwcml2YXRl
LCBub3QgYXRvbWljLCB1bmlxdWUpIGFuZCA0KSBTdHJpbmdVbmlxdWVQcml2YXRlIChwcml2YXRl
LCBub3QgYXRvbWljLCB1bmlxdWUpLgorICAgICAgICBUaGV5IGFyZSBtdXR1YWxseSBleGNsdXNp
dmUuCisKKyAgICAgICAgU3RyaW5nVW5pcXVlUHJpdmF0ZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0
aGF0IHRoZSB0YXJnZXQgc3RyaW5nIGlzIHVzZWQgZm9yIGEgcHJpdmF0ZSAocHJpdmlsZWdlZCkg
bmFtZS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgIChX
VEY6OkF0b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJp
bmc6OmZpbmRTbG93Q2FzZSk6CisKKyAgICAgICAgV2hlbiByZWdpc3RlcmluZyBhIHN0cmluZyBp
bnRvIEF0b21pY1N0cmluZ1RhYmxlLCBpdCBzaG91bGQgbm90IGJlIGFuIHVuaXF1ZSBzdHJpbmcg
YmVjYXVzZSB1bmlxdWUgdHlwZXMgYW5kIGF0b21pYyB0eXBlIGFyZSBtdXR1YWxseSBleGNsdXNp
dmUuCisgICAgICAgIFdoZW4gYW4gdW5pcXVlIHN0cmluZyBjb21lcywgd2UgZXh0cmFjdCBhbiBv
d25lciBzdHJpbmcgZnJvbSBhbiB1bmlxdWUgc3RyaW5nIGJ5IHVzaW5nIGBTdHJpbmdJbXBsOjpl
eHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKWAuIEl0IGFsd2F5cyBzdWNjZWVkcyBiZWNhdXNl
IGFuIHVuaXF1ZSAobm9uIGVtcHR5KSBzdHJpbmcgaXMgYWx3YXlzIEJ1ZmZlclN1YnN0cmluZyBh
bmQgaGFzIGFuIG93bmVyIHN0cmluZy4KKyAgICAgICAgRW1wdHkgdW5pcXVlIChhbmQgdW5pcXVl
IHByaXZhdGUpIHN0cmluZyBkb2Vzbid0IGhhdmUgYW4gb3duZXIgc3RyaW5nLiBUaGlzIGNhc2Ug
aXMgZmlsdGVyZWQgYnkgYCFzdHJpbmcubGVuZ3RoKClgIGd1YXJkLgorCisgICAgICAgICogd3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6YWRkKToK
KyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcik6
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmlu
Z0ltcGw6OmNyZWF0ZVVuaXF1ZSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgor
ICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpj
cmVhdGVVbmlxdWVQcml2YXRlRW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFn
SXNOb3RBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjptYXNrU3RyaW5nS2luZCk6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0cmluZ0tpbmQpOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjppc1VuaXF1ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzUHJpdmF0
ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzQXRvbWljKToKKyAgICAgICAgKFdURjo6
U3RyaW5nSW1wbDo6c2V0SXNBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpleHRy
YWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFn
SXNBdG9taWMpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNVbmlx
dWUpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUpOgorCiAyMDE1LTAy
LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGNv
bmN1cnJlbnQgSklUIG9uIEdUSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ1YzEwN2MxNGRkYTcxYmM2N2FiYWQ2
YWVjYTk0MzY0MTI5ZDllOGMuLjMzOGUxMDAwNGY4NTYwYjgwNjRjNDk5YTRlN2U0YzBlYzZkMTgz
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxNS0wMi0yNSAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3RzOiBqcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xz
Lmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuaHRtbAorICAg
ICAgICAgICAgICAganMvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5odG1sCisgICAgICAgICAgICAg
ICBqcy9zeW1ib2wtd2l0aC1qc29uLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUub3JkZXI6Cisg
ICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAg
IChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNGbG9hdDY0QXJy
YXk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0Zsb2F0NjRBcnJheS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRh
cmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0
LmNwcDoKKyAgICAgICAgKF9OUE5fRW51bWVyYXRlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGlt
ZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlO
YW1lcyk6CisKIDIwMTUtMDItMjUgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0NTUyBHcmlkIExheW91dF0gVHJhY2tzIGdyb3dpbmcgYmV5b25k
IGxpbWl0cyB3aGVuIHRoZXkgc2hvdWxkIG5vdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGM2YjQ5NjI4
MDAxOTUxNTYxYzc4YWI4YzQwZTE1ZjEyMDkwYzNhMjUuLjNjZmZmNzAwNmY3MjY5YmQ0ZDJiMzY2
MTYzNWNlMGRmNGFiMGE4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
NS0wMi0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDItMjQgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxODA1OTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDUxNTRhOWFmOTJkZWIxNDQyMDgzZDY3OTNm
N2IzMGRjM2I2YmI1NC4uNGIzYjMxNjRlZTA3MmJhNjc0NDA3OTE1ODZkNWQyOTM5NzhlY2M4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTAyLTI1ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6aWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKToKKyAgICAgICAgKFdlYktp
dDo6TlBKU09iamVjdDo6ZW51bWVyYXRlKToKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5vcmRlcjoK
KwogMjAxNS0wMi0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDbGFyaWZ5IHNvbWUgcmVzaXppbmcgdGVybWlub2xvZ3kgaW4gU2Nyb2xsVmlldy9G
cmFtZVZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggOTlhMDlkZmVhMTBjMWNhMTNjMTU2Nzg3ZWIwN2FmODlj
YTQyNDYyMy4uZDRiNjgwZTFkZDFkNjBlNjY1ZTk0ZTQ4YWM2NmEzZGM3ZGRhYzlmZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmgKQEAgLTUxNiw4ICs1MTYsOCBAQAogICAgICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9
IHN0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAg
ICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5rZXkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgU3Rh
dGljVmFsdWVFbnRyeSogZW50cnkgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGVudHJ5LT5nZXRQcm9wZXJ0eSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
bW9kZSkpKQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
KGV4ZWMsIG5hbWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmdldFByb3BlcnR5ICYm
ICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkgfHwg
bW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpKQorICAgICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIG5hbWUpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTUyNyw4ICs1MjcsOCBAQAogICAg
ICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IHN0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5r
ZXkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBp
dC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMg
JiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKG1vZGUpKQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJ
ZGVudGlmaWVyKGV4ZWMsIG5hbWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIShlbnRyeS0+YXR0
cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcygpKQorICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIG5hbWUpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
aW5kZXggMjM0ZDI0ODhmZjg5MGI4YmVlNjk3ZWY1NWFhNjgwMzgwYTE4MWE0Mi4uZTExMjFjMzNh
MTkxNDFhMDYzZTg4Njg4YzNlN2U5MWMxNGUzNzI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTY5OCw3ICs2OTgsNyBAQCBKU1Byb3BlcnR5TmFtZUFy
cmF5UmVmIEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgbwogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1By
b3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5TmFtZXMgPSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5h
bWVBcnJheSh2bSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgYXJyYXkodm0pOwotICAgIGpzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKGpzT2JqZWN0LCBleGVjLCBhcnJh
eSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAganNPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7CiAKICAgICBz
aXplX3Qgc2l6ZSA9IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLm9yZGVyCmluZGV4IGJmYTcyYTkwY2U2NTU3ODJmMjg3YTNmNmRlZGI0MWNmMzQ1Nzg5
ZjMuLmNmYmUxYTNkZmNhNDJmNmEzZDcyNGYzNjMzYzRlMGU3N2M4NTM4MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKQEAgLTkzNyw3ICs5MzcsNiBAQCBf
X1pOM0pTQzVMTEludDM5ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yRVBO
U18yVk1FCiBfX1pOM0pTQzVMTEludDQ0ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3JFUE5TXzJWTUUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uMjNjcmVhdGVBbGxvY2F0
aW9uUHJvZmlsZUVQTlNfOUV4ZWNTdGF0ZUVtCiBfX1pOSzNKU0M4SlNPYmplY3QzZ2V0RVBOU185
RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRQotX19aTjNKU0M5U3RydWN0dXJlMjlnZXRQcm9w
ZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZUVSTlNfMlZNRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5T
XzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0MxN1Byb3BlcnR5TmFtZUFycmF5MTRhZGRLbm93
blVuaXF1ZUVQTjNXVEYxMFN0cmluZ0ltcGxFCiBfX1pOM0pTQzE3UHJvcGVydHlOYW1lQXJyYXlE
MkV2CiBfX1pOM0pTQzhXYXRjaGRvZzVTY29wZUQxRXYKQEAgLTEzNDksOSArMTM0OCw2IEBAIF9f
Wk4zSlNDMTFQb3N0Zml4Tm9kZTEyZW1pdEJ5dGVjb2RlRVJOU18xN0J5dGVjb2RlR2VuZXJhdG9y
RVBOU18xMFJlZ2lzdGVySURFCiBfX1pOM0pTQzExUG9zdGZpeE5vZGUxMWVtaXRSZXNvbHZlRVJO
U18xN0J5dGVjb2RlR2VuZXJhdG9yRVBOU18xMFJlZ2lzdGVySURFCiBfX1pOM0pTQzE3Qnl0ZWNv
ZGVHZW5lcmF0b3I3ZW1pdEluY0VQTlNfMTBSZWdpc3RlcklERQogX19aTjNKU0M2SlNDZWxsMTFn
ZXRDYWxsRGF0YUVQUzBfUk5TXzhDYWxsRGF0YUUKLV9fWk4zSlNDOEpTT2JqZWN0MTZnZXRQcm9w
ZXJ0eU5hbWVzRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18x
NUVudW1lcmF0aW9uTW9kZUUKLV9fWk4zSlNDOEpTT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVz
RVBTMF9QTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0
aW9uTW9kZUUKLV9fWk4zSlNDOEpTT2JqZWN0MjdnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXNF
UFMwX1BOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRp
b25Nb2RlRQogX19aTjNXVEY2VmVjdG9ySU4zSlNDMTBJZGVudGlmaWVyRUxtMjBFTlNfMTVDcmFz
aE9uT3ZlcmZsb3dFRTE1cmVzZXJ2ZUNhcGFjaXR5RW0KIF9fWk4zSlNDMTNqc093bmVkU3RyaW5n
RVBOU18yVk1FUktOM1dURjZTdHJpbmdFCiBfX1pOM0pTQzlTdHJ1Y3R1cmUxNmFsbG9jYXRlUmFy
ZURhdGFFUk5TXzJWTUUKQEAgLTE3NDEsNyArMTczNyw2IEBAIF9fWk4zSlNDTDIwZGF0ZVByb3Rv
RnVuY0dldFRpbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNKU0MxMkpTUm9wZVN0cmluZzIwcmVz
b2x2ZVJvcGVTbG93Q2FzZThFUGgKIF9fWk5LM1dURjZTdHJpbmc4Zm9sZENhc2VFdgogX19aTjNX
VEYxMFN0cmluZ0ltcGw4Zm9sZENhc2VFdgotX19aTjNKU0MxMEpTRnVuY3Rpb24yN2dldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1By
b3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0MxMHRocm93RXJy
b3JFUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzExSW50ZXJwcmV0ZXIyNGFk
ZFN0YWNrVHJhY2VJZk5lY2Vzc2FyeUVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUUKIF9fWk4z
SlNDMTFJbnRlcnByZXRlcjEzZ2V0U3RhY2tUcmFjZUVQTlNfMlZNRVJOM1dURjZWZWN0b3JJTlNf
MTBTdGFja0ZyYW1lRUxtMEVOUzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVtCkBAIC0yOTY3LDcgKzI5
NjIsNiBAQCBfX1pOM0pTQzVzaGlmdElMTlNfN0pTQXJyYXkxNFNoaWZ0Q291bnRNb2RlRTBFRUV2
UE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEVqagogX19aTjNKU0M3SlNBcnJheTI2c2hpZnRD
b3VudFdpdGhBcnJheVN0b3JhZ2VFampQTlNfMTJBcnJheVN0b3JhZ2VFCiBfX1pOM0pTQ0wxN2Fy
cmF5UHJvdG9GdW5jUG9wRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M3SlNBcnJheTNwb3BFUE5T
XzlFeGVjU3RhdGVFCi1fX1pOM0pTQzdKU0FycmF5MjdnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVO
U18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDNUxleGVySXRFMjRwYXJzZUZvdXJEaWdpdFVu
aWNvZGVIZXhFdgogX0pTT2JqZWN0R2V0UHJpdmF0ZVByb3BlcnR5CiBfX1pOSzNKU0MyMEpTQ2Fs
bGJhY2tPYmplY3REYXRhMThnZXRQcml2YXRlUHJvcGVydHlFUktOU18xMElkZW50aWZpZXJFCkBA
IC0zODI1LDcgKzM4MTksNiBAQCBfX1pOM0pTQzNERkcxNFNwZWN1bGF0aXZlSklUMThjb21waWxl
QXJpdGhOZWdhdGVFUE5TMF80Tm9kZUUKIF9fWk4zSlNDMjNNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjEybmVnYXRlRG91YmxlRU5TXzEyWDg2UmVnaXN0ZXJzMTNYTU1SZWdpc3RlcklERVMyXwogX19a
TjNKU0MyM01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOWRpdkRvdWJsZUVOU18xMlg4NlJlZ2lzdGVy
czEzWE1NUmVnaXN0ZXJJREVTMl9TMl8KIF9jdGlfb3BfaW5jCi1fX1pOM0pTQzEyU3RyaW5nT2Jq
ZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5T
XzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzE0Z2xv
YmFsRnVuY0V2YWxFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzhKU09iamVjdDE4Y3JlYXRlQXJy
YXlTdG9yYWdlRVJOU18yVk1FamoKIF9vcGVyYXRpb25Db252ZXJ0VGhpcwpAQCAtNDE0Niw3ICs0
MTM5LDYgQEAgX19aTjNKU0MxMUNvcGllZFNwYWNlMTZkb25lRmlsbGluZ0Jsb2NrRVBOU18xMUNv
cGllZEJsb2NrRVBTMl8KIF9fWk4zSlNDMTFDb3B5VmlzaXRvcjE0Y29weUZyb21TaGFyZWRFdgog
X19aTjNKU0M4SlNPYmplY3QxNmNvcHlCYWNraW5nU3RvcmVFUE5TXzZKU0NlbGxFUk5TXzExQ29w
eVZpc2l0b3JFCiBfX1pOM0pTQzE4R0NUaHJlYWRTaGFyZWREYXRhMTZkaWRGaW5pc2hDb3B5aW5n
RXYKLV9fWk4zSlNDOUFyZ3VtZW50czE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0
RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25N
b2RlRQogX19aTjNKU0M4SlNPYmplY3Q2ZnJlZXplRVJOU18yVk1FCiBfX1pOM0pTQzlTdHJ1Y3R1
cmU4aXNGcm96ZW5FUk5TXzJWTUUKIF9fWk4zSlNDOVN0cnVjdHVyZTE2ZnJlZXplVHJhbnNpdGlv
bkVSTlNfMlZNRVBTMF8KQEAgLTQyNDYsNyArNDIzOCw2IEBAIF9fWk4zSlNDMTNEYXRlUHJvdG90
eXBlMjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0
ZUVOCiBfX1pOM0pTQzI3Z2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9ySU5TXzhKU09iamVjdEVF
RWJQTlNfOUV4ZWNTdGF0ZUVQS05TXzlIYXNoVGFibGVFUFMxX05TXzEyUHJvcGVydHlOYW1lRVJO
U18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMjJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5l
MjdtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWxFUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM1dU
RjlCaXRWZWN0b3I3c2V0U2xvd0VSS1MwXwotX19aTjNKU0MxOFJlZ0V4cE1hdGNoZXNBcnJheTE5
Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1By
b3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX0pTVmFsdWVHZXRUeXBlCiBf
X1pOM0pTQzEzRXZhbENvZGVCbG9jazExcmVwbGFjZW1lbnRFdgogX19aTjNKU0MxM0V2YWxDb2Rl
QmxvY2sxNmNvbXBpbGVPcHRpbWl6ZWRFUE5TXzlFeGVjU3RhdGVFUE5TXzdKU1Njb3BlRWoKQEAg
LTQzNTIsMTUgKzQzNDMsMTEgQEAgX19aTjNKU0NMMjZkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25k
c0VQTlNfOUV4ZWNTdGF0ZUUKIF9vcGVyYXRpb25FbnN1cmVEb3VibGUKIF9fWk4zSlNDOEpTT2Jq
ZWN0MTZlbnN1cmVEb3VibGVTbG93RVJOU18yVk1FCiBfX1pOM0pTQzRZYXJyMTFJbnRlcnByZXRl
ckl0RTIwYmFja3RyYWNrUGFyZW50aGVzZXNFUk5TMF84Qnl0ZVRlcm1FUE5TMl8xOERpc2p1bmN0
aW9uQ29udGV4dEUKLV9fWk4zSlNDN0pTUHJveHkxNmdldFByb3BlcnR5TmFtZXNFUE5TXzhKU09i
amVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0
aW9uTW9kZUUKLV9fWk4zSlNDMTlKU1N5bWJvbFRhYmxlT2JqZWN0MjdnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5h
bWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDTDE3bWF0aFByb3RvRnVuY0FT
aW5FUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzNERkcxNFNwZWN1bGF0aXZlSklUMTRzcGVjdWxh
dGVPdGhlckVOUzBfNEVkZ2VFCiBfX1pOM0pTQzZQYXJzZXJJTlNfNUxleGVySXRFRUUxOHBhcnNl
V2l0aFN0YXRlbWVudElOU18xMEFTVEJ1aWxkZXJFRUVOVF85U3RhdGVtZW50RVJTNl8KIF9fWk4z
SlNDMTJTdHJpbmdPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185RXhlY1N0
YXRlRU5TXzEyUHJvcGVydHlOYW1lRQogX19aTjNKU0M5RXhlY1N0YXRlMjByZWdFeHBQcm90b3R5
cGVUYWJsZUVQUzBfCi1fX1pOM0pTQzEyUmVnRXhwT2JqZWN0MTZnZXRQcm9wZXJ0eU5hbWVzRVBO
U184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVF
bnVtZXJhdGlvbk1vZGVFCi1fX1pOM0pTQzEyUmVnRXhwT2JqZWN0MjdnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5h
bWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDOUV4ZWNTdGF0ZTlkYXRlVGFi
bGVFUFMwXwogX19aTjNKU0M5RXhlY1N0YXRlMjFhcnJheUNvbnN0cnVjdG9yVGFibGVFUFMwXwog
X19aTjNKU0NMMTlhcnJheVByb3RvRnVuY0V2ZXJ5RVBOU185RXhlY1N0YXRlRQpAQCAtNDY4Niw3
ICs0NjczLDYgQEAgX19aTjNKU0M5RXhlY1N0YXRlMjJudW1iZXJDb25zdHJ1Y3RvclRhYmxlRVBT
MF8KIF9fWk4zSlNDOUV4ZWNTdGF0ZTIycmVnRXhwQ29uc3RydWN0b3JUYWJsZUVQUzBfCiBfX1pO
M0pTQzlFeGVjU3RhdGU5bWF0aFRhYmxlRVBTMF8KIF9fWk4zSlNDOUV4ZWNTdGF0ZTlqc29uVGFi
bGVFUFMwXwotX19aTjNKU0M3SlNQcm94eTE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOEpTT2Jq
ZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRp
b25Nb2RlRQogX19aTjNKU0M5QXJndW1lbnRzMjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5T
XzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0
eURlc2NyaXB0b3JFCiBfX1pOM0pTQzlBcmd1bWVudHMxN2RlZmluZU93blByb3BlcnR5RVBOU184
SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzE4UHJvcGVydHlE
ZXNjcmlwdG9yRWIKIF9fWk4zV1RGN0hhc2hNYXBJeU4zSlNDMTZTcGFyc2VBcnJheUVudHJ5RU5T
XzdJbnRIYXNoSXlFRU5TXzI5VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHNJeUVFTlNfMTBI
YXNoVHJhaXRzSVMyX0VFRTRmaW5kRVJLeQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggNzZhN2IxMTFhOGQ4NzdhNjc5YjVjOGI4ZTg5NmUx
YTdiMWI2YjhhYy4uOGQzYjlkMjczYjQ2MmNiY2JlYTYzMGZjNjY5ZmYxNTNkNzkyYTY1NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCkBAIC0x
MzcsNyArMTM3LDcgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0CiAgICAg
ICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGluc3BlY3Rvck9iamVjdCA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3Qo
KTsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhzY3JpcHRTdGF0ZSk7
Ci0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIHNjcmlwdFN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKICAgICAgICAgICAgIEpT
VmFsdWUgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNjcmlwdFN0YXRlLCBuYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5jcHAKaW5kZXggOWZjZGFhMWUzOGRjNjU3NWJiNzkxMzk5YThlM2FhZGMwMTkxMzMyOC4uMmZj
Y2ExNzY2YWI4NjczNDRkYjViMDE4YWZhNWQ5ZDEzOTg5ZDg2MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTc1
LDcgKzc1LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxl
czo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU28KICAgICAgICAgCiAgICAgICAgIGlm
IChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQu
aW1wbCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNs
b3NlZFZhcmlhYmxlLT5pc1VuaXF1ZSgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2Vk
VmFyaWFibGUtPmlzUHJpdmF0ZSgpKTsKICAgICB9CiAgICAgYm9keS0+b3ZlcnJpZGVOYW1lKG5h
bWUpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZtX3ZtLCBzb3VyY2UsIGJvZHks
IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA5Yjg4OTZiOTY4MDE0OTEzZjQ2YjMyYzQ4MGUwNTc4
OTYzNzlkZmE0Li43YzgxMjVhMTUwZDJiZTM1ODgzNWZlODM4MjE4OTk3MWVhMTBkYTUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0zMSwx
MiArMzEsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCi0jZGVmaW5lIElOSVRJQUxJU0Vf
QlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKHZtLCAjbmFtZSksIG1fIyNuYW1lIyNQcml2
YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKEFTQ0lJTGl0ZXJhbCgiU3ltYm9s
LiIgI25hbWUpKSkpCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhuYW1lKSBjb25zdCBJ
ZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lIyNQcml2YXRlTmFt
ZTs7CisjZGVmaW5lIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKHZt
LCAjbmFtZSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVO
YW1lKFByaXZhdGVOYW1lOjpDcmVhdGVQcml2YXRlKSkpCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9OQU1FUyhuYW1lKSBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVy
IG1fIyNuYW1lIyNQcml2YXRlTmFtZTsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0lERU5USUZJ
RVJfQUNDRVNTT1IobmFtZSkgXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1B1YmxpY05h
bWUoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZTsgfSBcCiAgICAgY29uc3QgSWRlbnRpZmllciYg
bmFtZSMjUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7
IH0KIAorI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fU1lNQk9MUyhuYW1lKSBJTklUSUFMSVNF
X0JVSUxUSU5fTkFNRVMobmFtZSksIG1fIyNuYW1lIyNTeW1ib2woSWRlbnRpZmllcjo6ZnJvbShQ
cml2YXRlTmFtZShBU0NJSUxpdGVyYWwoIlN5bWJvbC4iICNuYW1lKSkpKQorI2RlZmluZSBERUNM
QVJFX0JVSUxUSU5fU1lNQk9MUyhuYW1lKSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29u
c3QgSWRlbnRpZmllciBtXyMjbmFtZSMjU3ltYm9sOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5f
U1lNQk9MX0FDQ0VTU09SKG5hbWUpIFwKKyAgICBERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9B
Q0NFU1NPUihuYW1lKSBcCisgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSMjU3ltYm9sKCkgY29u
c3QgeyByZXR1cm4gbV8jI25hbWUjI1N5bWJvbDsgfQorCiAjZGVmaW5lIElOSVRJQUxJU0VfUFJJ
VkFURV9UT19QVUJMSUNfRU5UUlkobmFtZSkgbV9wcml2YXRlVG9QdWJsaWNNYXAuYWRkKG1fIyNu
YW1lIyNQcml2YXRlTmFtZS5pbXBsKCksICZtXyMjbmFtZSk7CiAjZGVmaW5lIElOSVRJQUxJU0Vf
UFVCTElDX1RPX1BSSVZBVEVfRU5UUlkobmFtZSkgbV9wdWJsaWNUb1ByaXZhdGVNYXAuYWRkKG1f
IyNuYW1lLmltcGwoKSwgJm1fIyNuYW1lIyNQcml2YXRlTmFtZSk7CiAgICAgCkBAIC00OCwxMSAr
NTQsMTQgQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsKICAgICAgICAgOiBtX2VtcHR5SWRlbnRpZmll
cihjb21tb25JZGVudGlmaWVycy0+ZW1wdHlJZGVudGlmaWVyKQogICAgICAgICBKU0NfRk9SRUFD
SF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElTRV9CVUlMVElOX05BTUVTKQogICAgICAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJ
QUxJU0VfQlVJTFRJTl9OQU1FUykKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9CVUlMVElOX1NZTUJPTFMpCiAg
ICAgewogICAgICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElT
RV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElD
X0VOVFJZKQorICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxM
X0tOT1dOX1NZTUJPTChJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKQogICAgICAg
ICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9f
UFJJVkFURV9FTlRSWSkKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKQorICAg
ICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJP
TChJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKQogICAgIH0KIAogICAgIGNvbnN0
IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKQEAg
LTYwLDExICs2OSwxMyBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewogICAgIAogICAgIEpTQ19GT1JF
QUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NF
U1NPUikKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9O
QU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorICAgIEpTQ19DT01NT05f
UFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKERFQ0xBUkVfQlVJTFRJ
Tl9TWU1CT0xfQUNDRVNTT1IpCiAKIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBtX2VtcHR5SWRl
bnRpZmllcjsKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9C
VUlMVElOX05BTUVTKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorICAgIEpTQ19DT01NT05fUFJJVkFU
RV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKERFQ0xBUkVfQlVJTFRJTl9TWU1C
T0xTKQogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGNvbnN0IElkZW50
aWZpZXIqLCBJZGVudGlmaWVyUmVwSGFzaD4gQnVpbHRpbk5hbWVzTWFwOwogICAgIEJ1aWx0aW5O
YW1lc01hcCBtX3B1YmxpY1RvUHJpdmF0ZU1hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wcml2
YXRlVG9QdWJsaWNNYXA7CkBAIC03Myw3ICs4NCw5IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAj
dW5kZWYgREVDTEFSRV9CVUlMVElOX05BTUVTCiAjdW5kZWYgSU5JVElBTElTRV9CVUlMVElOX05B
TUVTCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IKLQorI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xTCisjdW5kZWYgSU5JVElBTElTRV9CVUlMVElOX1NZTUJP
TFMKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SCiAKIGlubGluZSBjb25z
dCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaAppbmRleCA5YTlkYjBiYzcwYjlmMTM1
ZjY1ZGQyZDc5NmRlNjUyODk2YWUwZmIxLi41NzgwZjAwYzcyODE0YTMxODUwZTFjODJhNWFkYzJl
MmViMjg4MzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaApAQCAtMTE4LDcgKzExOCw3IEBAIGNsYXNzIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlIHsKIAogICAgICAgICBzaXplX3QgY291bnQgPSAwOwogICAg
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVBcnJheSgmdm0pOwotICAgICAgICBw
cm90b3R5cGUtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSh2bSwg
cHJvcGVydHlOYW1lQXJyYXksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBw
cm90b3R5cGUtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSh2bSwg
cHJvcGVydHlOYW1lQXJyYXksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQ
cm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHByb3BlcnR5TmFtZUFycmF5
LmRhdGEoKS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gcHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZVZlY3Rvcltp
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDIxNDAyZWJlZWQxNTFhNWFmZDAyNTVmNDNlMjgzYzBi
ZTgwYWZmZjMuLmRhNDVjMWJhZTc2YjM1YTY0ZDE4NWQ3NjY4ZGQwMjdjMmYzMGVjOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6
YWRkVmFyKAogICAgIFZlY3RvcjxJZGVudGlmaWVyLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4g
dmFyaWFibGVzOwogICAgIHZhcmlhYmxlcy5yZXNlcnZlQ2FwYWNpdHkobnVtVmFyaWFibGVzKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytpKSB7Ci0gICAgICAg
IEFTU0VSVCh2YXJTdGFja1tpXS5maXJzdC5pbXBsKCktPmlzQXRvbWljKCkpOworICAgICAgICBB
U1NFUlQodmFyU3RhY2tbaV0uZmlyc3QuaW1wbCgpLT5pc0F0b21pYygpIHx8IHZhclN0YWNrW2ld
LmZpcnN0LmltcGwoKS0+aXNVbmlxdWUoKSk7CiAgICAgICAgIHZhcmlhYmxlcy5hcHBlbmQodmFy
U3RhY2tbaV0uZmlyc3QpOwogICAgIH0KICAgICBjb2RlQmxvY2stPmFkb3B0VmFyaWFibGVzKHZh
cmlhYmxlcyk7CkBAIC0yNTcxLDcgKzI1NzEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npbwog
ICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3Ap
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAg
ZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwotICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBzdWJqZWN0LmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHN1YmplY3QuZ2V0
KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgewogICAgICAgICBDYWxs
QXJndW1lbnRzIGFyZ3MoKnRoaXMsIDApOwogICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdp
c3RlcigpLCBzdWJqZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcAppbmRleCA2MGE0OTRkZGNmNGIxNTM4MWFjYWYw
YzU4MTg5NjQ2NGU3YTJlNDNiLi4xZTdkMTNkODY1MjllMDY5ZDFmODhiOTFmOTg2YTAyYzBjOTdj
Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVu
dGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRl
bnRpZmllcnMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgRGVzaXJlZElkZW50aWZpZXJzOjpy
ZWFsbHlBZGQoVk0mIHZtLCBDb21tb25EYXRhKiBjb21tb25EYXRhKQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2FkZGVkSWRlbnRpZmllcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
U3RyaW5nSW1wbCogcmVwID0gbV9hZGRlZElkZW50aWZpZXJzW2ldOwogICAgICAgICBBU1NFUlQo
cmVwLT5oYXNBdExlYXN0T25lUmVmKCkpOwotICAgICAgICBjb21tb25EYXRhLT5kZmdJZGVudGlm
aWVycy5hcHBlbmQoSWRlbnRpZmllcigmdm0sIHJlcCkpOworICAgICAgICBjb21tb25EYXRhLT5k
ZmdJZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbSgmdm0sIHJlcCkpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCA5MmU1NWNmODhiOTUxZDRkNTcxODEzYzRiMWQxN2I4ODU0M2NmYjBkLi45ZjJjZWQx
Y2ZlNTM0ZDhmZjE4YzE4ZjhlM2IyNjJhY2U3Y2Q0OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNDc0OCw5ICs0NzQ4LDkgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nSWRlbnRBbmRMb2FkU3RvcmFnZShF
ZGdlIGVkZ2UsIEdQUlJlZyBzdHJpbmcKICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNy
b0Fzc2VtYmxlcjo6WmVybywgc3RvcmFnZSkpOwogICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAg
ICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKHN0cmluZyksIGVkZ2UsIG1f
aml0LmJyYW5jaFRlc3QzMigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLAorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sCiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlLCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwKLSAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRv
bWljKCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmlu
Z0ltcGw6OmZsYWdJc05vdEF0b21pYygpKSkpOwogICAgIAogICAgIG1faW50ZXJwcmV0ZXIuZmls
dGVyKGVkZ2UsIFNwZWNTdHJpbmdJZGVudCB8IH5TcGVjU3RyaW5nKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggZjRlNjhkNmFi
YzRiOWM1OTQ2OGU1N2M0MDUzZThlMmQ0YjEyMjZhZi4uMjA2NDMyYTc1MjVmZjU2NjRlZGI0NjU4
OGJjNDJiY2IwNmE4ODg5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKQEAgLTY0MzksOSArNjQzOSw5IEBAIGNsYXNzIExvd2VyREZHVG9M
TFZNIHsKICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShzdHJpbmcpLCBl
ZGdlLm5vZGUoKSwgbV9vdXQuaXNOdWxsKHN0cmluZ0ltcGwpKTsKICAgICAgICAgc3BlY3VsYXRl
KAogICAgICAgICAgICAgQmFkVHlwZSwganNWYWx1ZVZhbHVlKHN0cmluZyksIGVkZ2Uubm9kZSgp
LAotICAgICAgICAgICAgbV9vdXQudGVzdElzWmVybzMyKAorICAgICAgICAgICAgbV9vdXQudGVz
dE5vblplcm8zMigKICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIoc3RyaW5nSW1wbCwgbV9o
ZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFncyksCi0gICAgICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9taWMoKSkpKTsKKyAgICAgICAgICAgICAgICBt
X291dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZsYWdJc05vdEF0b21pYygpKSkpOwogICAgICAg
ICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5nSWRlbnQgfCB+U3BlY1N0cmlu
Zyk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggNDYxMTY3YWU2NTQxMGY0MjZkN2U4Nzg0MjA3OGUwMjAwOGE3MTU1NS4uYjJh
NTljN2Q5ZDZjNzhiZGFhYWRlNTI4MzU0OTg2NjU3NDMyZmFiOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlU3R1YkluZm8KICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwotICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZp
ZXI6OmZyb20odm0sIHVpZCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUu
Z2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7CiB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgSWRlbnRpZmllciBpZGVudCh2
bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgdWlk
KTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShiYXNlKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIElkZW50aWZpZXIgaWRlbnQgPSB1aWQtPmlzVW5pcXVl
KCkgPyBJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKHVpZCkpIDogSWRlbnRpZmllcih2bSwg
dWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgdWlkKTsK
IAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CkBAIC0yMDYsNyArMjA2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlU3R1YkkKICAgICAKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKLSAgICBJZGVudGlmaWVy
IGlkZW50KHZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
KHZtLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UpOwogICAgIGJvb2wgcmVzdWx0
ID0gYXNPYmplY3QoYmFzZSktPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CiAg
ICAgCkBAIC0yMzAsNyArMjMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25JbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlMKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBJZGVu
dGlmaWVyIGlkZW50KHZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tKHZtLCBrZXkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFz
T2JqZWN0KGJhc2UpLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCkpKTsKIH0KIApAQCAtMjQ3LDcg
KzI0Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0g
ICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbSh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENv
bnRleHQoKSk7CiAgICAgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRl
bnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI1Nyw3ICsy
NTcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAg
IElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb20odm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKSwgZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29u
dGV4dCgpKTsKICAgICBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnB1dChleGVjLCBpZGVu
dCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQpAQCAtMjY3LDcgKzI2
Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAg
SWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbSh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRl
eHQoKSk7CiAgICAgYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSktPnB1dERp
cmVjdChleGVjLT52bSgpLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNs
b3QpOwogfQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVu
dGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBmYWxzZSwgZXhlYy0+Y29k
ZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlU3R1YgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRl
bnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0s
IHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwg
dWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgdWlkKTsK
ICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHVi
SW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQpOwogICAgIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydQogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHVpZCk7CiAgICAgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5
cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
U3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVy
IGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00
MDQsNyArNDA0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJp
Y3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAg
ICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTQyNSw3ICs0
MjUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1
aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAg
IElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb20odm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogICAgIAogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTQ0Niw3ICs0NDYs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1
aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZp
ZXI6OmZyb20odm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nh
c3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBhYjAxNTAxYjEyOTE3ZDllZTgwZWQzMTUyM2Y5MjU4
ZGM0NDJkYTJlLi5lZGZkNjcwMWRjMGYzZDU5MWNiMzc4ZDM5OThjYjdkNDJmOTA0YzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTYzLDcgKzE2Myw3
IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChiaXR3
aXNlX2Nhc3Q8aW50Kio+KCZ0ZXN0VmVjdG9yKVswXSA9PSB0ZXN0VmVjdG9yLmJlZ2luKCkpOwog
I2VuZGlmCiAKLSAgICBBU1NFUlQoU3RyaW5nSW1wbDo6c19oYXNoRmxhZzhCaXRCdWZmZXIgPT0g
MzIpOworICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9PSA4KTsK
IH0KICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQppbmRleCBkNzFhM2VmZTc2ODlkZjlkZjVlODc5ZTYzZTgyNDdhYzgwNDgzOTU3Li5hOTFlNDY3
OTA2YjVhZmZmYTQ3ZGY3Y2VlN2I1ZTUyYzZmYzIzZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNzYsNyArMTc2
LDcgQEAgY29uc3QgRnVuY3Rpb25Db2RlID0gMgogY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3Vt
ZW50Q291bnQgKyBUYWdPZmZzZXQKIAogIyBTdHJpbmcgZmxhZ3MuCi1jb25zdCBIYXNoRmxhZ3M4
Qml0QnVmZmVyID0gMzIKK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA4CiAKICMgQ29waWVk
IGZyb20gUHJvcGVydHlPZmZzZXQuaAogY29uc3QgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSAxMDAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggODg0MThmMTZh
MjAwMjZiMmE2YzAxZjNlMjY4MWQ2MGNkNWNmNzk5Ni4uOGEwNGE4NDljOTQ2MjhmZjgxOTg0YTgz
ZWY0ZmQ4MTlmMzA0OWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTU2MSw3ICs1NjEsNyBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICB7CiAgICAg
ICAgIGlmIChtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50KQogICAgICAg
ICAgICAgdXNlc0FyZ3VtZW50cygpOwotICAgICAgICBBU1NFUlQoaWRlbnQtPmltcGwoKS0+aXNB
dG9taWMoKSk7CisgICAgICAgIEFTU0VSVChpZGVudC0+aW1wbCgpLT5pc0F0b21pYygpIHx8IGlk
ZW50LT5pbXBsKCktPmlzVW5pcXVlKCkpOwogICAgICAgICBtX3Njb3BlLm1fdmFyRGVjbGFyYXRp
b25zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqaWRlbnQsIGF0dHJzKSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZjRjNGJjNWQ0ZTNmNzJmNjA1
MTJiZmM2MDcwMTU2ZDMxNmZhYWJhYy4uOGMxZThiNWE3ZWQ0ZmIyZjA0NTI5ZWMwYTJjMTJmYjYy
YTg3OTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjg2
LDEwICsyODYsMTAgQEAKICAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOwogICAg
ICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKLSAgICAgICAgICAgIGlm
IChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdl
dCgpKSkpCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRlbnRp
Zmllcjo6ZnJvbShtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFy
YW1ldGVyKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIGlm
IChzY29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcjo6ZnJvbShtX3ZtLCB2YXJp
YWJsZS5nZXQoKSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBp
ZiAodmFyaWFibGUgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKQEAg
LTUxOCw3ICs1MTgsNyBAQAogICAgIEFTU0VSVCghbmFtZS5pc0VtcHR5KCkpOwogICAgIEFTU0VS
VCghbmFtZS5pc051bGwoKSk7CiAgICAgCi0gICAgQVNTRVJUKG5hbWUuaW1wbCgpLT5pc0F0b21p
YygpKTsKKyAgICBBU1NFUlQobmFtZS5pbXBsKCktPmlzQXRvbWljKCkgfHwgbmFtZS5pbXBsKCkt
PmlzVW5pcXVlKCkpOwogICAgIGlmIChkZXB0aCkgewogICAgICAgICBpZiAoa2luZCA9PSBEZWNv
bnN0cnVjdFRvVmFyaWFibGVzKQogICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNs
YXJlVmFyaWFibGUoJm5hbWUpLCAiQ2Fubm90IGRlY29uc3RydWN0IHRvIGEgdmFyaWFibGUgbmFt
ZWQgJyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOTg1NDhkMmE0MWQ4NmI3N2U1ZDU3
YmY0N2ZjY2Y5NjBmODJmYThiOS4uZmQ5MDNlNTRkMTgwZmRiY2MyYmM4NWJjMzQ4NzJhMzUyZjhi
YjM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBA
IC0xODAsMTAgKzE4MCwxMCBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogCiAgICAgaWYgKEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSkgeworICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKSB7CiAgICAg
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIHRoaXNPYmplY3Qt
PkpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0
ZU5hbWUsIGFyZ3VtZW50c0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgICAgICB0aGlz
T2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNUSU9OKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRv
clN5bWJvbCwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAgICAgIGlm
IChKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xOTgsNyAr
MTk4LDcgQEAgdm9pZCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAg
ICB9Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAg
ICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSk7CiAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBkNzljYzUyZTA5MmJjNmU5MGI0MWJiZTc5OThj
MmFiNzA3YWEzZDJjLi5jNjkwNGZhNTA1YWI2YTU2Y2RmMzE1MDE3OGViNGM1NDI3NWZlYjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgQXJndW1lbnRz
SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlw
ZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBhcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5k
ZXggYzg4MDBlM2NkY2E2MjUyZWFiOThmZDAyMTE4NjFlMWQwZGJlYzExMi4uYmQzNTU1YzQ0MjA5
YmQ3NWExMzhmNWYyMzhjYjk2NzVjNmQyNmMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgdm9pZCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5m
bygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwg
YXJyYXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcnJheUl0ZXJh
dG9yUHJvdG90eXBlSXRlcmF0ZSwgRG9udEVudW0sIDApOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5SXRlcmF0b3JQcm90b3R5cGVJdGVyYXRlKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCmluZGV4IDNmZDAzNGExYzMyODQ2MWE0NjVjZTY2MmMwOThkMjNkZTFiNDg3NGQuLjA1
YzQ2MTE1ODExODgzMGU4MDFmMzgwNmIzY2U2ZmY1YTJlZDIwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzOCw3ICsxMzgs
NyBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90
eXBlKHRoaXMpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JQcml2YXRlTmFtZSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKKyAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBh
cnJheVByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwogfQogCiBib29sIEFycmF5UHJvdG90
eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC03MzUs
NyArNzM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Nv
cnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIAogICAgIFByb3BlcnR5TmFtZUFycmF5IG5hbWVBcnJheShleGVjKTsK
LSAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0
aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAg
IHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNP
YmosIGV4ZWMsIG5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmlu
ZGV4IDU2ZGYzNDUwMjg3ZmY5OTlhMzhmY2Y0Y2I3MTUwZTg2MWE1NjQzZTguLjliNjc0NmQ2Nzhj
ODljOWM1NWUyMGE2NDk0NjkwYjVhNGE1MmFkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2bSwgI25hbWUp
CiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQodm0sICNu
YW1lKQogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZh
dGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQorI2RlZmluZSBJTklU
SUFMSVpFX1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMj
U3ltYm9sKCkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0p
CiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC00MSw2ICs0Miw3IEBACiAgICAgSlNDX0NPTU1P
Tl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlf
TkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9O
QU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQorICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVO
VElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfU1lNQk9MKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAppbmRleCBmMTExNzczZjEwNTU3NDk4MWU5Njg3N2M0NzkzZTRlOTVhZGI1ODU4Li5kYWU5MTAx
ZGYwOWVkZTYyODU4YWZkY2Q4ZGRiZWRhNTczMWRjNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIzNCw3ICsyMzQsNiBA
QAogICAgIG1hY3JvKHVuc2NvcGFibGUpCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAotICAgIEpTQ19DT01NT05fUFJJ
VkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKG1hY3JvKSBcCiAgICAgbWFj
cm8oaXRlcmF0b3JOZXh0KSBcCiAgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHJlamVj
dCkgXApAQCAtMjg5LDcgKzI4OCwxMSBAQAogI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJF
X1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1l
IyNQcml2YXRlTmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlf
TkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BF
UlRZX05BTUVfR0xPQkFMCi0gICAgICAgIAorCisjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmll
ciBuYW1lIyNTeW1ib2w7CisgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1dFTExfS05PV05fU1lNQk9MKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxM
X0tOT1dOX1NZTUJPTF9HTE9CQUwpCisjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTAorCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICAgICAgSWRlbnRp
ZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaAppbmRleCA0
ZGJhZjdiNDE3ZGM3MDhmYmM2YzcyNTA5ZjE5ZjU0NGYwMWI5NmJkLi4yNTZlZTNmY2Q3N2JhZjAy
OWY5N2ViNDQ4MzllYjU3NGFmNWIxNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaApAQCAtMjgsNjMgKzI4LDUyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1lbnVtIEVudW1lcmF0aW9uTW9kZSB7Ci0gICAgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcywKLSAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0LAot
ICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMsCi0gICAgSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllc0FuZFNraXBKU09iamVjdAotfTsKK2NsYXNzIEVudW1lcmF0aW9uTW9kZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMgPSAxdSA8PCAwOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdTa2lwSlNPYmpl
Y3QgPSAxdSA8PCAxOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdJbmNsdWRlU3lt
Ym9scyA9IDF1IDw8IDI7CisKKyAgICBlbnVtIEVudW1lcmF0aW9uTW9kZVJlcHJlc2VudGF0aW9u
VGFnIDogdW5zaWduZWQgeworICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhj
bHVkZVN5bWJvbHMgPSAwLAorICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5j
bHVkZVN5bWJvbHMgPSBzX2ZsYWdJbmNsdWRlU3ltYm9scywKKyAgICAgICAgSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzID0gc19mbGFnSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcywKKyAgICAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1i
b2xzID0gc19mbGFnSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyB8IHNfZmxhZ0luY2x1ZGVTeW1i
b2xzLAorICAgIH07CisKKyAgICBpbmxpbmUgRW51bWVyYXRpb25Nb2RlKEVudW1lcmF0aW9uTW9k
ZVJlcHJlc2VudGF0aW9uVGFnIHRhZykKKyAgICAgICAgOiBtX2ZsYWdzKHRhZykKKyAgICB7Cisg
ICAgfQogCi1pbmxpbmUgYm9vbCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKEVudW1l
cmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNB
bmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpbmxpbmUgYm9vbCBzaG91bGRJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZsYWdzICYgc19mbGFn
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllczsKICAgICB9Ci19CiAKLWlubGluZSBib29sIHNob3Vs
ZEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMoRW51bWVyYXRpb25Nb2RlIG1vZGUpCi17Ci0gICAg
c3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAg
IGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlu
bGluZSBib29sIHNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICEobV9mbGFncyAmIHNfZmxhZ1NraXBKU09iamVjdCk7CiAgICAg
fQotfQogCi1pbmxpbmUgYm9vbCBzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXM6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllc0FuZFNraXBKU09iamVjdDoKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNB
bmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbmxpbmUgYm9vbCBz
aG91bGRJbmNsdWRlU3ltYm9scygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mbGFn
cyAmIHNfZmxhZ0luY2x1ZGVTeW1ib2xzOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19CiAKLWlubGluZSBFbnVtZXJhdGlvbk1vZGUgbW9kZVRo
YXRTa2lwc0pTT2JqZWN0KEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9k
ZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICAgICAgcmV0dXJu
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q7Ci0gICAgY2FzZSBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllc0FuZFNraXBKU09iamVjdDsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5k
U2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gbW9kZTsKKyAgICBzdGF0aWMgaW5saW5lIEVu
dW1lcmF0aW9uTW9kZSBjcmVhdGVUaGF0U2tpcHNKU09iamVjdChFbnVtZXJhdGlvbk1vZGUgbW9k
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBFbnVtZXJhdGlvbk1vZGUobW9kZS5tX2ZsYWdzIHwg
c19mbGFnU2tpcEpTT2JqZWN0KTsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIG1vZGU7Ci19CisKK3ByaXZhdGU6CisgICAgaW5saW5lIGV4cGxpY2l0IEVudW1l
cmF0aW9uTW9kZSh1bnNpZ25lZCBmbGFncykKKyAgICAgICAgOiBtX2ZsYWdzKGZsYWdzKQorICAg
IHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2ZsYWdzOworfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKaW5kZXggMTA1YWFlZjdmMDlhYWUxNTJiODVmMzIwOGIxNGJiZjkwYTFmNWFjMy4u
MjIyMWNmYWQ4MzFiYmRlYWM2YzE4MWQxNjIwZTdjMzBlOGY1ZTcwYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTgyLDcg
KzgyLDcgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICAKLSAgICBp
ZiAoaWRlbnQuaW1wbCgpLT5pc1VuaXF1ZSgpKSB7CisgICAgaWYgKGlkZW50LmltcGwoKS0+aXNQ
cml2YXRlKCkpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmlu
ZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05h
bWUoaWRlbnQpLnN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJv
cihleGVjLCBtZXNzYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKaW5kZXggMDEzMmQwZTc1MjhlYTM2M2I4YzMxMzZlY2U1YjAwOGM1MzlhMzhl
Zi4uNzZhYjRlZjM5NzdhYmJmYjEwM2U0OGEwMGE0NzgyNzAyMzMwMWMwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtNDYsMTQgKzQ2LDIxIEBAIGNs
YXNzIElkZW50aWZpZXIgewogCiAgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqLCBBdG9taWNTdHJp
bmdJbXBsKik7CiAgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcm
KTsKLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcmVwKSA6IG1f
c3RyaW5nKGFkZChleGVjLCByZXApKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWlj
KCkpOyB9Ci0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykg
OiBtX3N0cmluZyhhZGQoZXhlYywgcy5pbXBsKCkpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCkt
PmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNo
YXIqIHMpIDogSWRlbnRpZmllcihleGVjLCBBdG9taWNTdHJpbmcocykpIHsgfQorICAgIElkZW50
aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCisgICAgICAgIDogSWRlbnRp
ZmllcihleGVjLCBzLmltcGwoKSkKKyAgICB7CisgICAgfQorICAgIElkZW50aWZpZXIoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKQorICAgICAgICA6IElkZW50aWZpZXIoZXhlYywgQXRv
bWljU3RyaW5nKHMpKQorICAgIHsKKyAgICB9CiAKICAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29u
c3QgTENoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7
IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CiAgICAgSWRlbnRpZmllcihW
TSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwgcywg
bGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIElk
ZW50aWZpZXIoVk0qIHZtLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRkKHZtLCByZXAp
KSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmll
cihWTSogdm0sIGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQodm0sIHMuaW1wbCgpKSkg
eyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorICAgIElkZW50aWZpZXIo
Vk0qIHZtLCBjb25zdCBTdHJpbmcmIHMpCisgICAgICAgIDogSWRlbnRpZmllcih2bSwgcy5pbXBs
KCkpCisgICAgeworICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KICAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KG1fc3RyaW5nLmltcGwoKSk7IH0K
QEAgLTYzLDYgKzcwLDE2IEBAIGNsYXNzIElkZW50aWZpZXIgewogICAgIENTdHJpbmcgYXNjaWko
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5hc2NpaSgpOyB9CiAgICAgQ1N0cmluZyB1dGY4KCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcudXRmOCgpOyB9CiAKKyAgICBzdGF0aWMgSWRlbnRpZmll
ciBmcm9tKFZNKiB2bSwgU3RyaW5nSW1wbCogdWlkKQorICAgIHsKKyAgICAgICAgaWYgKCF1aWQg
fHwgIXVpZC0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCB1
aWQpOworICAgICAgICBJZGVudGlmaWVyIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fc3RyaW5n
ID0gdWlkOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBzdGF0aWMgSWRlbnRp
ZmllciBmcm9tKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqIHVpZCk7CisKICAgICBzdGF0aWMgSWRl
bnRpZmllciBmcm9tKGNvbnN0IFByaXZhdGVOYW1lJiBuYW1lKQogICAgIHsKICAgICAgICAgSWRl
bnRpZmllciByZXN1bHQ7CkBAIC0xMDUsNiArMTIyLDkgQEAgY2xhc3MgSWRlbnRpZmllciB7CiBw
cml2YXRlOgogICAgIFN0cmluZyBtX3N0cmluZzsKIAorICAgIElkZW50aWZpZXIoRXhlY1N0YXRl
KiBleGVjLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRkKGV4ZWMsIHJlcCkpIHsgQVNT
RVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KKyAgICBJZGVudGlmaWVyKFZNKiB2
bSwgU3RyaW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZCh2bSwgcmVwKSkgeyBBU1NFUlQobV9z
dHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQzMl90IHRvVUludDMyRnJvbUNo
YXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgYm9v
bCYgb2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
cklubGluZXMuaAppbmRleCA3NDcyZDg0N2Q3NWIzMDNlNjQ1NGYwNmQ2OWVkNmZjNWVlNjkyM2Fj
Li4xMjQ1YjVlMGVjZWRjMWM0MzE2MzMzOTcxM2I4Mjg1MGZhMGE5ODRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTM3LDcg
KzM3LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBB
dG9taWNTdHJpbmdJbXBsKiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVu
dEF0b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAgIGlmIChzdHJpbmcpCi0gICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRv
bWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4g
b3RoZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmctPmxl
bmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNT
dHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhl
ciB0aHJlYWQhIik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNlbmRpZgpAQCAt
NDksNyArNDksNyBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICBjaGVj
a0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGVjKTsKICAgICBpZiAoIXN0cmluZy5pc051bGwo
KSkKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IEF0b21p
Y1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0b21p
YyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcuaW1wbCgpLT5pc1VuaXF1ZSgp
IHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZy5pbXBsKCkpLCAi
VGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNlbmRpZgpAQCAtNzAsNiArNzAsMTEgQEAgaW5saW5l
IElkZW50aWZpZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJp
bmcmIHN0cmluZykKICAgICByZXR1cm4gKkF0b21pY1N0cmluZzo6YWRkV2l0aFN0cmluZ1RhYmxl
UHJvdmlkZXIoKnZtLCByKTsKIH0KIAoraW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJv
bShFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICByZXR1cm4gZnJvbSgm
ZXhlYy0+dm0oKSwgdWlkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBJ
ZGVudGlmaWVySW5saW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
Y3BwCmluZGV4IDIwZDQ5ZGI4YmEyZTJjNTg1NTA2Njc0OWVmOWRmNTE1NTQxNTc2ODEuLmMxYjA0
YTZlMjJlZDI4YTJmOTNkMjMwZDU2M2MzMDhlNjI2ZTEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBKU0FycmF5
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm8KIHsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkq
PihvYmplY3QpOwogCi0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9k
ZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKIAog
ICAgIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXIuY3BwCmluZGV4IGMxY2FkMTA1YzdlMGQ1YWQ3ZWZkMjk2YTNiZWYw
Njk2Yzk1ZjYwMDcuLjViNjZjNDRmM2U4MTg0MjUwMDhiNjBhZWQ0MjYxM2FiYzdlMThmMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCkBA
IC0xMTksNyArMTE5LDcgQEAgdm9pZCBKU0FycmF5QnVmZmVyOjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoCiB7CiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fy
cmF5QnVmZmVyKj4ob2JqZWN0KTsKICAgICAKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKCkpCiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxl
bmd0aCk7CiAgICAgCiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBjYjVjOGEyZjAzOTM0M2M1YTI0
MDUwYjA5MDgwOGRlZDI1ZTEwOTBiLi5hZGE2NzNiZTc3NDk3ZDA2NjJmY2VjYzc3YjBiODRiZGMy
NmRhNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBKU0FycmF5QnVmZmVyVmll
dzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4ob2JqZWN0KTsKICAgICAKICAg
ICAvLyBsZW5ndGgvYnl0ZU9mZnNldC9ieXRlTGVuZ3RoIGFyZSBEb250RW51bSwgYXQgbGVhc3Qg
aW4gRmlyZWZveC4KLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2Rl
KSkgeworICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewog
ICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVPZmZzZXQpOwogICAg
ICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5ndGgpOwogICAgICAg
ICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAppbmRleCBkZWQ4Yzg1ODBiMGFjMzVkNGQ5NzcxNmEw
MGFkZjA4MGRjYjZlMmVlLi5hNzU0OWI4OGI1MzQzMzFhM2NlMTI1N2QwZDU2NDk2NGIzNmFiMzk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKQEAgLTEwMSw3ICsx
MDEsNyBAQCBjbGFzcyBKU0NhbGxlZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0
YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2Rl
OjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTFiNjZmMTViMzY2MDczNTYyMzY5MjA1Nzdl
ODFhNzY4ZDFkNTViLi41YmVjODU4OTk5MTU2MmE4ZTI0ZDgwMjY3OGRiMGExMmU3NjZhYjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzY5
LDcgKzM2OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rpb246Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihv
YmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAm
JiBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKCF0aGlz
T2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIG1vZGUuc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
ICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKaW5kZXggYmUwYmRjNzg0MmY5NzMzYzc2YjA2NDQzYmRhMzY2MTQxOGVh
NTk5Ny4uZmI1OWFkZTMzYzg4N2JmN2VjNjZmNGNkYWU0M2UxYjdlYTI0YTYyMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTM4LDcgKzEzOCw3IEBA
IGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgIE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHkpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
ID0gRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5
bWJvbHMpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKIAogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaAppbmRleCA2ZDBkMjFmYTYxZjM5ODlmOWQ5YjQxOTlkYWE4ODhlOWY2NjQ0ZWNh
Li5hOTk4ZWU4ODUyMWVmNjczOWEyMjExNTY3ZDM3ODMyYWUzNDg1MDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaApAQCAtNDE1LDcgKzQxNSw3IEBACiB7CiAgICAgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
PihvYmplY3QpOwogICAgIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkK
ICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIAog
ICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBh
cnJheSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggOWI2YmVlZjhlMWNkNTlhMDQyMzBmMjlkMDE4YWVmMDdhNTg3MThl
Ni4uOTQzYmE3NzRjMzI1MzBjZjAyNTAyOGU3YjU1MjVkZGNlMjg3NWJjMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzE3LDcg
KzMxNyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIC8v
IENvbnN0cnVjdG9ycwogICAgIAotICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1
Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0
cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKICAgICBtX29iamVjdENvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25z
dHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBhcnJheUNvbnN0cnVj
dG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5
UHJvdG90eXBlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCmluZGV4IDQxYWFmOTYzZDdkNGM3MWI4YTc2OWZkMDQxMTZlMGE5YzU5OTNh
OWEuLmFmOGRlOGNiODA2ZjRiOWM0YTdjYTJhNzg3ZmM0Njc0YmRiMWYzNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzA1LDYgKzMw
NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogCiAgICAgYm9vbCBoYXNEZWJ1Z2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdn
ZXI7IH0KICAgICBib29sIGhhc1Byb2ZpbGVyKCkgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNQcm9maWxpbmcodGhpcyk7IH0KKyAgICBjb25zdCBSdW50
aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fcnVudGltZUZsYWdzOyB9
CiAKIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBKU0dsb2JhbE9i
amVjdChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiA9IDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52
aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52
aXJvbm1lbnQuY3BwCmluZGV4IDg0MDM3YTM0NWY5OWU4NTAwYmY2ZDA1NmE1MTg0OWRjMTliNTZm
YTAuLjQ1NDQxYzRlNDlkNTIyZGJjMjE5ZTE2ZTg0YzcxYTJhYzdlODRjZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5j
cHAKQEAgLTExNCwxMSArMTE0LDE1IEBAIHZvaWQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhCiAgICAgICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1f
bG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmpl
Y3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9j
a2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPnZhbHVlLmdldEF0
dHJpYnV0ZXMoKSAmIERvbnRFbnVtICYmICFzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKQorICAgICAgICAgICAgaWYgKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250
RW51bSAmJiAhbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzVmFsaWQo
aXQtPnZhbHVlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAgICAgICAg
ICAgaWYgKGl0LT5rZXkuZ2V0KCktPmlzUHJpdmF0ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVTeW1ib2xzKCkgJiYgaXQt
PmtleS5nZXQoKS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaXQtPmtleS5n
ZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIC8vIFNraXAgdGhlIEpTRW52aXJvbm1lbnRS
ZWNvcmQgaW1wbGVtZW50YXRpb24gb2YgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDk5MDc0M2E1
NThlZWE4ODc5OTNlMjI3YTZlZDE4ZTU1MGMyM2UxYTMuLjhlN2MyMTg1NGM3NGI5Mjg1ZjE1YWVm
MDIxYWMxMDc2OTg4OWFjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCkBAIC00OTUsNyArNDk1LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVy
OjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkK
ICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMgPSBzdHJpbmdpZmllci5tX2FycmF5UmVw
bGFjZXJQcm9wZXJ0eU5hbWVzLmRhdGEoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIFByb3BlcnR5TmFtZUFycmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAg
ICAgICAgICAgICAgbV9vYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMo
bV9vYmplY3QuZ2V0KCksIGV4ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRl
U3ltYm9scyk7CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gb2JqZWN0UHJvcGVy
dHlOYW1lcy5yZWxlYXNlRGF0YSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9zaXpl
ID0gbV9wcm9wZXJ0eU5hbWVzLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5zaXplKCk7CkBAIC03MTIs
NyArNzEyLDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5m
aWx0ZXJlZCkKICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5wdXNoKG9iamVjdCk7CiAgICAg
ICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgcHJvcGVy
dHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9l
eGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Cisg
ICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjoKICAgICAgICAgICAgIEZBTExU
SFJPVUdIOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4
IGRiMmE3MjJjYmE4ODVjODA4NmRlYjc5MGMyYzI4NTczNzRmNmY3OTkuLjkyYWIxNTg5OWIyMzk3
YTg0MzUxNjM2NThiMjE4ZTk5MmZkYjI4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdl
dENsYXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xh
c3MKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFi
bGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUtPmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAg
IGlmICgoIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyhtb2RlKSkgJiYgISgoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRp
bk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAgIGlmICgoIShpdGVyLT5hdHRy
aWJ1dGVzKCkgJiBEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKCkpICYmICEoKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBk
aWRSZWlmeSkpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcigm
dm0sIGl0ZXIua2V5KCkpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE1MTgsNyArMTUxOCw3IEBA
IHZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBCiAKIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKCFzaG91
bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKG1vZGUpKSB7CisgICAgaWYgKCFtb2RlLnNo
b3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSkgewogICAgICAgICAvLyBXZSBzdGls
bCBoYXZlIHRvIGdldCBub24taW5kZXhlZCBwcm9wZXJ0aWVzIGZyb20gYW55IHN1YmNsYXNzZXMg
b2YgSlNPYmplY3QgdGhhdCBoYXZlIHRoZW0uCiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0xNTcyLDcgKzE1NzIsNyBA
QCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAgICAgICAgCiAgICAgICAgICAgICBTcGFy
c2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwogICAgICAg
ICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkgfHwgIShpdC0+dmFsdWUuYXR0cmlidXRlcyAm
IERvbnRFbnVtKSkKKyAgICAgICAgICAgICAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKCkgfHwgIShpdC0+dmFsdWUuYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKICAg
ICAgICAgICAgICAgICAgICAga2V5cy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGl0LT5rZXkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTU5NCw3ICsx
NTk0LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHIKIHsKICAgICBnZXRDbGFzc1Byb3BlcnR5
TmFtZXMoZXhlYywgb2JqZWN0LT5jbGFzc0luZm8oKSwgcHJvcGVydHlOYW1lcywgbW9kZSwgb2Jq
ZWN0LT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpOwogCi0gICAgaWYgKCFzaG91bGRJbmNsdWRl
SlNPYmplY3RQcm9wZXJ0eU5hbWVzKG1vZGUpKQorICAgIGlmICghbW9kZS5zaG91bGRJbmNsdWRl
SlNPYmplY3RQcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwpAQCAtMjgwMCw3ICsyODAwLDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0
U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3AKIHZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlVGhhdFNraXBzSlNPYmplY3QobW9kZSkpOworICAgIG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpjcmVhdGVUaGF0U2tpcHNKU09iamVjdChtb2Rl
KSk7CiAKICAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuY3BwCmluZGV4IGYxYTJlNTYyZjlhYmY0MDJhYjYzOGRjMDljNmVmYzM4MGQx
YzViNGQuLjJhNTE2OTcyMTFjNmQ4YTNiZTRlNGU3ODJlMjlhZGMyYTVlYzkwNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
UHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JhY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTUHJvbWlz
ZURlZmVycmVkKiBkZWZlcnJlZCA9IGpzQ2FzdDxKU1Byb21pc2VEZWZlcnJlZCo+KGRlZmVycmVk
VmFsdWUpOwogCiAgICAgLy8gNC4gTGV0ICdpdGVyYXRvcicgYmUgdGhlIHJlc3VsdCBvZiBjYWxs
aW5nIEdldEl0ZXJhdG9yKGl0ZXJhYmxlKS4KLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24g
PSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFt
ZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4
ZWMsIGRlZmVycmVkKSk7CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0FsbChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0ganNDYXN0PEpTUHJvbWlzZURlZmVycmVk
Kj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVz
dWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRlcmFibGUpLgotICAgIEpTVmFsdWUgaXRlcmF0
b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5n
ZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1cHRS
ZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAppbmRleCBlZTE4YWJm
NmViM2YzMmNmYzAxMjkxZWIxNDQ3NDBlZjc4YTk2YTFjLi40YzEwY2RmMmZiNTY1ZTE1YzE0NWY4
MWY3ZTViMTlmNGI1MTIyNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaApAQCAtMTEzLDcgKzExMyw3IEBA
IGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIHN0cnVjdHVyZVByb3BlcnR5TmFtZUVu
dW1lcmF0b3IoRXhlY1N0YXRlKiBleGVjCiAgICAgICAgIHJldHVybiBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmNyZWF0ZSh2bSk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5h
bWVzKGV4ZWMpOwotICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVy
dHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFt
ZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogCiAgICAgSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yKiBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUo
dm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lcyk7CiAgICAgaWYgKHN0cnVjdHVyZS0+Y2FuQ2Fj
aGVTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpCkBAIC0xNDIsOSArMTQyLDkgQEAg
aW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZ2VuZXJpY1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IoRXhlY1N0YXRlKiBleGVjLAogICAgIC8vIHRoZSBuZXcgZ2VuZXJpYyBQcm9wZXJ0eU5h
bWVBcnJheSBhbmQgZmFpbGluZyBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGVtLgog
ICAgIFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlID0gc3RydWN0dXJlRW51bWVyYXRvci0+Y2Fj
aGVkU3RydWN0dXJlKHZtKTsKICAgICBpZiAoc3RydWN0dXJlID09IGNhY2hlZFN0cnVjdHVyZSAm
JiBzdHJ1Y3R1cmUtPmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5KCkgJiYgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGxlbmd0aCkgPT0gYmFzZS0+Z2V0QXJyYXlMZW5ndGgoKSkKLSAgICAgICAgYmFz
ZS0+bWV0aG9kVGFibGUodm0pLT5nZXRHZW5lcmljUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYmFzZS0+
bWV0aG9kVGFibGUodm0pLT5nZXRHZW5lcmljUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRF
eGNsdWRlU3ltYm9scyk7CiAgICAgZWxzZQotICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSkt
PmdldFByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVy
dHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7CiAgICAgCiAgICAgbm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4oZXhlYywgc3RydWN0dXJlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBiOGZi
MjI4MmFmYWU4N2VjYzQxMTAyNDVjZTliYjg3M2U5NTBmMGZmLi41NzBkYzE0MDc1ZGM1MWUwZDVh
NWQ4NDEwZmY2NWZiNzM4NTgzMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjEsMTAgKzYxLDEyIEBAIHZv
aWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2Nr
ZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09i
amVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIGlmIChpdC0+
a2V5LT5pc1ByaXZhdGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlm
ICghbW9kZS5zaG91bGRJbmNsdWRlU3ltYm9scygpICYmIGl0LT5rZXktPmlzVW5pcXVlKCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0
QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcygpKQorICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb20oZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5
cGUuY3BwCmluZGV4IGIyMjBiOTg3NTg4NWM0MmY5Y2U2MzhmMzIyMjQ3OTJjMzI3NjEwMTcuLjAz
NTY0Zjg4ODExZjNlN2ZhYmZiMGFkYWI5YmJjOWFjYTFmYmFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgdm9pZCBNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0g
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVO
YW1lLCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIE1h
cEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvck5leHRQcml2YXRlTmFtZSwg
TWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCA1NDgyMjI3
Njk0MDBiNzE4NTJhZjdkYjhiNzVlZjUwNzU0NGVkZDRmLi5mODQzNjdhZTgwYjcyNjM3NTA1ZWRj
MTU2M2Q4YjI4ODhjNThjOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcFByb3RvdHlwZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFByb3RvRnVuY0tl
eXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPnZhbHVlcywgbWFwUHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBtYXBQcm90b0Z1bmNFbnRy
aWVzLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwg
MCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5
bWJvbCwgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwogCiAgICAgR2V0dGVyU2V0
dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwog
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIG1hcFByb3RvRnVuY1Np
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDYwMmU1NzUyODllMTZjZGMxNmEwYmJhMzQ5Nzg1ZjJlMjdlZjE3ZGQu
LjIyNjNhYWZkZmQ2YWNmY2UyYjU4MjdlMzdiZmQ4MDQxOWIyZjUwZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM0
LDEyICszNCwxNCBAQAogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVk
ZSAiU3ltYm9sLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xz
KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1
Y3RvcktleXMoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUq
KTsKQEAgLTg0LDEzICs4NiwxNiBAQAogewogfQogCi12b2lkIE9iamVjdENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQor
dm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJPYmplY3QiKS5z
dHJpbmcoKSk7CiAgICAgLy8gRUNNQSAxNS4yLjMuMQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIC8vIG5vLiBvZiBhcmd1bWVu
dHMgZm9yIGNvbnN0cnVjdG9yCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsKKworICAgIGlmIChnbG9iYWxPYmplY3QtPnJ1bnRpbWVGbGFncygpLmlz
U3ltYm9sRW5hYmxlZCgpKQorICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJnZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMiLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scywgRG9u
dEVudW0sIDEpOwogfQogCiBib29sIE9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCkBAIC0yMDYsNyArMjExLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMo
RXhlY1N0YXRlKiBleGUKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBu
b3QgYW4gb2JqZWN0LiIpKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVj
KTsKLSAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhl
YywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEVu
dW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xz
KTsKICAgICBKU0FycmF5KiBuYW1lcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CiAg
ICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKQEAgLTIxNSwxMiArMjIwLDI5IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiB9CiAKIC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0
aW9uIGNhY2hlLgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVj
LT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0
eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOworICAgIFByb3Bl
cnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJndW1l
bnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09i
amVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9k
ZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKKyAgICBKU0Fy
cmF5KiBuYW1lcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgc2l6ZV90IG51
bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bVByb3BlcnRpZXM7IGkrKykgeworICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBs
ID0gcHJvcGVydGllc1tpXS5pbXBsKCk7CisgICAgICAgIGlmIChpbXBsLT5pc1VuaXF1ZSgpKQor
ICAgICAgICAgICAgbmFtZXMtPnB1c2goZXhlYywgU3ltYm9sOjpjcmVhdGUoZXhlYy0+dm0oKSwg
aW1wbCkpOworICAgIH0KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5hbWVzKTsKK30KKwor
Ly8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
aWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3Rl
ZCBrZXlzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CiAgICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBhc09iamVjdChleGVjLT5hcmd1bWVu
dCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2Jq
ZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVu
dCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVt
UHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKICAgICBKU0FycmF5KiBrZXlzID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3Bl
cnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsg
aSsrKQpAQCAtMzMxLDcgKzM1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0aWMgSlNW
YWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwg
SlNPYmplY3QqIHByb3BlcnRpZXMpCiB7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlO
YW1lcyhleGVjKTsKLSAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGllcyksIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KHBy
b3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhh
c09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
OjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIHNpemVf
dCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydHlOYW1lcy5zaXplKCk7CiAgICAgVmVjdG9yPFByb3Bl
cnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRvcnM7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFy
a0J1ZmZlcjsKQEAgLTM5OCw3ICs0MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3Ig
ZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9u
TW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBQ
cm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsK
ICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVy
dGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBk
ZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVy
bmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTQzNSw3ICs0NTcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSogZXhlYykK
IAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dGllcywgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVk
ZVN5bWJvbHMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBw
cm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAg
ICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93
blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDgzLDcgKzUwNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxl
ZChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVy
dHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsK
LSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Cisg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVt
UHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFt
ZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9
IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2Yg
Y2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGgg
UC4KQEAgLTUxMyw3ICs1MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVh
Y2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5
IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1v
ZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgUHJv
cGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAg
ICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRp
ZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVz
YyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5h
bCBtZXRob2Qgb2YgTyB3aXRoIFAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCAxMjUyNzgxYTVlODkwMDY5ZWE3ZDkwMTMwZmYz
MWVlOWU5MGQzOGQ1Li5iYjA2N2IxNTU1ZmUwOTg2MWJlYTQyZDE5MmFhOTZhZjM3YzMwMmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgKQEAgLTMzLDEwICszMywxMCBAQCBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKIAotICAgIHN0YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQorICAg
IHN0YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2Jq
ZWN0UHJvdG90eXBlKQogICAgIHsKICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KHZtLmhl
YXApKSBPYmplY3RDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBvYmplY3RQcm90b3R5cGUpOworICAgICAgICBjb25zdHJ1
Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgb2JqZWN0UHJvdG90eXBlKTsK
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KIApAQCAtNTAsNyArNTAsNyBAQCBj
bGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICB9
CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgT2JqZWN0UHJvdG90
eXBlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgT2Jq
ZWN0UHJvdG90eXBlKik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0
dXJlRmxhZ3M7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcml2YXRlTmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJp
dmF0ZU5hbWUuaAppbmRleCAyMTQxNjQ0NjY0NWM3ZmZmMDNmN2M4MmQxNzg3MzlhZDU2MDhiZjY0
Li41NzM2YTQwOTQzNGZiMGI1N2EzOWQ2ZmM4ODYwMDM1OTI3NjczNzc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKQEAgLTM1LDE5ICszNSwyNSBAQCBj
bGFzcyBQcml2YXRlTmFtZSB7CiAgICAgUHJpdmF0ZU5hbWUoKQogICAgICAgICA6IG1faW1wbChT
dHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVFbXB0eSgpKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
aW1wbC0+aXNVbmlxdWUoKSk7CiAgICAgfQotICAgIFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24pCi0gICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShk
ZXNjcmlwdGlvbi5pbXBsKCkpKQorCisgICAgZW51bSBDcmVhdGVQcml2YXRlVGFnIHsgQ3JlYXRl
UHJpdmF0ZSB9OworICAgIFByaXZhdGVOYW1lKENyZWF0ZVByaXZhdGVUYWcpCisgICAgICAgIDog
bV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZVByaXZhdGVFbXB0eSgpKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7CiAgICAgfQorCiAgICAgZXhwbGljaXQg
UHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCogdWlkKQogICAgICAgICA6IG1faW1wbCh1aWQpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAgICB9CiAKKyAgICBleHBs
aWNpdCBQcml2YXRlTmFtZShjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQorICAgICAgICA6IG1f
aW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWUoZGVzY3JpcHRpb24uaW1wbCgpKSkKKyAgICB7
CisgICAgfQorCiAgICAgQXRvbWljU3RyaW5nSW1wbCogdWlkKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KG1faW1wbC5nZXQoKSk7IH0KIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHVpZCgp
ID09IG90aGVyLnVpZCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TmFtZS5oCmluZGV4IDMwNzRjNzJlMTA3MDEzM2I5N2IwM2IxZGZmNGE0M2RlMTMyZmMwYTYu
LjA5NGJkMjVjZWY1OTdmMWFkMmY5YTQ1Y2NmZWIxMTIwMjYzMmFhMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC04MSw3ICs4MSw3IEBAIGNs
YXNzIFByb3BlcnR5TmFtZSB7CiAgICAgUHJvcGVydHlOYW1lKEF0b21pY1N0cmluZ0ltcGwqIHBy
b3BlcnR5TmFtZSkKICAgICAgICAgOiBtX2ltcGwocHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9pbXBsLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJU
KCFtX2ltcGwgfHwgbV9pbXBsLT5pc0F0b21pYygpIHx8IG1faW1wbC0+aXNVbmlxdWUoKSk7CiAg
ICAgfQogCiAgICAgUHJvcGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
QEAgLTk0LDcgKzk0LDYgQEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX2ltcGwpOwogICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKLSAgICAg
ICAgQVNTRVJUKG1faW1wbC0+aXNBdG9taWMoKSk7CiAgICAgfQogCiAgICAgQXRvbWljU3RyaW5n
SW1wbCogdWlkKCkgY29uc3QKQEAgLTEwNCwxNCArMTAzLDE0IEBAIGNsYXNzIFByb3BlcnR5TmFt
ZSB7CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiBwdWJsaWNOYW1lKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2ltcGwtPmlzVW5pcXVlKCkgPyBudWxscHRyIDogbV9pbXBsOworICAg
ICAgICByZXR1cm4gKCFtX2ltcGwgfHwgbV9pbXBsLT5pc1VuaXF1ZSgpKSA/IG51bGxwdHIgOiBt
X2ltcGw7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5kZXggPSBV
SU5UX01BWDsKIAogICAgIHVpbnQzMl90IGFzSW5kZXgoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1faW1wbCA/IHRvVUludDMyRnJvbVN0cmluZ0ltcGwobV9pbXBsKSA6IE5vdEFuSW5kZXg7Cisg
ICAgICAgIHJldHVybiAobV9pbXBsICYmICFtX2ltcGwtPmlzVW5pcXVlKCkpID8gdG9VSW50MzJG
cm9tU3RyaW5nSW1wbChtX2ltcGwpIDogTm90QW5JbmRleDsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKaW5kZXggNDQ3NWI4OThhOTc0OTc3
Y2U2OGU0NzU5ZGNhZDA2YmQ2YTA0ODM3My4uNmQ4MjQ0NjE2NzYwMzc5ZWNiMzgwZDc3MzFlMmFm
NGQzYzUxYTAxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlOYW1lQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmNwcApAQCAtMzEsOSArMzEsOSBAQAogCiB2b2lkIFByb3BlcnR5TmFt
ZUFycmF5OjphZGQoU3RyaW5nSW1wbCogaWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIWlkZW50
aWZpZXIgfHwgaWRlbnRpZmllciA9PSBTdHJpbmdJbXBsOjplbXB0eSgpIHx8IGlkZW50aWZpZXIt
PmlzQXRvbWljKCkpOworICAgIEFTU0VSVCghaWRlbnRpZmllciB8fCAoIWlkZW50aWZpZXItPmlz
UHJpdmF0ZSgpICYmIGlkZW50aWZpZXIgPT0gU3RyaW5nSW1wbDo6ZW1wdHkoKSB8fCBpZGVudGlm
aWVyLT5pc0F0b21pYygpIHx8IGlkZW50aWZpZXItPmlzVW5pcXVlKCkpKTsKICAgICBpZiAoIUFT
U0VSVF9ESVNBQkxFRCkgewotICAgICAgICB1aW50MzJfdCBpbmRleCA9IFByb3BlcnR5TmFtZShJ
ZGVudGlmaWVyKG1fdm0sIGlkZW50aWZpZXIpKS5hc0luZGV4KCk7CisgICAgICAgIHVpbnQzMl90
IGluZGV4ID0gUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb20obV92bSwgaWRlbnRpZmllcikp
LmFzSW5kZXgoKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChpbmRleCwgaW5kZXggPT0gUHJvcGVy
dHlOYW1lOjpOb3RBbkluZGV4IHx8IGluZGV4ID49IG1fcHJldmlvdXNseUVudW1lcmF0ZWRMZW5n
dGgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TmFtZUFycmF5LmgKaW5kZXggOTk0ZjA5YzkwNTQwMTFlNDFiMjMzOGY5ZDA1MDRiMmQ0OWJm
ZjM5YS4uNjgzNjc2MTQ5OTg5YzE0OGE5YmQyNjVmYzcyY2IzZmM1MGIzYzkyYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCkBAIC05
OCw3ICs5OCw3IEBAIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5IHsKICAgICB2b2lkIGFkZEtub3du
VW5pcXVlKFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX3NldC0+YWRk
KGlkZW50aWZpZXIpOwotICAgICAgICBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVu
ZChJZGVudGlmaWVyKG1fdm0sIGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9kYXRhLT5wcm9wZXJ0
eU5hbWVWZWN0b3IoKS5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbShtX3ZtLCBpZGVudGlmaWVyKSk7
CiAgICAgfQogCiAgICAgSWRlbnRpZmllciYgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSB7IHJldHVy
biBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpW2ldOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0ZDlkMGIyN2U0ZDBjOGM5MWY5
ZmViNDVhMWQ1NGU1OTVkMzNkNTE5Li41NDlhM2EyZjlhNzRjM2ExYTlkYzcwMDEwNDEyZmE0Nzlk
OTFhODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKQEAgLTEwNSwyMSArMTA1LDIxIEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByCiAKIHZv
aWQgUmVnRXhwT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGFzdEluZGV4KTsKICAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6Omdl
dFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAg
aWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUu
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKICAgICBCYXNlOjpnZXRQcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQg
UmVnRXhwT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSkKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkp
CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5k
ZXgpOwogICAgIEJhc2U6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggNTczYWNmYTVjZDc2NGIwOWVl
NzU0M2IzNDdiNDlhNTExMWU3MDUzNy4uOGVhNjEwNDhkNzQ5N2VhYzA1YzkxMTFiYzEyNjgzYjZj
ZjgyNDlkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRl
cmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dEl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNldEl0ZXJhdG9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1h
cC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0
ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3Is
IERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCBE
b250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQ
cm90b3R5cGUuY3BwCmluZGV4IGY4OGVhN2NmOTg2OGY2NjhiOGMyZTg4ODE1ZmY2NWNmMzk5Mjdi
NDkuLjQ5OTZkYTBlYTUzMTNmZDJlNjFlNzFhNmVmNDM4MzUxZmFhM2JhZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+a2V5cywgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLCBzZXRQcm90b0Z1bmNWYWx1ZXMs
IERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmVudHJpZXMsIHNldFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKLSAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIHNldFBy
b3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBzZXRQcm90b0Z1bmNLZXlzLCBEb250RW51bSwg
MCk7CiAKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCk7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZS5zdHJp
bmcoKSwgc2V0UHJvdG9GdW5jU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA1MDAxYmNjNGUxYjdlMzc5M2VkMjZlMTQyMGE4MGE2
MDQ2OGUxM2M2Li5hYjM5NDllMDdlMzNlMWExOWY3NTM1OWYyOTk4MWEyMTQ5YWYwYmQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTE1
MCw3ICsxNTAsNyBAQCB2b2lkIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgIGludCBzaXplID0gdGhp
c09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5sZW5ndGgoKTsKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IHNpemU7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpKSk7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9k
ZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKICAg
ICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAppbmRleCBjNzY5MDUxM2Q3YWE3MDNiN2ZiMjNkMTVjM2YyMDdhNWMwZWIx
ZDI3Li45ZjdjMmRlZDUwYjM5MmZmOWM1ZWRhNWViYWRkZjBjMWNjOTNlN2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTk0Nyw3ICs5NDcsMTEg
QEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBl
bmQgPSBwcm9wZXJ0eVRhYmxlKCktPmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRl
cmF0b3IgaXRlciA9IHByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikgewogICAgICAgICBBU1NFUlQoaGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSB8fCAhKGl0
ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkpOwotICAgICAgICBpZiAoIWl0ZXItPmtleS0+aXNV
bmlxdWUoKSAmJiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pIHx8IHNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAgIGlmICghKGl0ZXItPmF0dHJp
YnV0ZXMgJiBEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KCkpIHsKKyAgICAgICAgICAgIGlmIChpdGVyLT5rZXktPmlzUHJpdmF0ZSgpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVTeW1i
b2xzKCkgJiYgaXRlci0+a2V5LT5pc1VuaXF1ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaWYgKGtub3duVW5pcXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkS25vd25VbmlxdWUoaXRlci0+a2V5KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcApp
bmRleCA5OWNlNjg2Mjc0ZmQ3NzM5MjhkZGQ1OWZmMWY5Y2FmNGVlYmUyMTFlLi4xOGU3MjgyYjQ3
YjhjMTc0NWE3MmQ5ZmU5ZDU1OGQ2NjViMWNjNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBA
CiB9CiAKICNkZWZpbmUgSU5JVElBTElaRV9XRUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAotICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBT
eW1ib2w6OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUuaW1w
bCgpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0
ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjU3ltYm9sLmltcGwoKSksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJv
cGVydHktc3ltYm9scy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGU5M2Q4YjI0Nzlk
ZTkyYWQ5NjBlNzViNDJlNzkxZmQ5MjVmMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xz
LmpzCkBAIC0wLDAgKzEsMzUgQEAKKy8vIFRoaXMgdGVzdHMgT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scy4KKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpKTsKKwor
Ly8gcHJpdmF0ZSBuYW1lcyBmb3IgcHJpdmlsZWdlZCBjb2RlIHNob3VsZCBub3QgYmUgZXhwb3Nl
ZC4KK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGdsb2JhbCkubGVuZ3RoICE9PSAw
KQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKGdsb2JhbCkubGVuZ3RoOworCit2YXIgb2JqZWN0ID0ge307Cit2YXIgc3ltYm9sID0g
U3ltYm9sKCJDb2NvYSIpOworb2JqZWN0W3N5bWJvbF0gPSAiQ2FwcHVjY2lubyI7CitpZiAoT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cg
IkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCku
bGVuZ3RoOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGgg
IT09IDEpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGg7CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyhvYmplY3QpWzBdICE9PSBzeW1ib2wpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUg
IiArIFN0cmluZyhPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0pOworCitm
dW5jdGlvbiBmb3JJbihvYmopIHsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICAvLyBTeW1ib2wg
c2hvdWxkIG5vdCBiZSBlbnVtZXJhdGVkLgorICAgIGZvciAodmFyIGtleSBpbiBvYmopIGFycmF5
LnB1c2goa2V5KTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK2lmIChmb3JJbihvYmplY3QpLmxl
bmd0aCAhPT0gMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgZm9ySW4ob2JqZWN0
KS5sZW5ndGg7CitpZiAoT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhy
b3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoOworCitk
ZWxldGUgb2JqZWN0W3N5bWJvbF07CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBi
YWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1k
ZWZpbmUtcHJvcGVydHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5
bWJvbC1kZWZpbmUtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFjM2VjMDVmODA2ZTM3MjU3NzM2
MjQ4MjYxOTgxNTIzMGI2YjNkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDMz
IEBACisvLyBUaGlzIHRlc3RzIE9iamVjdC5jcmVhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwg
T2JqZWN0LmRlZmluZVByb3BlcnRpZXMgd29yayB3aXRoIFN5bWJvbC4KKworZnVuY3Rpb24gdGVz
dFN5bWJvbChvYmplY3QpIHsKKyAgICBpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wu
aXRlcmF0b3IpKQorICAgICAgICB0aHJvdyAiRXJyb3I6IG9iamVjdCBkb2Vzbid0IGhhdmUgU3lt
Ym9sLml0ZXJhdG9yIjsKKyAgICBpZiAob2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJv
bC5pdGVyYXRvcikpCisgICAgICAgIHRocm93ICJFcnJvcjogU3ltYm9sLml0ZXJhdG9yIGlzIGRl
ZmluZWQgYXMgZW51bWVyYWJsZSI7CisgICAgaWYgKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAhPT0gJ3sidmFs
dWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUi
OmZhbHNlfScpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2NyaXB0b3Ig
IiArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0
LCBTeW1ib2wuaXRlcmF0b3IpKTsKKyAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyhvYmplY3QpLmxlbmd0aCAhPT0gMSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsg
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aDsKKyAgICBpZiAoT2Jq
ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdICE9PSBTeW1ib2wuaXRlcmF0b3Ip
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdKTsKK30KKwordmFyIG9iamVjdCA9IE9iamVjdC5j
cmVhdGUoT2JqZWN0LnByb3RvdHlwZSwgeworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7CisgICAg
ICAgIHZhbHVlOiA0MgorICAgIH0KK30pOwordGVzdFN5bWJvbChvYmplY3QpOworCit2YXIgb2Jq
ZWN0ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9y
XTogeworICAgICAgICB2YWx1ZTogNDIKKyAgICB9Cit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsK
KwordmFyIG9iamVjdCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgU3ltYm9sLml0ZXJhdG9y
LCB7CisgICAgdmFsdWU6IDQyCit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5k
LWZyZWV6ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjUwN2NkOWVlNTNjNTFiMmMyMTljNzI4YzRkM2M1NWVk
ZDc3YzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vIFRoaXMg
dGVzdHMgT2JqZWN0LnNlYWwgYW5kIE9iamVjdC5mcmVlemUgYWZmZWN0IG9uIFN5bWJvbCBwcm9w
ZXJ0aWVzLgorCit2YXIgb2JqZWN0ID0geworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiA0MgorfTsK
KworaWYgKCFvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICB0aHJv
dyAiRXJyb3I6IG9iamVjdCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsKK2lmIChKU09O
LnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9s
Lml0ZXJhdG9yKSkgIT09ICd7InZhbHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUi
OnRydWUsImNvbmZpZ3VyYWJsZSI6dHJ1ZX0nKQorICAgIHRocm93ICJFcnJvcjogYmFkIHByb3Bl
cnR5IGRlc2NyaXB0b3IgIiArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKTsKK2lmIChPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoICE9PSAxKQorICAgIHRocm93ICJFcnJvcjogYmFk
IHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOwor
aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSAhPT0gU3ltYm9sLml0
ZXJhdG9yKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdKTsKKworT2JqZWN0LnNlYWwob2JqZWN0KTsK
K2lmICghb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikpCisgICAgdGhyb3cg
IkVycm9yOiBvYmplY3QgZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVyYXRvciI7CitpZiAoSlNPTi5z
dHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5p
dGVyYXRvcikpICE9PSAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0
cnVlLCJjb25maWd1cmFibGUiOmZhbHNlfScpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcHJvcGVy
dHkgZGVzY3JpcHRvciAiICsgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpOworCitPYmplY3QuZnJlZXplKG9iamVj
dCk7CitpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpKQorICAgIHRo
cm93ICJFcnJvcjogb2JqZWN0IGRvZXNuJ3QgaGF2ZSBTeW1ib2wuaXRlcmF0b3IiOworaWYgKEpT
T04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1i
b2wuaXRlcmF0b3IpKSAhPT0gJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFi
bGUiOnRydWUsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBw
cm9wZXJ0eSBkZXNjcmlwdG9yICIgKyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2MwM2Q1ZDVhMTFkNDgyYWFmNjAzOGNjMGE0N2Y5NzE5YzVkOWY5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXdpdGgt
anNvbi5qcwpAQCAtMCwwICsxLDE0IEBACisvLyBUaGlzIHRlc3RzIEpTT04gY29ycmVjdGx5IGJl
aGF2ZXMgd2l0aCBTeW1ib2wuCisKK2lmIChKU09OLnN0cmluZ2lmeShTeW1ib2woJ0NvY29hJykp
ICE9PSB1bmRlZmluZWQpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIEpTT04uc3Ry
aW5naWZ5KFN5bWJvbCgnQ29jb2EnKSk7CisKK3ZhciBvYmplY3QgPSB7fTsKK3ZhciBzeW1ib2wg
PSBTeW1ib2woIkNvY29hIik7CitvYmplY3Rbc3ltYm9sXSA9IDQyOworb2JqZWN0WydDYXBwdWNj
aW5vJ10gPSA0MjsKK2lmIChKU09OLnN0cmluZ2lmeShvYmplY3QpICE9PSAneyJDYXBwdWNjaW5v
Ijo0Mn0nKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBKU09OLnN0cmluZ2lmeShv
YmplY3QpOworCitpZiAoSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBbIFN5bWJvbCgnQ29jb2EnKSBd
KSAhPT0gInt9IikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgSlNPTi5zdHJpbmdp
Znkob2JqZWN0LCBbIFN5bWJvbCgnQ29jb2EnKSBdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcAppbmRleCAwNjI5MGMyNGU0NzNkM2U5NjViNDUwNDAwMGE2M2EyYTcyMDA4ZjVjLi45
ZjEzMGVkY2YyOGNiZjJmNWYwYTEwNTg3MTcwMTYxYjQxMjEwZmM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuY3BwCkBAIC00MDMsNiArNDAzLDkgQEAgc3RydWN0IENoYXJCdWZmZXJG
cm9tTGl0ZXJhbERhdGFUcmFuc2xhdG9yIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuICpTdHJpbmdJbXBsOjplbXB0eSgpOwogCisgICAgaWYgKHN0cmluZy5pc1Vu
aXF1ZSgpKQorICAgICAgICByZXR1cm4gYWRkKHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5V
bmlxdWUoKSk7CisKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwg
IkF0b21pY1N0cmluZyBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcg
aXMgYWxyZWFkeSBhdG9taWMuIik7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2Nr
ZXI7CkBAIC00MjEsNiArNDI0LDkgQEAgc3RydWN0IENoYXJCdWZmZXJGcm9tTGl0ZXJhbERhdGFU
cmFuc2xhdG9yIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICpT
dHJpbmdJbXBsOjplbXB0eSgpOwogCisgICAgaWYgKHN0cmluZy5pc1VuaXF1ZSgpKQorICAgICAg
ICByZXR1cm4gYWRkKHN0cmluZ1RhYmxlLCBzdHJpbmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luVW5p
cXVlKCkpOworCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJB
dG9taWNTdHJpbmcgc2hvdWxkIG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlz
IGFscmVhZHkgYXRvbWljLiIpOwogCiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2Vy
OwpAQCAtNTAzLDYgKzUwOSwxMiBAQCBBdG9taWNTdHJpbmdJbXBsKiBBdG9taWNTdHJpbmc6OmZp
bmRTbG93Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJpbmdJbXBscyBzaG91bGQgcmV0dXJuIGZy
b20gdGhlIGZhc3QgY2FzZS4iKTsKIAorICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5
KCkpOworCisgICAgaWYgKHN0cmluZy5pc1VuaXF1ZSgpKQorICAgICAgICByZXR1cm4gZmluZCgm
c3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblVuaXF1ZSgpKTsKKwogICAgIEF0b21pY1N0cmlu
Z1RhYmxlTG9ja2VyIGxvY2tlcjsKICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgYXRvbWljU3Ry
aW5nVGFibGUgPSBzdHJpbmdUYWJsZSgpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBhdG9taWNTdHJp
bmdUYWJsZS5maW5kKCZzdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXgg
YmFlOWQzNjJkMjc1MWU1YTczY2UwYjFiN2UyYTQxMWIwMTgzN2YzMy4uNjA5Y2Y3MzFkMjdiZmMw
Njc4ZDZjNjk4M2M0Y2IwOGI2YTIyOTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5o
CkBAIC0xODMsMTEgKzE4Myw5IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiBzdHJpbmcpCiAgICAgewotICAg
ICAgICBpZiAoIXN0cmluZyB8fCBzdHJpbmctPmlzQXRvbWljKCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZyB8fCAhc3RyaW5nLT5sZW5ndGgoKSB8fCBzdHJpbmct
PmlzVW5pcXVlKCkgfHwgaXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUgYXRvbWlj
IHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgaWYgKCFzdHJp
bmcpCiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBhZGRTbG93Q2FzZSgqc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIGFkZCgqc3RyaW5nKTsKICAg
ICB9CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRk
RnJvbUxpdGVyYWxEYXRhKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7
CiAjaWYgVVNFKENGKQpAQCAtMTk3LDExICsxOTUsOSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1RhYmxlUHJvdmlkZXI+CiAgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFdpdGhTdHJpbmdUYWJsZVByb3ZpZGVy
KFN0cmluZ1RhYmxlUHJvdmlkZXImIHN0cmluZ1RhYmxlUHJvdmlkZXIsIFN0cmluZ0ltcGwqIHN0
cmluZykKICAgICB7Ci0gICAgICAgIGlmICghc3RyaW5nIHx8IHN0cmluZy0+aXNBdG9taWMoKSkg
ewotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nIHx8ICFzdHJpbmctPmxl
bmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUoc3Ry
aW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwor
ICAgICAgICBpZiAoIXN0cmluZykKICAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKCpzdHJpbmdUYWJsZVByb3ZpZGVyLmF0b21p
Y1N0cmluZ1RhYmxlKCksICpzdHJpbmcpOworICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmdUYWJs
ZVByb3ZpZGVyLmF0b21pY1N0cmluZ1RhYmxlKCksICpzdHJpbmcpOwogICAgIH0KIAogI2lmICFB
U1NFUlRfRElTQUJMRUQKQEAgLTIxMyw3ICsyMDksMjUgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsK
ICAgICBBdG9taWNTdHJpbmcoQVNDSUlMaXRlcmFsKTsKIAogICAgIFN0cmluZyBtX3N0cmluZzsK
LSAgICAKKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGQoU3Ry
aW5nSW1wbCYgc3RyaW5nKQorICAgIHsKKyAgICAgICAgaWYgKHN0cmluZy5pc0F0b21pYygpKSB7
CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgaXNJ
bkF0b21pY1N0cmluZ1RhYmxlKCZzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJv
bSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShzdHJpbmcpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGQoQXRvbWljU3RyaW5nVGFibGUm
IHN0cmluZ1RhYmxlLCBTdHJpbmdJbXBsJiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoc3Ry
aW5nLmlzQXRvbWljKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmlu
Zy5sZW5ndGgoKSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUoJnN0cmluZyksICJUaGUgYXRvbWlj
IHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgICAgIHJldHVy
biBzdHJpbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZ1Rh
YmxlLCBzdHJpbmcpOworICAgIH0KKwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwmKTsKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShBdG9taWNTdHJp
bmdUYWJsZSYsIFN0cmluZ0ltcGwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5k
ZXggYzI0OWY0ZDdmZmQ1ZGFiZWUxNjQwNjRhNjIxOTI0ZGNmMzQ1N2RjOC4uMjcyZWM5YTk5ZDk4
ZTFkZDY5NjczNWJlMDY2YTRmMTk4ZjIwMWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCkBAIC0yOTIsNyArMjkyLDggQEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0lt
cGwqIHN0cmluZ0ltcGwpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBjcmVhdGVV
bmlxdWVFbXB0eSgpOwogICAgIFJlZjxTdHJpbmdJbXBsPiBzdHJpbmcgPSBjcmVhdGVTdWJzdHJp
bmdTaGFyaW5nSW1wbChyZXAsIDAsIGxlbmd0aCk7Ci0gICAgc3RyaW5nLT5tX2hhc2hBbmRGbGFn
cyA9IGhhc2hBbmRGbGFnc0ZvclVuaXF1ZShzdHJpbmctPm1faGFzaEFuZEZsYWdzKTsKKyAgICBB
U1NFUlQoIXN0cmluZy0+aXNBdG9taWMoKSk7CisgICAgc3RyaW5nLT5tX2hhc2hBbmRGbGFncyA9
IGhhc2hBbmRGbGFnc0ZvclVuaXF1ZShzdHJpbmctPm1faGFzaEFuZEZsYWdzLCBmYWxzZSk7CiAg
ICAgcmV0dXJuIHN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAyNjZi
OTdlNGM4ODY2N2JmMTQ2MGU3YjkxYmIwNTFjNGJhNTM4OTdiLi44Y2VlODUwYmNlZTY2N2Y0ODRj
NmZmZmNkNmQ3MGFmNWM5ZjFiMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMTQx
LDYgKzE0MSwyNSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgQnVmZmVyU3Vic3RyaW5n
LAogICAgIH07CiAKKyAgICAvLyBUaGUgYm90dG9tIDYgYml0cyBpbiB0aGUgaGFzaCBhcmUgZmxh
Z3MuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0NvdW50ID0gNjsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19mbGFnTWFzayA9ICgxdSA8PCBzX2ZsYWdDb3VudCkgLSAxOwor
ICAgIENPTVBJTEVfQVNTRVJUKHNfZmxhZ0NvdW50IDw9IFN0cmluZ0hhc2hlcjo6ZmxhZ0NvdW50
LCBTdHJpbmdIYXNoZXJfcmVzZXJ2ZXNfZW5vdWdoX2JpdHNfZm9yX1N0cmluZ0ltcGxfZmxhZ3Mp
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdTdHJpbmdLaW5kQ291bnQgPSA0Owor
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNVbmlxdWUg
PSAxdSA8PCAoc19mbGFnU3RyaW5nS2luZENvdW50ICsgMSk7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNfaGFzaE1hc2tTdHJpbmdLaW5kID0gKDF1IDw8IHNfZmxhZ1N0cmluZ0tpbmRDb3Vu
dCkgfCBzX2hhc2hGbGFnU3RyaW5nS2luZElzVW5pcXVlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9IDF1IDw8IDM7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0ID0gMXUgPDwgMjsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgc19oYXNoTWFza0J1ZmZlck93bmVyc2hpcCA9ICgxdSA8PCAwKSB8ICgxdSA8
PCAxKTsKKworICAgIGVudW0gU3RyaW5nS2luZCB7CisgICAgICAgIFN0cmluZ0F0b21pYyA9IDB1
IDw8IHNfZmxhZ1N0cmluZ0tpbmRDb3VudCwKKyAgICAgICAgU3RyaW5nTm9ybWFsID0gMXUgPDwg
c19mbGFnU3RyaW5nS2luZENvdW50LAorICAgICAgICBTdHJpbmdVbmlxdWUgPSAydSA8PCBzX2Zs
YWdTdHJpbmdLaW5kQ291bnQsCisgICAgICAgIFN0cmluZ1VuaXF1ZVByaXZhdGUgPSAzdSA8PCBz
X2ZsYWdTdHJpbmdLaW5kQ291bnQsCisgICAgfTsKKwogICAgIC8vIFVzZWQgdG8gY29uc3RydWN0
IHN0YXRpYyBzdHJpbmdzLCB3aGljaCBoYXZlIGFuIHNwZWNpYWwgcmVmQ291bnQgdGhhdCBjYW4g
bmV2ZXIgaGl0IHplcm8uCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBzdGF0aWMgc3RyaW5n
IHdpbGwgbmV2ZXIgYmUgZGVzdHJveWVkLCB3aGljaCBpcyBpbXBvcnRhbnQgYmVjYXVzZQogICAg
IC8vIHN0YXRpYyBzdHJpbmdzIHdpbGwgYmUgc2hhcmVkIGFjcm9zcyB0aHJlYWRzICYgcmVmLWNv
dW50ZWQgaW4gYSBub24tdGhyZWFkc2FmZSBtYW5uZXIuCkBAIC0xNTAsNyArMTY5LDcgQEAgY2xh
c3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50RmxhZ0lzU3Rh
dGljU3RyaW5nKQogICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgICwgbV9kYXRhOChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fbGVuZ3RoKSkKLSAgICAgICAgLCBtX2hhc2hB
bmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IHNfaGFzaEZsYWdJc0F0b21pYyB8IEJ1ZmZl
ck93bmVkKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwg
U3RyaW5nQXRvbWljIHwgQnVmZmVyT3duZWQpCiAgICAgewogICAgICAgICAvLyBFbnN1cmUgdGhh
dCB0aGUgaGFzaCBpcyBjb21wdXRlZCBzbyB0aGF0IEF0b21pY1N0cmluZ0hhc2ggY2FuIGNhbGwg
ZXhpc3RpbmdIYXNoKCkKICAgICAgICAgLy8gd2l0aCBpbXB1bml0eS4gVGhlIGVtcHR5IHN0cmlu
ZyBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgaXMgbmV2ZXIgZW50ZXJlZCBpbnRvCkBAIC0xNjcsNyAr
MTg2LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNv
dW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2Rh
dGE4KHRhaWxQb2ludGVyPExDaGFyPigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFz
aEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxh
Z3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3Ro
KTsKQEAgLTE4MCw3ICsxOTksNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3Jl
ZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQog
ICAgICAgICAsIG1fZGF0YTE2KHRhaWxQb2ludGVyPFVDaGFyPigpKQotICAgICAgICAsIG1faGFz
aEFuZEZsYWdzKEJ1ZmZlckludGVybmFsKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmlu
Z05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2
KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTE5Myw3ICsyMTIsNyBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAg
ICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycy5s
ZWFrUHRyKCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIg
fCBCdWZmZXJPd25lZCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1
ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fZGF0YTgpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjA2LDcgKzIyNSw3IEBA
IGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3Jl
bWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hh
cmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKKyAgICAg
ICAgLCBtX2hhc2hBbmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBA
IC0yMTgsNyArMjM3LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3Vu
dChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAg
ICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNo
RmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFn
cyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgp
OwpAQCAtMjMxLDcgKzI1MCw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVm
Q291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAg
ICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycy5sZWFrUHRyKCkpCi0gICAgICAgICwgbV9oYXNo
QW5kRmxhZ3MoQnVmZmVyT3duZWQpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9y
bWFsIHwgQnVmZmVyT3duZWQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwogICAg
ICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjQ0LDcgKzI2Myw3IEBAIGNsYXNzIFN0cmluZ0lt
cGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAg
LCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzKQotICAgICAg
ICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyU3Vic3RyaW5n
KQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5n
Tm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzOEJpdCgp
KTsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwpAQCAtMjYxLDcgKzI4MCw3IEBAIGNsYXNzIFN0
cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAg
ICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykK
LSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJTdWJzdHJpbmcpCisgICAgICAgICwgbV9o
YXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCFpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CkBAIC0yNzMs
MTQgKzI5MiwxNCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgU1RSSU5HX1NUQVRTX0FE
RF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKICAgICB9CiAKLSAgICBlbnVtIENyZWF0
ZUVtcHR5VW5pcXVlVGFnIHsgQ3JlYXRlRW1wdHlVbmlxdWUgfTsKLSAgICBTdHJpbmdJbXBsKENy
ZWF0ZUVtcHR5VW5pcXVlVGFnKQorICAgIGVudW0gQ3JlYXRlVW5pcXVlRW1wdHlUYWcgeyBDcmVh
dGVVbmlxdWVFbXB0eSB9OworICAgIFN0cmluZ0ltcGwoQ3JlYXRlVW5pcXVlRW1wdHlUYWcsIGJv
b2wgaXNQcml2YXRlKQogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkK
ICAgICAgICAgLCBtX2xlbmd0aCgwKQogICAgICAgICAvLyBXZSBleHBlY3QgbV9sZW5ndGggdG8g
YmUgaW5pdGlhbGl6ZWQgdG8gMCBhcyB3ZSB1c2UgaXQKICAgICAgICAgLy8gdG8gcmVwcmVzZW50
IGEgbnVsbCB0ZXJtaW5hdGVkIGJ1ZmZlci4KICAgICAgICAgLCBtX2RhdGE4KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9sZW5ndGgpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdz
KGhhc2hBbmRGbGFnc0ZvclVuaXF1ZShzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVy
bmFsKSkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc19o
YXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCwgaXNQcml2YXRlKSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtX2RhdGE4KTsKIApAQCAtMzgwLDcgKzM5OSwxMiBAQCBjbGFzcyBTdHJp
bmdJbXBsIHsKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGVVbmlxdWVFbXB0eSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJp
bmdJbXBsKENyZWF0ZUVtcHR5VW5pcXVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0cmluZ0ltcGwoQ3JlYXRlVW5pcXVlRW1wdHksIGZhbHNlKSk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaXF1ZVByaXZhdGVFbXB0
eSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0
ZVVuaXF1ZUVtcHR5LCB0cnVlKSk7CiAgICAgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pcXVlKFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gcmVwKTsKQEAgLTM5Myw4ICs0MTcsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIHN0
YXRpYyB1bnNpZ25lZCBmbGFnc09mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJp
bmdJbXBsLCBtX2hhc2hBbmRGbGFncyk7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzOEJp
dCgpIHsgcmV0dXJuIHNfaGFzaEZsYWc4Qml0QnVmZmVyOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVk
IGZsYWdJc0F0b21pYygpIHsgcmV0dXJuIHNfaGFzaEZsYWdJc0F0b21pYzsgfQotICAgIHN0YXRp
YyB1bnNpZ25lZCBmbGFnSXNVbmlxdWUoKSB7IHJldHVybiBzX2hhc2hGbGFnSXNVbmlxdWU7IH0K
KyAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzTm90QXRvbWljKCkgeyByZXR1cm4gc19oYXNoTWFz
a1N0cmluZ0tpbmQ7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7IHJl
dHVybiBzX2hhc2hNYXNrU3RyaW5nS2luZDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CkBAIC00NTQsMTcgKzQ3OCwyMCBAQCBjbGFzcyBTdHJp
bmdJbXBsIHsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qgc2l6ZUluQnl0ZXMo
KSBjb25zdDsKIAotICAgIGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRG
bGFncyAmIHNfaGFzaEZsYWdJc1VuaXF1ZTsgfQorICAgIFN0cmluZ0tpbmQgc3RyaW5nS2luZCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cmluZ0tpbmQ+KG1faGFzaEFuZEZsYWdzICYg
c19oYXNoTWFza1N0cmluZ0tpbmQpOyB9CisKKyAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyBy
ZXR1cm4gc3RyaW5nS2luZCgpICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1VuaXF1ZTsgfQorICAg
IGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nS2luZCgpID09IFN0cmluZ1Vu
aXF1ZVByaXZhdGU7IH0KKyAgICBib29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gc3RyaW5n
S2luZCgpID09IFN0cmluZ0F0b21pYzsgfQogCi0gICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0lzQXRvbWljOyB9CiAgICAgdm9pZCBz
ZXRJc0F0b21pYyhib29sIGlzQXRvbWljKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1N0YXRp
YygpKTsKICAgICAgICAgQVNTRVJUKCFpc1VuaXF1ZSgpKTsKICAgICAgICAgaWYgKGlzQXRvbWlj
KQotICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ0lzQXRvbWljOworICAg
ICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgPSAobV9oYXNoQW5kRmxhZ3MgJiAofnNfaGFzaE1hc2tT
dHJpbmdLaW5kKSkgfCBTdHJpbmdBdG9taWM7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
aGFzaEFuZEZsYWdzICY9IH5zX2hhc2hGbGFnSXNBdG9taWM7CisgICAgICAgICAgICBtX2hhc2hB
bmRGbGFncyA9IChtX2hhc2hBbmRGbGFncyAmICh+c19oYXNoTWFza1N0cmluZ0tpbmQpKSB8IFN0
cmluZ05vcm1hbDsKICAgICB9CiAKICNpZiBTVFJJTkdfU1RBVFMKQEAgLTcwNiw2ICs3MzMsMTYg
QEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IGNvbnN0IFVDaGFyIGxhdGluMUNhc2VGb2xkVGFibGVbMjU2XTsKIAorICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBTdHJpbmdJbXBsJiBleHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKGlzVW5pcXVlKCkp
OworICAgICAgICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsK
KyAgICAgICAgQVNTRVJUKHN1YnN0cmluZ0J1ZmZlcigpKTsKKyAgICAgICAgQVNTRVJUKCFzdWJz
dHJpbmdCdWZmZXIoKS0+aXNVbmlxdWUoKSk7CisgICAgICAgIHJldHVybiAqc3Vic3RyaW5nQnVm
ZmVyKCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29uc3QK
ICAgICB7CkBAIC03NzIsMjMgKzgwOSwxMiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0
ZUludGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4sIHVuc2lnbmVkLCBDaGFyVHlwZSomKTsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqLCB1bnNpZ25lZCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIE5FVkVSX0lOTElORSB1bnNpZ25lZCBoYXNoU2xvd0Nhc2UoKSBjb25zdDsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVuc2lnbmVkIGhhc2hBbmRGbGFnc0ZvclVuaXF1
ZSh1bnNpZ25lZCBmbGFncyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoQW5kRmxhZ3NGb3JVbmlxdWUodW5zaWduZWQgZmxhZ3MsIGJvb2wgaXNQcml2YXRlKTsK
IAogICAgIC8vIFRoZSBib3R0b20gYml0IGluIHRoZSByZWYgY291bnQgaW5kaWNhdGVzIGEgc3Rh
dGljIChpbW1vcnRhbCkgc3RyaW5nLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3JlZkNv
dW50RmxhZ0lzU3RhdGljU3RyaW5nID0gMHgxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBz
X3JlZkNvdW50SW5jcmVtZW50ID0gMHgyOyAvLyBUaGlzIGFsbG93cyB1cyB0byByZWYgLyBkZXJl
ZiB3aXRob3V0IGRpc3R1cmJpbmcgdGhlIHN0YXRpYyBzdHJpbmcgZmxhZy4KIAotICAgIC8vIFRo
ZSBib3R0b20gNyBiaXRzIGluIHRoZSBoYXNoIGFyZSBmbGFncy4KLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc19mbGFnQ291bnQgPSA3OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2Zs
YWdNYXNrID0gKDF1IDw8IHNfZmxhZ0NvdW50KSAtIDE7Ci0gICAgQ09NUElMRV9BU1NFUlQoc19m
bGFnQ291bnQgPD0gU3RyaW5nSGFzaGVyOjpmbGFnQ291bnQsIFN0cmluZ0hhc2hlcl9yZXNlcnZl
c19lbm91Z2hfYml0c19mb3JfU3RyaW5nSW1wbF9mbGFncyk7Ci0KLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc19oYXNoRmxhZ0lzVW5pcXVlID0gMXUgPDwgNjsKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc19oYXNoRmxhZzhCaXRCdWZmZXIgPSAxdSA8PCA1OwotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzX2hhc2hGbGFnSXNBdG9taWMgPSAxdSA8PCA0OwotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCA9IDF1IDw8IDM7Ci0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXAgPSAxdSB8ICgxdSA8PCAx
KTsKLQogI2lmIFNUUklOR19TVEFUUwogICAgIFdURl9FWFBPUlREQVRBIHN0YXRpYyBTdHJpbmdT
dGF0cyBtX3N0cmluZ1N0YXRzOwogI2VuZGlmCkBAIC04MDMsNyArODI5LDcgQEAgY2xhc3MgU3Ry
aW5nSW1wbCB7CiAKICAgICAgICAgLy8gVGhlc2UgdmFsdWVzIG1pbWljIENvbnN0cnVjdEZyb21M
aXRlcmFsLgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsUmVmQ291bnQg
PSBzX3JlZkNvdW50SW5jcmVtZW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19p
bml0aWFsRmxhZ3MgPSBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsOworICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsRmxhZ3MgPSBzX2hhc2hGbGFnOEJp
dEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsOwogICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc19oYXNoU2hpZnQgPSBzX2ZsYWdDb3VudDsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAppbmRleCA2NWJiNjcyMWQ3NDNmYTEwNDFjMjky
YjYwZjRkMDMyOTI4M2Q4ZTUxLi4wN2Q4ZGYyNWYzYjI4ZjBkNzYzMWNiYWQyMGJmYTM0MmQzMzI4
ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKQEAgLTUyLDEyICs1Miwx
MiBAQCBTdHJpbmdJbXBsKiBTdHJpbmdJbXBsOjplbXB0eSgpCiAvLyBrZXlzIG1lYW5zIHRoYXQg
d2UgZG9uJ3QgbmVlZCB0aGVtIHRvIG1hdGNoIGFueSBvdGhlciBzdHJpbmcgKGluIGZhY3QsCiAv
LyB0aGF0J3MgZXhhY3RseSB0aGUgb3Bvc2l0ZSBvZiB3aGF0IHdlIHdhbnQhKSwgYW5kIHRoZSBu
b3JtYWwgaGFzaCB3b3VsZAogLy8gbGVhZCB0byBsb3RzIG9mIGNvbmZsaWN0cy4KLXVuc2lnbmVk
IFN0cmluZ0ltcGw6Omhhc2hBbmRGbGFnc0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncykKK3Vuc2ln
bmVkIFN0cmluZ0ltcGw6Omhhc2hBbmRGbGFnc0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncywgYm9v
bCBpc1ByaXZhdGUpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIHNfbmV4dEhhc2hBbmRGbGFnc0Zv
clVuaXF1ZSA9IDA7CiAgICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlICs9IDEgPDwgc19m
bGFnQ291bnQ7CiAgICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlIHw9IDEgPDwgMzE7Ci0g
ICAgdW5zaWduZWQgZmxhZ3NGb3JVbmlxdWUgPSAoZmxhZ3MgJiBzX2ZsYWdNYXNrKSB8IHNfaGFz
aEZsYWdJc0F0b21pYyB8IHNfaGFzaEZsYWdJc1VuaXF1ZTsKKyAgICB1bnNpZ25lZCBmbGFnc0Zv
clVuaXF1ZSA9ICgoZmxhZ3MgJiBzX2ZsYWdNYXNrKSAmICh+c19oYXNoTWFza1N0cmluZ0tpbmQp
KSB8IChpc1ByaXZhdGUgPyBTdHJpbmdVbmlxdWVQcml2YXRlIDogU3RyaW5nVW5pcXVlKTsKICAg
ICByZXR1cm4gc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlIHwgZmxhZ3NGb3JVbmlxdWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDU3OTVkMGViOGViYzUzZGY3Y2ZkMDY1OGI5ZWNjMjdi
YjVkYmM0MmIuLjUxN2Q3MzhhMmE1MWJjMGU0YzUwYjY4MzI0Y2Y5MzdmZmU2MGJlZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5vcmRlcgpAQCAtMTUzMTEsNyArMTUzMTEsNiBAQCBfX1pON1dlYkNvcmUyNmpzSFRN
TE1ldGFFbGVtZW50SHR0cEVxdWl2RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TMF8x
MlBybwogX19aTjdXZWJDb3JlMTdKU1RpbWVSYW5nZXNPd25lcjI2aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHNFTjNKU0M2SGFuZGxlSU5TMV83VW5rbm93bkVFRVB2Uk5TMV8xMVNsb3RWaXNpdG9y
RQogX19aTjdXZWJDb3JlMTdKU1RpbWVSYW5nZXNPd25lcjhmaW5hbGl6ZUVOM0pTQzZIYW5kbGVJ
TlMxXzdVbmtub3duRUVFUHYKIF9fWk43V2ViQ29yZTEySlNUaW1lUmFuZ2VzN2Rlc3Ryb3lFUE4z
SlNDNkpTQ2VsbEUKLV9fWk43V2ViQ29yZTEwSlNOb2RlTGlzdDE5Z2V0T3duUHJvcGVydHlOYW1l
c0VQTjNKU0M4SlNPYmplY3RFUE5TMV85RXhlY1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJh
eUVOUzFfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pMMTlrQ01UaW1lWmVyb0Z1bmN0aW9udgogX19a
TjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MzVjaGFuZ2VOZXR3b3JrU3RhdGVGcm9tTG9hZGlu
Z1RvSWRsZUV2CiBfX1pOSzdXZWJDb3JlMzBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24x
NW1pblRpbWVTZWVrYWJsZUV2CkBAIC0xNzk1OCw3ICsxNzk1Nyw2IEBAIF9fWk43V2ViQ29yZTEx
SlNET01QbHVnaW4xMWluZGV4R2V0dGVyRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRWoK
IF9fWk43V2ViQ29yZTlET01QbHVnaW40aXRlbUVqCiBfX1pON1dlYkNvcmUxN2pzRE9NTWltZVR5
cGVUeXBlRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TMF8xMlByb3BlcnR5TmFtZUUK
IF9fWk5LN1dlYkNvcmUxMURPTU1pbWVUeXBlNHR5cGVFdgotX19aTjdXZWJDb3JlOUpTU3RvcmFn
ZTE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTjNKU0M4SlNPYmplY3RFUE5TMV85RXhlY1N0YXRlRVJO
UzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOSzdXZWJD
b3JlMThSZW5kZXJUZXh0RnJhZ21lbnQxNGlzVGV4dEZyYWdtZW50RXYKIF9fWk43V2ViQ29yZTEy
VGV4dEl0ZXJhdG9yMjVoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyRVBOU18xOFJlbmRlclRleHRG
cmFnbWVudEUKIF9fWk4zV1RGMTJTdHJpbmdBcHBlbmRJTlNfNlN0cmluZ0VQS2NFN3dyaXRlVG9F
UHQKQEAgLTE4MjI3LDggKzE4MjI1LDYgQEAgX19aTks3V2ViQ29yZTIzUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wyOWNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzRVJOU18xMExheW8KIF9fWk5L
N1dlYkNvcmUxMVJlbmRlclRoZW1lMjBmaWxlTGlzdERlZmF1bHRMYWJlbEViCiBfX1pON1dlYkNv
cmUyOWZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsRXYKIF9fWk5LN1dlYkNvcmUyM1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sMzZyZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb25F
dgotX19aTjdXZWJDb3JlMTFKU0RPTVdpbmRvdzE2Z2V0UHJvcGVydHlOYW1lc0VQTjNKU0M4SlNP
YmplY3RFUE5TMV85RXhlY1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFfMTVFbnVt
ZXJhdGlvbk1vZGVFCi1fX1pON1dlYkNvcmUxMUpTRE9NV2luZG93MTlnZXRPd25Qcm9wZXJ0eU5h
bWVzRVBOM0pTQzhKU09iamVjdEVQTlMxXzlFeGVjU3RhdGVFUk5TMV8xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TMV8xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk43V2ViQ29yZTlET01XaW5kb3cxOGNhblNo
b3dNb2RhbERpYWxvZ0VQS05TXzVGcmFtZUUKIF9fWk5LN1dlYkNvcmU2Q2hyb21lMTFjYW5SdW5N
b2RhbEV2CiBfX1pON1dlYkNvcmUzMWpzWE1MSHR0cFJlcXVlc3RXaXRoQ3JlZGVudGlhbHNFUE4z
SlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydHlOYW1lRQpAQCAtMTgyNzEs
NyArMTgyNjcsNiBAQCBfX1pON1dlYkNvcmUyMmpzRE9NV2luZG93T25tb3VzZWRvd25FUE4zSlND
OUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydAogX19aTjdXZWJDb3JlMjRqc0RP
TVdpbmRvd09uY29udGV4dG1lbnVFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEy
UHJvcGVydHlOYW1lRQogX19aTks3V2ViQ29yZTEzRmlsZUlucHV0VHlwZTIwc2F2ZUZvcm1Db250
cm9sU3RhdGVFdgogX19aTjdXZWJDb3JlMjNSZW5kZXJGaWxlVXBsb2FkQ29udHJvbEQwRXYKLV9f
Wk43V2ViQ29yZTEwSlNMb2NhdGlvbjE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTjNKU0M4SlNPYmpl
Y3RFUE5TMV85RXhlY1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFfMTVFbnVtZXJh
dGlvbk1vZGVFCiBfX1pOM0pTQzE4Z2V0U3RhdGljVmFsdWVTbG90SU43V2ViQ29yZTE1SlNET01T
dHJpbmdMaXN0RU5TMV8xMkpTRE9NV3JhcHBlckVFRWJQTlNfOUV4ZWNTdGF0ZUVQS05TXzlIYXNo
VGFibGVFUFRfTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjdXZWJD
b3JlMjRKU0RPTVN0cmluZ0xpc3RQcm90b3R5cGUxOGdldE93blByb3BlcnR5U2xvdEVQTjNKU0M2
SlNDZWxsRVBOUzFfOUV4ZWNTdGF0ZUVOUzFfMTJQcm9wZXJ0eU5hbWVFUk5TMV8xMlByb3BlcnR5
U2xvdEUKIF9fWk43V2ViQ29yZTExU1ZHRm9udERhdGFDMUVQTlNfMThTVkdGb250RmFjZUVsZW1l
bnRFCkBAIC0xODQ1Miw3ICsxODQ0Nyw2IEBAIF9fWk43V2ViQ29yZTE5SFRNTFByb2dyZXNzRWxl
bWVudDZhdHRhY2hFUktOU180Tm9kZTEzQXR0YWNoQ29udGV4dEUKIF9fWk5LN1dlYkNvcmUxNFJl
bmRlclRoZW1lTWFjMjJhZGp1c3RQcm9ncmVzc0JhclN0eWxlRVBOU18xM1N0eWxlUmVzb2x2ZXJF
UE5TXzExUmVuZGVyU3R5bGVFUE5TXzdFbGVtZW50RQogX19aTjdXZWJDb3JlMjJDU1NDYWxjQmlu
YXJ5T3BlcmF0aW9uRDBFdgogX19aTjdXZWJDb3JlMjFDU1NDYWxjUHJpbWl0aXZlVmFsdWVEMEV2
Ci1fX1pON1dlYkNvcmUxNUpTRE9NU3RyaW5nTGlzdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTjNK
U0M4SlNPYmplY3RFUE5TMV85RXhlY1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFf
MTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pON1dlYkNvcmVMMjNnZXRKU0RPTVN0cmluZ0xpc3RUYWJs
ZUVQTjNKU0M5RXhlY1N0YXRlRQogX19aTjdXZWJDb3JlTDIyZ2V0SlNNZXNzYWdlRXZlbnRUYWJs
ZUVQTjNKU0M5RXhlY1N0YXRlRQogX19aTjdXZWJDb3JlTDMxZ2V0SlNNZXNzYWdlRXZlbnRQcm90
b3R5cGVUYWJsZUVQTjNKU0M5RXhlY1N0YXRlRQpAQCAtMjcyMDksNyArMjcyMDMsNiBAQCBfX1pa
TjdXZWJDb3JlTDE5c2VsZWN0b3JzRnJvbVNvdXJjZUVQS05TXzE3Q1NTUnVsZVNvdXJjZURhdGFF
UktOM1dURjZTdHJpbmdFRTdjbwogX19aR1ZaTjdXZWJDb3JlTDE5c2VsZWN0b3JzRnJvbVNvdXJj
ZUVQS05TXzE3Q1NTUnVsZVNvdXJjZURhdGFFUktOM1dURjZTdHJpbmdFRTdjb21tZW50LmIKIF9f
WlpON1dlYkNvcmUyMkluc3BlY3RvclRpbWVsaW5lQWdlbnQyNGlubmVyQWRkUmVjb3JkVG9UaW1l
bGluZUVOM1dURjEwUGFzc1JlZlB0cklOU18xNUluc3BlY3Rvck9iamVjdEVFRVJLTlMxXzZTdHJp
bmdFUzdfRTdwcm9ncmFtCiBfX1pHVlpON1dlYkNvcmUyMkluc3BlY3RvclRpbWVsaW5lQWdlbnQy
NGlubmVyQWRkUmVjb3JkVG9UaW1lbGluZUVOM1dURjEwUGFzc1JlZlB0cklOU18xNUluc3BlY3Rv
ck9iamVjdEVFRVJLTlMxXzZTdHJpbmdFUzdfRTdwcm9ncmFtLmIKLV9fWlpON1dlYkNvcmUyMUpT
Q1NTU3R5bGVEZWNsYXJhdGlvbjE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTjNKU0M4SlNPYmplY3RF
UE5TMV85RXhlY1N0YXRlRVJOUzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFfMTVFbnVtZXJhdGlv
bk1vZGVFRTE5cHJvcGVydHlJZGVudGlmaWVycwogX19aWk43V2ViQ29yZTIzSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3Q4cGxhdGZvcm1FUE4zSlNDOUV4ZWNTdGF0ZUVFOHBsYXRmb3JtCiBfX1pHVlpO
N1dlYkNvcmUyM0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OHBsYXRmb3JtRVBOM0pTQzlFeGVjU3Rh
dGVFRThwbGF0Zm9ybS5iCiBfX1paTjdXZWJDb3JlMjNKU0luc3BlY3RvckZyb250ZW5kSG9zdDRw
b3J0RVBOM0pTQzlFeGVjU3RhdGVFRTRwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Rp
Y3Rpb25hcnkuY3BwCmluZGV4IGRmNGRjNzg2MmQyZGFhYTlmMmI2NzZkMWVkMzE3MmEyZjNlYWZk
MjkuLjliYzQwZDFlYTMyMzZiYzI4MjQyZmM0NDVkNGVhNGMzYTZhNGNhNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wg
RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYgbWFwKSBjCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4
ZWNTdGF0ZSgpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsK
LSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
OjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogICAgIGZvciAo
UHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdp
bigpOyBpdCAhPSBwcm9wZXJ0eU5hbWVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBz
dHJpbmdLZXkgPSBpdC0+c3RyaW5nKCk7CiAgICAgICAgIGlmIChzdHJpbmdLZXkuaXNFbXB0eSgp
KQpAQCAtODgsNyArODgsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMo
VmVjdG9yPFN0cmluZz4mIG5hbWVzKSBjb25zdAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGlj
dGlvbmFyeS5leGVjU3RhdGUoKTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFt
ZXMoZXhlYyk7Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsK
ICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3BlcnR5
TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAgICAg
ICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwogICAgICAgICBpZiAoIXN0cmluZ0tl
eS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA4OTZiOTljZTkxYjcyYzZjZmU4
MDJiMTdjYmQwNzBmMjQ1ZDRhNDdkLi5jNmM4ZDIxYjA1MmUyNjI4NmI1Y2FhNDI2MDdkMzZjM2Vi
ZGVjODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxl
RGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZQogCiAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnMgPSBuZXcgSWRl
bnRpZmllcltudW1DU1NQcm9wZXJ0aWVzXTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1DU1NQcm9wZXJ0aWVzOyArK2kpCi0gICAgICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzW2ld
ID0gSWRlbnRpZmllcihleGVjLCBqc1Byb3BlcnR5TmFtZXNbaV0uaW1wbCgpKTsKKyAgICAgICAg
ICAgIHByb3BlcnR5SWRlbnRpZmllcnNbaV0gPSBJZGVudGlmaWVyKGV4ZWMsIGpzUHJvcGVydHlO
YW1lc1tpXSk7CiAgICAgfQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0
aWVzOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBkY2E1NjAzZjljMzk5NjE4MzM4YWY3ZTBkYjMxYWRmMTBj
YjZiNmY5Li5hMGVkOGUyMGUwOGVmYmUwNzc3NmVkNWNlNTQ5MzY1MzZmMDRiMDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTEyNDgsNyArMTI0OCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2Vy
aWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIGxlbmd0
aFN0YWNrLnJlbW92ZUxhc3QoKTsKIAogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNr
LmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAg
YXJyYXktPm1ldGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwg
bV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1l
cmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5U3RhY2subGFzdCgpLnNpemUoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUoTm9uSW5kZXhQcm9wZXJ0aWVzVGFnKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwpAQCAtMTI5OCw3ICsx
Mjk4LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxp
emUoSlNWYWx1ZSBpbikKICAgICAgICAgICAgICAgICBpbnB1dE9iamVjdFN0YWNrLmFwcGVuZChp
bk9iamVjdCk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7
Ci0gICAgICAgICAgICAgICAgaW5PYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
TmFtZXMoaW5PYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluT2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFz
dCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRl
U3ltYm9scyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVt
YmVyOgogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CkBAIC0xMzgxLDcgKzEzODEsNyBAQCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGlu
KQogICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gaW5wdXRPYmplY3RTdGFj
ay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTU2V0
Kj4ob2JqZWN0KSB8fCBqc0R5bmFtaWNDYXN0PEpTTWFwKj4ob2JqZWN0KSk7CiAgICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykp
OwotICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxh
c3QoKSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVk
ZVN5bWJvbHMpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0aWVzVGFn
KTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZGQ5NTViMmNi
ZGNlOTY1ZTc1OGFjODYxMGE2ZjM4ODdhNDU0ZmIxMS4uZGY0ODNjMzBmZTJiZDA5MjhlZTM1MmM5
Mjg5N2Y1NDdjOTBkZTQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTk1MywxNiArOTUzLDE2IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogCiAgICAgIyBDdXN0b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlzdHMg
b24gRE9NV2luZG93CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlO
YW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFy
cmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
dm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9
IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBK
U0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdl
dFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7XG4iKTsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3Bl
cnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0RW51bWVyYWJsZUxl
bmd0aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwogICAgICAgICAkc3Ry
dWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsKICAgICB9
CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9
IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7XG4iKTsKICAgICAgICAgJHN0cnVj
dHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMifSA9IDE7ICAgICAgIAog
ICAgIH0KIApAQCAtMjY5Niw3ICsyNjk2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0
aCgpOyBpIDwgY291bnQ7ICsraSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAppbmRleCAxZDU5
MTg5YjQ3MjA1MTE3MTc5YzYzOWE2MDViMzA4NmVkZGJmNmVmLi5kMjRhMmVhNzA2YWUyZDk0NDJi
NzA3NWY5NWUyODgzMzY1NjIwNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKQEAgLTI0MSw3ICsy
NDEsNyBAQCB2b2lkIEpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c3RhdGljX2Nhc3Q8RmxvYXQ2NEFycmF5Kj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCk7
ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBp
KSk7Ci0gICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogSlNWYWx1ZSBKU0Zsb2F0NjRB
cnJheTo6Z2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaAppbmRleCBmZjM4OGNhMDE3NjBjMTJiOTU3NTAzOWZl
Yzc2NDMyOTNmZTg0ZTM0Li42OWM5NmNjZTdlNzdlMjkzZWI2NDc5OTY5MzMwMjliNTRlYjRiOGY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNG
bG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNGbG9hdDY0QXJyYXkuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBKU0Zsb2F0NjRBcnJh
eSA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2Rl
ID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25N
b2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kRXhjbHVkZVN5bWJvbHMpOwogICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgRmxvYXQ2NEFycmF5KiBpbXBsKCkgY29uc3QKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCA1YTIxNGQwN2RkMTA2MGY5ZWRlYWQ1YzljYjJi
ZTc5ZDg5OWI3YTk0Li5lMGFhNmQwOTMzMDZhNzBmNjY2OTA5ZjYwZTE5NjczYmNjNjAyYjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEpTVGVz
dEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmlt
cGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7
CiB9CiAKIEpTVmFsdWUgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXgg
MmQxNTYwZTI5NTM5Yjk1NDI5Mzg1ODEyYmIwMzRmZDM1NDNjZDg3Ny4uZTk5OTc0MTBjNzJhZjMz
NDhhMmVhNzdjZjc0OTQzZTM0ZWU0NDAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTUy
LDcgKzUyLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNUZXN0RXZlbnRUYXJnZXQgOiBwdWJs
aWMgSlNET01XcmFwcGVyIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGdl
dE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7CiAgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCA5MDAxMDEzOGFiNDZjZTdk
OTc1M2NiZmYyOTVlNTNjZGZhY2QwYjVhLi5iZjUwYWQyMTFjMTliODM1NGVkNTJmY2UzYTlkOGFj
MGE3OWJkNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTQ0Nyw3
ICs0NDcsNyBAQCBib29sIF9OUE5fRW51bWVyYXRlKE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRp
ZmllcioqIGlkZW50aWZpZXIsIHVpbnQzMl90KiBjb3VudAogICAgICAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVj
KTsKIAotICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhv
YmotPmltcCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CisgICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+
aW1wLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXNBbmRFeGNsdWRlU3ltYm9scyk7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwogICAgICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGNhbGwgTlBOX01lbUFsbG9jIGJ1dCB0aGF0J3MgaW4g
V2ViS2l0CiAgICAgICAgIE5QSWRlbnRpZmllciogaWRlbnRpZmllcnMgPSBzdGF0aWNfY2FzdDxO
UElkZW50aWZpZXIqPihtYWxsb2Moc2l6ZW9mKE5QSWRlbnRpZmllcikgKiBzaXplKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggMDIyMjE5MDVjNDBlNmVkZmVk
NTc5OTllYjIzNWY1ODkxYTdhMmUwOC4uYzcxM2ZmYTRlMjMyOTNjNjZjYzY1Y2IyOTkzZGEzYTky
ZWVkYTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtNzUs
NyArNzUsNyBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbShleGVjLCBpKSk7CiAKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpOwogCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5k
ZXggY2FkZTllMWU5ZmRmN2I2ZjY0MTA4NWRiNDcwM2FiODQzMzg1M2E2ZC4uOWQyOGM4ODlkMTNl
NWU5Y2MyOTM4Yjk2Yjk5NTFhZDAyNWE0ZDY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQpAQCAtMTIzMSw3ICsxMjMxLDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OmVudW1lcmF0ZSh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90JiByZXN1bHREYXQKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllc0FuZEV4Y2x1ZGVTeW1ib2xzKTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSo+
IGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMuc2l6ZSgpOyBpKyspIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmNwcAppbmRleCAxY2VkMjkzZWI4Y2NjNzdkMzcwOWI5YmQzOTgwOGNjMzk4MTI3Mzc3
Li44MWZlZDUxOTBkNjM4ZGE1M2M2ODcwOTAxMDIxNzNjMjRlNmEzNGIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwCkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IGlkZW50aWZpZXJSZXAtPnN0cmluZygpOwogICAg
ICAgICAgICAgaW50IGxlbmd0aCA9IHN0cmxlbihzdHJpbmcpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZGVudGlmaWVyID0gSWRlbnRpZmllcihleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0
aExhdGluMUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKS5pbXBsKCkpOworICAgICAgICAgICAgaWRl
bnRpZmllciA9IElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFjayhzdHJpbmcsIGxlbmd0aCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGlkZW50
aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZpZXJSZXAtPm51bWJlcigpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QSlNPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QSlNPYmplY3QuY3BwCmluZGV4IDBkMTY2NzRlNWMxNWY0NzE3MTg1NDNkMjVjYTRmMzEw
OWMwNTJkMjIuLjlmYjlhNDNlMWMwMmFhOGUwMjUyNzQ4NDRmNzk3MjFjNGQzOGUwOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBKU09iamVjdC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIElkZW50aWZpZXIgaWRlbnRp
ZmllckZyb21JZGVudGlmaWVyUmVwKEV4ZWNTdGF0ZSogZXhlYywgSWRlbnRpZmllclJlcCogaWQK
ICAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBpZGVudGlmaWVyUmVwLT5zdHJpbmcoKTsKICAgICBp
bnQgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CiAKLSAgICByZXR1cm4gSWRlbnRpZmllcihleGVj
LCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKS5pbXBs
KCkpOworICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0
aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5ndGgpKTsKIH0KIAogYm9vbCBOUEpTT2JqZWN0OjpoYXNN
ZXRob2QoTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBO
UEpTT2JqZWN0OjplbnVtZXJhdGUoTlBJZGVudGlmaWVyKiogaWRlbnRpZmllcnMsIHVpbnQzMl90
KiBpZGVudGlmaWVyQ291bnQKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAogICAgIFBy
b3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgbV9qc09iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBtX2pzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG1fanNPYmplY3QuZ2V0KCksIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0Fu
ZEV4Y2x1ZGVTeW1ib2xzKTsKIAogICAgIE5QSWRlbnRpZmllciogbmFtZUlkZW50aWZpZXJzID0g
bnBuTWVtTmV3QXJyYXk8TlBJZGVudGlmaWVyPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyIGIvU291cmNlL1dlYktp
dDIvbWFjL1dlYktpdDIub3JkZXIKaW5kZXggOGEwMzgzODkyN2Y1ZTkyZTM4ZDUzNjJmYWMzOWQ3
ZGEwNmY2MzZmOC4uNDJmYjc1Yjk3NmJhM2ExYzBhNDVmM2FlNmFlNmNkMjBlZDc2MTA0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKKysrIGIvU291cmNlL1dl
YktpdDIvbWFjL1dlYktpdDIub3JkZXIKQEAgLTk0MjEsNyArOTQyMSw2IEBAIF9fWk4zV1RGNlZl
Y3RvcklONldlYktpdDE2TlBJZGVudGlmaWVyRGF0YUVMbTBFTlNfMTVDcmFzaE9uT3ZlcmZsb3dF
RTZzaHJpbmtFbQogX19aTjdDb3JlSVBDMTBBcmd1bWVudHMySVJiUk4zV1RGNlZlY3RvcklONldl
YktpdDE2TlBJZGVudGlmaWVyRGF0YUVMbTBFTlMyXzE1Q3Jhc2hPbk92ZXJmbG93RUVFRTZkZWNv
ZGVFUk5TXzE1QXJndW1lbnREZWNvZGVyRVJTOV8KIF9fWk43Q29yZUlQQzE5VmVjdG9yQXJndW1l
bnRDb2RlcklMYjBFTjZXZWJLaXQxNk5QSWRlbnRpZmllckRhdGFFRTZkZWNvZGVFUk5TXzE1QXJn
dW1lbnREZWNvZGVyRVJOM1dURjZWZWN0b3JJUzJfTG0wRU5TNl8xNUNyYXNoT25PdmVyZmxvd0VF
RQogX19aTjNXVEY2VmVjdG9ySU42V2ViS2l0MTZOUElkZW50aWZpZXJEYXRhRUxtMEVOU18xNUNy
YXNoT25PdmVyZmxvd0VFMTRzaHJpbmtDYXBhY2l0eUVtCi1fX1pONldlYktpdDEwSlNOUE9iamVj
dDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTjNKU0M4SlNPYmplY3RFUE5TMV85RXhlY1N0YXRlRVJO
UzFfMTdQcm9wZXJ0eU5hbWVBcnJheUVOUzFfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pONldlYktp
dEwyME5QTl9HZXRJbnRJZGVudGlmaWVyRWkKIF9fWk42V2ViS2l0TDEzTlBOX0hhc01ldGhvZEVQ
NF9OUFBQOE5QT2JqZWN0UHYKIF9fWk42V2ViS2l0MTBOUEpTT2JqZWN0MTJOUF9IYXNNZXRob2RF
UDhOUE9iamVjdFB2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjdlM2FkZjU0YmMyODViMzZmYTBkMTU0ZDM3YWQxN2ZjMzQy
YjJhMi4uOWJmNTUzNTc2NjJhYjlhYjQxYjhiOWU2YmQ1NzZjYTVlNjEwZmUxZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE1LTAyLTI1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQx
MTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBq
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMv
c2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzOgorCiAyMDE1LTAyLTI1
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFNr
aXAgQVJJQSAxLjEgdGVzdHMgZm9yIHVuc3VwcG9ydGVkIGZlYXR1cmUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKaW5k
ZXggZmZjNjkzMDA1MGI2YmRhNjJjNTNiNTA2MTIyNzVkNDg5ODMxYWQ4NS4uNjhiNzVlNWEyNzZl
M2E5MGU5Mjk3YjVkZTg0YjE1MmYzNjRhZGUxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMv
T2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dApAQCAtNDAsNyArNDAs
NyBAQCBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZGVjb2RlVVJJKSBpcyBbJ2xlbmd0
aCcsICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhkZWNvZGVVUklDb21w
b25lbnQpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5h
bWVzKGVuY29kZVVSSSkgaXMgWydsZW5ndGgnLCAnbmFtZSddCiBQQVNTIGdldFNvcnRlZE93blBy
b3BlcnR5TmFtZXMoZW5jb2RlVVJJQ29tcG9uZW50KSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KLVBB
U1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QpIGlzIFsnY3JlYXRlJywgJ2RlZmlu
ZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5
RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lz
RXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICdu
YW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10KK1BBU1MgZ2V0
U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QpIGlzIFsnY3JlYXRlJywgJ2RlZmluZVByb3Bl
cnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5RGVzY3Jp
cHRvcicsICdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgJ2dldE93blByb3BlcnR5U3ltYm9scycsICdn
ZXRQcm90b3R5cGVPZicsICdpc0V4dGVuc2libGUnLCAnaXNGcm96ZW4nLCAnaXNTZWFsZWQnLCAn
a2V5cycsICdsZW5ndGgnLCAnbmFtZScsICdwcmV2ZW50RXh0ZW5zaW9ucycsICdwcm90b3R5cGUn
LCAnc2VhbCddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlw
ZSkgaXMgWydfX2RlZmluZUdldHRlcl9fJywgJ19fZGVmaW5lU2V0dGVyX18nLCAnX19sb29rdXBH
ZXR0ZXJfXycsICdfX2xvb2t1cFNldHRlcl9fJywgJ19fcHJvdG9fXycsICdjb25zdHJ1Y3Rvcics
ICdoYXNPd25Qcm9wZXJ0eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxl
JywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXQogUEFTUyBnZXRTb3J0
ZWRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0aW9uKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3Rv
dHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRnVuY3Rpb24ucHJvdG90eXBl
KSBpcyBbJ2FwcGx5JywgJ2JpbmQnLCAnY2FsbCcsICdjb25zdHJ1Y3RvcicsICdsZW5ndGgnLCAn
bmFtZScsICd0b1N0cmluZyddCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKaW5kZXggYjQyNGIwNWU0ZDgzYzJh
OWE2YmFlMmE5ZDM0YjM0M2VlNjA5ODExNC4uZmJkNjVkZDNhYzk3Y2Q4YTdkMGVkYWM0MzlmZWQ3
ZDc4M2UwMTBkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVj
dC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwpAQCAtNDgsNyArNDgsNyBAQAogICAgICJl
bmNvZGVVUkkiOiAiWydsZW5ndGgnLCAnbmFtZSddIiwKICAgICAiZW5jb2RlVVJJQ29tcG9uZW50
IjogIlsnbGVuZ3RoJywgJ25hbWUnXSIsCiAvLyBCdWlsdC1pbiBFQ01BIG9iamVjdHMKLSAgICAi
T2JqZWN0IjogIlsnY3JlYXRlJywgJ2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHkn
LCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5h
bWVzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1Nl
YWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3By
b3RvdHlwZScsICdzZWFsJ10iLAorICAgICJPYmplY3QiOiAiWydjcmVhdGUnLCAnZGVmaW5lUHJv
cGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywg
J2dldFByb3RvdHlwZU9mJywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcs
ICdrZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlw
ZScsICdzZWFsJ10iLAogICAgICJPYmplY3QucHJvdG90eXBlIjogIlsnX19kZWZpbmVHZXR0ZXJf
XycsICdfX2RlZmluZVNldHRlcl9fJywgJ19fbG9va3VwR2V0dGVyX18nLCAnX19sb29rdXBTZXR0
ZXJfXycsICdfX3Byb3RvX18nLCAnY29uc3RydWN0b3InLCAnaGFzT3duUHJvcGVydHknLCAnaXNQ
cm90b3R5cGVPZicsICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICd0b0xvY2FsZVN0cmluZycsICd0
b1N0cmluZycsICd2YWx1ZU9mJ10iLAogICAgICJGdW5jdGlvbiI6ICJbJ2xlbmd0aCcsICduYW1l
JywgJ3Byb3RvdHlwZSddIiwKICAgICAiRnVuY3Rpb24ucHJvdG90eXBlIjogIlsnYXBwbHknLCAn
YmluZCcsICdjYWxsJywgJ2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICduYW1lJywgJ3RvU3RyaW5n
J10iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247619</attachid>
            <date>2015-02-28 17:58:26 -0800</date>
            <delta_ts>2015-02-28 18:07:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150301105810.patch</filename>
            <type>text/plain</type>
            <size>259735</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwODQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MmE2NGQxNDFjNmU5YjcyMjI4MjZlNmEzNDE3YTM3OGY5NTAzZWNjLi4yMWU1ODdiYWNkNmRkMjIw
NTY3NTU3NjBkOTUyYTUzMjIxNjA0OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTUtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGluL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIGBTdHJpbmdJbXBsKmAgcmVw
cmVzZW50cyB3aGV0aGVyIGl0J3MgcHJpdmF0ZSBvciBub3QuCisKKyAgICAgICAgVG8gcmVwcmVz
ZW50IGl0IGluIGBTdHJpbmdJbXBsYCwgd2UgaW50cm9kdWNlIGBTdHJpbmdLaW5kYCBpbnRvIGBT
dHJpbmdJbXBsYC4gVGhlcmUncyA0IGtpbmRzCisgICAgICAgIDEpIFN0cmluZ05vcm1hbCAobm90
IHByaXZhdGUsIG5vdCBhdG9taWMsIG5vdCB1bmlxdWUpLCAyKSBTdHJpbmdBdG9taWMgKG5vdCBw
cml2YXRlLCBhdG9taWMsIG5vdCB1bmlxdWUpLAorICAgICAgICAzKSBTdHJpbmdVbmlxdWUgKG5v
dCBwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpIGFuZCA0KSBTdHJpbmdVbmlxdWVQcml2YXRl
IChwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpLgorICAgICAgICBUaGV5IGFyZSBtdXR1YWxs
eSBleGNsdXNpdmUuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEpIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzLCAyKSBJbmNsdWRlL0V4Y2x1ZGUgU3ltYm9scyBhbmQgMykgSW5jbHVkZS9FeGNsdWRl
IEpTT2JqZWN0IHByb3BlcnR5IG5hbWVzLgorICAgICAgICBJbiB0aGUgYSBsb3Qgb2YgY29kZSwg
d2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBhIGxvdCBvZiBjYWxs
ZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1lQXJyYXlgIGRvZXNu
J3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25zZXJ2YXRpdmUgYXNz
dW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAgIEluIHRoZSBhIGxv
dCBvZiBwbGFjZSwgYElkZW50aWZpZXIoVk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAgY29u
c3RydWN0b3IgaXMgdXNlZC4KKyAgICAgICAgSG93ZXZlciwgaXQncyBhbWJpZ3VvdXMgYmVjYXVz
ZSBgU3RyaW5nSW1wbCpgIGhhcyAyIGRpZmZlcmVudCBtZWFuaW5ncy4KKyAgICAgICAgMSkgbm9y
bWFsIHN0cmluZywgaXQgaXMgcmVwbGFjYWJsZSB3aXRoIGBXVEZTdHJpbmdgIGFuZCAyKSBgdWlk
YCwgd2hpY2ggaG9sZHMgYGlzVW5pcXVlYCBpbmZvcm1hdGlvbiB0byByZXByZXNlbnQgU3ltYm9s
cy4KKyAgICAgICAgU28gd2UgZHJvcHBlZCBJZGVudGlmaWVyIGNvbnN0cnVjdG9ycyBmb3Igc3Ry
aW5ncyBhbmQgaW5zdGVhZCwgaW50cm9kdWNlZCAyIGZhY3RvcnkgZnVuY3Rpb25zLgorCQkrIGBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNKi9FeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKWAuCisJ
CQlKdXN0IGNvbnN0cnVjdCBJZGVudGlmaWVyIGZyb20gc3RyaW5ncy4gVGhlIHVuaXF1ZW5lc3Mg
b2YgU3RyaW5nSW1wbCogaXMgbm90IGtlcHQuCisJCSsgYElkZW50aWZpZXI6OmZyb21VaWQoVk0q
L0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAuCisJCQlUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9y
IDIpIGB1aWRgLiBTbyB1bmlxdWVuZXNzIG9mIGBTdHJpbmdJbXBsKmAgaXMga2VwdC4KKworICAg
ICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAg
ICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rp
b24pOgorICAgICAgICAoSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJ
L09wYXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAo
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFs
dWUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAg
IChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFt
ZXM6OkJ1aWx0aW5OYW1lcyk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxl
RGVmYXVsdFByb3BlcnR5Q291bnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZl
cmVuY2VFcnJvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9u
bHlFeGNlcHRpb25JZk5lZWRlZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RW51bWVyYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkRlc2lyZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKToKKworICAg
ICAgICBUbyBicmFuY2ggb24gdGhlIHN0cmluZyBhdG9taWNpdHkgZWZmaWNpZW50bHksIHdlIG5l
ZWQgdG8gY2FyZWZ1bGx5IGNob29zZSBTdHJpbmdLaW5kIGZvciBTdHJpbmdBdG9taWMuCisgICAg
ICAgIFdlIHNlbGVjdCBgMGAgZm9yIFN0cmluZ0F0b21pYy4gU28gd2UgY2FuIGNoZWNrIHRoZSBh
dG9taWNpdHkgb2YgU3RyaW5nSW1wbCBieSBzZWVpbmcgd2hldGhlciBTdHJpbmdLaW5kIGlzIHpl
cm8uCisgICAgICAgIEl0IGVuYWJsZXMgeDg2IGNvZGUgdG8gYnJhbmNoIHdpdGggYHRlc3RgIGlu
c3RydWN0aW9uIGVmZmljaWVudGx5LgorCisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlU3RyaW5n
SWRlbnQpOgorCisgICAgICAgIEFzIG5vdGVkIGluIGRmZyBzZWN0aW9uLCB3ZSBjYW4gY2hlY2sg
dGhlIGF0b21pY2l0eSBvZiBTdHJpbmdJbXBsIHdpdGggdGhpcyBjaGFuZ2UuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6Y29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eSk6CisgICAgICAgIChJbnNwZWN0b3I6OkpT
SW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWFrTWFwRW50cmllcyk6CisgICAgICAgICogaW5zcGVjdG9y
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6OmV4dHJhY3RTb3VyY2VJbmZvcm1hdGlvbkZyb21FeGNlcHRpb24pOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmNwcDoKKworICAgICAgICBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGV4
cGxjaXRseSBjaGVjayBgaXNVbmlxdWUoKWAgaW4gdGhlIGNhbGxlciBzaWRlLiBXZSBjYW4ganVz
dCB1c2UgYElkZW50aWZpZXI6OmZyb21VaWRgLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAg
ICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoR2xvYmFsT2JqZWN0
OjphZGRGdW5jdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmFkZENvbnN0cnVjdGFibGVG
dW5jdGlvbik6CisgICAgICAgIChmdW5jdGlvblJ1bik6CisgICAgICAgIChydW5XaXRoU2NyaXB0
cyk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjphZGRWYXIpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVCaW5kaW5nUGF0dGVybik6CisgICAgICAgICogcGFy
c2VyL1BhcnNlckFyZW5hLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZUlk
ZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VJZGVudGlmaWVy
TENoYXJGcm9tVUNoYXIpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VOdW1l
cmljSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAg
ICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkFy
Z3VtZW50czo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVu
dHNJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlJdGVyYXRvclByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY1B1c2gpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1Nv
cnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAo
SlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0VudW1lcmF0aW9u
TW9kZS5oOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkVudW1lcmF0aW9uTW9kZSk6
CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6c2hvdWxkSW5jbHVkZUpT
T2JqZWN0UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6c2hv
dWxkSW5jbHVkZVN5bWJvbHMpOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OmNyZWF0
ZVRoYXRTa2lwc0pTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6c2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnNob3VsZEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzaG91bGRJbmNsdWRlSlNPYmpl
Y3RQcm9wZXJ0eU5hbWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6bW9kZVRoYXRTa2lwc0pT
T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAg
KEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAgICAgKEpTQzo6aGFzRXJyb3JJbmZvKToKKyAgICAg
ICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6Oklk
ZW50aWZpZXI6OmZyb20pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6SWRlbnRpZmllcik6CisgICAgICAg
IChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cnVudGlt
ZUZsYWdzKToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyk6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVu
Y3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEdlbmVyaWNQcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZSk6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0FsbCk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6c3RydWN0dXJlUHJv
cGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6
OkpTU3RyaW5nOjp0b0lkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnRyeUpTT05QUGFyc2Up
OgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6bWFrZUlkZW50aWZpZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGlj
UHJvcGVydGllcyk6CisgICAgICAgICogcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6Ok1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpNYXRoT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICog
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok51bWJlckNvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKToK
KyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpTQzo6ZGVm
aW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9y
SXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Q
cml2YXRlTmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6UHJpdmF0ZU5hbWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5
TmFtZTo6UHJvcGVydHlOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lOjpwdWJsaWNO
YW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lOjphc0luZGV4KToKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1l
QXJyYXk6OmFkZCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6YWRkS25vd25VbmlxdWUpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAg
ICAgICAgKiBydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
U2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1l
c0Zyb21TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNl
cHRpb24pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1z
eW1ib2xzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvckluKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0U3ltYm9s
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qczogQWRk
ZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanM6IEFkZGVkLgor
CiAyMDE1LTAyLTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIFVzZSB0aGUgd2F5IG51bWJlciBjb25zdGFudHMgYXJlIHdyaXR0ZW4gdG8g
aGVscCB0eXBlIHNwZWN1bGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI0OWYwOGUxZWExNWMxNTQ5MDBmNzRjNjFmY2Y0
MTI2ODk0YmYwZjAuLjRjNzVlMGI4YTFiNjM2MDlkYmU0MDc5MWY4YWI3NDQ3YTQ1YzM1NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDcgQEAKKzIwMTUtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnRyb2R1Y2UgU3RyaW5nS2luZCBpbnRvIGBTdHJpbmdJbXBsYC4gVGhlcmUncyA0IGtpbmRz
CisgICAgICAgIDEpIFN0cmluZ05vcm1hbCAobm90IHByaXZhdGUsIG5vdCBhdG9taWMsIG5vdCB1
bmlxdWUpLCAyKSBTdHJpbmdBdG9taWMgKG5vdCBwcml2YXRlLCBhdG9taWMsIG5vdCB1bmlxdWUp
LAorICAgICAgICAzKSBTdHJpbmdVbmlxdWUgKG5vdCBwcml2YXRlLCBub3QgYXRvbWljLCB1bmlx
dWUpIGFuZCA0KSBTdHJpbmdVbmlxdWVQcml2YXRlIChwcml2YXRlLCBub3QgYXRvbWljLCB1bmlx
dWUpLgorICAgICAgICBUaGV5IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisKKyAgICAgICAgU3Ry
aW5nVW5pcXVlUHJpdmF0ZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGF0IHRoZSB0YXJnZXQgc3Ry
aW5nIGlzIHVzZWQgZm9yIGEgcHJpdmF0ZSAocHJpdmlsZWdlZCkgbmFtZS4KKworICAgICAgICAq
IHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6
YWRkU2xvd0Nhc2UpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmRTbG93Q2FzZSk6
CisKKyAgICAgICAgV2hlbiByZWdpc3RlcmluZyBhIHN0cmluZyBpbnRvIEF0b21pY1N0cmluZ1Rh
YmxlLCBpdCBzaG91bGQgbm90IGJlIGFuIHVuaXF1ZSBzdHJpbmcgYmVjYXVzZSB1bmlxdWUgdHlw
ZXMgYW5kIGF0b21pYyB0eXBlIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisgICAgICAgIFdoZW4g
YW4gdW5pcXVlIHN0cmluZyBjb21lcywgd2UgZXh0cmFjdCBhbiBvd25lciBzdHJpbmcgZnJvbSBh
biB1bmlxdWUgc3RyaW5nIGJ5IHVzaW5nIGBTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5n
SW5VbmlxdWUoKWAuIEl0IGFsd2F5cyBzdWNjZWVkcyBiZWNhdXNlIGFuIHVuaXF1ZSAobm9uIGVt
cHR5KSBzdHJpbmcgaXMgYWx3YXlzIEJ1ZmZlclN1YnN0cmluZyBhbmQgaGFzIGFuIG93bmVyIHN0
cmluZy4KKyAgICAgICAgRW1wdHkgdW5pcXVlIChhbmQgdW5pcXVlIHByaXZhdGUpIHN0cmluZyBk
b2Vzbid0IGhhdmUgYW4gb3duZXIgc3RyaW5nLiBUaGlzIGNhc2UgaXMgZmlsdGVyZWQgYnkgYCFz
dHJpbmcubGVuZ3RoKClgIGd1YXJkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6YWRkKToKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nOjphZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcik6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1
ZSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpTdHJpbmdJbXBsKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlVW5p
cXVlRW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVQcml2YXRl
RW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNOb3RBdG9taWMpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjptYXNrU3RyaW5nS2luZCk6CisgICAgICAgIChXVEY6OlN0
cmluZ0ltcGw6OnN0cmluZ0tpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjppc1VuaXF1
ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzUHJpdmF0ZSk6CisgICAgICAgIChXVEY6
OlN0cmluZ0ltcGw6OmlzQXRvbWljKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c2V0SXNB
dG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5V
bmlxdWUpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNBdG9taWMpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNVbmlxdWUpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUpOgorCiAyMDE1LTAyLTI3ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIFBvc3NpYmx5TnVsbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGRjYjBlZmZkMjNkOTc5Y2NlMzMyZjA4YTM2ZjJmNjk4OWE2MTk5NzkuLjdh
NmY1N2FlMzA4MjdkMGYzODgzN2UwZDgzNmY1MmEwNjljMDNiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDMgQEAKKzIwMTUtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
czoganMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5odG1sCisgICAgICAgICAgICAg
ICBqcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5Lmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5bWJv
bC1zZWFsLWFuZC1mcmVlemUuaHRtbAorICAgICAgICAgICAgICAganMvc3ltYm9sLXdpdGgtanNv
bi5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6
ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6
OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlj
dGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRp
b25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldEpTTGlzdGVuZXJGdW5jdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRIYXNoQWxnb3JpdGhtKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0SlNBcnJheUZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFN0
cmluZ0Zyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJvb2xlYW5Gcm9tSlNPTik6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRUb0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRKU09O
Rm9yUlNBQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjphZGRCb29sVG9KU09OKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFkZFVzYWdlc1RvSlNPTik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJp
bmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWZpbmVP
d25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWFkQWNjZWxlcmF0aW9uQXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFJvdGF0
aW9uUmF0ZUFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2VsZXJhdGlvbk9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5k
bGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3Vt
ZW50OjphbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OnNldEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6b3Blbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJREJP
YmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VE
YXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNM
YXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExpc3Rl
bmVyOjppbml0aWFsaXplSlNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2Rl
RmlsdGVyQ29uZGl0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNvbmRp
dGlvbjo6YWNjZXB0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRS
b3dMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93TGlz
dDo6aXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRJbnRlcm5hbFNsb3RUb09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRJbnRl
cm5hbFNsb3RGcm9tT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlh
bGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6
ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgtW1dl
YlNjcmlwdE9iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVudHM6XSk6CisgICAg
ICAgICgtW1dlYlNjcmlwdE9iamVjdCBzZXRWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dl
YlNjcmlwdE9iamVjdCB2YWx1ZUZvcktleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0
IHJlbW92ZVdlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IGhhc1dl
YlNjcmlwdEtleTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRB
cnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFy
cmF5Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlT
ZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyNENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVj
dC5jcHA6CisgICAgICAgIChfTlBOX0VudW1lcmF0ZSk6CisgICAgICAgICogYnJpZGdlL2MvY191
dGlsaXR5LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmlkZW50aWZpZXJGcm9tTlBJZGVu
dGlmaWVyKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZSk6Cisg
ICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1l
QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS90ZXN0YmluZGlu
Z3MuY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5t
bToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6RXh0ZW5zaW9uc01hbmFnZXI6OmxvYWRUcmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpFeHRlbnNpb25zTWFuYWdlcjo6bG9hZEFjdGlvbik6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAgICAgICogdGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjppbmplY3RJbnRl
cm5hbHNPYmplY3QpOgorCiAyMDE1LTAyLTI4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEZ1bGxzY3JlZW4gdmlkZW8gbGF5ZXJzIGFyZSBvZmYgYnkg
b25lIHNvbWV0aW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDE3NmQwZjM5ZGZkYzZlYzk4N2YzOWU1
NThkOWQxNGRjMjdiNjU5N2IuLmNlNzA1ZDU1MDNiYWI5MTEyZDEwZjk2MjQ3Y2ExMmNiMzk4MWEx
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wMi0yOCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0
UHJveHkubW06CisgICAgICAgIChpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXApOgorICAgICAg
ICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUpOgorICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6
OlByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMpOgorCiAyMDE1LTAyLTI2ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpIHRvIERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBiZjZhODU4ZGQ1NWEzOGJkYjYwYmVmMTUyNjY1ZDk1ZmE1NDVhOTYwLi44YzA5YjBiZDY3ZmQy
M2ViNWM2MGNhMjNjZmQwZjM3YmUxNWI3MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTUtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjppZGVudGlmaWVyRnJvbUlk
ZW50aWZpZXJSZXApOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJhdGUpOgor
CiAyMDE1LTAyLTI4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRmV0Y2ggY2FjaGUgb3JpZ2lucyBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKaW5kZXggOTlhMDlkZmVhMTBjMWNhMTNjMTU2Nzg3ZWIwN2FmODljYTQyNDYyMy4uZmUwMWQw
NzUzM2NhZDUxMzE1MTVhN2Q5MGEzY2U0MzNlOTMzNmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUxNiw4
ICs1MTYsMTAgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGUKICAgICAgICAgICAgIGZvciAoaXRl
cmF0b3IgaXQgPSBzdGF0aWNWYWx1ZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwogICAgICAgICAg
ICAgICAgIFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdldCgpOwotICAgICAg
ICAgICAgICAgIGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMg
JiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKG1vZGUpKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
SWRlbnRpZmllcihleGVjLCBuYW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKG5hbWUtPmlzUHJp
dmF0ZSgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBp
ZiAoZW50cnktPmdldFByb3BlcnR5ICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKCkpKQorICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
Ojpmcm9tVWlkKGV4ZWMsIG5hbWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICAKQEAgLTUyNyw4ICs1MjksMTAgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGUKICAgICAgICAg
ICAgIGZvciAoaXRlcmF0b3IgaXQgPSBzdGF0aWNGdW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewogICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5Lmdl
dCgpOwogICAgICAgICAgICAgICAgIFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gaXQtPnZh
bHVlLmdldCgpOwotICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcyhtb2RlKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
ZmllcihleGVjLCBuYW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKG5hbWUtPmlzUHJpdmF0ZSgp
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoIShl
bnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IG1vZGUu
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQorICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIG5hbWUpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKaW5kZXggMjM0ZDI0ODhmZjg5MGI4YmVlNjk3ZWY1NWFhNjgwMzgwYTE4MWE0
Mi4uNTkwYTUzNzAxNjk5NTJiMTI5ZjBhMzQ0NjRjZDRhNWU4ZWYzZWE0MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1Jl
ZiBuYW1lLCB1bnNpZ25lZCBwYQogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAg
ICBzdGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwot
ICAgIElkZW50aWZpZXIgbmFtZUlEID0gbmFtZSA/IG5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPnZt
KCkpIDogSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7CisgICAgSWRlbnRpZmllciBuYW1l
SUQgPSBuYW1lID8gbmFtZS0+aWRlbnRpZmllcigmZXhlYy0+dm0oKSkgOiBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJhbm9ueW1vdXMiKTsKICAgICAKICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmdzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJDb3VudDsg
aSsrKQpAQCAtNjk4LDcgKzY5OCw3IEBAIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgSlNPYmplY3RD
b3B5UHJvcGVydHlOYW1lcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgICAgSlNP
YmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTUHJvcGVydHlOYW1lQXJyYXlS
ZWYgcHJvcGVydHlOYW1lcyA9IG5ldyBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5KHZtKTsKICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBhcnJheSh2bSk7Ci0gICAganNPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlO
YW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGFycmF5LnNpemUoKTsKICAgICBw
cm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAppbmRleCAyMmMxNjIzMGM3
YzFkMzY5MTFjN2Q1ODljZTUwZjA5NDI4N2ExZDllLi43ZjllZGI0MTM2ZTI3NDk5NzQ3ZDI5NmQy
ZjFhMmRjNDg5YjA0NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09w
YXF1ZUpTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpT
U3RyaW5nLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3
Lmg+CiAKQEAgLTY5LDkgKzcwLDkgQEAgSWRlbnRpZmllciBPcGFxdWVKU1N0cmluZzo6aWRlbnRp
ZmllcihWTSogdm0pIGNvbnN0CiAgICAgICAgIHJldHVybiBJZGVudGlmaWVyKElkZW50aWZpZXI6
OkVtcHR5SWRlbnRpZmllcik7CiAKICAgICBpZiAobV9zdHJpbmcuaXM4Qml0KCkpCi0gICAgICAg
IHJldHVybiBJZGVudGlmaWVyKHZtLCBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpLCBtX3N0cmluZy5s
ZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBtX3N0
cmluZy5jaGFyYWN0ZXJzOCgpLCBtX3N0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gSWRl
bnRpZmllcih2bSwgbV9zdHJpbmcuY2hhcmFjdGVyczE2KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsK
KyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbV9zdHJpbmcuY2hhcmFjdGVy
czE2KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAogY29uc3QgVUNoYXIqIE9wYXF1ZUpTU3Ry
aW5nOjpjaGFyYWN0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggMmRmNzg3NjQxMGU3OGNmOWZhYmYyNDE3
ODZlNjAyNDJmZTRlZWUwOS4uZjNhMjIzOGViYTk4ZmMxMjgyN2I4MWRlZjJjODBjNjMxNGNlMDVl
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0
aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogCiAgICAgSlNM
b2NrSG9sZGVyIGxvY2sobV9leGVjKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlzT2Jq
ZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyKG1fZXhlYywgbV9uYW1lKSk7CisgICAgSlNWYWx1
ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChtX2V4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcobV9leGVjLCBtX25hbWUpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkgewog
ICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwogICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
VmFsdWUuY3BwCmluZGV4IDc2YTdiMTExYThkODc3YTY3OWI1YzhiOGU4OTZlMWE3YjFiNmI4YWMu
LjVhMDViYTg5YjllOTBjYTk0MDdjYTNhOGVhZTYyMDc0NzI4YTEyZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTM3LDcgKzEzNyw3
IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlLCBKU1ZhbHVlCiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+
IGluc3BlY3Rvck9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIEpT
T2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICAgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydHlOYW1lcyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIG9iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIHNjcmlwdFN0YXRlLCBwcm9wZXJ0
eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykg
ewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSA9IHByb3BlcnR5TmFtZXNbaV07
CiAgICAgICAgICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdldChzY3JpcHRT
dGF0ZSwgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDYxMmQ2NDU1MjM4ZGZjNTIwY2JiYjNmMTFmY2Fm
YzcwZmVhZTE2MTcuLjMyZGY5M2MyMzRiYTEwYmZhODg0MjJlMjFmYzM1NmNiNjdhOTE3MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBC
dWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvCiAgICAg
ICAgIAogICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51
bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNVbmlxdWUoKSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGNsb3NlZFZhcmlhYmxlLT5pc1ByaXZhdGUoKSk7CiAgICAgfQogICAgIGJvZHkt
Pm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92
bSwgc291cmNlLCBib2R5LCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggOWI4ODk2Yjk2ODAxNDkx
M2Y0NmIzMmM0ODBlMDU3ODk2Mzc5ZGZhNC4uNDkzMDllZDYzMmQzNmI2M2EwYjg5MmVmYTc5ZmM4
YjgwODZhZjRhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaApAQCAtMzEsMTIgKzMxLDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogICAgIAotI2Rl
ZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUp
LCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZShBU0NJ
SUxpdGVyYWwoIlN5bWJvbC4iICNuYW1lKSkpKQotI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fTkFN
RVMobmFtZSkgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmllciBtXyMj
bmFtZSMjUHJpdmF0ZU5hbWU7OworI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFt
ZSkgLCBtXyMjbmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpLCBtXyMjbmFt
ZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZShQcml2YXRlTmFt
ZTo6Q3JlYXRlUHJpdmF0ZSkpKQorI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkg
Y29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJp
dmF0ZU5hbWU7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5h
bWUpIFwKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV8jI25hbWU7IH0gXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1ByaXZhdGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1ByaXZhdGVOYW1lOyB9CiAKKyNkZWZpbmUg
SU5JVElBTElTRV9CVUlMVElOX1NZTUJPTFMobmFtZSkgSU5JVElBTElTRV9CVUlMVElOX05BTUVT
KG5hbWUpLCBtXyMjbmFtZSMjU3ltYm9sKElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUo
QVNDSUlMaXRlcmFsKCJTeW1ib2wuIiAjbmFtZSkpKSkKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElO
X1NZTUJPTFMobmFtZSkgREVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUpIGNvbnN0IElkZW50aWZp
ZXIgbV8jI25hbWUjI1N5bWJvbDsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NF
U1NPUihuYW1lKSBcCisgICAgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IobmFt
ZSkgXAorICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJu
IG1fIyNuYW1lIyNTeW1ib2w7IH0KKwogI2RlZmluZSBJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVC
TElDX0VOVFJZKG5hbWUpIG1fcHJpdmF0ZVRvUHVibGljTWFwLmFkZChtXyMjbmFtZSMjUHJpdmF0
ZU5hbWUuaW1wbCgpLCAmbV8jI25hbWUpOwogI2RlZmluZSBJTklUSUFMSVNFX1BVQkxJQ19UT19Q
UklWQVRFX0VOVFJZKG5hbWUpIG1fcHVibGljVG9Qcml2YXRlTWFwLmFkZChtXyMjbmFtZS5pbXBs
KCksICZtXyMjbmFtZSMjUHJpdmF0ZU5hbWUpOwogICAgIApAQCAtNDgsMTEgKzU0LDE0IEBAIGNs
YXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgICAgIDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRl
bnRpZmllcnMtPmVtcHR5SWRlbnRpZmllcikKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxU
SU5fTkFNRVMpCisgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dF
TExfS05PV05fU1lNQk9MKElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAg
ICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9U
T19QVUJMSUNfRU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAg
ICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1C
T0woSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5U
UlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZ
X05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElT
RV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVy
KiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjks
MTMgQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJF
X0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FD
Q0VTU09SKQogCiBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CiAg
ICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1F
UykKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1F
KERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklF
UlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MUykKICAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBjb25zdCBJZGVudGlmaWVyKiwgSWRl
bnRpZmllclJlcEhhc2g+IEJ1aWx0aW5OYW1lc01hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9w
dWJsaWNUb1ByaXZhdGVNYXA7CiAgICAgQnVpbHRpbk5hbWVzTWFwIG1fcHJpdmF0ZVRvUHVibGlj
TWFwOwpAQCAtNzMsNyArODQsOSBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewogI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9OQU1FUwogI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUwogI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SCi0KKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU1lNQk9MUworI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUgogCiBpbmxpbmUgY29uc3QgSWRlbnRpZmll
ciogQnVpbHRpbk5hbWVzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdEFsbG9jYXRpb25Qcm9maWxlLmgKaW5kZXggOWE5ZGIwYmM3MGI5ZjEzNWY2NWRkMmQ3OTZk
ZTY1Mjg5NmFlMGZiMS4uNTc4MGYwMGM3MjgxNGEzMTg1MGUxYzgyYTVhZGMyZTJlYjI4ODMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRp
b25Qcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZSB7CiAKICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lQXJyYXkoJnZtKTsKLSAgICAgICAgcHJvdG90eXBlLT5z
dHJ1Y3R1cmUoKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFt
ZUFycmF5LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgcHJvdG90eXBlLT5z
dHJ1Y3R1cmUoKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFt
ZUFycmF5LCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNs
dWRlU3ltYm9scyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1l
VmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnBy
b3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3Bl
cnR5TmFtZVZlY3Rvci5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IHByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAppbmRleCA3Yjk0N2NkODQ5MGFlYjYyOWQxN2VmMDQ4ZmYxZjQwYmQzODkwYTY5Li42
NzQ5NzQ3Mzg5ZjJkMzJlOTJhYjY0ZTVmNTk2MjMwNDFlNTVlNmNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cApAQCAtNDM4LDcgKzQzOCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAgICAgVmVjdG9y
PElkZW50aWZpZXIsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiB2YXJpYWJsZXM7CiAgICAgdmFy
aWFibGVzLnJlc2VydmVDYXBhY2l0eShudW1WYXJpYWJsZXMpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtVmFyaWFibGVzOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKHZhclN0YWNrW2ld
LmZpcnN0LmltcGwoKS0+aXNBdG9taWMoKSk7CisgICAgICAgIEFTU0VSVCh2YXJTdGFja1tpXS5m
aXJzdC5pbXBsKCktPmlzQXRvbWljKCkgfHwgdmFyU3RhY2tbaV0uZmlyc3QuaW1wbCgpLT5pc1Vu
aXF1ZSgpKTsKICAgICAgICAgdmFyaWFibGVzLmFwcGVuZCh2YXJTdGFja1tpXS5maXJzdCk7CiAg
ICAgfQogICAgIGNvZGVCbG9jay0+YWRvcHRWYXJpYWJsZXModmFyaWFibGVzKTsKQEAgLTIzNjks
NyArMjM2OSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BUcnlBbmRFbWl0
Q2F0Y2goVHJ5RGF0YSogdHJ5RGF0YSwgUmVnaXN0ZXJJRCoKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAg
ICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcihtX3Zt
LCBtZXNzYWdlKSkpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29u
c3RhbnRWYWx1ZShhZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0s
IG1lc3NhZ2UpKSktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0cnVlKTsK
IH0KIApAQCAtMjUzNiw3ICsyNTM2LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJl
YWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKQogICAgIGlmICghaXNTdHJpY3RNb2RlKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0YXRpY19lcnJvcik7Ci0gICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQo
SWRlbnRpZmllcihtX3ZtLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSkt
PmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFk
ZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXI6OmZyb21TdHJpbmcobV92bSwgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSkpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmFsc2UpOwogfQogICAgIApAQCAtMjU3MCw3ICsyNTcwLDcgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBu
b2RlLCBFeHByZXNzaW8KICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gbmV3TGFiZWxTY29wZShM
YWJlbFNjb3BlOjpMb29wKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVjdCA9IG5ld1Rl
bXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3ROb2RlKTsKLSAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgc3ViamVjdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUpOwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFy
eSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAg
IHsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCAwKTsKICAgICAgICAgZW1pdE1v
dmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgc3ViamVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKaW5kZXggNjBhNDk0
ZGRjZjRiMTUzODFhY2FmMGM1ODE4OTY0NjRlN2EyZTQzYi4uNjVjMzAxZGJlZTE2ZDNmNzRiNTQy
N2I3YTBmNjkyNDg4NDFjNGUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIERlc2ly
ZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKFZNJiB2bSwgQ29tbW9uRGF0YSogY29tbW9uRGF0YSkK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hZGRlZElkZW50aWZpZXJzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIFN0cmluZ0ltcGwqIHJlcCA9IG1fYWRkZWRJZGVudGlmaWVyc1tpXTsK
ICAgICAgICAgQVNTRVJUKHJlcC0+aGFzQXRMZWFzdE9uZVJlZigpKTsKLSAgICAgICAgY29tbW9u
RGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIoJnZtLCByZXApKTsKKyAgICAg
ICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQo
JnZtLCByZXApKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMDYxYjU0ODA1MTM5NTM5NGMzNzIwOGYzZmFlMTVl
Y2NjYjhjZDk3YS4uYmRhNGQyMjY2OWRiZGY5MWExOWU1NDA1ZTNhNDllYWUyNGVlM2FjOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTQ3NDgsOSArNDc0OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ0lk
ZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nCiAgICAgICAgIG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0b3JhZ2UpKTsKICAgICBzcGVj
dWxhdGlvbkNoZWNrKAogICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChzdHJpbmcpLCBlZGdlLCBtX2ppdC5icmFuY2hUZXN0MzIoCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6WmVybywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLAogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZSwgU3RyaW5nSW1wbDo6Zmxh
Z3NPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0
cmluZ0ltcGw6OmZsYWdJc0F0b21pYygpKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXNOb3RBdG9taWMoKSkpKTsKICAgICAKICAg
ICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5nSWRlbnQgfCB+U3BlY1N0cmlu
Zyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCmluZGV4IDJkNmRhZGNiY2YyZmI4NzMxZTg3YTI0Yjg4Njc2NTNkNjg2MTE5MTguLjNlYTA0
YWRkZTVjMGU3ODQ5MTk0NzhmZTY5OTYzZThlMWZjNWM4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC02NDQyLDkgKzY0NDIsOSBA
QCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBqc1Zh
bHVlVmFsdWUoc3RyaW5nKSwgZWRnZS5ub2RlKCksIG1fb3V0LmlzTnVsbChzdHJpbmdJbXBsKSk7
CiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShz
dHJpbmcpLCBlZGdlLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKKyAg
ICAgICAgICAgIG1fb3V0LnRlc3ROb25aZXJvMzIoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9h
ZDMyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9oYXNoQW5kRmxhZ3MpLAotICAgICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7
CisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXNOb3RB
dG9taWMoKSkpKTsKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIoZWRnZSwgU3BlY1N0cmlu
Z0lkZW50IHwgflNwZWNTdHJpbmcpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXgg
NWIzZDNlNmQzZTE1NWVmZmFiZWEzMzY5ZDk4YjVlN2QwMGY3ZDY0Yy4uYzYxMDgwMGU1OWMxZDlj
OWRkY2JjYTdhMmJmMTc3OTI2ODU2Y2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTE3NywxOSAr
MTc3LDE5IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uRGV0YWlscyhF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICBTdHJpbmcgc2NyaXB0SUQgPSBTdHJpbmc6Om51bWJlcihz
b3VyY2VDb2RlLT5wcm92aWRlcigpLT5hc0lEKCkpOwogICAgIEpTT2JqZWN0KiBsb2NhdGlvbiA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAibGluZU51bWJlciIpLCBqc051bWJlcihsaW5lTnVt
YmVyKSk7Ci0gICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJzY3JpcHRJZCIpLCBqc1N0cmluZyhleGVjLCBzY3JpcHRJRCkpOworICAgIGxvY2F0aW9u
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGlu
ZU51bWJlciIpLCBqc051bWJlcihsaW5lTnVtYmVyKSk7CisgICAgbG9jYXRpb24tPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzY3JpcHRJZCIpLCBq
c1N0cmluZyhleGVjLCBzY3JpcHRJRCkpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9uIiksIGxvY2F0aW9uKTsKKyAgICByZXN1bHQtPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb2NhdGlv
biIpLCBsb2NhdGlvbik7CiAKICAgICBTdHJpbmcgbmFtZSA9IGZ1bmN0aW9uLT5uYW1lKGV4ZWMp
OwogICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkp
OworICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKIAogICAgIFN0cmlu
ZyBkaXNwbGF5TmFtZSA9IGZ1bmN0aW9uLT5kaXNwbGF5TmFtZShleGVjKTsKICAgICBpZiAoIWRp
c3BsYXlOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcihleGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmcoZXhlYywgZGlzcGxh
eU5hbWUpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmcoZXhlYywgZGlzcGxh
eU5hbWUpKTsKIAogICAgIC8vIEZJWE1FOiBwcm92aWRlIGZ1bmN0aW9uIHNjb3BlIGRhdGEgaW4g
InNjb3Blc1JhdyIgcHJvcGVydHkgd2hlbiBKU0Mgc3VwcG9ydHMgaXQuCiAgICAgLy8gPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzg3MTkyPiBbSlNDXSBleHBvc2UgZnVuY3Rpb24gKGNsb3N1cmUpIGlu
bmVyIGNvbnRleHQgdG8gZGVidWdnZXIKQEAgLTIwMCw4ICsyMDAsOCBAQCBKU1ZhbHVlIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBleGVjKQogc3RhdGlj
IEpTT2JqZWN0KiBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBuYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEpTT2JqZWN0KiByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsK
LSAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ2YWx1
ZSIpLCB2YWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAibmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1lKSk7CisgICAg
cmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAidmFsdWUiKSwgdmFsdWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI2Nyw4ICsy
NjcsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWFrTWFwRW50cmllcyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4
ZWMsIG51bGxwdHIpOwogICAgIGZvciAoYXV0byBpdCA9IHdlYWtNYXAtPndlYWtNYXBEYXRhKCkt
PmJlZ2luKCk7IGl0ICE9IHdlYWtNYXAtPndlYWtNYXBEYXRhKCktPmVuZCgpOyArK2l0KSB7CiAg
ICAgICAgIEpTT2JqZWN0KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAg
ICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImtleSIp
LCBpdC0+a2V5KTsKLSAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJ2YWx1ZSIpLCBpdC0+dmFsdWUuZ2V0KCkpOworICAgICAgICBlbnRyeS0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleSIpLCBp
dC0+a2V5KTsKKyAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJ2YWx1ZSIpLCBpdC0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBh
cnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgZmV0Y2hlZCsrLCBlbnRyeSk7CiAgICAgICAgIGlm
IChudW1iZXJUb0ZldGNoICYmIGZldGNoZWQgPj0gbnVtYmVyVG9GZXRjaCkKICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAppbmRleCBiMDY5MDczZjgw
ODIwODBiZWVmY2ZhNzE0MDUwNjY5ZjI1ZjE2NTU5Li4xMTQ4NGVkYTdjZThjOTAxY2NkNTZlZjFi
NThmOTE4YWY0MGViOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcApAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04oImlzSFRNTEFsbENvbGxlY3Rpb24iLCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbiwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04oIndlYWtNYXBFbnRyaWVzIiwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGVGdW5jdGlvbldlYWtNYXBFbnRyaWVzLCBEb250RW51bSwgMSk7CiAKLSAgICBJZGVudGlmaWVy
IGV2YWx1YXRlSWRlbnRpZmllcigmdm0sICJldmFsdWF0ZSIpOworICAgIElkZW50aWZpZXIgZXZh
bHVhdGVJZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJldmFsdWF0ZSIp
OwogICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCBldmFsdWF0ZUlkZW50aWZpZXIuc3RyaW5nKCksIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUpOwogICAgIGFjY2Vz
c29yLT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRD
YWxsRnJhbWVQcm90b3R5cGUuY3BwCmluZGV4IDU4YmI2OGIwYTFmMzg4ZjIxY2FmOGI1ZjYyMmNh
ZDc3YjIwNzllMmQuLjQ4MjgzODY1MjRkYzI2YWI0NmM4NDEzNTY4MzFjNzBkYzZlOWZmMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgY29u
c3QgQ2xhc3NJbmZvIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZTo6c19pbmZvID0geyAi
SmF2YVNjcmlwdENhbGxGcmFtZSIKIAogI2RlZmluZSBKU0NfTkFUSVZFX05PTl9JTkRFWF9BQ0NF
U1NPUihqc05hbWUsIGNwcE5hbWUsIGF0dHJpYnV0ZXMpIFwKICAgICB7IFwKLSAgICAgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyKCZ2bSwganNOYW1lKTsgXAorICAgICAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwganNOYW1lKTsgXAogICAgICAg
ICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCk7IFwKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgaWRlbnRpZmllci5zdHJpbmcoKSwgY3BwTmFtZSk7
IFwKICAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlv
bik7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4IDI3ZGMwOTliZGI1OGIwNzQzYTNiYjZlMTVh
MmQzMGQ1M2IwMWJjYjIuLmY5ZjZjMWM0OWFhYTYwNmEzNzMzNDhiNmUyZDhmYzI3MGZjZGU4YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtMTE5LDExICsxMTksMTEgQEAgUGFzc1JlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMKIHN0YXRpYyB2b2lkIGV4dHJhY3RTb3VyY2VJbmZvcm1hdGlvbkZyb21FeGNl
cHRpb24oSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBleGNlcHRpb25PYmplY3QsIGlu
dCogbGluZU51bWJlciwgaW50KiBjb2x1bW5OdW1iZXIsIFN0cmluZyogc291cmNlVVJMKQogewog
ICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTUwODc+IFdlYiBJbnNwZWN0b3I6
IFNob3VsZCBub3QgbmVlZCB0byBldmFsdWF0ZSBKYXZhU2NyaXB0IGhhbmRsaW5nIGV4Y2VwdGlv
bnMKLSAgICBKU1ZhbHVlIGxpbmVWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImxpbmUiKSk7CisgICAgSlNWYWx1ZSBsaW5lVmFs
dWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwogICAgICpsaW5lTnVtYmVyID0gbGluZVZhbHVlICYm
IGxpbmVWYWx1ZS5pc051bWJlcigpID8gaW50KGxpbmVWYWx1ZS50b051bWJlcihleGVjKSkgOiAw
OwotICAgIEpTVmFsdWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1bW4iKSk7CisgICAgSlNWYWx1ZSBjb2x1
bW5WYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbHVtbiIpKTsKICAgICAqY29sdW1uTnVtYmVyID0gY29s
dW1uVmFsdWUgJiYgY29sdW1uVmFsdWUuaXNOdW1iZXIoKSA/IGludChjb2x1bW5WYWx1ZS50b051
bWJlcihleGVjKSkgOiAwOwotICAgIEpTVmFsdWUgc291cmNlVVJMVmFsdWUgPSBleGNlcHRpb25P
YmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJzb3VyY2VVUkwi
KSk7CisgICAgSlNWYWx1ZSBzb3VyY2VVUkxWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNvdXJjZVVSTCIp
KTsKICAgICAqc291cmNlVVJMID0gc291cmNlVVJMVmFsdWUgJiYgc291cmNlVVJMVmFsdWUuaXNT
dHJpbmcoKSA/IHNvdXJjZVVSTFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSA6IEFT
Q0lJTGl0ZXJhbCgidW5kZWZpbmVkIik7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDQ2MTE2
N2FlNjU0MTBmNDI2ZDdlODc4NDIwNzhlMDIwMDhhNzE1NTUuLmFmNjE0MWE5ZDNkOTBmMWQ4Yzg5
YjZkOTdjNWExZGY3OWM5ZWRmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZv
CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAg
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICBJZGVudGlmaWVyIGlkZW50KHZt
LCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVu
dCwgc2xvdCkpOwogfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAg
SWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFj
Y2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFz
ZSk7CkBAIC0xNzksNyArMTc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUKIHsKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc1VuaXF1ZSgpID8gSWRlbnRp
Zmllcjo6ZnJvbShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7CisgICAg
SWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlVmFsdWUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJCiAgICAgCiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCi0gICAgSWRlbnRpZmllciBpZGVudCh2
bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
a2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJlc3VsdCA9IGFz
T2JqZWN0KGJhc2UpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIApA
QCAtMjMwLDcgKzIzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
SW4oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgSWRlbnRpZmll
ciBpZGVudCh2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwga2V5KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09i
amVjdChiYXNlKS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKSk7CiB9CiAKQEAgLTI0Nyw3ICsy
NDcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAg
IElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRD
b250ZXh0KCkpOwogICAgIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlk
ZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yNTcsNyAr
MjU3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAg
ICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJ
ZENvbnRleHQoKSk7CiAgICAgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywg
aWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI2Nyw3
ICsyNjcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmlj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbgogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAot
ICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5
SWRDb250ZXh0KCkpOwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkp
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpLCBzbG90KTsKIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0
dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Cisg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgZmFsc2Us
IGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBhc09iamVjdChKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yODcsNyArMjg3LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVu
dGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZp
ZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBp
ZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50
KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5
cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0s
IHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVp
ZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4o
c3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlk
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsK
ICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHVi
SW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3QKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBT
dHIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKQEAgLTEzOTEsMTAgKzEzOTEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEFyZ3VtZW50c0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIGludDMy
XwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICAvLyBI
ZXJlIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGUgYXJndW1lcm50cyB3ZXJlIGNyZWF0ZWQuIEJlY2F1
c2Ugb3RoZXJ3aXNlIHRoZSBKSVQgY29kZSB3b3VsZAogICAgIC8vIGhhdmUgbm90IG1hZGUgdGhp
cyBjYWxsLgotICAgIElkZW50aWZpZXIgaWRlbnQoJnZtLCAibGVuZ3RoIik7CiAgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBleGVjLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVl
KCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwgc2xvdCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDBiYzBkN2Yy
ZWUwNDdhZTJlZTUxZTAyNWNjZDcwZDg4YjMxNDRkNmYuLjc2YTNhODBiMTY0ZWNkMjdkN2VlZjll
NzRiNTM1YjI2NDRkZTk5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC02MTgsMTEgKzYxOCwx
MSBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgICAg
ICBhZGRGdW5jdGlvbih2bSwgImdldEVsZW1lbnQiLCBmdW5jdGlvbkdldEVsZW1lbnQsIDEpOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldEVsZW1lbnRSb290IiwgZnVuY3Rpb25TZXRFbGVt
ZW50Um9vdCwgMik7CiAgICAgICAgIAotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2
bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJERkdUcnVlIiksIDAsIGZ1bmN0aW9uRmFsc2UxLCBE
RkdUcnVlSW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAgICAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJPU1JFeGl0Iiks
IDAsIGZ1bmN0aW9uVW5kZWZpbmVkMSwgT1NSRXhpdEludHJpbnNpYywgRG9udEVudW0gfCBKU0M6
OkZ1bmN0aW9uKTsKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElk
ZW50aWZpZXIoJnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVuY3Rpb25GYWxzZTIsIElzRmluYWxU
aWVySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAgICAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJwcmVkaWN0SW50MzIi
KSwgMCwgZnVuY3Rpb25VbmRlZmluZWQyLCBTZXRJbnQzMkhlYXBQcmVkaWN0aW9uSW50cmluc2lj
LCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJmaWF0SW50NTIiKSwgMCwgZnVuY3Rpb25J
ZGVudGl0eSwgRmlhdEludDUySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwor
ICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJERkdUcnVlIiksIDAsIGZ1bmN0aW9uRmFsc2UxLCBERkdUcnVlSW50cmlu
c2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJPU1JFeGl0Iiks
IDAsIGZ1bmN0aW9uVW5kZWZpbmVkMSwgT1NSRXhpdEludHJpbnNpYywgRG9udEVudW0gfCBKU0M6
OkZ1bmN0aW9uKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVuY3Rpb25GYWxz
ZTIsIElzRmluYWxUaWVySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAg
ICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJwcmVkaWN0SW50MzIiKSwgMCwgZnVuY3Rpb25VbmRlZmluZWQyLCBTZXRJbnQz
MkhlYXBQcmVkaWN0aW9uSW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAg
ICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJmaWF0SW50NTIiKSwgMCwgZnVuY3Rpb25JZGVudGl0eSwgRmlhdEludDUySW50
cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwogICAgICAgICAKICAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJlZmZlY3RmdWw0MiIsIGZ1bmN0aW9uRWZmZWN0ZnVsNDIsIDApOwogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgIm1ha2VNYXNxdWVyYWRlciIsIGZ1bmN0aW9uTWFrZU1hc3F1
ZXJhZGVyLCAwKTsKQEAgLTY0NCwyMCArNjQ0LDIwIEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0
RW1wdHlBcnJheShnbG9iYWxFeGVjKCksIDApOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJ
bmRleChnbG9iYWxFeGVjKCksIGksIGpzU3RyaW5nKGdsb2JhbEV4ZWMoKSwgYXJndW1lbnRzW2ld
KSk7Ci0gICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJhcmd1
bWVudHMiKSwgYXJyYXkpOworICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKICAgICAgICAgCi0gICAg
ICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjb25zb2xlIiksIGpz
VW5kZWZpbmVkKCkpOworICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZ2xvYmFsRXhlYygpLCAiY29uc29sZSIpLCBqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKICAg
ICB2b2lkIGFkZEZ1bmN0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllcigmdm0sIG5hbWUpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFtZSk7CiAgICAgICAgIHB1dERpcmVjdCh2
bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCBhcmd1bWVudHMsIGlk
ZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRk
Q29uc3RydWN0YWJsZUZ1bmN0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigmdm0sIG5hbWUpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFtZSk7CiAgICAgICAgIHB1dERpcmVj
dCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCBhcmd1bWVudHMs
IGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgZnVuY3Rpb24pKTsK
ICAgICB9CiB9OwpAQCAtODg5LDcgKzg4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKiBleGVjKQogICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYXJyYXktPnB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoaSkpOwogICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KAotICAgICAgICBleGVj
LT52bSgpLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRz
IiksIGFycmF5KTsKKyAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKICAgICBK
U1ZhbHVlIGV4Y2VwdGlvbjsKICAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoOwpAQCAtMTI3MCw3ICsx
MjcwLDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKICAgICAgICAgICAgIHByaW50ZigiRW5k
OiAlc1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkp
LT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBwcmludGYoIkV4Y2Vw
dGlvbjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24udG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksICJzdGFjayIpOworICAgICAgICAgICAgSWRlbnRpZmllciBzdGFja0lEID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7
CiAgICAgICAgICAgICBKU1ZhbHVlIHN0YWNrVmFsdWUgPSBldmFsdWF0aW9uRXhjZXB0aW9uLmdl
dChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc3RhY2tJRCk7CiAgICAgICAgICAgICBpZiAo
IXN0YWNrVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgICAgICBwcmludGYo
IiVzXG4iLCBzdGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+
dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBhYjAxNTAxYjEyOTE3ZDll
ZTgwZWQzMTUyM2Y5MjU4ZGM0NDJkYTJlLi5lZGZkNjcwMWRjMGYzZDU5MWNiMzc4ZDM5OThjYjdk
NDJmOTA0YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApA
QCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQog
ICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8aW50Kio+KCZ0ZXN0VmVjdG9yKVswXSA9PSB0ZXN0VmVj
dG9yLmJlZ2luKCkpOwogI2VuZGlmCiAKLSAgICBBU1NFUlQoU3RyaW5nSW1wbDo6c19oYXNoRmxh
ZzhCaXRCdWZmZXIgPT0gMzIpOworICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJp
dEJ1ZmZlciA9PSA4KTsKIH0KICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCBkNzFhM2VmZTc2ODlkZjlkZjVlODc5ZTYzZTgyNDdhYzgw
NDgzOTU3Li5hOTFlNDY3OTA2YjVhZmZmYTQ3ZGY3Y2VlN2I1ZTUyYzZmYzIzZTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0xNzYsNyArMTc2LDcgQEAgY29uc3QgRnVuY3Rpb25Db2RlID0gMgogY29uc3QgTExJbnRS
ZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKIAogIyBTdHJpbmcgZmxhZ3MuCi1j
b25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gMzIKK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIg
PSA4CiAKICMgQ29waWVkIGZyb20gUHJvcGVydHlPZmZzZXQuaAogY29uc3QgZmlyc3RPdXRPZkxp
bmVPZmZzZXQgPSAxMDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgK
aW5kZXggZmE2NDk1MWE5ZGYyYjZiNjQ1MDVmYTFlYTM3YTEwMDRiOWE4ZDk5Ni4uN2U5MWQzNzJj
MmY3YTAzOTY2NTgyOTg4YmQ1OWE1OTgwZjJiYjg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTU2Niw3ICs1NjYsNyBAQCBjbGFzcyBBU1RCdWlsZGVy
IHsKICAgICB7CiAgICAgICAgIGlmIChtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0g
KmlkZW50KQogICAgICAgICAgICAgdXNlc0FyZ3VtZW50cygpOwotICAgICAgICBBU1NFUlQoaWRl
bnQtPmltcGwoKS0+aXNBdG9taWMoKSk7CisgICAgICAgIEFTU0VSVChpZGVudC0+aW1wbCgpLT5p
c0F0b21pYygpIHx8IGlkZW50LT5pbXBsKCktPmlzVW5pcXVlKCkpOwogICAgICAgICBtX3Njb3Bl
Lm1fdmFyRGVjbGFyYXRpb25zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqaWRlbnQsIGF0dHJzKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNjMx
OGZkNjM2YmViM2U3YjkxZDI4ZjY0OTZhZWQ5YWY3YmQ4NzE4Yy4uNGY1YjEyNTY4OGM5MzZlMzU3
NDVkOTUyNjA0NmUyODQwYmMxMDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcApAQCAtMjg2LDEwICsyODYsMTAgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUlubmVyKCkKICAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOwogICAgICAg
ICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKLSAgICAgICAgICAgIGlmIChz
Y29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgp
KSkpCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmll
cjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFy
YW1ldGVyKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIGlm
IChzY29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2
YXJpYWJsZS5nZXQoKSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBpZiAodmFyaWFibGUgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkK
QEAgLTUxOCw3ICs1MTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNv
bnN0cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZQogICAgIEFTU0VSVCgh
bmFtZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbmFtZS5pc051bGwoKSk7CiAgICAgCi0gICAg
QVNTRVJUKG5hbWUuaW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlQobmFtZS5pbXBsKCkt
PmlzQXRvbWljKCkgfHwgbmFtZS5pbXBsKCktPmlzVW5pcXVlKCkpOwogICAgIGlmIChkZXB0aCkg
ewogICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvVmFyaWFibGVzKQogICAgICAgICAg
ICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJlVmFyaWFibGUoJm5hbWUpLCAiQ2Fubm90IGRl
Y29uc3RydWN0IHRvIGEgdmFyaWFibGUgbmFtZWQgJyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBzdHJp
Y3QgbW9kZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmlu
ZGV4IDQyN2I4NGNkYTUzMjMxYTU0NzA2ZjRjZWZlYzNkODFkNzhiNTBkZGIuLjQwZWNlNTNhMGI2
NDRjMDgyMDc5YzIyZGYwZjk0M2JjMjVkYmRhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTczLDIwICs3MywyMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gdm0tPnByb3BlcnR5TmFt
ZXMtPmVtcHR5SWRlbnRpZmllcjsKICAgICAgICAgaWYgKGNoYXJhY3RlcnNbMF0gPj0gTWF4aW11
bUNhY2hhYmxlQ2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJ
ZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1faWRlbnRp
ZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0
aCkpOwogICAgICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICAgICAgaWYgKElkZW50aWZpZXIq
IGlkZW50ID0gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dKQogICAgICAgICAgICAg
ICAgIHJldHVybiAqaWRlbnQ7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVu
dGlmaWVyKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmll
cnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkp
OwogICAgICAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gJm1faWRl
bnRpZmllcnMubGFzdCgpOwogICAgICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgp
OwogICAgICAgICB9CiAgICAgICAgIElkZW50aWZpZXIqIGlkZW50ID0gbV9yZWNlbnRJZGVudGlm
aWVyc1tjaGFyYWN0ZXJzWzBdXTsKICAgICAgICAgaWYgKGlkZW50ICYmIElkZW50aWZpZXI6OmVx
dWFsKGlkZW50LT5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1
cm4gKmlkZW50OwotICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKHZtLCBj
aGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgICAgIG1fcmVj
ZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSAmbV9pZGVudGlmaWVycy5sYXN0KCk7CiAg
ICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICB9CkBAIC0xMDIsNyArMTAy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAg
ICAgICAgaWYgKElkZW50aWZpZXIqIGlkZW50ID0gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3Rl
cnNbMF1dKQogICAgICAgICAgICAgICAgIHJldHVybiAqaWRlbnQ7Ci0gICAgICAgICAgICBtX2lk
ZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAg
ICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgICAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2No
YXJhY3RlcnNbMF1dID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICAgICAgcmV0dXJu
IG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICB9CkBAIC0xMTYsNyArMTE2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgaW5saW5lIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZp
ZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKFZNKiB2bSwgZG91YmxlIG51bWJlcikKICAg
ICB7Ci0gICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIodm0sIFN0cmluZzo6
bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG51bWJlcikpKTsKKyAgICAgICAgbV9pZGVudGlmaWVy
cy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5nOjpudW1iZXJUb1N0cmlu
Z0VDTUFTY3JpcHQobnVtYmVyKSkpOwogICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0
KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNw
cAppbmRleCA5ODU0OGQyYTQxZDg2Yjc3ZTVkNTdiZjQ3ZmNjZjk2MGY4MmZhOGI5Li5mZDkwM2U1
NGQxODBmZGJjYzJiYzg1YmMzNDg3MmEzNTJmOGJiMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTE4MCwxMCArMTgwLDEwIEBAIGJvb2wgQXJn
dW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hCiAKICAgICBpZiAoSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRv
clByaXZhdGVOYW1lKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuaXRlcmF0b3JTeW1ib2wpIHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKLSAgICAgICAgdGhpc09iamVjdC0+SlNDX05BVElWRV9GVU5DVElPTihleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRzRnVuY0l0ZXJhdG9y
LCBEb250RW51bSwgMCk7CisgICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJVkVfRlVOQ1RJT04o
ZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNGdW5jSXRlcmF0
b3IsIERvbnRFbnVtLCAwKTsKICAgICAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEFyZ3VtZW50czo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElk
ZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwogICAgIH0KLSAgICBpZiAoc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyhtb2RlKSkgeworICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMoKSkgewogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY2FsbGVlKTsKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4
IGQ3OWNjNTJlMDkyYmM2ZTkwYjQxYmJlNzk5OGMyYWI3MDdhYTNkMmMuLmM2OTA0ZmE1MDVhYjZh
NTZjZGYzMTUwMTc4ZWI0YzU0Mjc1ZmViM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAgdm9pZCBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBBU1NFUlQoaW5oZXJp
dHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAot
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRl
TmFtZSwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAw
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sLCBhcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDAp
OwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0
UHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVt
LCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBjODgwMGUzY2RjYTYyNTJlYWI5OGZkMDIx
MTg2MWUxZDBkYmVjMTEyLi5iZDM1NTVjNDQyMDliZDc1YTEzOGY1ZjIzOGNiOTY3NWM2ZDI2YzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9y
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0
ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEFycmF5SXRlcmF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdAogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAu
YWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlSXRlcmF0
ZSwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVJdGVyYXRlLCBEb250RW51
bSwgMCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlJdGVyYXRvclBy
b3RvdHlwZUl0ZXJhdGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggM2ZkMDM0YTFjMzI4NDYx
YTQ2NWNlNjYyYzA5OGQyM2RlMWI0ODc0ZC4uYzRhNzBkODkzMTVlYTk5YzNmZTM5MGM3NGYyMDYw
YTBjYzFkODlkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwog
ICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci0gICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheVByb3Rv
RnVuY1ZhbHVlcywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBEb250RW51
bSwgMCk7CiB9CiAKIGJvb2wgQXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTUzMCw3ICs1MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
ICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxl
bmd0aCArIG4sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKLSAgICAgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKGV4ZWMsIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50
NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhleGVj
KSk7CisgICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgICAgIHRo
aXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCBzbG90KTsKICAgICAgICAgfQogICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC03MzUsNyArNzM1LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIAogICAgIFByb3Bl
cnR5TmFtZUFycmF5IG5hbWVBcnJheShleGVjKTsKLSAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmosIGV4ZWMsIG5hbWVBcnJheSwgRW51bWVy
YXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmNwcAppbmRleCA1NmRmMzQ1MDI4N2ZmOTk5YTM4ZmNmNGNiNzE1MGU4NjFhNTY0M2U4
Li4wYjI4ZDVjODc5NjY2Y2IxNTNiMzhiMzg3ZWY3ZjEwN2M1YmU4MGJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0y
MiwyNSArMjIsMjggQEAKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogCiAjaW5jbHVk
ZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNs
dWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0jZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUo
dm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3
b3JkKHZtLCAjbmFtZSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwg
bmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCisjZGVmaW5lIElOSVRJQUxJ
WkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgI25hbWUpKQogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUj
I1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQorI2RlZmlu
ZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+
bmFtZSMjU3ltYm9sKCkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhW
TSogdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCiAgICAgLCBlbXB0eUlkZW50aWZpZXIoSWRl
bnRpZmllcjo6RW1wdHlJZGVudGlmaWVyKQotICAgICwgdW5kZXJzY29yZVByb3RvKHZtLCAiX19w
cm90b19fIikKLSAgICAsIHRoaXNJZGVudGlmaWVyKHZtLCAidGhpcyIpCi0gICAgLCB1c2VTdHJp
Y3RJZGVudGlmaWVyKHZtLCAidXNlIHN0cmljdCIpCisgICAgLCB1bmRlcnNjb3JlUHJvdG8oSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fcHJvdG9fXyIpKQorICAgICwgdGhpc0lkZW50aWZp
ZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRoaXMiKSkKKyAgICAsIHVzZVN0cmljdElk
ZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZSBzdHJpY3QiKSkKICAgICAs
IG1fYnVpbHRpbk5hbWVzKG5ldyBCdWlsdGluTmFtZXModm0sIHRoaXMpKQogICAgIEpTQ19DT01N
T05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBKU0Nf
Q09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZ
X05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlf
TkFNRShJTklUSUFMSVpFX1BSSVZBVEVfTkFNRSkKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX1NZTUJPTCkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKaW5kZXggZjExMTc3M2YxMDU1NzQ5ODFlOTY4NzdjNDc5M2U0ZTk1YWRiNTg1OC4uZGFlOTEw
MWRmMDllZGU2Mjg1OGFmZGNkOGRkYmVkYTU3MzFkYzZlZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMzQsNyArMjM0LDYg
QEAKICAgICBtYWNybyh1bnNjb3BhYmxlKQogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9J
REVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwKLSAgICBKU0NfQ09NTU9OX1BS
SVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChtYWNybykgXAogICAgIG1h
Y3JvKGl0ZXJhdG9yTmV4dCkgXAogICAgIG1hY3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhyZWpl
Y3QpIFwKQEAgLTI4OSw3ICsyODgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25z
dCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZB
VEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVf
UFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKLSAgICAgICAgCisKKyNkZWZpbmUgSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTChuYW1l
KSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1N5bWJvbDsKKyAgICAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCisKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0
OwogICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNv
bnN0OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
bnVtZXJhdGlvbk1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0
aW9uTW9kZS5oCmluZGV4IDRkYmFmN2I0MTdkYzcwOGZiYzZjNzI1MDlmMTlmNTQ0ZjAxYjk2YmQu
LmVkYTJjYjE0YjU1OTQ3MzA2ZjMzMDQ0NGI4OWM0MGUyYzc4NGMwYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCkBAIC0yOCw2MyArMjgs
NTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gRW51bWVyYXRpb25Nb2RlIHsKLSAgICBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLAotICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNB
bmRTa2lwSlNPYmplY3QsCi0gICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcywKLSAgICBJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0Ci19OworY2xhc3MgRW51bWVyYXRp
b25Nb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcyA9IDF1IDw8IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNfZmxhZ1NraXBKU09iamVjdCA9IDF1IDw8IDE7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNfZmxhZ0luY2x1ZGVTeW1ib2xzID0gMXUgPDwgMjsKKworICAgIGVudW0gRW51bWVyYXRpb25N
b2RlUmVwcmVzZW50YXRpb25UYWcgOiB1bnNpZ25lZCB7CisgICAgICAgIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMgPSAwLAorICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5j
bHVkZVN5bWJvbHMgPSBzX2ZsYWdJbmNsdWRlU3ltYm9scywKKyAgICAgICAgSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcyA9IHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRpZXMsCisgICAgICAg
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyA9IHNfZmxhZ0luY2x1
ZGVEb250RW51bVByb3BlcnRpZXMgfCBzX2ZsYWdJbmNsdWRlU3ltYm9scywKKyAgICB9OworCisg
ICAgRW51bWVyYXRpb25Nb2RlKEVudW1lcmF0aW9uTW9kZVJlcHJlc2VudGF0aW9uVGFnIHRhZykK
KyAgICAgICAgOiBtX2ZsYWdzKHRhZykKKyAgICB7CisgICAgfQogCi1pbmxpbmUgYm9vbCBzaG91
bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAg
IHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAg
ICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBi
b29sIHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOwogICAg
IH0KLX0KIAotaW5saW5lIGJvb2wgc2hvdWxkRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyhFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
QW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0
eU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKG1fZmxhZ3MgJiBzX2ZsYWdT
a2lwSlNPYmplY3QpOwogICAgIH0KLX0KIAotaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZUpTT2Jq
ZWN0UHJvcGVydHlOYW1lcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1v
ZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgY2FzZSBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgY2FzZSBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYm9vbCBzaG91bGRJbmNsdWRlU3ltYm9scygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9mbGFncyAmIHNfZmxhZ0luY2x1ZGVTeW1ib2xzOwogICAgIH0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19CiAKLWlubGluZSBFbnVtZXJhdGlv
bk1vZGUgbW9kZVRoYXRTa2lwc0pTT2JqZWN0KEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAg
IHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAg
ICAgICAgcmV0dXJuIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q7Ci0g
ICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDsKLSAgICBjYXNlIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gbW9kZTsKKyAgICBzdGF0
aWMgRW51bWVyYXRpb25Nb2RlIGNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0KEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVudW1lcmF0aW9uTW9kZShtb2RlLm1fZmxh
Z3MgfCBzX2ZsYWdTa2lwSlNPYmplY3QpOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gbW9kZTsKLX0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBFbnVtZXJh
dGlvbk1vZGUodW5zaWduZWQgZmxhZ3MpCisgICAgICAgIDogbV9mbGFncyhmbGFncykKKyAgICB7
CisgICAgfQorCisgICAgdW5zaWduZWQgbV9mbGFnczsKK307CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggOTMwYjZmYWY2
YmMxZmM2NWRlOWU2MWExZmM3ZTYyYTllNWZjNjgwZS4uMzYxNTZhMWUwNTE2ODFmNWNlYjU2MTgy
YjZlNGViOTQyOWI4ZjUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNw
cApAQCAtMTM3LDE3ICsxMzcsMTcgQEAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU28KICAgICBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCA9IHNvdXJjZS5wcm92aWRlcigpLT51cmwoKTsKIAogICAgIGlm
IChsaW5lICE9IC0xKQotICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCp2bSwgSWRlbnRpZmllcih2
bSwgbGluZVByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxl
dGUpOworICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCp2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgbGluZVByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnRE
ZWxldGUpOwogICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQotICAgICAgICBlcnJvci0+cHV0
RGlyZWN0KCp2bSwgSWRlbnRpZmllcih2bSwgc291cmNlVVJMUHJvcGVydHlOYW1lKSwganNTdHJp
bmcodm0sIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGVycm9y
LT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBzb3VyY2VVUkxQcm9w
ZXJ0eU5hbWUpLCBqc1N0cmluZyh2bSwgc291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250RGVsZXRl
KTsKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKIAogYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogZXJyb3IpCiB7Ci0gICAgcmV0dXJuIGVycm9yLT5oYXNQcm9wZXJ0
eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGxpbmVQcm9wZXJ0eU5hbWUpKQotICAgICAgICB8fCBl
cnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBzb3VyY2VVUkxQcm9wZXJ0
eU5hbWUpKTsKKyAgICByZXR1cm4gZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgbGluZVByb3BlcnR5TmFtZSkpCisgICAgICAgIHx8IGVycm9yLT5o
YXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHNvdXJjZVVSTFBy
b3BlcnR5TmFtZSkpOwogfQogCiBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBl
eGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcAppbmRleCAxMDVhYWVmN2YwOWFhZTE1MmI4NWYzMjA4YjE0YmJmOTBhMWY1YWMzLi4y
MjIxY2ZhZDgzMWJiZGVhYzZjMTgxZDE2MjBlN2MzMGU4ZjVlNzBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtODIsNyAr
ODIsNyBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAgIAotICAgIGlm
IChpZGVudC5pbXBsKCktPmlzVW5pcXVlKCkpIHsKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc1By
aXZhdGUoKSkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5k
IHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFt
ZShpZGVudCkuc3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KGV4ZWMsIG1lc3NhZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuaAppbmRleCAwMTMyZDBlNzUyOGVhMzYzYjhjMzEzNmVjZTViMDA4YzUzOWEzOGVm
Li5lOTE5MDAxN2E5ZmFmNDIwOWI3ODU2NDYyMWUwNDgzNmFkYjI3MzRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0zOCwyMyArMzgsNiBAQCBjbGFz
cyBJZGVudGlmaWVyIHsKICAgICBlbnVtIEVtcHR5SWRlbnRpZmllckZsYWcgeyBFbXB0eUlkZW50
aWZpZXIgfTsKICAgICBJZGVudGlmaWVyKEVtcHR5SWRlbnRpZmllckZsYWcpIDogbV9zdHJpbmco
U3RyaW5nSW1wbDo6ZW1wdHkoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygp
KTsgfQogCi0gICAgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgotICAg
IHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KLSAgICBJZGVudGlmaWVyKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pIDog
bV9zdHJpbmcoYWRkKGV4ZWMsIGNoYXJhY3RlcnMpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCkt
PmlzQXRvbWljKCkpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50Pgot
ICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVy
c0NvdW50XSkgOiBtX3N0cmluZyhhZGQodm0sIGNoYXJhY3RlcnMpKSB7IEFTU0VSVChtX3N0cmlu
Zy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0KLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIEF0
b21pY1N0cmluZ0ltcGwqKTsKLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIGNvbnN0IEF0b21p
Y1N0cmluZyYpOwotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiBy
ZXApIDogbV9zdHJpbmcoYWRkKGV4ZWMsIHJlcCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+
aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBzKSA6IG1fc3RyaW5nKGFkZChleGVjLCBzLmltcGwoKSkpIHsgQVNTRVJUKG1fc3RyaW5n
LmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgY2hhciogcykgOiBJZGVudGlmaWVyKGV4ZWMsIEF0b21pY1N0cmluZyhzKSkgeyB9Ci0K
LSAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgpIDogbV9z
dHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRv
bWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVu
Z3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1w
bCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBTdHJpbmdJbXBsKiBy
ZXApIDogbV9zdHJpbmcoYWRkKHZtLCByZXApKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlz
QXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFN0cmluZyYgcykgOiBt
X3N0cmluZyhhZGQodm0sIHMuaW1wbCgpKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0
b21pYygpKTsgfQotCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZzsgfQogICAgIEF0b21pY1N0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4obV9zdHJpbmcuaW1wbCgpKTsgfQogCkBAIC02
MywxMiArNDYsMjIgQEAgY2xhc3MgSWRlbnRpZmllciB7CiAgICAgQ1N0cmluZyBhc2NpaSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLmFzY2lpKCk7IH0KICAgICBDU3RyaW5nIHV0ZjgoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy51dGY4KCk7IH0KIAotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b20oY29uc3QgUHJpdmF0ZU5hbWUmIG5hbWUpCi0gICAgewotICAgICAgICBJZGVudGlmaWVyIHJl
c3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fc3RyaW5nID0gbmFtZS51aWQoKTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9CisgICAgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxp
dGVyYWxzLgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KKyAgICBzdGF0
aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlcnNDb3VudF0pOworICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4K
KyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIg
KCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBm
cm9tU3RyaW5nKFZNKiwgY29uc3QgTENoYXIqLCBpbnQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSWRl
bnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgU3RyaW5nJik7CisgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBBdG9taWNTdHJpbmdJbXBsKik7
CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBBdG9t
aWNTdHJpbmcmKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSos
IGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0
YXRlKiwgY29uc3QgY2hhciopOworCisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChWTSos
IFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChFeGVjU3Rh
dGUqLCBTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21VaWQoY29u
c3QgUHJpdmF0ZU5hbWUmKTsKIAogICAgIHN0YXRpYyBJZGVudGlmaWVyIGNyZWF0ZUxDaGFyRnJv
bVVDaGFyKFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIHsgcmV0dXJuIElkZW50
aWZpZXIodm0sIGFkZDgodm0sIHMsIGxlbmd0aCkpOyB9CiAKQEAgLTEwNSw2ICs5OCwyMCBAQCBj
bGFzcyBJZGVudGlmaWVyIHsKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogCisgICAg
Ly8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgIHRlbXBsYXRlPHVu
c2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgY2hh
ciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pIDogbV9zdHJpbmcoYWRkKHZtLCBjaGFy
YWN0ZXJzKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorCisgICAg
SWRlbnRpZmllcihWTSogdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5n
KGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygp
KTsgfQorICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkg
OiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+
aXNBdG9taWMoKSk7IH0KKyAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIEF0b21pY1N0cmluZ0lt
cGwqKTsKKyAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYpOwor
ICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHN0cmluZykgOiBtX3N0cmluZyhh
ZGQodm0sIHN0cmluZy5pbXBsKCkpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWlj
KCkpOyB9CisgICAgSWRlbnRpZmllcihWTSogdm0sIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmlu
ZyhhZGQodm0sIHJlcCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0K
KworICAgIGVudW0gVW5pcXVlSWRlbnRpZmllckZsYWcgeyBVbmlxdWVJZGVudGlmaWVyIH07Cisg
ICAgSWRlbnRpZmllcihVbmlxdWVJZGVudGlmaWVyRmxhZywgU3RyaW5nSW1wbCogdWlkKSA6IG1f
c3RyaW5nKHVpZCkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc1VuaXF1ZSgpKTsgfQorCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IHVpbnQzMl90IHRvVUludDMyRnJvbUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCYgb2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRleCA3NDcyZDg0N2Q3NWIzMDNl
NjQ1NGYwNmQ2OWVkNmZjNWVlNjkyM2FjLi5kNDJmZGM2YmZiZTAxMjdiNTQ2Mzk5ODliZjgzZjAy
NmY2ZDBmMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXJJbmxpbmVzLmgKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50
aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBBdG9taWNTdHJpbmdJbXBsKiBzdHJpbmcpCiAjaWZuZGVm
IE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAgIGlm
IChzdHJpbmcpCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkg
fHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9t
aWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBB
dG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBz
dHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICNlbmRpZgpAQCAtNDksNyArNDksNyBAQCBpbmxpbmUgSWRlbnRpZmllcjo6
SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQog
I2lmbmRlZiBOREVCVUcKICAgICBjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGVjKTsK
ICAgICBpZiAoIXN0cmluZy5pc051bGwoKSkKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
c3RyaW5nLmxlbmd0aCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0
cmluZy5pbXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJl
YWQhIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBz
dHJpbmcuaW1wbCgpLT5pc1VuaXF1ZSgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmlu
Z1RhYmxlKHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBv
dGhlciB0aHJlYWQhIik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNlbmRpZgpA
QCAtNzAsNiArNzAsNzAgQEAgaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQo
Vk0qIHZtLCBTdHJpbmdJbXBsKiByKQogICAgIHJldHVybiAqQXRvbWljU3RyaW5nOjphZGRXaXRo
U3RyaW5nVGFibGVQcm92aWRlcigqdm0sIHIpOwogfQogCitpbmxpbmUgSWRlbnRpZmllciBJZGVu
dGlmaWVyOjpmcm9tVWlkKFZNKiB2bSwgU3RyaW5nSW1wbCogdWlkKQoreworICAgIGlmICghdWlk
IHx8ICF1aWQtPmlzVW5pcXVlKCkpCisgICAgICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCB1aWQp
OworICAgIHJldHVybiBJZGVudGlmaWVyKFVuaXF1ZUlkZW50aWZpZXIsIHVpZCk7Cit9CisKK2lu
bGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21VaWQoRXhlY1N0YXRlKiBleGVjLCBTdHJp
bmdJbXBsKiB1aWQpCit7CisgICAgcmV0dXJuIGZyb21VaWQoJmV4ZWMtPnZtKCksIHVpZCk7Cit9
CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21VaWQoY29uc3QgUHJpdmF0ZU5h
bWUmIG5hbWUpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIoVW5pcXVlSWRlbnRpZmllciwgbmFt
ZS51aWQoKSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KK2lubGlu
ZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBjaGFyICgm
Y2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgY2hhcmFjdGVycyk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4K
K2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKK3sKKyAgICByZXR1
cm4gSWRlbnRpZmllcigmZXhlYy0+dm0oKSwgY2hhcmFjdGVycyk7Cit9CisKK2lubGluZSBJZGVu
dGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBMQ2hhciogcywgaW50
IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgcywgbGVuZ3RoKTsKK30KKwor
aW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSogdm0sIGNvbnN0IFVD
aGFyKiBzLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBzLCBsZW5n
dGgpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNKiB2
bSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN0
cmluZy5pbXBsKCkpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJu
IElkZW50aWZpZXIoJmV4ZWMtPnZtKCksIHN0cmluZy5pbXBsKCkpOworfQorCitpbmxpbmUgSWRl
bnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgQXRvbWljU3Ry
aW5nSW1wbCogYXRvbWljU3RyaW5nKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIGF0
b21pY1N0cmluZyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0b21pY1N0cmluZykKK3sK
KyAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBhdG9taWNTdHJpbmcpOworfQorCitpbmxpbmUg
SWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
Y2hhciogcykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBBdG9taWNTdHJpbmcocykp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIElkZW50aWZpZXJJbmxpbmVz
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggMjBkNDlk
YjhiYTJlMmM1ODU1MDY2NzQ5ZWY5ZGY1MTU1NDE1NzY4MS4uYzFiMDRhNmUyMmVkMjhhMmY5M2Qy
MzBkNTYzYzMwOGU2MjZlMTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEpTQXJyYXk6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogewog
ICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAKLSAg
ICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9k
ZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogCiAgICAgSlNPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ci5jcHAKaW5kZXggYzFjYWQxMDVjN2UwZDVhZDdlZmQyOTZhM2JlZjA2OTZjOTVmNjAwNy4uNWI2
NmM0NGYzZTgxODQyNTAwOGI2MGFlZDQyNjEzYWJjN2UxOGYwYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCB2b2lkIEpTQXJyYXlCdWZmZXI6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKIHsKICAg
ICBKU0FycmF5QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXIqPihvYmpl
Y3QpOwogICAgIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUp
KQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAg
ICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoKTsKICAgICAKICAg
ICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJy
YXksIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCmluZGV4IGNiNWM4YTJmMDM5MzQzYzVhMjQwNTBiMDkwODA4ZGVkMjVl
MTA5MGIuLmFkYTY3M2JlNzc0OTdkMDY2MmZjZWNjNzdiMGI4NGJkYzI2ZGE2YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAK
QEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEpTQXJyYXlCdWZmZXJWaWV3OjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoCiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihvYmplY3QpOwogICAgIAogICAgIC8vIGxlbmd0aC9ieXRl
T2Zmc2V0L2J5dGVMZW5ndGggYXJlIERvbnRFbnVtLCBhdCBsZWFzdCBpbiBGaXJlZm94LgotICAg
IGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKG1v
ZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIGFycmF5LmFk
ZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZU9mZnNldCk7CiAgICAgICAgIGFycmF5LmFkZChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCk7CiAgICAgICAgIGFycmF5LmFkZChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NhbGxlZS5oCmluZGV4IGRlZDhjODU4MGIwYWMzNWQ0ZDk3NzE2YTAwYWRmMDgwZGNiNmUyZWUu
LjMyYWNhZDUyMGQ1YjQwM2JkMTQ3MjFiYWJmZTY5ZjQyNDJlNThlZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaApAQCAtMTAxLDcgKzEwMSw3IEBAIGNsYXNzIEpT
Q2FsbGVlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTFi
NjZmMTViMzY2MDczNTYyMzY5MjA1NzdlODFhNzY4ZDFkNTViLi41YmVjODU4OTk5MTU2MmE4ZTI0
ZDgwMjY3OGRiMGExMmU3NjZhYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOCiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
ICYmIG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJl
ZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYmUwYmRjNzg0MmY5
NzMzYzc2YjA2NDQzYmRhMzY2MTQxOGVhNTk5Ny4uMzRlZDQwOGI1ZDFiMDgxZmZiNGI0YzlhYWY4
NjljNWZhNDlkNDZiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaApAQCAtMTM4LDcgKzEzOCw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxs
ZWUgewogICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJvZmls
ZShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNmQwZDIxZmE2MWYzOTg5ZjlkOWI0MTk5ZGFhODg4ZTlm
NjY0NGVjYS4uYTk5OGVlODg1MjFlZjY3MzlhMjIxMTU2N2QzNzgzMmFlMzQ4NTA1NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoCiB7
CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwogICAgIAotICAgIGlmIChzaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpOwogICAgIAogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNmJhOTIyZjc1MDEzMTk4M2M1ZWMx
MTlkODc5MzcyNzI0MzA3OTZhMC4uMWVmMjU0MTUwNWVhYTA2MWNmNGYzYzhmZjRjNzQ2ZWY5MzU3
MjM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoCiAgICAg
CiAgICAgLy8gQ29uc3RydWN0b3JzCiAgICAgCi0gICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVj
dENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2Jq
ZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3Ry
dWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgSlNDZWxsKiBmdW5j
dGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGFycmF5
Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFycmF5Q29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSks
IG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOwpAQCAtNDA1LDcgKzQwNSw3IEBAIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUg
IyMgQ29uc3RydWN0CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCB0eXBlZEFycmF5SW5kZXggPSBO
VU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM7IHR5cGVkQXJyYXlJbmRleC0tOykgewogICAgICAg
ICBtX3R5cGVkQXJyYXlzW3R5cGVkQXJyYXlJbmRleF0ucHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHR5cGVkQXJy
YXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwotICAgICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcihleGVjLCB0eXBlZEFycmF5Q29u
c3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0tPm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3Ry
dWN0b3JzW3R5cGVkQXJyYXlJbmRleF0sIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdHlwZWRBcnJh
eUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5SW5kZXhdLT5uYW1lKGV4ZWMpKSwgdHlwZWRBcnJheUNv
bnN0cnVjdG9yc1t0eXBlZEFycmF5SW5kZXhdLCBEb250RW51bSk7CiAgICAgfQogICAgIAogICAg
IEpTRnVuY3Rpb24qIGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEs
IHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1
aWx0aW5Mb2cpOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAg
ICAgQ29uc29sZVByb3RvdHlwZSogY29uc29sZVByb3RvdHlwZSA9IENvbnNvbGVQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgdGhpcywgQ29uc29sZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY29uc29sZVN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTQ29uc29sZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBjb25zb2xl
UHJvdG90eXBlKSk7CiAgICAgSlNDb25zb2xlKiBjb25zb2xlT2JqZWN0ID0gSlNDb25zb2xlOjpj
cmVhdGUodm0sIG1fY29uc29sZVN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoZXhlYywgImNvbnNvbGUiKSwgY29uc29sZU9iamVj
dCwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb25zb2xlIiksIGNvbnNvbGVPYmplY3QsIERvbnRFbnVt
KTsKIAogICAgIHJlc2V0UHJvdG90eXBlKHZtLCBwcm90b3R5cGUoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA0MWFhZjk2M2Q3
ZDRjNzFiOGE3NjlmZDA0MTE2ZTBhOWM1OTkzYTlhLi5hZjhkZThjYjgwNmY0YjljNGE3Y2EyYTc4
N2ZjNDY3NGJkYjFmMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTMwNSw2ICszMDUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIGJvb2wgaGFzRGVidWdn
ZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CiAgICAgYm9vbCBoYXNQcm9maWxlcigp
IGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUHJvZmls
aW5nKHRoaXMpOyB9CisgICAgY29uc3QgUnVudGltZUZsYWdzJiBydW50aW1lRmxhZ3MoKSBjb25z
dCB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgZXhwbGljaXQgSlNHbG9iYWxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSogPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAppbmRleCA4NDAzN2EzNDVm
OTllODUwMGJmNmQwNTZhNTE4NDlkYzE5YjU2ZmEwLi5iZGZjMzQ1MGIwMDVkZGQ2NjExYjE3YWFk
MmMxZWQ5Y2NlMWQwNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0xMTQsMTEgKzExNCwxNSBAQCB2b2lk
IEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YQogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0
aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6
TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2Vy
KTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmpl
Y3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICAgICAgaWYgKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSAmJiAhc2hv
dWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICAgICAgICAgIGlmIChpdC0+
dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0gJiYgIW1vZGUuc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5pc1ZhbGlkKGl0LT52YWx1ZSkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMs
IGl0LT5rZXkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LmdldCgpLT5pc1ByaXZh
dGUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICghbW9kZS5z
aG91bGRJbmNsdWRlU3ltYm9scygpICYmIGl0LT5rZXkuZ2V0KCktPmlzVW5pcXVlKCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVu
dGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0K
ICAgICAvLyBTa2lwIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkIGltcGxlbWVudGF0aW9uIG9mIGdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcAppbmRleCA5OTA3NDNhNTU4ZWVhODg3OTkzZTIyN2E2ZWQxOGU1NTBj
MjNlMWEzLi5iY2U3ZDJmNjM3ZTI3NzFkZWJjYWZiOTViOTAyMTRkYjcwOTY3OThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNDk1LDcgKzQ5
NSw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmlu
Z2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVpCiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0
eU5hbWVzID0gc3RyaW5naWZpZXIubV9hcnJheVJlcGxhY2VyUHJvcGVydHlOYW1lcy5kYXRhKCk7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBv
YmplY3RQcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmpl
Y3RQcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAg
ICAgICBtX29iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX29iamVj
dC5nZXQoKSwgZXhlYywgb2JqZWN0UHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMg
PSBvYmplY3RQcm9wZXJ0eU5hbWVzLnJlbGVhc2VEYXRhKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBtX3NpemUgPSBtX3Byb3BlcnR5TmFtZXMtPnByb3BlcnR5TmFtZVZlY3RvcigpLnNp
emUoKTsKQEAgLTcxMiw3ICs3MTIsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6Ondh
bGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2go
b2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsK
LSAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVt
ZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjoKICAgICAgICAgICAgIEZBTExUSFJP
VUdIOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGRi
MmE3MjJjYmE4ODVjODA4NmRlYjc5MGMyYzI4NTczNzRmNmY3OTkuLmVkMTNlYTBhOGJlM2IzNTI5
YWIyNmQ4NDMxNjJjMzA0M2NlZjQ5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKQEAgLTc4LDggKzc4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENs
YXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUt
PmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUtPmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlm
ICgoIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcyhtb2RlKSkgJiYgISgoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9y
RnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChJZGVudGlmaWVyKCZ2bSwgaXRlci5rZXkoKSkpOworICAgICAgICAgICAgaWYgKCghKGl0ZXIt
PmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMoKSkgJiYgISgoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24p
ICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgaXRlci5rZXkoKSkpOwogICAgICAgICB9CiAgICAgfQogfQpA
QCAtMTUxOCw3ICsxNTE4LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUEKIAogdm9pZCBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSkKIHsKLSAgICBpZiAoIXNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMobW9kZSkp
IHsKKyAgICBpZiAoIW1vZGUuc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcygpKSB7
CiAgICAgICAgIC8vIFdlIHN0aWxsIGhhdmUgdG8gZ2V0IG5vbi1pbmRleGVkIHByb3BlcnRpZXMg
ZnJvbSBhbnkgc3ViY2xhc3NlcyBvZiBKU09iamVjdCB0aGF0IGhhdmUgdGhlbS4KICAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTE1NzIsNyArMTU3Miw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1hcC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSB8fCAhKGl0
LT52YWx1ZS5hdHRyaWJ1dGVzICYgRG9udEVudW0pKQorICAgICAgICAgICAgICAgIGlmIChtb2Rl
LnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSB8fCAhKGl0LT52YWx1ZS5hdHRyaWJ1
dGVzICYgRG9udEVudW0pKQogICAgICAgICAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaXQtPmtleSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCkBAIC0xNTk0LDcgKzE1OTQsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcgogewog
ICAgIGdldENsYXNzUHJvcGVydHlOYW1lcyhleGVjLCBvYmplY3QtPmNsYXNzSW5mbygpLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlLCBvYmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSk7CiAKLSAg
ICBpZiAoIXNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMobW9kZSkpCisgICAgaWYg
KCFtb2RlLnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNjc5LDcgKzE2NzksNyBA
QCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAgICAgICBmb3IgKGF1
dG8gaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4oKTsgaXRlciAhPSBoYXNoVGFibGUtPmVuZCgpOyAr
K2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JG
dW5jdGlvbikKLSAgICAgICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpdGVyLnZhbHVlKCksIHRoaXMsIElkZW50aWZpZXIoJnZt
LCBpdGVyLmtleSgpKSwgc2xvdCk7CisgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaXRlci52YWx1ZSgpLCB0aGlzLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgaXRlci5rZXkoKSksIHNsb3QpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC0yODAwLDcgKzI4MDAsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRTdHJ1Y3R1
cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAog
dm9pZCBKU09iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGVUaGF0U2tpcHNKU09iamVjdChtb2RlKSk7CisgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGU6OmNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpKTsKIAog
ICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAzZjVlMjVkMTViMDNl
NjBkNTc4YzgzNGMzZmQ1MDkyNzY4YWRhMGQ0Li43ODY3NzVhMGRjNDljMTIzMDdkYWY0NTIyMTZh
Yjc4MzRlMWFiODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
QEAgLTE1NTQsNyArMTU1NCw3IEBAIENPTVBJTEVfQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAl
IHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSksIEpTT2JqZWN0CiAKIEFMV0FZU19J
TkxJTkUgSWRlbnRpZmllciBtYWtlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUp
CiB7Ci0gICAgcmV0dXJuIElkZW50aWZpZXIoJnZtLCBuYW1lKTsKKyAgICByZXR1cm4gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIG5hbWUpOwogfQogCiBBTFdBWVNfSU5MSU5FIElkZW50aWZp
ZXIgbWFrZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
CmluZGV4IGYxYTJlNTYyZjlhYmY0MDJhYjYzOGRjMDljNmVmYzM4MGQxYzViNGQuLjJhNTE2OTcy
MTFjNmQ4YTNiZTRlNGU3ODJlMjlhZGMyYTVlYzkwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1MSw3
ICsyNTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY1JhY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZl
cnJlZCA9IGpzQ2FzdDxKU1Byb21pc2VEZWZlcnJlZCo+KGRlZmVycmVkVmFsdWUpOwogCiAgICAg
Ly8gNC4gTGV0ICdpdGVyYXRvcicgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEdldEl0ZXJhdG9y
KGl0ZXJhYmxlKS4KLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQo
ZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1
ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7
CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJv
bWlzZUNvbnN0cnVjdG9yRnVuY0FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNQcm9taXNlRGVm
ZXJyZWQqIGRlZmVycmVkID0ganNDYXN0PEpTUHJvbWlzZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1
ZSk7CiAKICAgICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcg
R2V0SXRlcmF0b3IoaXRlcmFibGUpLgotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0
ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKTsK
KyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywg
ZGVmZXJyZWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAppbmRleCBlZTE4YWJmNmViM2YzMmNmYzAxMjkx
ZWIxNDQ3NDBlZjc4YTk2YTFjLi4wYjllNzM5ZjVhNzAzOTY5YTU0MDYzZWYwOTNkNTc1M2I4MDIz
MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaApAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIHN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoRXhlY1N0
YXRlKiBleGVjCiAgICAgICAgIHJldHVybiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0
ZSh2bSk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAg
IGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBiYXNl
LT5tZXRob2RUYWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKIAogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZXMpOwog
ICAgIGlmIChzdHJ1Y3R1cmUtPmNhbkNhY2hlU3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRv
cigpKQpAQCAtMTQyLDkgKzE0Miw5IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
IGdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywKICAgICAvLyB0
aGUgbmV3IGdlbmVyaWMgUHJvcGVydHlOYW1lQXJyYXkgYW5kIGZhaWxpbmcgYmVjYXVzZSB3ZSd2
ZSBhbHJlYWR5IHZpc2l0ZWQgdGhlbS4KICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9
IHN0cnVjdHVyZUVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZSh2bSk7CiAgICAgaWYgKHN0cnVj
dHVyZSA9PSBjYWNoZWRTdHJ1Y3R1cmUgJiYgc3RydWN0dXJlLT5jYW5BY2Nlc3NQcm9wZXJ0aWVz
UXVpY2tseSgpICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihsZW5ndGgpID09IGJhc2UtPmdldEFy
cmF5TGVuZ3RoKCkpCi0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1Byb3Bl
cnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBlbHNlCi0gICAgICAgIGJhc2UtPm1ldGhvZFRh
YmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5n
ZXRQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgCiAgICAgbm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4oZXhlYywgc3RydWN0dXJlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKaW5kZXggMDU3NTQ0NzZmZDE1NGFkNTYzYTg5MDI0NGRlZGMyZjk2ZjNlMmQx
My4uMzhhZjlkZDRhZWFkYzdhZDJiNjY0MWU1MzI1YjUzZDRjNDJiZGFmMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC00NjcsNyArNDY3LDcgQEAgaW5saW5l
IEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoVk0qIHZtLCBTdHJpbmcmJiBzKQogCiBBTFdB
WVNfSU5MSU5FIElkZW50aWZpZXIgSlNTdHJpbmc6OnRvSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgdG9BdG9taWNTdHJpbmco
ZXhlYykpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRvQXRvbWlj
U3RyaW5nKGV4ZWMpKTsKIH0KIAogQUxXQVlTX0lOTElORSBBdG9taWNTdHJpbmcgSlNTdHJpbmc6
OnRvQXRvbWljU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggYjhm
YjIyODJhZmFlODdlY2M0MTEwMjQ1Y2U5YmI4NzNlOTUwZjBmZi4uZTA0YzE0ZTY5ZWU0Yjg4MmEx
NDZiZDZkMzYxMTBiMTdhN2FjMjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTYxLDEwICs2MSwxMiBAQCB2
b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cih0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9j
a2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNP
YmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzVW5pcXVlKCkpCisgICAgICAgICAgICBpZiAoaXQt
PmtleS0+aXNQcml2YXRlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IHNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCi0gICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CisgICAgICAgICAgICBp
ZiAoIW1vZGUuc2hvdWxkSW5jbHVkZVN5bWJvbHMoKSAmJiBpdC0+a2V5LT5pc1VuaXF1ZSgpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdl
dEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMoKSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
Ojpmcm9tVWlkKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5k
ZXggZjZmNWZlMTczYzcwNGVkZTBmNjUzYjY4MzhlMDk4MDZjYTQ0MmViNy4uZDQ1NDRhNGY2ZjI2
Y2FhOGMzODQ1ZGFmMGZjYWZlNzMyMzI4YmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTU3LDE3ICs1NywxNyBAQCBib29sIExp
dGVyYWxQYXJzZXI8Q2hhclR5cGU+Ojp0cnlKU09OUFBhcnNlKFZlY3RvcjxKU09OUERhdGE+JiBy
ZXN1bHRzLCBib29sIG5lZQogICAgIGRvIHsKICAgICAgICAgVmVjdG9yPEpTT05QUGF0aEVudHJ5
PiBwYXRoOwogICAgICAgICAvLyBVbmd1YXJkZWQgbmV4dCB0byBzdGFydCBvZmYgdGhlIGxleGVy
Ci0gICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgbV9s
ZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBt
X2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKKyAgICAgICAgSWRlbnRpZmllciBuYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRv
a2VuKCkuc3RhcnQpOwogICAgICAgICBKU09OUFBhdGhFbnRyeSBlbnRyeTsKICAgICAgICAgaWYg
KG5hbWUgPT0gbV9leGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPnZhcktleXdvcmQpIHsKICAgICAg
ICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tJZGVudGlmaWVyKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05QUGF0aEVu
dHJ5VHlwZURlY2xhcmU7Ci0gICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVu
dGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4
ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7Cisg
ICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3Vy
cmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAg
ICAgICBwYXRoLmFwcGVuZChlbnRyeSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBl
bnRyeS5tX3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVEb3Q7Ci0gICAgICAgICAgICBlbnRyeS5t
X3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVu
dFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJy
ZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2Vu
KCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9r
ZW4oKS5zdGFydCk7CiAgICAgICAgICAgICBwYXRoLmFwcGVuZChlbnRyeSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKG1fZXhlYy0+dm0oKS5rZXl3b3Jkcy0+aXNLZXl3b3JkKGVudHJ5Lm1fcGF0
aEVudHJ5TmFtZSkpCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgTGl0ZXJhbFBhcnNlcjxDaGFyVHlw
ZT46OnRyeUpTT05QUGFyc2UoVmVjdG9yPEpTT05QRGF0YT4mIHJlc3VsdHMsIGJvb2wgbmVlCiAg
ICAgICAgICAgICAgICAgZW50cnkubV90eXBlID0gSlNPTlBQYXRoRW50cnlUeXBlRG90OwogICAg
ICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tJZGVudGlmaWVyKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgZW50cnkubV9wYXRo
RW50cnlOYW1lID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRv
a2VuKCkuc3RhcnQpOworICAgICAgICAgICAgICAgIGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4o
KS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnN0YXJ0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNhc2UgVG9rTFBhcmVuOiB7CkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBBTFdBWVNfSU5M
SU5FIGNvbnN0IElkZW50aWZpZXIgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46Om1ha2VJZGVudGlm
aWVyKGNvbnN0IExDaAogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbV9leGVjLT52
bSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcjsKICAgICBpZiAoY2hhcmFjdGVyc1sw
XSA+PSBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXIpCi0gICAgICAgIHJldHVybiBJZGVudGlmaWVy
KCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAK
ICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgaWYgKCFtX3Nob3J0SWRlbnRpZmllcnNb
Y2hhcmFjdGVyc1swXV0uaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50
aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwotICAgICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFj
dGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7
CisgICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICAgICAg
cmV0dXJuIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKICAgICB9CiAgICAgaWYg
KCFtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dLmlzTnVsbCgpICYmIElkZW50aWZp
ZXI6OmVxdWFsKG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaW1wbCgpLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFy
YWN0ZXJzWzBdXTsKLSAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRl
bnRpZmllcigmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIG1fcmVjZW50
SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4
ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgcmV0dXJuIG1fcmVjZW50SWRlbnRp
ZmllcnNbY2hhcmFjdGVyc1swXV07CiB9CiAKQEAgLTE1NSwxNyArMTU1LDE3IEBAIEFMV0FZU19J
TkxJTkUgY29uc3QgSWRlbnRpZmllciBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6bWFrZUlkZW50
aWZpZXIoY29uc3QgVUNoCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBtX2V4ZWMt
PnZtKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyOwogICAgIGlmIChjaGFyYWN0ZXJz
WzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikKLSAgICAgICAgcmV0dXJuIElkZW50aWZp
ZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsK
IAogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICBpZiAoIW1fc2hvcnRJZGVudGlmaWVy
c1tjaGFyYWN0ZXJzWzBdXS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBtX3Nob3J0SWRl
bnRpZmllcnNbY2hhcmFjdGVyc1swXV07Ci0gICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFy
YWN0ZXJzWzBdXSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3Ro
KTsKKyAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgICAg
ICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwogICAgIH0KICAgICBp
ZiAoIW1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkgJiYgSWRlbnRp
Zmllcjo6ZXF1YWwobV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pbXBsKCksIGNo
YXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBtX3JlY2VudElkZW50aWZpZXJzW2No
YXJhY3RlcnNbMF1dOwotICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJ
ZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgbV9yZWNl
bnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1f
ZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICByZXR1cm4gbV9yZWNlbnRJZGVu
dGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAppbmRleCBiN2VjYmIxOTBhMDRiNTA5ZDkwNDEwZmZjNGNjMzJkZDAzOTQ4MGZhLi5h
OGEzMzY3ZjUzZmE2YzUxOGI5ZGExZTVkZTc3ZjQ5MDBlOWNmYmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjkzLDcgKzI5Myw3IEBAIGlubGluZSB2b2lkIHJl
aWZ5U3RhdGljUHJvcGVydGllcyhWTSYgdm0sIGNvbnN0IEhhc2hUYWJsZVZhbHVlICgmdmFsdWVz
KVtudW1iZXJPCiAgICAgICAgIGlmICghdmFsdWUubV9rZXkpCiAgICAgICAgICAgICBjb250aW51
ZTsgICAgICAgICAgICAgICAgCiAKLSAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUoJnZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4odmFsdWUubV9rZXkpLCBzdHJsZW4odmFs
dWUubV9rZXkpKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlLm1f
a2V5KSwgc3RybGVuKHZhbHVlLm1fa2V5KSk7CiAgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVz
KCkgJiBCdWlsdGluKSB7CiAgICAgICAgICAgICB0aGlzT2JqLnB1dERpcmVjdEJ1aWx0aW5GdW5j
dGlvbih2bSwgdGhpc09iai5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5idWls
dGluR2VuZXJhdG9yKCkodm0pLCB2YWx1ZS5hdHRyaWJ1dGVzKCkpOwogICAgICAgICAgICAgY29u
dGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVy
YXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVy
YXRvclByb3RvdHlwZS5jcHAKaW5kZXggYjIyMGI5ODc1ODg1YzQyZjljZTYzOGYzMjIyNDc5MmMz
Mjc2MTAxNy4uMDM1NjRmODg4MTFmM2U3ZmFiZmIwYWRhYjliYmM5YWNhMWZiYWJlYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90
eXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNT
RVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUo
dGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yUHJpdmF0ZU5hbWUsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51
bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsK
ICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yTmV4dFBy
aXZhdGVOYW1lLCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmlu
ZGV4IDU0ODIyMjc2OTQwMGI3MTg1MmFmN2RiOGI3NWVmNTA3NTQ0ZWRkNGYuLmY4NDM2N2FlODBi
NzI2Mzc1MDVlZGMxNTYzZDhiMjg4OGM1OGM5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE1hcFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgbWFw
UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+dmFsdWVzLCBtYXBQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsK
ICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIG1hcFBy
b3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY0VudHJpZXMs
IERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7CiAKICAg
ICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCk7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZS5zdHJpbmcoKSwgbWFw
UHJvdG9GdW5jU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmpl
Y3QuY3BwCmluZGV4IDI4ZmY1YzhkOTI3OWVlNTllNWIxMWU3NTFiOTliNTRiMmY2ZjAzOTQuLjUx
NTZlZDJlZmQ1ZjAwNDEyZmMyNzA0NjcwYWQ4ZGFiM2ZiMjc4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCkBAIC04Nyw0OSArODcsNDkgQEAgdm9p
ZCBNYXRoT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyKCZ2bSwgIkUiKSwganNOdW1iZXIoZXhwKDEuMCkpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXIoJnZtLCAiTE4yIiksIGpzTnVtYmVyKGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyKCZ2bSwgIkxOMTAiKSwganNOdW1iZXIobG9nKDEwLjApKSwgRG9udERlbGV0ZSB8IERv
bnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyKCZ2bSwgIkxPRzJFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygyLjApKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkxPRzEwRSIpLCBqc051bWJlcigwLjQzNDI5NDQ4MTkw
MzI1MTgpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiUEkiKSwganNOdW1iZXIocGlE
b3VibGUpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiU1FSVDFfMiIpLCBqc051bWJl
cihzcXJ0KDAuNSkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiU1FSVDIiKSwganNO
dW1iZXIoc3FydCgyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotCi0g
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyKCZ2bSwgImFicyIpLCAxLCBtYXRoUHJvdG9GdW5jQWJzLCBBYnNJbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhY29z
IiksIDEsIG1hdGhQcm90b0Z1bmNBQ29zLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImFzaW4iKSwgMSwgbWF0aFByb3RvRnVuY0FTaW4s
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZt
LCAiYXRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhY29zaCIpLCAxLCBtYXRoUHJvdG9G
dW5jQUNvc2gsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIoJnZtLCAiYXNpbmgiKSwgMSwgbWF0aFByb3RvRnVuY0FTaW5oLCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImF0YW5oIiksIDEs
IG1hdGhQcm90b0Z1bmNBVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcigmdm0sICJhdGFuMiIpLCAyLCBtYXRoUHJvdG9GdW5jQVRhbjIsIE5v
SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAi
Y2JydCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2JydCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJjZWlsIiksIDEsIG1hdGhQcm90b0Z1bmND
ZWlsLCBDZWlsSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXIoJnZtLCAiY29zIiksIDEsIG1hdGhQcm90b0Z1bmNDb3MsIENvc0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImNvc2giKSwgMSwgbWF0aFBy
b3RvRnVuY0Nvc2gsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXIoJnZtLCAiZXhwIiksIDEsIG1hdGhQcm90b0Z1bmNFeHAsIEV4cEludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImV4cG0xIiksIDEs
IG1hdGhQcm90b0Z1bmNFeHBtMSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcigmdm0sICJmbG9vciIpLCAxLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZs
b29ySW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZt
LCAiZnJvdW5kIiksIDEsIG1hdGhQcm90b0Z1bmNGcm91bmQsIEZSb3VuZEludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImh5cG90IiksIDIsIG1h
dGhQcm90b0Z1bmNIeXBvdCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcigmdm0sICJsb2ciKSwgMSwgbWF0aFByb3RvRnVuY0xvZywgTG9nSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibG9nMTAi
KSwgMSwgbWF0aFByb3RvRnVuY0xvZzEwLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImxvZzFwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cx
cCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigm
dm0sICJsb2cyIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cyLCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgIm1heCIpLCAyLCBtYXRoUHJvdG9G
dW5jTWF4LCBNYXhJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcigmdm0sICJtaW4iKSwgMiwgbWF0aFByb3RvRnVuY01pbiwgTWluSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAicG93IiksIDIsIG1hdGhQ
cm90b0Z1bmNQb3csIFBvd0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyKCZ2bSwgInJhbmRvbSIpLCAwLCBtYXRoUHJvdG9GdW5jUmFuZG9tLCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInJvdW5k
IiksIDEsIG1hdGhQcm90b0Z1bmNSb3VuZCwgUm91bmRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJzaWduIiksIDEsIG1hdGhQcm90b0Z1bmNT
aWduLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
KCZ2bSwgInNpbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2luLCBTaW5JbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJzaW5oIiksIDEsIG1hdGhQcm90
b0Z1bmNTaW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgInNxcnQiKSwgMSwgbWF0aFByb3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJ0YW4iKSwgMSwg
bWF0aFByb3RvRnVuY1RhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcigmdm0sICJ0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNUYW5oLCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRydW5j
IiksIDEsIG1hdGhQcm90b0Z1bmNUcnVuYywgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJpbXVsIiksIDEsIG1hdGhQcm90b0Z1bmNJTXVs
LCBJTXVsSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJFIiksIGpzTnVt
YmVyKGV4cCgxLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
IkxOMiIpLCBqc051bWJlcihsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRP
bmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJMTjEwIiksIGpzTnVtYmVyKGxvZygxMC4wKSksIERvbnREZWxldGUgfCBE
b250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJMT0cyRSIpLCBqc051bWJlcigxLjAgLyBsb2co
Mi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJMT0cxMEUi
KSwganNOdW1iZXIoMC40MzQyOTQ0ODE5MDMyNTE4KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwg
UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgIlBJIiksIGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlNRUlQxXzIiKSwganNOdW1iZXIoc3FydCgw
LjUpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlNRUlQyIiks
IGpzTnVtYmVyKHNxcnQoMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsK
KworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhYnMiKSwgMSwgbWF0aFByb3Rv
RnVuY0FicywgQWJzSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYWNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvcywgTm9J
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJhc2luIiksIDEsIG1hdGhQcm90b0Z1bmNBU2luLCBOb0ludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImF0
YW4iKSwgMSwgbWF0aFByb3RvRnVuY0FUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYWNvc2giKSwgMSwgbWF0
aFByb3RvRnVuY0FDb3NoLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNB
U2luaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJhdGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbmgsIE5vSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiYXRhbjIiKSwgMiwgbWF0aFByb3RvRnVuY0FUYW4yLCBOb0ludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNi
cnQiKSwgMSwgbWF0aFByb3RvRnVuY0NicnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY2VpbCIpLCAxLCBtYXRo
UHJvdG9GdW5jQ2VpbCwgQ2VpbEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQ29z
LCBDb3NJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJjb3NoIiksIDEsIG1hdGhQcm90b0Z1bmNDb3NoLCBOb0ludHJpbnNp
YywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgImV4cCIpLCAxLCBtYXRoUHJvdG9GdW5jRXhwLCBFeHBJbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJleHBtMSIpLCAx
LCBtYXRoUHJvdG9GdW5jRXhwbTEsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZmxvb3IiKSwgMSwgbWF0aFByb3Rv
RnVuY0Zsb29yLCBGbG9vckludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImZyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jRnJv
dW5kLCBGUm91bmRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJoeXBvdCIpLCAyLCBtYXRoUHJvdG9GdW5jSHlwb3QsIE5v
SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAibG9nIiksIDEsIG1hdGhQcm90b0Z1bmNMb2csIExvZ0ludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImxv
ZzEwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxMCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb2cxcCIpLCAxLCBt
YXRoUHJvdG9GdW5jTG9nMXAsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibG9nMiIpLCAxLCBtYXRoUHJvdG9GdW5j
TG9nMiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJtYXgiKSwgMiwgbWF0aFByb3RvRnVuY01heCwgTWF4SW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAibWluIiksIDIsIG1hdGhQcm90b0Z1bmNNaW4sIE1pbkludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBvdyIpLCAy
LCBtYXRoUHJvdG9GdW5jUG93LCBQb3dJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJyYW5kb20iKSwgMCwgbWF0aFByb3Rv
RnVuY1JhbmRvbSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jUm91bmQs
IFJvdW5kSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAic2lnbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2lnbiwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJzaW4iKSwgMSwgbWF0aFByb3RvRnVuY1NpbiwgU2luSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAic2luaCIpLCAx
LCBtYXRoUHJvdG9GdW5jU2luaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzcXJ0IiksIDEsIG1hdGhQcm90b0Z1
bmNTcXJ0LCBTcXJ0SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidGFuIiksIDEsIG1hdGhQcm90b0Z1bmNUYW4sIE5vSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAidGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0cnVu
YyIpLCAxLCBtYXRoUHJvdG9GdW5jVHJ1bmMsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW11bCIpLCAxLCBtYXRo
UHJvdG9GdW5jSU11bCwgSU11bEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAppbmRleCAzY2ZlOTQxMTZmYTA2MWJjYjVhMjEyNzE2
NWE0ZDAxNDg0MTcyZjVkLi45NWE4ZGNhOTA4ZmE1YjdmZWExNTkxMjk1MTA5MTcyNDNhYjdjMDJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuY3BwCkBAIC01OSwyMSArNTksMjEgQEAgdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKICAg
ICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBS
ZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAKLSAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJFUFNJTE9OIiksIGpzRG91YmxlTnVtYmVy
KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigpKSwgRG9udERlbGV0ZSB8IERv
bnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyKCZ2bSwgIk1BWF9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcigxLjc5NzY5MzEzNDg2
MjMxNTdFKzMwOCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJNSU5fVkFMVUUiKSwg
anNEb3VibGVOdW1iZXIoNUUtMzI0KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk1B
WF9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIoOTAwNzE5OTI1NDc0MDk5MS4wKSwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk1JTl9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVO
dW1iZXIoLTkwMDcxOTkyNTQ3NDA5OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRP
bmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0s
ICJORUdBVElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcigtc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIlBP
U0lUSVZFX0lORklOSVRZIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJOYU4iKSwg
anNOYU4oKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotCi0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5n
bG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJpc0Zpbml0ZSIpLCAxLCBudW1iZXJDb25z
dHJ1Y3RvckZ1bmNJc0Zpbml0ZSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNJbnRlZ2VyIiksIDEs
IG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNO
YU4iKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNOYU4sIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwg
ImlzU2FmZUludGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZlSW50ZWdlciwg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0
KCksIElkZW50aWZpZXIoJnZtLCAicGFyc2VGbG9hdCIpLCAxLCBnbG9iYWxGdW5jUGFyc2VGbG9h
dCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2Jq
ZWN0KCksIElkZW50aWZpZXIoJnZtLCAicGFyc2VJbnQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNlSW50
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiRVBTSUxPTiIpLCBq
c0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSksIERv
bnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNQVhfVkFMVUUiKSwganNE
b3VibGVOdW1iZXIoMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTUlOX1ZBTFVFIiksIGpzRG91YmxlTnVtYmVyKDVFLTMy
NCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNQVhfU0FGRV9J
TlRFR0VSIiksIGpzRG91YmxlTnVtYmVyKDkwMDcxOTkyNTQ3NDA5OTEuMCksIERvbnREZWxldGUg
fCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNSU5fU0FGRV9JTlRFR0VSIiksIGpzRG91
YmxlTnVtYmVyKC05MDA3MTk5MjU0NzQwOTkxLjApLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiTkVHQVRJVkVfSU5GSU5JVFkiKSwganNEb3VibGVOdW1iZXIoLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJQT1NJVElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51
bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RGVsZXRl
IHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTmFOIiksIGpzTmFOKCksIERvbnREZWxl
dGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNGaW5pdGUiKSwgMSwgbnVtYmVyQ29uc3RydWN0
b3JGdW5jSXNGaW5pdGUsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzSW50ZWdl
ciIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0ludGVnZXIsIE5vSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImlzTmFOIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzTmFOLCBO
b0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpc1NhZmVJbnRlZ2VyIiksIDEsIG51bWJl
ckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgInBhcnNlRmxvYXQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQsIE5vSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBhcnNlSW50IiksIDEsIGdsb2JhbEZ1bmNQYXJzZUludCwg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwogfQogCiAvLyBFQ01BIDE1LjcuMQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IDYwMmU1NzUyODllMTZjZGMxNmEwYmJhMzQ5Nzg1ZjJlMjdlZjE3ZGQuLmJmYjVm
NjQ3YmNiZDdmOWYyYTlhNjg1ODE0YzAyYTEzYTg2MzRkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM0LDEyICsz
NCwxNCBAQAogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3lt
Ym9sLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcktl
eXMoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKQEAg
LTg0LDEzICs4NiwxNiBAQCBPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBPYmplY3RDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlw
ZSkKK3ZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiT2JqZWN0
Iikuc3RyaW5nKCkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBvYmplY3RQcm90b3R5
cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIC8vIEVDTUEgMTUuMi4zLjEKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAg
ICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBS
ZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisKKyAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5ydW50aW1lRmxhZ3MoKS5pc1N5bWJvbEVuYWJsZWQoKSkKKyAgICAgICAgSlNDX05BVElWRV9G
VU5DVElPTigiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eVN5bWJvbHMsIERvbnRFbnVtLCAxKTsKIH0KIAogYm9vbCBPYmplY3RDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQpAQCAtMjA2LDcg
KzIxMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JH
ZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBuYW1lcyBv
ZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVj
LT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBl
eGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsK
ICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMjE1LDEyICsyMjAsMjkg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGUKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVy
YXRpb24gY2FjaGUuCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIHByb3Bl
cnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CisgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1
bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFz
T2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25N
b2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOworICAgIEpT
QXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBzaXplX3Qg
bnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7CisgICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGlt
cGwgPSBwcm9wZXJ0aWVzW2ldLmltcGwoKTsKKyAgICAgICAgaWYgKGltcGwtPmlzVW5pcXVlKCkp
CisgICAgICAgICAgICBuYW1lcy0+cHVzaChleGVjLCBTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgp
LCBpbXBsKSk7CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZXMpOworfQor
CisvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVz
dGVkIGtleXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICBKU0FycmF5KiBrZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMzMxLDcg
KzM1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JE
ZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9w
ZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3Bl
cnRpZXMpCiB7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAg
ICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blBy
b3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGllcyksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0
aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVz
ID0gcHJvcGVydHlOYW1lcy5zaXplKCk7CiAgICAgVmVjdG9yPFByb3BlcnR5RGVzY3JpcHRvcj4g
ZGVzY3JpcHRvcnM7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFya0J1ZmZlcjsKQEAgLTM5
OCw3ICs0MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yU2VhbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24g
cHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhl
eGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURv
bnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1
bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBP
IHdpdGggUC4KQEAgLTQzNSw3ICs0NTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZv
ciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRp
b25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAg
IFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgp
OwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9w
ZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0
IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50
ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDgzLDcgKzUwNSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8s
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZElu
Y2x1ZGVTeW1ib2xzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9p
dGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tH
ZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTUxMyw3ICs1
MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNG
cm96ZW4oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHBy
b3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
Yyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250
RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0
eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0
IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3
aXRoIFAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuaAppbmRleCAxMjUyNzgxYTVlODkwMDY5ZWE3ZDkwMTMwZmYzMWVlOWU5MGQzOGQ1Li5i
YjA2N2IxNTU1ZmUwOTg2MWJlYTQyZDE5MmFhOTZhZjM3YzMwMmI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTMzLDEwICsz
MywxMCBAQCBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAotICAgIHN0
YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQorICAgIHN0YXRpYyBPYmplY3RD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQog
ICAgIHsKICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBPYmplY3RDb25z
dHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0
aW9uKHZtLCBvYmplY3RQcm90b3R5cGUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIGdsb2JhbE9iamVjdCwgb2JqZWN0UHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogICAgIH0KIApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBPYmplY3RDb25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICB9CiAKIHByb3RlY3RlZDoK
LSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgT2JqZWN0UHJvdG90eXBlKik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRl
TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAppbmRl
eCAyMTQxNjQ0NjY0NWM3ZmZmMDNmN2M4MmQxNzg3MzlhZDU2MDhiZjY0Li41NzM2YTQwOTQzNGZi
MGI1N2EzOWQ2ZmM4ODYwMDM1OTI3NjczNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ByaXZhdGVOYW1lLmgKQEAgLTM1LDE5ICszNSwyNSBAQCBjbGFzcyBQcml2YXRlTmFt
ZSB7CiAgICAgUHJpdmF0ZU5hbWUoKQogICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVh
dGVVbmlxdWVFbXB0eSgpKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUo
KSk7CiAgICAgfQotICAgIFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCi0g
ICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5pbXBs
KCkpKQorCisgICAgZW51bSBDcmVhdGVQcml2YXRlVGFnIHsgQ3JlYXRlUHJpdmF0ZSB9OworICAg
IFByaXZhdGVOYW1lKENyZWF0ZVByaXZhdGVUYWcpCisgICAgICAgIDogbV9pbXBsKFN0cmluZ0lt
cGw6OmNyZWF0ZVVuaXF1ZVByaXZhdGVFbXB0eSgpKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
aW1wbC0+aXNVbmlxdWUoKSk7CiAgICAgfQorCiAgICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoU3Ry
aW5nSW1wbCogdWlkKQogICAgICAgICA6IG1faW1wbCh1aWQpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAgICB9CiAKKyAgICBleHBsaWNpdCBQcml2YXRlTmFt
ZShjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQorICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBs
OjpjcmVhdGVVbmlxdWUoZGVzY3JpcHRpb24uaW1wbCgpKSkKKyAgICB7CisgICAgfQorCiAgICAg
QXRvbWljU3RyaW5nSW1wbCogdWlkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWlj
U3RyaW5nSW1wbCo+KG1faW1wbC5nZXQoKSk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHVpZCgpID09IG90aGVyLnVpZCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCmluZGV4
IDMwNzRjNzJlMTA3MDEzM2I5N2IwM2IxZGZmNGE0M2RlMTMyZmMwYTYuLjA5NGJkMjVjZWY1OTdm
MWFkMmY5YTQ1Y2NmZWIxMTIwMjYzMmFhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFByb3BlcnR5TmFt
ZSB7CiAgICAgUHJvcGVydHlOYW1lKEF0b21pY1N0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSkKICAg
ICAgICAgOiBtX2ltcGwocHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2lt
cGwgfHwgbV9pbXBsLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9p
bXBsLT5pc0F0b21pYygpIHx8IG1faW1wbC0+aXNVbmlxdWUoKSk7CiAgICAgfQogCiAgICAgUHJv
cGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKQEAgLTk0LDcgKzk0LDYg
QEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ltcGwpOwog
ICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKLSAgICAgICAgQVNTRVJUKG1faW1w
bC0+aXNBdG9taWMoKSk7CiAgICAgfQogCiAgICAgQXRvbWljU3RyaW5nSW1wbCogdWlkKCkgY29u
c3QKQEAgLTEwNCwxNCArMTAzLDE0IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAKICAgICBBdG9t
aWNTdHJpbmdJbXBsKiBwdWJsaWNOYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBt
X2ltcGwtPmlzVW5pcXVlKCkgPyBudWxscHRyIDogbV9pbXBsOworICAgICAgICByZXR1cm4gKCFt
X2ltcGwgfHwgbV9pbXBsLT5pc1VuaXF1ZSgpKSA/IG51bGxwdHIgOiBtX2ltcGw7CiAgICAgfQog
CiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5kZXggPSBVSU5UX01BWDsKIAogICAg
IHVpbnQzMl90IGFzSW5kZXgoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbCA/IHRvVUlu
dDMyRnJvbVN0cmluZ0ltcGwobV9pbXBsKSA6IE5vdEFuSW5kZXg7CisgICAgICAgIHJldHVybiAo
bV9pbXBsICYmICFtX2ltcGwtPmlzVW5pcXVlKCkpID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbCht
X2ltcGwpIDogTm90QW5JbmRleDsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5jcHAKaW5kZXggNDQ3NWI4OThhOTc0OTc3Y2U2OGU0NzU5ZGNhZDA2
YmQ2YTA0ODM3My4uMzE3NmViZWVjMDMzMjY5MzM1NDZlNDU1YWQyMmEwMjkzYzNhNzExZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXku
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5
LmNwcApAQCAtMzEsOSArMzEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBQcm9wZXJ0eU5h
bWVBcnJheTo6YWRkKFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFpZGVu
dGlmaWVyIHx8IGlkZW50aWZpZXIgPT0gU3RyaW5nSW1wbDo6ZW1wdHkoKSB8fCBpZGVudGlmaWVy
LT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlQoIWlkZW50aWZpZXIgfHwgKCFpZGVudGlmaWVyLT5p
c1ByaXZhdGUoKSAmJiBpZGVudGlmaWVyID09IFN0cmluZ0ltcGw6OmVtcHR5KCkgfHwgaWRlbnRp
Zmllci0+aXNBdG9taWMoKSB8fCBpZGVudGlmaWVyLT5pc1VuaXF1ZSgpKSk7CiAgICAgaWYgKCFB
U1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgdWludDMyX3QgaW5kZXggPSBQcm9wZXJ0eU5hbWUo
SWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSkuYXNJbmRleCgpOworICAgICAgICB1aW50MzJf
dCBpbmRleCA9IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlkZW50aWZp
ZXIpKS5hc0luZGV4KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5kZXgsIGluZGV4ID09IFBy
b3BlcnR5TmFtZTo6Tm90QW5JbmRleCB8fCBpbmRleCA+PSBtX3ByZXZpb3VzbHlFbnVtZXJhdGVk
TGVuZ3RoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oCmluZGV4IDk5NGYwOWM5MDU0MDExZTQxYjIzMzhmOWQwNTA0YjJk
NDliZmYzOWEuLjg5ZmNiZGVjZjdlODFjZTIzNWQ0YjEwM2U1OTQ2OWM5ODExYTdjNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaApA
QCAtOTgsNyArOTgsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheSB7CiAgICAgdm9pZCBhZGRL
bm93blVuaXF1ZShTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgbV9zZXQt
PmFkZChpZGVudGlmaWVyKTsKLSAgICAgICAgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5h
cHBlbmQoSWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSk7CisgICAgICAgIG1fZGF0YS0+cHJv
cGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgaWRlbnRp
ZmllcikpOwogICAgIH0KIAogICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWduZWQgaSkg
eyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IDQ1
ZTgwZjVjZGMxNWE1NmYyYzY2MmI1MzRiNWQyZGRkYjViZmU5OTIuLmVlMWQ4YjNmYzY5Zjk0M2I5
NGE1MjU5Y2Y3YzE4NmNhYzYzNzNmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgUmVnRXhw
Q29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZ0V4cFByb3RvdHkKIAogdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKIHsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJSZWdFeHAiKS5zdHJpbmcoKSk7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHJlZ0V4cFByb3RvdHlwZS0+Y2xhc3NJbmZv
KCktPmNsYXNzTmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogCiAgICAgLy8g
RUNNQSAxNS4xMC41LjEgUmVnRXhwLnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNGQ5ZDBiMjdlNGQwYzhjOTFmOWZlYjQ1
YTFkNTRlNTk1ZDMzZDUxOS4uNTQ5YTNhMmY5YTc0YzNhMWE5ZGM3MDAxMDQxMmZhNDc5ZDkxYTg1
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
CkBAIC0xMDUsMjEgKzEwNSwyMSBAQCBib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcgogCiB2b2lkIFJl
Z0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
KSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJ
bmRleCk7CiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0OjpnZXRQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlmIChz
aG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFzZTo6Z2V0UHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiB2b2lkIFJlZ0V4
cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUpCiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9k
ZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsK
ICAgICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDU3M2FjZmE1Y2Q3NjRiMDllZTc1NDNi
MzQ3YjQ5YTUxMTFlNzA1MzcuLjhlYTYxMDQ4ZDc0OTdlYWMwNWM5MTExYmMxMjY4M2I2Y2Y4MjQ5
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVy
YXRvclByb3RvdHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTZXRJdGVyYXRvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRk
UHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRv
ciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250
RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvck5leHRQcml2YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwgRG9udEVu
dW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcAppbmRleCBmODhlYTdjZjk4NjhmNjY4YjhjMmU4ODgxNWZmNjVjZjM5OTI3YjQ5Li40
OTk2ZGEwZWE1MzEzZmQyZTYxZTcxYTZlZjQzODM1MWZhYTNiYWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
dm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmtleXMsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgc2V0UHJvdG9GdW5jVmFsdWVzLCBEb250
RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRy
aWVzLCBzZXRQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBzZXRQcm90b0Z1
bmNLZXlzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwog
CiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCks
IHNldFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5jcHAKaW5kZXggNTAwMWJjYzRlMWI3ZTM3OTNlZDI2ZTE0MjBhODBhNjA0Njhl
MTNjNi4uYWIzOTQ5ZTA3ZTMzZTFhMTlmNzUzNTlmMjk5ODFhMjE0OWFmMGJkNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0xNTAsNyAr
MTUwLDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICBpbnQgc2l6ZSA9IHRoaXNPYmpl
Y3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBz
aXplOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhl
YywgaSkpOwotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQor
ICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgcmV0
dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKaW5kZXggYzc2OTA1MTNkN2FhNzAzYjdmYjIzZDE1YzNmMjA3YTVjMGViMWQyNy4u
OWY3YzJkZWQ1MGIzOTJmZjljNWVkYTVlYmFkZGYwYzFjYzkzZTdmZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC05NDcsNyArOTQ3LDExIEBAIHZv
aWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShWTSYgdm0sIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0CiAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0g
cHJvcGVydHlUYWJsZSgpLT5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9y
IGl0ZXIgPSBwcm9wZXJ0eVRhYmxlKCktPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
ICAgICAgICAgQVNTRVJUKGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgfHwgIShpdGVyLT5h
dHRyaWJ1dGVzICYgRG9udEVudW0pKTsKLSAgICAgICAgaWYgKCFpdGVyLT5rZXktPmlzVW5pcXVl
KCkgJiYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSkgeworICAgICAgICBpZiAoIShpdGVyLT5hdHRyaWJ1dGVz
ICYgRG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7
CisgICAgICAgICAgICBpZiAoaXRlci0+a2V5LT5pc1ByaXZhdGUoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICghbW9kZS5zaG91bGRJbmNsdWRlU3ltYm9scygp
ICYmIGl0ZXItPmtleS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGlmIChrbm93blVuaXF1ZSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZEtub3duVW5pcXVlKGl0ZXItPmtleSk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
OTljZTY4NjI3NGZkNzczOTI4ZGRkNTlmZjFmOWNhZjRlZWJlMjExZS4uYWE5NGZhMzFmMWEwOTVi
ZTM4ODRjNDE3ODAyNDRiNzE4OGIzMDI4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtNDQsNyArNDQsNyBAQCBTeW1i
b2xDb25zdHJ1Y3Rvcjo6U3ltYm9sQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIH0KIAogI2RlZmluZSBJTklUSUFMSVpFX1dFTExfS05PV05fU1lNQk9MUyhuYW1lKSBc
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAjbmFt
ZSksIFN5bWJvbDo6Y3JlYXRlKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNQcml2YXRlTmFt
ZS5pbXBsKCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAjbmFt
ZSksIFN5bWJvbDo6Y3JlYXRlKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNTeW1ib2wuaW1w
bCgpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiB2b2lkIFN5bWJvbENv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSogcHJvdG90
eXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDBmNzM1NDBmNDM1
OTZhNzI0NmUyOTQyNDJiZTA1MmExZDQ1NjZkZjguLmMxYjNlODFkN2MzNzUyMTA1MzRmYWE1MGE0
NWYyZmZjMDk1OGFiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY1
NiwxMCArNjU2LDEwIEBAIEpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBlcnJvcikKICAgICAgICAgdW5zaWduZWQgbGluZTsKICAgICAgICAgdW5zaWdu
ZWQgY29sdW1uOwogICAgICAgICBzdGFja0ZyYW1lLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUs
IGNvbHVtbik7Ci0gICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVy
KHRoaXMsICJsaW5lIiksIGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwot
ICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcih0aGlzLCAiY29s
dW1uIiksIGpzTnVtYmVyKGNvbHVtbiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAg
IGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHRoaXMs
ICJsaW5lIiksIGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAg
ICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh0aGlz
LCAiY29sdW1uIiksIGpzTnVtYmVyKGNvbHVtbiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAg
ICAgICAgIGlmICghc3RhY2tGcmFtZS5zb3VyY2VVUkwuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ZXhjZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXIodGhpcywgInNvdXJjZVVSTCIp
LCBqc1N0cmluZyh0aGlzLCBzdGFja0ZyYW1lLnNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERl
bGV0ZSk7CisgICAgICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh0aGlzLCAic291cmNlVVJMIiksIGpzU3RyaW5nKHRoaXMsIHN0YWNrRnJh
bWUuc291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKICAgICB9CiAgICAgaWYgKGV4
Y2VwdGlvbi0+aXNFcnJvckluc3RhbmNlKCkgJiYgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+
KGV4Y2VwdGlvbiktPmFwcGVuZFNvdXJjZVRvTWVzc2FnZSgpKSB7CiAgICAgICAgIEZpbmRGaXJz
dENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IgZnVuY3RvcihleGVjKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJv
cGVydHktc3ltYm9scy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGU5M2Q4YjI0Nzlk
ZTkyYWQ5NjBlNzViNDJlNzkxZmQ5MjVmMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xz
LmpzCkBAIC0wLDAgKzEsMzUgQEAKKy8vIFRoaXMgdGVzdHMgT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scy4KKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpKTsKKwor
Ly8gcHJpdmF0ZSBuYW1lcyBmb3IgcHJpdmlsZWdlZCBjb2RlIHNob3VsZCBub3QgYmUgZXhwb3Nl
ZC4KK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGdsb2JhbCkubGVuZ3RoICE9PSAw
KQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKGdsb2JhbCkubGVuZ3RoOworCit2YXIgb2JqZWN0ID0ge307Cit2YXIgc3ltYm9sID0g
U3ltYm9sKCJDb2NvYSIpOworb2JqZWN0W3N5bWJvbF0gPSAiQ2FwcHVjY2lubyI7CitpZiAoT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cg
IkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCku
bGVuZ3RoOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGgg
IT09IDEpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGg7CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyhvYmplY3QpWzBdICE9PSBzeW1ib2wpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUg
IiArIFN0cmluZyhPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0pOworCitm
dW5jdGlvbiBmb3JJbihvYmopIHsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICAvLyBTeW1ib2wg
c2hvdWxkIG5vdCBiZSBlbnVtZXJhdGVkLgorICAgIGZvciAodmFyIGtleSBpbiBvYmopIGFycmF5
LnB1c2goa2V5KTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK2lmIChmb3JJbihvYmplY3QpLmxl
bmd0aCAhPT0gMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgZm9ySW4ob2JqZWN0
KS5sZW5ndGg7CitpZiAoT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhy
b3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoOworCitk
ZWxldGUgb2JqZWN0W3N5bWJvbF07CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBi
YWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1k
ZWZpbmUtcHJvcGVydHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5
bWJvbC1kZWZpbmUtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFjM2VjMDVmODA2ZTM3MjU3NzM2
MjQ4MjYxOTgxNTIzMGI2YjNkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDMz
IEBACisvLyBUaGlzIHRlc3RzIE9iamVjdC5jcmVhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwg
T2JqZWN0LmRlZmluZVByb3BlcnRpZXMgd29yayB3aXRoIFN5bWJvbC4KKworZnVuY3Rpb24gdGVz
dFN5bWJvbChvYmplY3QpIHsKKyAgICBpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wu
aXRlcmF0b3IpKQorICAgICAgICB0aHJvdyAiRXJyb3I6IG9iamVjdCBkb2Vzbid0IGhhdmUgU3lt
Ym9sLml0ZXJhdG9yIjsKKyAgICBpZiAob2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJv
bC5pdGVyYXRvcikpCisgICAgICAgIHRocm93ICJFcnJvcjogU3ltYm9sLml0ZXJhdG9yIGlzIGRl
ZmluZWQgYXMgZW51bWVyYWJsZSI7CisgICAgaWYgKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAhPT0gJ3sidmFs
dWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUi
OmZhbHNlfScpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2NyaXB0b3Ig
IiArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0
LCBTeW1ib2wuaXRlcmF0b3IpKTsKKyAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyhvYmplY3QpLmxlbmd0aCAhPT0gMSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsg
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aDsKKyAgICBpZiAoT2Jq
ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdICE9PSBTeW1ib2wuaXRlcmF0b3Ip
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdKTsKK30KKwordmFyIG9iamVjdCA9IE9iamVjdC5j
cmVhdGUoT2JqZWN0LnByb3RvdHlwZSwgeworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7CisgICAg
ICAgIHZhbHVlOiA0MgorICAgIH0KK30pOwordGVzdFN5bWJvbChvYmplY3QpOworCit2YXIgb2Jq
ZWN0ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9y
XTogeworICAgICAgICB2YWx1ZTogNDIKKyAgICB9Cit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsK
KwordmFyIG9iamVjdCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgU3ltYm9sLml0ZXJhdG9y
LCB7CisgICAgdmFsdWU6IDQyCit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5k
LWZyZWV6ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjUwN2NkOWVlNTNjNTFiMmMyMTljNzI4YzRkM2M1NWVk
ZDc3YzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vIFRoaXMg
dGVzdHMgT2JqZWN0LnNlYWwgYW5kIE9iamVjdC5mcmVlemUgYWZmZWN0IG9uIFN5bWJvbCBwcm9w
ZXJ0aWVzLgorCit2YXIgb2JqZWN0ID0geworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiA0MgorfTsK
KworaWYgKCFvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICB0aHJv
dyAiRXJyb3I6IG9iamVjdCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsKK2lmIChKU09O
LnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9s
Lml0ZXJhdG9yKSkgIT09ICd7InZhbHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUi
OnRydWUsImNvbmZpZ3VyYWJsZSI6dHJ1ZX0nKQorICAgIHRocm93ICJFcnJvcjogYmFkIHByb3Bl
cnR5IGRlc2NyaXB0b3IgIiArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKTsKK2lmIChPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoICE9PSAxKQorICAgIHRocm93ICJFcnJvcjogYmFk
IHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOwor
aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSAhPT0gU3ltYm9sLml0
ZXJhdG9yKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdKTsKKworT2JqZWN0LnNlYWwob2JqZWN0KTsK
K2lmICghb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikpCisgICAgdGhyb3cg
IkVycm9yOiBvYmplY3QgZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVyYXRvciI7CitpZiAoSlNPTi5z
dHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5p
dGVyYXRvcikpICE9PSAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0
cnVlLCJjb25maWd1cmFibGUiOmZhbHNlfScpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcHJvcGVy
dHkgZGVzY3JpcHRvciAiICsgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpOworCitPYmplY3QuZnJlZXplKG9iamVj
dCk7CitpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpKQorICAgIHRo
cm93ICJFcnJvcjogb2JqZWN0IGRvZXNuJ3QgaGF2ZSBTeW1ib2wuaXRlcmF0b3IiOworaWYgKEpT
T04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1i
b2wuaXRlcmF0b3IpKSAhPT0gJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFi
bGUiOnRydWUsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBw
cm9wZXJ0eSBkZXNjcmlwdG9yICIgKyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2MwM2Q1ZDVhMTFkNDgyYWFmNjAzOGNjMGE0N2Y5NzE5YzVkOWY5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXdpdGgt
anNvbi5qcwpAQCAtMCwwICsxLDE0IEBACisvLyBUaGlzIHRlc3RzIEpTT04gY29ycmVjdGx5IGJl
aGF2ZXMgd2l0aCBTeW1ib2wuCisKK2lmIChKU09OLnN0cmluZ2lmeShTeW1ib2woJ0NvY29hJykp
ICE9PSB1bmRlZmluZWQpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIEpTT04uc3Ry
aW5naWZ5KFN5bWJvbCgnQ29jb2EnKSk7CisKK3ZhciBvYmplY3QgPSB7fTsKK3ZhciBzeW1ib2wg
PSBTeW1ib2woIkNvY29hIik7CitvYmplY3Rbc3ltYm9sXSA9IDQyOworb2JqZWN0WydDYXBwdWNj
aW5vJ10gPSA0MjsKK2lmIChKU09OLnN0cmluZ2lmeShvYmplY3QpICE9PSAneyJDYXBwdWNjaW5v
Ijo0Mn0nKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBKU09OLnN0cmluZ2lmeShv
YmplY3QpOworCitpZiAoSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBbIFN5bWJvbCgnQ29jb2EnKSBd
KSAhPT0gInt9IikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgSlNPTi5zdHJpbmdp
Znkob2JqZWN0LCBbIFN5bWJvbCgnQ29jb2EnKSBdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcAppbmRleCAwNjI5MGMyNGU0NzNkM2U5NjViNDUwNDAwMGE2M2EyYTcyMDA4ZjVjLi45
ZjEzMGVkY2YyOGNiZjJmNWYwYTEwNTg3MTcwMTYxYjQxMjEwZmM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuY3BwCkBAIC00MDMsNiArNDAzLDkgQEAgUmVmPFN0cmluZ0ltcGw+IEF0
b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQogICAgIGlmICghc3Ry
aW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7CiAKKyAg
ICBpZiAoc3RyaW5nLmlzVW5pcXVlKCkpCisgICAgICAgIHJldHVybiBhZGQoc3RyaW5nLmV4dHJh
Y3RGb2xkZWRTdHJpbmdJblVuaXF1ZSgpKTsKKwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0
cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNh
c2UgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGF0b21pYy4iKTsKIAogICAgIEF0b21pY1N0cmlu
Z1RhYmxlTG9ja2VyIGxvY2tlcjsKQEAgLTQyMSw2ICs0MjQsOSBAQCBSZWY8U3RyaW5nSW1wbD4g
QXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZShBdG9taWNTdHJpbmdUYWJsZSYgc3RyaW5nVGFibGUs
IFN0cmluZwogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmlu
Z0ltcGw6OmVtcHR5KCk7CiAKKyAgICBpZiAoc3RyaW5nLmlzVW5pcXVlKCkpCisgICAgICAgIHJl
dHVybiBhZGQoc3RyaW5nVGFibGUsIHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUo
KSk7CisKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21p
Y1N0cmluZyBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxy
ZWFkeSBhdG9taWMuIik7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CkBA
IC01MDMsNiArNTA5LDEyIEBAIEF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZFNs
b3dDYXNlKFN0cmluZ0ltcGwmIHN0cmluZykKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFz
dHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZ0ltcGxzIHNob3VsZCByZXR1cm4gZnJvbSB0
aGUgZmFzdCBjYXNlLiIpOwogCisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7
CisKKyAgICBpZiAoc3RyaW5nLmlzVW5pcXVlKCkpCisgICAgICAgIHJldHVybiBmaW5kKCZzdHJp
bmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luVW5pcXVlKCkpOworCiAgICAgQXRvbWljU3RyaW5nVGFi
bGVMb2NrZXIgbG9ja2VyOwogICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNTdHJpbmdU
YWJsZSA9IHN0cmluZ1RhYmxlKCk7CiAgICAgYXV0byBpdGVyYXRvciA9IGF0b21pY1N0cmluZ1Rh
YmxlLmZpbmQoJnN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCBiYWU5
ZDM2MmQyNzUxZTVhNzNjZTBiMWI3ZTJhNDExYjAxODM3ZjMzLi42MDljZjczMWQyN2JmYzA2Nzhk
NmM2OTgzYzRjYjA4YjZhMjI5MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAg
LTE4MywxMSArMTgzLDkgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCosIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHN0cmluZykKICAgICB7Ci0gICAgICAg
IGlmICghc3RyaW5nIHx8IHN0cmluZy0+aXNBdG9taWMoKSkgewotICAgICAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghc3RyaW5nIHx8ICFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNV
bmlxdWUoKSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3Ry
aW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBpZiAoIXN0cmluZykK
ICAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFk
ZFNsb3dDYXNlKCpzdHJpbmcpOworICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmcpOwogICAgIH0K
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRGcm9t
TGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICNp
ZiBVU0UoQ0YpCkBAIC0xOTcsMTEgKzE5NSw5IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVGFibGVQcm92aWRlcj4KICAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoU3Ry
aW5nVGFibGVQcm92aWRlciYgc3RyaW5nVGFibGVQcm92aWRlciwgU3RyaW5nSW1wbCogc3RyaW5n
KQogICAgIHsKLSAgICAgICAgaWYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcgfHwgIXN0cmluZy0+bGVuZ3Ro
KCkgfHwgc3RyaW5nLT5pc1VuaXF1ZSgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcp
LCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAg
ICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoKnN0cmluZ1RhYmxlUHJvdmlkZXIuYXRvbWljU3Ry
aW5nVGFibGUoKSwgKnN0cmluZyk7CisgICAgICAgIHJldHVybiBhZGQoKnN0cmluZ1RhYmxlUHJv
dmlkZXIuYXRvbWljU3RyaW5nVGFibGUoKSwgKnN0cmluZyk7CiAgICAgfQogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRApAQCAtMjEzLDcgKzIwOSwyNSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAg
IEF0b21pY1N0cmluZyhBU0NJSUxpdGVyYWwpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwotICAg
IAorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJ
bXBsJiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoc3RyaW5nLmlzQXRvbWljKCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBpc0luQXRv
bWljU3RyaW5nVGFibGUoJnN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFu
IG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZyk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChBdG9taWNTdHJpbmdUYWJsZSYgc3Ry
aW5nVGFibGUsIFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmIChzdHJpbmcu
aXNBdG9taWMoKSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxl
bmd0aCgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZSgmc3RyaW5nKSwgIlRoZSBhdG9taWMgc3Ry
aW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICAgICAgcmV0dXJuIHN0
cmluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3RyaW5nVGFibGUs
IHN0cmluZyk7CisgICAgfQorCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1Rh
YmxlJiwgU3RyaW5nSW1wbCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCBj
MjQ5ZjRkN2ZmZDVkYWJlZTE2NDA2NGE2MjE5MjRkY2YzNDU3ZGM4Li4yNzJlYzlhOTlkOThlMWRk
Njk2NzM1YmUwNjZhNGYxOThmMjAxZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAK
QEAgLTI5Miw3ICsyOTIsOCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
cXVlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwKQogICAgIGlmICghbGVuZ3RoKQogICAgICAg
ICByZXR1cm4gY3JlYXRlVW5pcXVlRW1wdHkoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gc3RyaW5n
ID0gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwocmVwLCAwLCBsZW5ndGgpOwotICAgIHN0cmlu
Zy0+bV9oYXNoQW5kRmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc3RyaW5nLT5tX2hhc2hB
bmRGbGFncyk7CisgICAgQVNTRVJUKCFzdHJpbmctPmlzQXRvbWljKCkpOworICAgIHN0cmluZy0+
bV9oYXNoQW5kRmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc3RyaW5nLT5tX2hhc2hBbmRG
bGFncywgZmFsc2UpOwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKaW5kZXggMjY2Yjk3ZTRjODg2NjdiZjE0NjBlN2I5MWJiMDUxYzRiYTUzODk3Yi4uOGNl
ZTg1MGJjZWU2NjdmNDg0YzZmZmZjZDZkNzBhZjVjOWYxYjFmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKQEAgLTE0MSw2ICsxNDEsMjUgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAg
IEJ1ZmZlclN1YnN0cmluZywKICAgICB9OwogCisgICAgLy8gVGhlIGJvdHRvbSA2IGJpdHMgaW4g
dGhlIGhhc2ggYXJlIGZsYWdzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3Vu
dCA9IDY7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19m
bGFnQ291bnQpIC0gMTsKKyAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJpbmdI
YXNoZXI6OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zvcl9T
dHJpbmdJbXBsX2ZsYWdzKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnU3RyaW5n
S2luZENvdW50ID0gNDsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnU3Ry
aW5nS2luZElzVW5pcXVlID0gMXUgPDwgKHNfZmxhZ1N0cmluZ0tpbmRDb3VudCArIDEpOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hNYXNrU3RyaW5nS2luZCA9ICgxdSA8PCBzX2Zs
YWdTdHJpbmdLaW5kQ291bnQpIHwgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1VuaXF1ZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZzhCaXRCdWZmZXIgPSAxdSA8PCAzOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCA9IDF1IDw8IDI7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXAgPSAo
MXUgPDwgMCkgfCAoMXUgPDwgMSk7CisKKyAgICBlbnVtIFN0cmluZ0tpbmQgeworICAgICAgICBT
dHJpbmdBdG9taWMgPSAwdSA8PCBzX2ZsYWdTdHJpbmdLaW5kQ291bnQsCisgICAgICAgIFN0cmlu
Z05vcm1hbCA9IDF1IDw8IHNfZmxhZ1N0cmluZ0tpbmRDb3VudCwKKyAgICAgICAgU3RyaW5nVW5p
cXVlID0gMnUgPDwgc19mbGFnU3RyaW5nS2luZENvdW50LAorICAgICAgICBTdHJpbmdVbmlxdWVQ
cml2YXRlID0gM3UgPDwgc19mbGFnU3RyaW5nS2luZENvdW50LAorICAgIH07CisKICAgICAvLyBV
c2VkIHRvIGNvbnN0cnVjdCBzdGF0aWMgc3RyaW5ncywgd2hpY2ggaGF2ZSBhbiBzcGVjaWFsIHJl
ZkNvdW50IHRoYXQgY2FuIG5ldmVyIGhpdCB6ZXJvLgogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0
aGUgc3RhdGljIHN0cmluZyB3aWxsIG5ldmVyIGJlIGRlc3Ryb3llZCwgd2hpY2ggaXMgaW1wb3J0
YW50IGJlY2F1c2UKICAgICAvLyBzdGF0aWMgc3RyaW5ncyB3aWxsIGJlIHNoYXJlZCBhY3Jvc3Mg
dGhyZWFkcyAmIHJlZi1jb3VudGVkIGluIGEgbm9uLXRocmVhZHNhZmUgbWFubmVyLgpAQCAtMTUw
LDcgKzE2OSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19y
ZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZykKICAgICAgICAgLCBtX2xlbmd0aCgwKQogICAgICAg
ICAsIG1fZGF0YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0g
ICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBzX2hhc2hGbGFn
SXNBdG9taWMgfCBCdWZmZXJPd25lZCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hG
bGFnOEJpdEJ1ZmZlciB8IFN0cmluZ0F0b21pYyB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAg
ICAgLy8gRW5zdXJlIHRoYXQgdGhlIGhhc2ggaXMgY29tcHV0ZWQgc28gdGhhdCBBdG9taWNTdHJp
bmdIYXNoIGNhbiBjYWxsIGV4aXN0aW5nSGFzaCgpCiAgICAgICAgIC8vIHdpdGggaW1wdW5pdHku
IFRoZSBlbXB0eSBzdHJpbmcgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IGlzIG5ldmVyIGVudGVyZWQg
aW50bwpAQCAtMTY3LDcgKzE4Niw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1f
cmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgp
CiAgICAgICAgICwgbV9kYXRhOCh0YWlsUG9pbnRlcjxMQ2hhcj4oKSkKLSAgICAgICAgLCBtX2hh
c2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKQorICAgICAg
ICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwg
QnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAgICAgICAg
IEFTU0VSVChtX2xlbmd0aCk7CkBAIC0xODAsNyArMTk5LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7
CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1f
bGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGExNih0YWlsUG9pbnRlcjxVQ2hhcj4oKSkK
LSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hh
c2hBbmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX2RhdGExNik7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0xOTMsNyAr
MjEyLDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNv
dW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2Rh
dGE4KGNoYXJhY3RlcnMubGVha1B0cigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFz
aEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyT3duZWQpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Mo
c19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJPd25lZCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAg
LTIwNiw3ICsyMjUsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50
KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAg
ICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVy
SW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwgQnVmZmVy
SW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwogICAgICAgICBBU1NF
UlQobV9sZW5ndGgpOwpAQCAtMjE4LDcgKzIzNyw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAg
ICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0
aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzKQotICAgICAgICAsIG1faGFz
aEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwpCisgICAgICAg
ICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBC
dWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAg
QVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTIzMSw3ICsyNTAsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsK
ICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMubGVha1B0cigpKQot
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlck93bmVkKQorICAgICAgICAsIG1faGFzaEFu
ZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fZGF0YTE2KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTI0NCw3ICsyNjMsNyBA
QCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNy
ZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hh
cmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8
IEJ1ZmZlclN1YnN0cmluZykKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJp
dEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKICAgICB7CiAgICAgICAg
IEFTU0VSVChpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKQEAgLTI2MSw3ICsy
ODAsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291
bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0
YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVyU3Vic3RyaW5n
KQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmlu
ZykKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXM4Qml0KCkpOwogICAgICAgICBBU1NFUlQobV9k
YXRhMTYpOwpAQCAtMjczLDE0ICsyOTIsMTQgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAg
IFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7CiAgICAgfQog
Ci0gICAgZW51bSBDcmVhdGVFbXB0eVVuaXF1ZVRhZyB7IENyZWF0ZUVtcHR5VW5pcXVlIH07Ci0g
ICAgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVuaXF1ZVRhZykKKyAgICBlbnVtIENyZWF0ZVVuaXF1
ZUVtcHR5VGFnIHsgQ3JlYXRlVW5pcXVlRW1wdHkgfTsKKyAgICBTdHJpbmdJbXBsKENyZWF0ZVVu
aXF1ZUVtcHR5VGFnLCBib29sIGlzUHJpdmF0ZSkKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVm
Q291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgoMCkKICAgICAgICAgLy8gV2UgZXhw
ZWN0IG1fbGVuZ3RoIHRvIGJlIGluaXRpYWxpemVkIHRvIDAgYXMgd2UgdXNlIGl0CiAgICAgICAg
IC8vIHRvIHJlcHJlc2VudCBhIG51bGwgdGVybWluYXRlZCBidWZmZXIuCiAgICAgICAgICwgbV9k
YXRhOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fbGVuZ3RoKSkKLSAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBCdWZmZXJJbnRlcm5hbCkpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZs
YWdzRm9yVW5pcXVlKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwsIGlzUHJp
dmF0ZSkpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAKQEAgLTM4MCw3ICszOTks
MTIgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlVW5pcXVlRW1wdHkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVuaXF1ZSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZVVuaXF1ZUVtcHR5LCBmYWxzZSkpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVV
bmlxdWVQcml2YXRlRW1wdHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RyaW5nSW1wbChDcmVhdGVVbmlxdWVFbXB0eSwgdHJ1ZSkpOwogICAgIH0KIAogICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaXF1ZShQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHJlcCk7CkBAIC0zOTMsOCArNDE3LDggQEAgY2xhc3MgU3RyaW5n
SW1wbCB7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9CiAgICAgc3RhdGljIHVu
c2lnbmVkIGZsYWdJczhCaXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQotICAg
IHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNBdG9taWMoKSB7IHJldHVybiBzX2hhc2hGbGFnSXNBdG9t
aWM7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzVW5pcXVlKCkgeyByZXR1cm4gc19oYXNo
RmxhZ0lzVW5pcXVlOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc05vdEF0b21pYygpIHsg
cmV0dXJuIHNfaGFzaE1hc2tTdHJpbmdLaW5kOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIG1hc2tT
dHJpbmdLaW5kKCkgeyByZXR1cm4gc19oYXNoTWFza1N0cmluZ0tpbmQ7IH0KICAgICBzdGF0aWMg
dW5zaWduZWQgZGF0YU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBs
LCBtX2RhdGE4KTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgpAQCAtNDU0LDE3ICs0Nzgs
MjAgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6
ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Q7CiAKLSAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNVbmlxdWU7IH0KKyAgICBTdHJpbmdL
aW5kIHN0cmluZ0tpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdHJpbmdLaW5kPiht
X2hhc2hBbmRGbGFncyAmIHNfaGFzaE1hc2tTdHJpbmdLaW5kKTsgfQorCisgICAgYm9vbCBpc1Vu
aXF1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZ0tpbmQoKSAmIHNfaGFzaEZsYWdTdHJpbmdLaW5k
SXNVbmlxdWU7IH0KKyAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZ0tp
bmQoKSA9PSBTdHJpbmdVbmlxdWVQcml2YXRlOyB9CisgICAgYm9vbCBpc0F0b21pYygpIGNvbnN0
IHsgcmV0dXJuIHN0cmluZ0tpbmQoKSA9PSBTdHJpbmdBdG9taWM7IH0KIAotICAgIGJvb2wgaXNB
dG9taWMoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdJc0F0b21p
YzsgfQogICAgIHZvaWQgc2V0SXNBdG9taWMoYm9vbCBpc0F0b21pYykKICAgICB7CiAgICAgICAg
IEFTU0VSVCghaXNTdGF0aWMoKSk7CiAgICAgICAgIEFTU0VSVCghaXNVbmlxdWUoKSk7CiAgICAg
ICAgIGlmIChpc0F0b21pYykKLSAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZs
YWdJc0F0b21pYzsKKyAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzID0gKG1faGFzaEFuZEZsYWdz
ICYgKH5zX2hhc2hNYXNrU3RyaW5nS2luZCkpIHwgU3RyaW5nQXRvbWljOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ0lzQXRvbWljOworICAg
ICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgPSAobV9oYXNoQW5kRmxhZ3MgJiAofnNfaGFzaE1hc2tT
dHJpbmdLaW5kKSkgfCBTdHJpbmdOb3JtYWw7CiAgICAgfQogCiAjaWYgU1RSSU5HX1NUQVRTCkBA
IC03MDYsNiArNzMzLDE2IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBjb25zdCBVQ2hhciBsYXRpbjFDYXNlRm9sZFRhYmxlWzI1Nl07CiAK
KyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nSW1wbCYgZXh0cmFjdEZvbGRlZFN0cmlu
Z0luVW5pcXVlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChsZW5ndGgoKSk7CisgICAgICAgIEFT
U0VSVChpc1VuaXF1ZSgpKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1
ZmZlclN1YnN0cmluZyk7CisgICAgICAgIEFTU0VSVChzdWJzdHJpbmdCdWZmZXIoKSk7CisgICAg
ICAgIEFTU0VSVCghc3Vic3RyaW5nQnVmZmVyKCktPmlzVW5pcXVlKCkpOworICAgICAgICByZXR1
cm4gKnN1YnN0cmluZ0J1ZmZlcigpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBib29sIHJlcXVp
cmVzQ29weSgpIGNvbnN0CiAgICAgewpAQCAtNzcyLDIzICs4MDksMTIgQEAgY2xhc3MgU3RyaW5n
SW1wbCB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmlu
Z0ltcGw+IHJlYWxsb2NhdGVJbnRlcm5hbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+LCB1bnNpZ25l
ZCwgQ2hhclR5cGUqJik7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUludGVybmFsKGNvbnN0IENoYXJUeXBlKiwgdW5zaWduZWQp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBORVZFUl9JTkxJTkUgdW5zaWduZWQgaGFzaFNsb3dD
YXNlKCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1bnNpZ25lZCBoYXNo
QW5kRmxhZ3NGb3JVbmlxdWUodW5zaWduZWQgZmxhZ3MpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdW5zaWduZWQgaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHVuc2lnbmVkIGZsYWdzLCBi
b29sIGlzUHJpdmF0ZSk7CiAKICAgICAvLyBUaGUgYm90dG9tIGJpdCBpbiB0aGUgcmVmIGNvdW50
IGluZGljYXRlcyBhIHN0YXRpYyAoaW1tb3J0YWwpIHN0cmluZy4KICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZyA9IDB4MTsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc19yZWZDb3VudEluY3JlbWVudCA9IDB4MjsgLy8gVGhpcyBhbGxvd3Mg
dXMgdG8gcmVmIC8gZGVyZWYgd2l0aG91dCBkaXN0dXJiaW5nIHRoZSBzdGF0aWMgc3RyaW5nIGZs
YWcuCiAKLSAgICAvLyBUaGUgYm90dG9tIDcgYml0cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3MuCi0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0NvdW50ID0gNzsKLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgc19mbGFnTWFzayA9ICgxdSA8PCBzX2ZsYWdDb3VudCkgLSAxOwotICAgIENP
TVBJTEVfQVNTRVJUKHNfZmxhZ0NvdW50IDw9IFN0cmluZ0hhc2hlcjo6ZmxhZ0NvdW50LCBTdHJp
bmdIYXNoZXJfcmVzZXJ2ZXNfZW5vdWdoX2JpdHNfZm9yX1N0cmluZ0ltcGxfZmxhZ3MpOwotCi0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdJc1VuaXF1ZSA9IDF1IDw8IDY7Ci0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWc4Qml0QnVmZmVyID0gMXUgPDwgNTsK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0lzQXRvbWljID0gMXUgPDwgNDsK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgPSAxdSA8
PCAzOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hNYXNrQnVmZmVyT3duZXJzaGlw
ID0gMXUgfCAoMXUgPDwgMSk7Ci0KICNpZiBTVFJJTkdfU1RBVFMKICAgICBXVEZfRVhQT1JUREFU
QSBzdGF0aWMgU3RyaW5nU3RhdHMgbV9zdHJpbmdTdGF0czsKICNlbmRpZgpAQCAtODAzLDcgKzgy
OSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgICAgIC8vIFRoZXNlIHZhbHVlcyBtaW1p
YyBDb25zdHJ1Y3RGcm9tTGl0ZXJhbC4KICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
aW5pdGlhbFJlZkNvdW50ID0gc19yZWZDb3VudEluY3JlbWVudDsKLSAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNfaW5pdGlhbEZsYWdzID0gc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZm
ZXJJbnRlcm5hbDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlhbEZsYWdz
ID0gc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbDsK
ICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaFNoaWZ0ID0gc19mbGFnQ291bnQ7
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNz
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKaW5kZXggNjViYjY3
MjFkNzQzZmExMDQxYzI5MmI2MGY0ZDAzMjkyODNkOGU1MS4uMDdkOGRmMjVmM2IyOGYwZDc2MzFj
YmFkMjBiZmEzNDJkMzMyOGVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdTdGF0aWNzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3Bw
CkBAIC01MiwxMiArNTIsMTIgQEAgU3RyaW5nSW1wbCogU3RyaW5nSW1wbDo6ZW1wdHkoKQogLy8g
a2V5cyBtZWFucyB0aGF0IHdlIGRvbid0IG5lZWQgdGhlbSB0byBtYXRjaCBhbnkgb3RoZXIgc3Ry
aW5nIChpbiBmYWN0LAogLy8gdGhhdCdzIGV4YWN0bHkgdGhlIG9wb3NpdGUgb2Ygd2hhdCB3ZSB3
YW50ISksIGFuZCB0aGUgbm9ybWFsIGhhc2ggd291bGQKIC8vIGxlYWQgdG8gbG90cyBvZiBjb25m
bGljdHMuCi11bnNpZ25lZCBTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUodW5zaWdu
ZWQgZmxhZ3MpCit1bnNpZ25lZCBTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUodW5z
aWduZWQgZmxhZ3MsIGJvb2wgaXNQcml2YXRlKQogewogICAgIHN0YXRpYyB1bnNpZ25lZCBzX25l
eHRIYXNoQW5kRmxhZ3NGb3JVbmlxdWUgPSAwOwogICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVu
aXF1ZSArPSAxIDw8IHNfZmxhZ0NvdW50OwogICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1
ZSB8PSAxIDw8IDMxOwotICAgIHVuc2lnbmVkIGZsYWdzRm9yVW5pcXVlID0gKGZsYWdzICYgc19m
bGFnTWFzaykgfCBzX2hhc2hGbGFnSXNBdG9taWMgfCBzX2hhc2hGbGFnSXNVbmlxdWU7CisgICAg
dW5zaWduZWQgZmxhZ3NGb3JVbmlxdWUgPSAoKGZsYWdzICYgc19mbGFnTWFzaykgJiAofnNfaGFz
aE1hc2tTdHJpbmdLaW5kKSkgfCAoaXNQcml2YXRlID8gU3RyaW5nVW5pcXVlUHJpdmF0ZSA6IFN0
cmluZ1VuaXF1ZSk7CiAgICAgcmV0dXJuIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSB8IGZs
YWdzRm9yVW5pcXVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KaW5kZXggMTgzYzQ3OTA1
NzdiMDRiODI0YTU2MDM1NDdiZmIwNGI1YzcxNjRkZi4uNzNhNDQ4MzEyOTRlMzZjMzQxOWM2N2Iy
OTdlNjcyYzZlYzc1ZDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpAQCAtMTU4LDcgKzE1
OCw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50
U2NyaXB0SW5qZWN0ZWQoKQogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAK
LSAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0
KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7
CisgICAgSlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdl
dChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0ZVBsdWdpblJl
cGxhY2VtZW50IikpOwogICAgIGlmIChyZXBsYWNlbWVudEZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJv
b3QpCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAKICAgICAvLyBMb29r
dXAgdGhlICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIgZnVuY3Rpb24uCi0gICAgSlNDOjpKU1Zh
bHVlIHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6Oklk
ZW50aWZpZXIoZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOworICAgIEpTQzo6SlNW
YWx1ZSByZXBsYWNlbWVudEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsK
ICAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgSlNDOjpKU09iamVjdCogcmVwbGFjZW1lbnRPYmplY3QgPSBy
ZXBsYWNlbWVudEZ1bmN0aW9uLnRvT2JqZWN0KGV4ZWMpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGJv
b2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dS
b290KiByb290KQogICAgIH0KIAogICAgIC8vIEdldCB0aGUgPHZpZGVvPiBjcmVhdGVkIHRvIHJl
cGxhY2UgdGhlIHBsdWctaW4uCi0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcmVwbGFjZW1lbnQu
Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAidmlkZW8iKSk7CisgICAgSlNDOjpKU1Zh
bHVlIHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAidmlkZW8iKSk7CiAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSAmJiAh
dmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgbV9tZWRpYUVsZW1lbnQgPSBKU0hU
TUxWaWRlb0VsZW1lbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCBi
b29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93
Um9vdCogcm9vdCkKICAgICB9CiAKICAgICAvLyBHZXQgdGhlIHNjcmlwdGluZyBpbnRlcmZhY2Uu
Ci0gICAgdmFsdWUgPSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMs
ICJzY3JpcHRPYmplY3QiKSk7CisgICAgdmFsdWUgPSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzY3JpcHRPYmplY3QiKSk7CiAgICAgaWYg
KCFleGVjLT5oYWRFeGNlcHRpb24oKSAmJiAhdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAg
ICAgICAgbV9zY3JpcHRPYmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAppbmRleCBkZjRkYzc4NjJkMmRhYWE5ZjJi
Njc2ZDFlZDMxNzJhMmYzZWFmZDI5Li40Y2QwODM4ZjM2NDI1MzgzZThjMTg4ODI2NmY4MjEyMWEw
MGU3NWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAt
NjMsNyArNjMsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hh
c2hNYXAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIG1hcCkgYwogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHBy
b3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAg
ICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9y
IChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJl
Z2luKCk7IGl0ICE9IHByb3BlcnR5TmFtZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5n
IHN0cmluZ0tleSA9IGl0LT5zdHJpbmcoKTsKICAgICAgICAgaWYgKHN0cmluZ0tleS5pc0VtcHR5
KCkpCkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1l
cyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0CiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9k
aWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlO
YW1lcyhleGVjKTsKLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBmb3IgKFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsg
aXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAgICAgICBTdHJpbmcgc3RyaW5n
S2V5ID0gaXQtPnN0cmluZygpOwogICAgICAgICBpZiAoIXN0cmluZ0tleS5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
CmluZGV4IGJiNTAxOGMxNzk5MmQ2MGQyZWYyNGJmZWQ2ODEwYjIyNDcxNzI3MTYuLjZmODA2NjE0
ZWE0YjBjYjQxNmE1M2YyNzI5MmQ5Y2VkOTVjZjY5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHN0YXRpYyBib29sIGdldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2JqZWN0LCBjb25zdCBT
dHJpbmcmIGtleVBhdGhFbGVtZW50LCBKCiAgICAgfQogICAgIGlmICghb2JqZWN0LmlzT2JqZWN0
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJmV4
ZWMtPnZtKCksIGtleVBhdGhFbGVtZW50LnV0ZjgoKS5kYXRhKCkpOworICAgIElkZW50aWZpZXIg
aWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksIGtleVBhdGhF
bGVtZW50LnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmICghYXNPYmplY3Qob2JqZWN0KS0+aGFzUHJv
cGVydHkoZXhlYywgaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1
bHQgPSBhc09iamVjdChvYmplY3QpLT5nZXQoZXhlYywgaWRlbnRpZmllcik7CkBAIC03MCw3ICs3
MCw3IEBAIHN0YXRpYyBib29sIHNldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUmIG9iamVjdCwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoRWxlbWVudCwKIHsKICAgICBpZiAoIWNhblNldChvYmplY3Qs
IGtleVBhdGhFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIElkZW50aWZpZXIg
aWRlbnRpZmllcigmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7Cisg
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+
dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CiAgICAgYXNPYmplY3Qob2JqZWN0
KS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50aWZpZXIsIGpzVmFsdWUpOwogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NT
dHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggODk2Yjk5Y2U5MWI3MmM2Y2ZlODAy
YjE3Y2JkMDcwZjI0NWQ0YTQ3ZC4uY2Y4YzZiYWU3NWU0YTdkNWQ5M2I3NzRjNWI2NDU3NGY0ZGFh
YTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBKU0NT
U1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGUKIAogICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzID0gbmV3IElkZW50
aWZpZXJbbnVtQ1NTUHJvcGVydGllc107CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
Q1NTUHJvcGVydGllczsgKytpKQotICAgICAgICAgICAgcHJvcGVydHlJZGVudGlmaWVyc1tpXSA9
IElkZW50aWZpZXIoZXhlYywganNQcm9wZXJ0eU5hbWVzW2ldLmltcGwoKSk7CisgICAgICAgICAg
ICBwcm9wZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBq
c1Byb3BlcnR5TmFtZXNbaV0pOwogICAgIH0KIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
Q1NTUHJvcGVydGllczsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYWxsYmFja0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxs
YmFja0RhdGEuY3BwCmluZGV4IGUxZDcyNWY4YzZkMTExMzQxMjE1ZTEwYmRkN2FiNjcyN2U3NGVh
ZDQuLjQ1MWRhYzYyMzEzYjIzM2FkZjY1ZDhmNzBiYWIzMWMzODM2NTk3YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKQEAgLTYwLDcgKzYwLDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSlNWYWx1ZSB0aGlzVmFs
dWUsIE1hcmtlZEFyZ3VtZW50QnVmZmVyJgogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gY2FsbGJhY2soKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEo
Y2FsbGJhY2soKSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUp
IHsKLSAgICAgICAgZnVuY3Rpb24gPSBjYWxsYmFjaygpLT5nZXQoZXhlYywgSWRlbnRpZmllcihl
eGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgICAgIGZ1bmN0aW9uID0gY2FsbGJhY2soKS0+Z2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhbmRsZUV2ZW50IikpOwogICAg
ICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGlu
ZUFQSUhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5k
TGluZUFQSUhvc3RDdXN0b20uY3BwCmluZGV4IGRhNTJjZWMyY2ZkY2M3NmExY2Q0MGQyZTQ1YWUw
OTU2NDY1ZTFmNzYuLjhkMmQwMjA2NGU1N2VhYTQ3ODE4MGJiOGU0NWJkMzAwNGU4ZjMxN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5l
QVBJSG9zdEN1c3RvbS5jcHAKQEAgLTg5LDggKzg5LDggQEAgc3RhdGljIEpTQXJyYXkqIGdldEpT
TGlzdGVuZXJGdW5jdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnMKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEpTT2JqZWN0KiBsaXN0ZW5lckVu
dHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgICAgIGxpc3RlbmVyRW50cnkt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaXN0ZW5lciIpLCBmdW5j
dGlvbik7Ci0gICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJ1c2VDYXB0dXJlIiksIGpzQm9vbGVhbihsaXN0ZW5lckluZm8uZXZlbnRM
aXN0ZW5lclZlY3RvcltpXS51c2VDYXB0dXJlKSk7CisgICAgICAgIGxpc3RlbmVyRW50cnktPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaXN0ZW5l
ciIpLCBmdW5jdGlvbik7CisgICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ1c2VDYXB0dXJlIiksIGpzQm9vbGVh
bihsaXN0ZW5lckluZm8uZXZlbnRMaXN0ZW5lclZlY3RvcltpXS51c2VDYXB0dXJlKSk7CiAgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgb3V0cHV0SW5kZXgrKywgSlNWYWx1ZShs
aXN0ZW5lckVudHJ5KSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTgsNyArMTE4
LDcgQEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoIWxpc3RlbmVycy0+bGVuZ3RoKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZSA9IGxpc3RlbmVy
c0FycmF5W2ldLmV2ZW50VHlwZTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcihleGVjLCBldmVudFR5cGUuaW1wbCgpKSwgSlNWYWx1ZShsaXN0ZW5lcnMp
KTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCBldmVudFR5cGUuaW1wbCgpKSwgSlNWYWx1ZShsaXN0ZW5lcnMpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAKaW5kZXggMDgxMGJjODFlOWEw
NWVlYWRlZWY0ZjBlNjY5OTRkMjFiOTM1M2FhNy4uYTlmMzcyNjU3MGUyODk0YWJhNjFlODVjYzA5
ZjA5YzE0OGIxOGY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
cnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwCkBAIC01NiwyMSArNTYsMjEgQEAgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlcj4gSlNDcnlwdG9BbGdv
cml0aG1CdWlsZGVyOjpjcmUKIHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29u
c3QgY2hhcioga2V5LCB1bnNpZ25lZCB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZt
KCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAgICBtX2Rp
Y3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNOdW1iZXIodmFsdWUpKTsKIH0K
IAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwotICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAgbV9kaWN0aW9uYXJ5LT5w
dXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzU3RyaW5nKG1fZXhlYywgdmFsdWUpKTsKIH0KIAog
dm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogewogICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsK
LSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIFJlZlB0cjxV
aW50OEFycmF5PiBhcnJheVZpZXcgPSBVaW50OEFycmF5OjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZp
ZXIsIGFycmF5Vmlldy0+d3JhcChtX2V4ZWMsIHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjph
ZGQoY29uc3QgY2hhcioga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlCiB2b2lkIEpT
Q3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwgY29uc3QgQ3J5cHRv
QWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJiBuZXN0ZWRCdWlsZGVyKQogewogICAgIFZNJiB2
bSA9IG1fZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOwor
ICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBr
ZXkpOwogICAgIGNvbnN0IEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlciYganNCdWlsZGVyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyJj4obmVzdGVkQnVpbGRlcik7
CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzQnVpbGRlci5y
ZXN1bHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAppbmRleCA2NGQ1NmQ5NzBhNzRlNWRjMWFl
YWEzODU5NWI1NmJkMWU2MzQ2ZmUyLi40YWU2YWU1MDYyNDZlMzlmYmZjYzUyZDM3MGMwNjZmODlj
ZTAzYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0Fs
Z29yaXRobURpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBKU0Ny
eXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmdldEFsZ29yaXRobUlkZW50aWZpZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHUKIAogc3RhdGljIEpTVmFsdWUgZ2V0UHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogb2JqZWN0LCBjb25zdCBjaGFyKiBuYW1lKQogewotICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllcihleGVjLCBuYW1lKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG5hbWUpOwogICAgIFByb3BlcnR5U2xvdCBzbG90
KG9iamVjdCk7CiAKICAgICBpZiAob2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRp
Zmllciwgc2xvdCkpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIGJvb2wgZ2V0SGFzaEFsZ29y
aXRobShKU0RpY3Rpb25hcnkmIGRpY3Rpb25hcnksIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBkaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpOwogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBkaWN0aW9uYXJ5LmluaXRpYWxpemVyT2JqZWN0KCk7CiAKLSAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIoZXhlYywgImhhc2giKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJoYXNoIik7CiAgICAgUHJvcGVydHlT
bG90IHNsb3Qob2JqZWN0KTsKIAogICAgIEpTVmFsdWUgaGFzaCA9IGdldFByb3BlcnR5KGV4ZWMs
IG9iamVjdCwgImhhc2giKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCmluZGV4IGE4OTE3ZDc1ZGE0ZDg0
NjA0NGFmMWFlMjllMWE5Y2U0MWQ1ZjMzMTkuLjFlMWE1MjZmMjYxMzk0NmM3ODcyMmVjOTAwMWU3
NGVhZmQzZTU3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcApAQCAtNTIsNyArNTIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIEpTQXJyYXkqJiByZXN1
bHQpCiB7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAg
IFByb3BlcnR5U2xvdCBzbG90KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgaWRlbnRpZmllciwgc2xvdCkpCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBib29s
IGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25z
dCBjaGFyKiBrZXksCiAKIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgU3RyaW5nJiByZXN1bHQpCiB7
Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3Bl
cnR5U2xvdCBzbG90KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaWRlbnRpZmllciwgc2xvdCkpCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBib29sIGdldFN0
cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIq
IGtleSwKIAogc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmll
ciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChqc29uKTsKIAogICAgIGlmICghanNvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50
aWZpZXIsIHNsb3QpKQpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9L
ZXlEYXRhPiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleURhdGEoKSBjb25zdAogc3Rh
dGljIHZvaWQgYWRkVG9KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0
IGNoYXIqIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CisgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAganNv
bi0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc1N0cmluZyhleGVjLCB2YWx1ZSkpOwogfQog
CkBAIC01NDIsMTMgKzU0MiwxMyBAQCBzdGF0aWMgdm9pZCBidWlsZEpTT05Gb3JSU0FDb21wb25l
bnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXlEYXRhUgogICAgICAgICBh
ZGRUb0pTT04oZXhlYywganNQcmltZUluZm8sICJ0IiwgYmFzZTY0VVJMRW5jb2RlKGRhdGEub3Ro
ZXJQcmltZUluZm9zKClbaV0uZmFjdG9yQ1JUQ29lZmZpY2llbnQpKTsKICAgICAgICAgb3RoLT5w
dXREaXJlY3RJbmRleChleGVjLCBpLCBqc1ByaW1lSW5mbyk7CiAgICAgfQotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIm90aCIpLCBvdGgpOworICAg
IHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgIm90aCIpLCBvdGgpOwogfQogCiBzdGF0aWMgdm9pZCBhZGRCb29sVG9KU09OKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgYm9vbCB2YWx1ZSkKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0s
IGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sIGtleSk7CiAgICAganNvbi0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc0Jvb2xl
YW4odmFsdWUpKTsKIH0KIApAQCAtNjc1LDcgKzY3NSw3IEBAIHN0YXRpYyB2b2lkIGFkZFVzYWdl
c1RvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBDcnlwdG9LZXlVc2FnZSB1
c2FnCiAgICAgaWYgKHVzYWdlcyAmIENyeXB0b0tleVVzYWdlRGVyaXZlQml0cykKICAgICAgICAg
a2V5T3BzLT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCsrLCBqc05vbnRyaXZpYWxTdHJpbmco
ZXhlYywgQVNDSUlMaXRlcmFsKCJkZXJpdmVCaXRzIikpKTsKIAotICAgIGpzb24tPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJrZXlfb3BzIiksIGtleU9wcyk7CisgICAg
anNvbi0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
ImtleV9vcHMiKSwga2V5T3BzKTsKIH0KIAogU3RyaW5nIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bkpXSzo6c2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ3J5cHRvS2V5JiBrZXkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAKaW5kZXggNzgzNjY4MTkwMmZjM2IyNDBiYWEwZTVlYThlNjZmNGQxYjBkMmY2ZC4u
NTRlYjMzMTE2M2RlNjhjOTY3YTFiNGMzYzE5ZTY1YmY1ZDRjNDljZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApA
QCAtNzQsNyArNzQsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5h
bWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIAotICAgIEpTVmFsdWUgZnVu
Y3Rpb24gPSBtX2N1c3RvbVJlc29sdmVyLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAibG9v
a3VwTmFtZXNwYWNlVVJJIikpOworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBtX2N1c3RvbVJlc29s
dmVyLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibG9va3VwTmFtZXNw
YWNlVVJJIikpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGVOb25lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ01hcEN1c3RvbS5jcHAKaW5kZXggM2FmYWFlMjM0MDc3NDlhYzdhOWYyNzIwZjNmODk3
ZjBiZTU3Y2RlNy4uNTI1OThjZWMyNDc1ZjE2YWJjZDkxODE3YTBjODM2MWJmNWNmYzA5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAgIHRoaXNP
YmplY3QtPm1faW1wbC0+Z2V0TmFtZXMobmFtZXMpOwogICAgIHNpemVfdCBsZW5ndGggPSBuYW1l
cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBuYW1lc1tpXSkpOworICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG5hbWVzW2ld
KSk7CiAKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDQ4ZjgxODQ1MjI3NjgyMGFhYWUxZmE0ODNjZjQ3
ZTQ4NDE2MGI3NTIuLjI3MWU4MmY0ZWJjZWNjMDQ2YzQ3OTU3YmI3Zjk4MDY0MDliM2VmOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
QEAgLTQyOCw3ICs0MjgsNyBAQCBib29sIEpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShK
U0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBEb24ndCBhbGxvdyBzaGFkb3dpbmcgbG9jYXRpb24gdXNpbmcg
YWNjZXNzb3IgcHJvcGVydGllcy4KLSAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3Jp
cHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpKQor
ICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgcHJvcGVydHlOYW1l
ID09IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvY2F0aW9uIikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKQEAgLTQ0
NCw3ICs0NDQsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgaWYgKEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZURP
TVdpbmRvdyhleGVjKS5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChhY3RpdmVGcmFtZS0+c2V0dGlu
Z3MoKS51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpICYmICFhY3RpdmVG
cmFtZS0+dHJlZSgpLnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGltcGwoKSkpCi0gICAgICAgICAg
ICAgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9uIiks
IHZhbHVlKTsKKyAgICAgICAgICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAibG9jYXRpb24iKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNTI2LDcgKzUyNiw3IEBAIGlubGluZSB2b2lkIERp
YWxvZ0hhbmRsZXI6OmRpYWxvZ0NyZWF0ZWQoRE9NV2luZG93JiBkaWFsb2cpCiAgICAgLy8gICAg
ICAgIHdvcmxkIGlmIGRpYWxvZ0FyZ3VtZW50cyBjb21lcyBmcm9tIGFuIGlzb2xhdGVkIHdvcmxk
LgogICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NV2luZG93KG1fZnJhbWUu
Z2V0KCksIG5vcm1hbFdvcmxkKG1fZXhlYy0+dm0oKSkpOwogICAgIGlmIChKU1ZhbHVlIGRpYWxv
Z0FyZ3VtZW50cyA9IG1fZXhlYy0+YXJndW1lbnQoMSkpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+
cHV0RGlyZWN0KG1fZXhlYy0+dm0oKSwgSWRlbnRpZmllcihtX2V4ZWMsICJkaWFsb2dBcmd1bWVu
dHMiKSwgZGlhbG9nQXJndW1lbnRzKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qo
bV9leGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywgImRpYWxvZ0FyZ3Vt
ZW50cyIpLCBkaWFsb2dBcmd1bWVudHMpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBEaWFsb2dIYW5k
bGVyOjpyZXR1cm5WYWx1ZSgpIGNvbnN0CkBAIC01MzQsNyArNTM0LDcgQEAgaW5saW5lIEpTVmFs
dWUgRGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdWUoKSBjb25zdAogICAgIEpTRE9NV2luZG93KiBn
bG9iYWxPYmplY3QgPSB0b0pTRE9NV2luZG93KG1fZnJhbWUuZ2V0KCksIG5vcm1hbFdvcmxkKG1f
ZXhlYy0+dm0oKSkpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIobV9leGVjLCAicmV0dXJuVmFs
dWUiKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KG1fZXhlYywgInJldHVyblZhbHVlIik7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBpZiAoIUpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFs
T2JqZWN0LCBtX2V4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNl
TW90aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZp
Y2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKaW5kZXggZmNhN2M3ZWQ2YWQ1ZDg3M2UwN2EyMDI3Mzcx
ZTc2OGY2ZTMyYmIzNy4uZWNiYjMzZWVmODc4YzVlNWYxZTAzYzlmOGI3NjYwM2UyY2IyMjA1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rp
b25FdmVudEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RGV2
aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uPiByZWFkQWNjZWxlcmF0aW9uQXJndW1lbnQoSlNW
YWwKICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBh
biBvYmplY3QuCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLnRvT2JqZWN0KGV4ZWMpOwog
Ci0gICAgSlNWYWx1ZSB4VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMs
ICJ4IikpOworICAgIEpTVmFsdWUgeFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAieCIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZVggPSAheFZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCk7CkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERldmlj
ZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbj4gcmVhZEFjY2VsZXJhdGlvbkFyZ3VtZW50KEpTVmFs
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IEpTVmFsdWUgeVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAieSIp
KTsKKyAgICBKU1ZhbHVlIHlWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgInkiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVZID0gIXlWYWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpOwpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxEZXZpY2VNb3Rp
b25EYXRhOjpBY2NlbGVyYXRpb24+IHJlYWRBY2NlbGVyYXRpb25Bcmd1bWVudChKU1ZhbAogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1Zh
bHVlIHpWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInoiKSk7Cisg
ICAgSlNWYWx1ZSB6VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJ6IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlWiA9ICF6VmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKTsKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0
YTo6Um90YXRpb25SYXRlPiByZWFkUm90YXRpb25SYXRlQXJndW1lbnQoSlNWYWwKICAgICAvLyBH
aXZlbiB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3QuCiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogCi0gICAgSlNWYWx1
ZSBhbHBoYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYWxwaGEi
KSk7CisgICAgSlNWYWx1ZSBhbHBoYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiYWxwaGEiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVBbHBoYSA9ICFhbHBo
YVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZT4gcmVhZFJvdGF0aW9uUmF0ZUFy
Z3VtZW50KEpTVmFsCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIEpTVmFsdWUgYmV0YVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRp
ZmllcihleGVjLCAiYmV0YSIpKTsKKyAgICBKU1ZhbHVlIGJldGFWYWx1ZSA9IG9iamVjdC0+Z2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImJldGEiKSk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3Zp
ZGVCZXRhID0gIWJldGFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtMTAyLDcgKzEwMiw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZT4gcmVh
ZFJvdGF0aW9uUmF0ZUFyZ3VtZW50KEpTVmFsCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEpTVmFsdWUgZ2FtbWFWYWx1ZSA9IG9iamVjdC0+
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImdhbW1hIikpOworICAgIEpTVmFsdWUgZ2FtbWFW
YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImdh
bW1hIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgYm9vbCBjYW5Qcm92aWRlR2FtbWEgPSAhZ2FtbWFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpOwpAQCAtMTE5LDE4ICsxMTksMTggQEAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90aW9u
RGF0YTo6Um90YXRpb25SYXRlPiByZWFkUm90YXRpb25SYXRlQXJndW1lbnQoSlNWYWwKIHN0YXRp
YyBKU09iamVjdCogY3JlYXRlQWNjZWxlcmF0aW9uT2JqZWN0KGNvbnN0IERldmljZU1vdGlvbkRh
dGE6OkFjY2VsZXJhdGlvbiogYWNjZWxlcmF0aW9uLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIG9iamVj
dC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIngiKSwgYWNjZWxlcmF0
aW9uLT5jYW5Qcm92aWRlWCgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT54KCkpIDoganNOdWxs
KCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywg
InkiKSwgYWNjZWxlcmF0aW9uLT5jYW5Qcm92aWRlWSgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9u
LT55KCkpIDoganNOdWxsKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXIoZXhlYywgInoiKSwgYWNjZWxlcmF0aW9uLT5jYW5Qcm92aWRlWigpID8ganNOdW1i
ZXIoYWNjZWxlcmF0aW9uLT56KCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIngiKSwgYWNjZWxlcmF0
aW9uLT5jYW5Qcm92aWRlWCgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT54KCkpIDoganNOdWxs
KCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgInkiKSwgYWNjZWxlcmF0aW9uLT5jYW5Qcm92aWRlWSgpID8ganNOdW1iZXIo
YWNjZWxlcmF0aW9uLT55KCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInoiKSwgYWNjZWxlcmF0aW9u
LT5jYW5Qcm92aWRlWigpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT56KCkpIDoganNOdWxsKCkp
OwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUm90YXRp
b25SYXRlT2JqZWN0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZSogcm90YXRp
b25SYXRlLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgImFscGhhIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUFscGhh
KCkgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmFscGhhKCkpIDoganNOdWxsKCkpOwotICAgIG9i
amVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImJldGEiKSwgIHJv
dGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUJldGEoKSAgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmJl
dGEoKSkgIDoganNOdWxsKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXIoZXhlYywgImdhbW1hIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUdhbW1hKCkg
PyBqc051bWJlcihyb3RhdGlvblJhdGUtPmdhbW1hKCkpIDoganNOdWxsKCkpOworICAgIG9iamVj
dC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFs
cGhhIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUFscGhhKCkgPyBqc051bWJlcihyb3RhdGlv
blJhdGUtPmFscGhhKCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImJldGEiKSwgIHJvdGF0aW9uUmF0
ZS0+Y2FuUHJvdmlkZUJldGEoKSAgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmJldGEoKSkgIDog
anNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgImdhbW1hIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUdhbW1h
KCkgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmdhbW1hKCkpIDoganNOdWxsKCkpOwogICAgIHJl
dHVybiBvYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25h
cnkuY3BwCmluZGV4IDIwZDhmODNjZDBlNDlhYTZhMDRjM2Y2N2JjOGQyNWVlMjNiZjk4ZjAuLmU5
ODQ5MDllNzZiMjU5NDBkYTllZWNkMGQ5NjU5OWUwZThmNmY1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBKU0RpY3Rpb25hcnk6OkdldFByb3BlcnR5UmVzdWx0IEpTRGljdGlvbmFy
eTo6dHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiBmaW5h
bFJlc3VsdCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKLSAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXIobV9leGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBwcm9wZXJ0eU5hbWUpOwogICAg
IFByb3BlcnR5U2xvdCBzbG90KG1faW5pdGlhbGl6ZXJPYmplY3QuZ2V0KCkpOwogCiAgICAgaWYg
KCFtX2luaXRpYWxpemVyT2JqZWN0LmdldCgpLT5nZXRQcm9wZXJ0eVNsb3QobV9leGVjLCBpZGVu
dGlmaWVyLCBzbG90KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuY3BwCmluZGV4IGEyY2YyNjhkZDY2NGY2NmFiOGZjNmE3ZDA2NGJkMmMwZDA3YzFmODgu
LjVmZmQzYzYzNWFhMTUzMjRmMjY2Y2RiMGY4NmMxZTA3NzMzMzM3YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgLy8gSWYganNGdW5j
dGlvbiBpcyBub3QgYWN0dWFsbHkgYSBmdW5jdGlvbiwgc2VlIGlmIGl0IGltcGxlbWVudHMgdGhl
IEV2ZW50TGlzdGVuZXIgaW50ZXJmYWNlIGFuZCB1c2UgdGhhdAogICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rp
b24tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICAgICAg
aGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKICAgICAgICAgY2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0
b20uY3BwCmluZGV4IDgxMjI1MDdiNGZiYzY4ZTEyM2Y2NzJmYTMxMDg4YTUyY2E3MGU5NjUuLjNl
YmE0MjFiYzczNDE3NzNhYzhmNmFhNmIxMjFlYWNkMWU4MmE3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
CkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwg
Y29sbGVjdGlvbi5pdGVtKGluZGV4KSkpOwogCiAgICAgICAgIC8vIFN1cHBvcnQgZm9yIGRvY3Vt
ZW50LmltYWdlcygnPG5hbWU+JykgZXRjLgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG5hbWVkSXRlbXMoZXhlYywganNDb2xsZWN0aW9uLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZykp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuYW1lZEl0ZW1zKGV4ZWMsIGpzQ29s
bGVjdGlvbiwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBzdHJpbmcpKSk7CiAgICAgfQog
CiAgICAgLy8gVGhlIHNlY29uZCBhcmcsIGlmIHNldCwgaXMgdGhlIGluZGV4IG9mIHRoZSBpdGVt
IHdlIHdhbnQKQEAgLTEwNiwxMiArMTA2LDEyIEBAIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlv
bjo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdWludDMyX3QgaW5kZXggPSB0b1VJbnQzMkZy
b21TdHJpbmdJbXBsKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KS5pbXBsKCkpOwogICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCiAg
ICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuaXRlbShpbmRl
eCkpOwotICAgIHJldHVybiBuYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgcmV0
dXJuIG5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKIH0KIAogSlNW
YWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhl
YywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
KTsKICAgICByZXR1cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/IGpzTnVsbCgpIDogdmFsdWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3Vz
dG9tLmNwcAppbmRleCAzYWQ5YTQ3MjkwMzRjZGQwNzc2OWY3Y2U2MGM3ZGVmMmIxYzkwOTUyLi42
ZDM5YzQ1OWQ3ZDI1NTU0YTk3ZGU0ZGI3MjRkMzE2NWMyOTMzZGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMTMs
NyArMTEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEUKIEpTVmFsdWUgSlNIVE1MRG9jdW1l
bnQ6OmFsbChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgLy8gSWYgImFsbCIgaGFzIGJl
ZW4gb3ZlcndyaXR0ZW4sIHJldHVybiB0aGUgb3ZlcndyaXR0ZW4gdmFsdWUKLSAgICBKU1ZhbHVl
IHYgPSBnZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiYWxsIikpOworICAg
IEpTVmFsdWUgdiA9IGdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJhbGwiKSk7CiAgICAgaWYgKHYpCiAgICAgICAgIHJldHVybiB2OwogCkBAIC0xMjMs
NyArMTIzLDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKIHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgLy8gQWRkICJhbGwiIHRvIHRoZSBwcm9wZXJ0eSBtYXAuCi0gICAg
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImFsbCIpLCB2YWx1ZSk7Cisg
ICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFs
bCIpLCB2YWx1ZSk7CiB9CiAKIHN0YXRpYyBEb2N1bWVudCogZmluZENhbGxpbmdEb2N1bWVudChF
eGVjU3RhdGUqIGV4ZWMpCkBAIC0xNDYsNyArMTQ2LDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVu
dDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBs
KCkuZnJhbWUoKSkgewogICAgICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd3JhcHBlciA9IHRv
SlNET01XaW5kb3dTaGVsbChmcmFtZSwgY3VycmVudFdvcmxkKGV4ZWMpKTsKICAgICAgICAgICAg
IGlmICh3cmFwcGVyKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHdyYXBw
ZXItPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJvcGVuIikpOworICAgICAgICAgICAgICAg
IEpTVmFsdWUgZnVuY3Rpb24gPSB3cmFwcGVyLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAib3BlbiIpKTsKICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IDo6Z2V0Q2FsbERhdGEoZnVuY3Rp
b24sIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVO
b25lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCAyODY3ZDYwZjJhMDI2
MjdmMDdjZDAwYTM0MGU1OWM3ODExMjRkOTgzLi4yODQ4OTcxMmE3ZjZjY2M0OTkwN2E2YWZiMzE1
ZGM1ZmQ3YzhjZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNTcs
NyArNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplYwogCiBKU1ZhbHVlIEpTSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gbmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogICAg
IHJldHVybiB2YWx1ZS5pc1VuZGVmaW5lZCgpID8ganNOdWxsKCkgOiB2YWx1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApp
bmRleCBlNmExNDBmNTQ1ODQ5YjhhYTY0OTQ3ZTBkNjY3Zjg4MzZmNGM5YWVhLi5hMjVkY2E5OTE4
YzNhZTJlZTc2YTE4MDVhMjBkMGIxMGJkYWYxOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtNjAsNyArNjAsNyBAQCBK
U1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBJREJLZXlQYXRoIGtleVBhdGg7CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2U7
CiAgICAgaWYgKCFvcHRpb25zVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBK
U1ZhbHVlIGtleVBhdGhWYWx1ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcihl
eGVjLCAia2V5UGF0aCIpKTsKKyAgICAgICAgSlNWYWx1ZSBrZXlQYXRoVmFsdWUgPSBvcHRpb25z
VmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleVBhdGgiKSk7
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCkBAIC03MCw3ICs3MCw3IEBAIEpTVmFsdWUgSlNJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0b0luY3JlbWVudCA9IG9w
dGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYXV0b0luY3JlbWVudCIpKS50
b0Jvb2xlYW4oZXhlYyk7CisgICAgICAgIGF1dG9JbmNyZW1lbnQgPSBvcHRpb25zVmFsdWUuZ2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImF1dG9JbmNyZW1lbnQiKSkudG9C
b29sZWFuKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDA0MDQ0ZDM1
ZDM5NTljNWYxOGNmMmJkNWIzNTUzYmE4MmQ4MzVlZWMuLjg1MDdlNDk0YTM3NmRiNzk5ZTU2ZmJl
ZThiZDFjYzZkOWQxNjc4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC02NywxMSArNjcsMTEgQEAgSlNWYWx1
ZSBKU0lEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYm9v
bCB1bmlxdWUgPSBmYWxzZTsKICAgICBib29sIG11bHRpRW50cnkgPSBmYWxzZTsKICAgICBpZiAo
IW9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHVuaXF1ZSA9IG9w
dGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAidW5pcXVlIikpLnRvQm9vbGVh
bihleGVjKTsKKyAgICAgICAgdW5pcXVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ1bmlxdWUiKSkudG9Cb29sZWFuKGV4ZWMpOwogICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAotICAgICAgICBtdWx0aUVudHJ5ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsICJtdWx0aUVudHJ5IikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgbXVs
dGlFbnRyeSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAibXVsdGlFbnRyeSIpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcApp
bmRleCA1YWFlNWFlOTY3YWQ5M2EyN2Y4OGQzNmQ3MGU5NzhkZTljZWI0MDEwLi40YTFmYzYxYmY5
ZWQ3MDA2ZDc5YmMzYTJlMmY1ZWM2Y2E2MmIyNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTVmFs
dWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEltYWdlRGF0YSogaW1hZ2VECiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIAogICAgIHdy
YXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEsIGltYWdl
RGF0YSk7Ci0gICAgSWRlbnRpZmllciBkYXRhTmFtZShleGVjLCAiZGF0YSIpOworICAgIElkZW50
aWZpZXIgZGF0YU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJkYXRhIik7CiAg
ICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGRhdGFOYW1lLCB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgaW1hZ2VEYXRhLT5kYXRhKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwog
ICAgIGV4ZWMtPmhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KGltYWdlRGF0YS0+ZGF0YSgp
LT5sZW5ndGgoKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggZDg2YTQ4MGIw
YzM4MDZiZGU2N2U5ZGI0YTY2NzQyODI2NjlhZmY2Ni4uODU1MGViNDUzZjkzZmNhYWJiMzEzNjA0
YWM1NDJmYzdiNzU0NjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApAQCAtODYsMTIgKzg2
LDEyIEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUqIGV4
ZWMsIEpTQXJyYXkqIGFycmF5LCBDb250ZXh0TWVuCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhcnJheS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBKU09iamVjdCogaXRlbSA9IGFz
T2JqZWN0KGFycmF5LT5nZXRJbmRleChleGVjLCBpKSk7Ci0gICAgICAgIEpTVmFsdWUgbGFiZWwg
PSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAibGFiZWwiKSk7Ci0gICAgICAgIEpT
VmFsdWUgdHlwZSA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ0eXBlIikpOwot
ICAgICAgICBKU1ZhbHVlIGlkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImlk
IikpOwotICAgICAgICBKU1ZhbHVlIGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmll
cihleGVjLCAiZW5hYmxlZCIpKTsKLSAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImNoZWNrZWQiKSk7Ci0gICAgICAgIEpTVmFsdWUgc3Vi
SXRlbXMgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAic3ViSXRlbXMiKSk7Cisg
ICAgICAgIEpTVmFsdWUgbGFiZWwgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAibGFiZWwiKSk7CisgICAgICAgIEpTVmFsdWUgdHlwZSA9IGl0ZW0tPmdldChl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ0eXBlIikpOworICAgICAgICBKU1Zh
bHVlIGlkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImlk
IikpOworICAgICAgICBKU1ZhbHVlIGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiZW5hYmxlZCIpKTsKKyAgICAgICAgSlNWYWx1ZSBjaGVja2Vk
ID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNoZWNrZWQi
KSk7CisgICAgICAgIEpTVmFsdWUgc3ViSXRlbXMgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAic3ViSXRlbXMiKSk7CiAgICAgICAgIGlmICghdHlwZS5pc1N0
cmluZygpKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNmRkZTUxMGM0MzI1NTI2
Y2QyNzk3OWI4MjJiNzEyNDYxMjc1M2JkNC4uYzMxYWRhZjc3MTYyYjgyYTg5ZDdiNDNkNzU3ZGVm
YzI1OTc0MzE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5
RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBKU09iamVjdCogSlNMYXp5RXZl
bnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
ZXhlYwogICAgIGFyZ3MuYXBwZW5kKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBtX2V2ZW50UGFy
YW1ldGVyTmFtZSkpOwogICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIG1f
Y29kZSkpOwogCi0gICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGFyZ3MsIElkZW50aWZpZXIoZXhlYywgbV9mdW5jdGlvbk5hbWUpLCBtX3NvdXJjZVVSTCwgbV9w
b3NpdGlvbik7IC8vIEZJWE1FOiBpcyBnbG9iYWxFeGVjIG9rPworICAgIEpTT2JqZWN0KiBqc0Z1
bmN0aW9uID0gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIG1fZnVuY3Rpb25OYW1lKSwgbV9zb3VyY2VVUkwsIG1fcG9zaXRpb24pOyAvLyBGSVhN
RTogaXMgZ2xvYmFsRXhlYyBvaz8KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKICAgICAgICAgZXhlYy0+Y2xlYXJF
eGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUZpbHRlckNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVG
aWx0ZXJDb25kaXRpb24uY3BwCmluZGV4IDcxNzI2YmJmMWIxZWI2NzFlMWE2YjRlZDQ4MmM2MWUy
YjU4YWJjYTMuLjdiNDExOWE1YTVkMGI3Mjg5ZjNlMTM2OGQ5MTBkNzZhNzk4ZDhiNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9u
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBzaG9ydCBKU05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2Vw
dE5vZGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIE5vZGUqIGZpbHRlck5vZGUpCiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmaWx0ZXIs
IGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAg
IGZpbHRlciA9IGZpbHRlci5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYWNjZXB0Tm9kZSIp
KTsKKyAgICAgICAgZmlsdGVyID0gZmlsdGVyLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJhY2NlcHROb2RlIikpOwogICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGZpbHRlciwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25l
KSB7CiAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiTm9kZUZpbHRlciBvYmplY3QgZG9lcyBub3QgaGF2ZSBhbiBhY2NlcHRO
b2RlIGZ1bmN0aW9uIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKaW5kZXggM2M5MmJlYjEzNGVkMDYz
MzFiMzlmNjFmMzY5ZTRkODhkYzMzM2RhMy4uOGM5ZWI4ZjljMTlmOTBhMDBhMzZkZjUzNWY5OTNi
YWM3YTEzZWJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxS
ZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCkBAIC03NCw3ICs3NCw3IEBAIEpTVmFs
dWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBvYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIG1faW1wbC0+Y29sdW1uTmFt
ZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgICAgIG9iamVj
dC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbV9p
bXBsLT5jb2x1bW5OYW1lcygpW2ldKSwganNWYWx1ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
ICAgICB9CiAKICAgICByZXR1cm4gb2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKaW5kZXggOTQyYzRkZmI2ZTdlNjhmODlhMGNmNzlkNTQ1
ZTMxOTE0NmJjMjczNy4uZDY0NjAzZTFiOGQyNWVkZjVkMWYyOWM1ZjcwMzcyMWI2YmNhMzMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCkBA
IC05MSw3ICs5MSw3IEBAIHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIo
ZXhlYywgdGhpc09iamVjdC0+bV9pbXBsLT5rZXkoaSwgZWMpKSk7CisgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdGhpc09iamVjdC0+bV9pbXBs
LT5rZXkoaSwgZWMpKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5j
cHAKaW5kZXggYjgxYWFjZDUwMDhiNTc0NDgyZDllYzE2M2E3YTM3MGFlZDdjZDdkNy4uNjBmYzU0
NWE1Y2EzZGIxNTg1ZjQ3NmVhNTBjMzY3NTdiMGY1YzM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKQEAgLTQ3LDcg
KzQ3LDcgQEAgdm9pZCBzZXRJbnRlcm5hbFNsb3RUb09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgb2JqZWN0VmFsdWUsIFByaXZhdGVOYW1lJgogewogICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBvYmplY3RWYWx1ZS50b09iamVjdChleGVjKTsKICAgICBQdXRQcm9wZXJ0eVNsb3QgcHJvcGVy
dHlTbG90KG9iamVjdFZhbHVlKTsKLSAgICBvYmplY3QtPnB1dChvYmplY3QsIGV4ZWMsIElkZW50
aWZpZXI6OmZyb20obmFtZSksIHZhbHVlLCBwcm9wZXJ0eVNsb3QpOworICAgIG9iamVjdC0+cHV0
KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChuYW1lKSwgdmFsdWUsIHByb3BlcnR5
U2xvdCk7CiB9CiAKIEpTVmFsdWUgZ2V0SW50ZXJuYWxTbG90RnJvbU9iamVjdChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgb2JqZWN0VmFsdWUsIFByaXZhdGVOYW1lJiBuYW1lKQpAQCAtNTUsNyAr
NTUsNyBAQCBKU1ZhbHVlIGdldEludGVybmFsU2xvdEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIG9iamVjdFZhbHVlLCBQcml2YXRlTgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBv
YmplY3RWYWx1ZS50b09iamVjdChleGVjKTsKICAgICBQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90
KG9iamVjdFZhbHVlKTsKIAotICAgIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tKG5hbWUpOworICAgIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tVWlkKG5hbWUpOwogICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qo
b2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5U2xvdCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgcmV0dXJuIHByb3BlcnR5U2xvdC5nZXRWYWx1ZShleGVjLCBwcm9w
ZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2Jh
bE9iamVjdC5jcHAKaW5kZXggY2I0OTMxZGQ1NmE3NmViMzI0YmE2ZjNkZTk1MTY0NzM0ZTgwZTQ5
Yi4uMDNkNDQ3NjU4OTc5NzhjMDA0YWQ5MzFhYzE2NDBkMzE2ODBlM2ExYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCkBAIC01Myw3
ICs1Myw3IEBAIHN0YXRpYyBib29sIGhhbmRsZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3RhdGUpCiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0JiB2YWx1ZSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7Ci0gICAg
c2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRl
LT52bSgpLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7
CisgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlw
dFN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHNjcmlwdFN0YXRlLCBuYW1lKSwg
dmFsdWUuanNPYmplY3QoKSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0
ZSk7CiB9CiAKQEAgLTYxLDE0ICs2MSwxNCBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0
KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcAogewog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKICAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2Ny
aXB0U3RhdGUtPnZtKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlw
dFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJl
Y3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUs
IG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0
dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKIGJvb2wgU2NyaXB0R2xvYmFs
T2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1l
LCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIHZhbHVlKQogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHNjcmlwdFN0YXRlKTsKLSAgICBKU1ZhbHVlIGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5nZXQoc2NyaXB0U3RhdGUsIElkZW50aWZpZXIoc2NyaXB0U3Rh
dGUsIG5hbWUpKTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5nZXQoc2NyaXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2Ny
aXB0U3RhdGUsIG5hbWUpKTsKICAgICBpZiAoIWpzVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtODIsNyArODIsNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgRGVwcgogYm9vbCBTY3Jp
cHRHbG9iYWxPYmplY3Q6OnJlbW92ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0
IGNoYXIqIG5hbWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAg
IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0
ZVByb3BlcnR5KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNjcmlwdFN0YXRl
LCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSk7CisgICAgc2NyaXB0U3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoc2NyaXB0U3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc2NyaXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNj
cmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZGNhNTYwM2Y5YzM5OTYxODMzOGFmN2UwZGIz
MWFkZjEwY2I2YjZmOS4uYjFjNTI4MDdiOTAzZmFlNmNmMmQ1OGUxMGYwYmI0MDAwNzlkMzJhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC01MjEsNyArNTIxLDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xv
bmVCYXNlIHsKICAgICAgICAgOiBDbG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2J1ZmZlcihv
dXQpCiAgICAgICAgICwgbV9ibG9iVVJMcyhibG9iVVJMcykKLSAgICAgICAgLCBtX2VtcHR5SWRl
bnRpZmllcihleGVjLCBlbXB0eVN0cmluZygpKQorICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVy
KElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgZW1wdHlTdHJpbmcoKSkpCiAgICAgewogICAg
ICAgICB3cml0ZShDdXJyZW50VmVyc2lvbik7CiAgICAgICAgIGZpbGxUcmFuc2Zlck1hcChtZXNz
YWdlUG9ydHMsIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMpOwpAQCAtMTAxNCw3ICsxMDE0LDcg
QEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgaWYgKHN0ci5p
c051bGwoKSkKICAgICAgICAgICAgIHdyaXRlKG1fZW1wdHlJZGVudGlmaWVyKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgd3JpdGUoSWRlbnRpZmllcihtX2V4ZWMsIHN0cikpOworICAgICAg
ICAgICAgd3JpdGUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsIHN0cikpOwogICAgIH0K
IAogICAgIHZvaWQgd3JpdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCkBAIC0xMjQ4
LDcgKzEyNDgsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgICAgICBsZW5ndGhTdGFjay5yZW1v
dmVMYXN0KCk7CiAKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJv
cGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRo
b2RUYWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJv
cGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAg
ICAgICAgICAgICBhcnJheS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKGFycmF5LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6
OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJv
cGVydHlTdGFjay5sYXN0KCkuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZShOb25JbmRleFByb3BlcnRpZXNUYWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhT
dGFjay5hcHBlbmQoMCk7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAg
ICAgIGlucHV0T2JqZWN0U3RhY2suYXBwZW5kKGluT2JqZWN0KTsKICAgICAgICAgICAgICAgICBp
bmRleFN0YWNrLmFwcGVuZCgwKTsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVu
ZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICBpbk9iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9w
ZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAg
ICAgICAgaW5PYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMoaW5PYmpl
Y3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvYmplY3RT
dGFydFZpc2l0TWVtYmVyOgogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CkBAIC0xMzgxLDcgKzEz
ODEsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gaW5w
dXRPYmplY3RTdGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5bmFt
aWNDYXN0PEpTU2V0Kj4ob2JqZWN0KSB8fCBqc0R5bmFtaWNDYXN0PEpTTWFwKj4ob2JqZWN0KSk7
CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFy
cmF5KG1fZXhlYykpOwotICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgp
LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9w
ZXJ0eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKICAgICAgICAgICAgICAgICAgICAgd3JpdGUoTm9uTWFwUHJvcGVydGllc1RhZyk7CiAg
ICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAg
ICAgICBnb3RvIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI7CkBAIC0yNDYwLDExICsyNDYwLDExIEBA
IERlc2VyaWFsaXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoKQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoSlNWYWx1ZSB0ZXJtaW5hbCA9IHJlYWRU
ZXJtaW5hbCgpKSB7Ci0gICAgICAgICAgICAgICAgcHV0UHJvcGVydHkob3V0cHV0T2JqZWN0U3Rh
Y2subGFzdCgpLCBJZGVudGlmaWVyKG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSksIHRl
cm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwdXRQcm9wZXJ0eShvdXRwdXRPYmplY3RTdGFjay5s
YXN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0cmlu
ZygpKSwgdGVybWluYWwpOwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1l
bWJlcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKE9iamVj
dEVuZFZpc2l0TWVtYmVyKTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZVN0YWNrLmFwcGVuZChJ
ZGVudGlmaWVyKG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSkpOworICAgICAgICAgICAg
cHJvcGVydHlOYW1lU3RhY2suYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBj
YWNoZWRTdHJpbmctPnN0cmluZygpKSk7CiAgICAgICAgICAgICBnb3RvIHN0YXRlVW5rbm93bjsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIE9iamVjdEVuZFZpc2l0TWVtYmVyOiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IGIzMWUz
ZWI2OTUzYmJiNDljMTZkYWFkOWIxNjBjYTFjMDAwYTI2NmEuLmM4YzZhODkzY2U5MjM1YTc5NTk4
MmUyNzEzZTgyM2UxMDU1YzUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0zMzAsNyArMzMwLDcgQEAgLSAoaWQpY2FsbFdlYlNj
cmlwdE1ldGhvZDooTlNTdHJpbmcgKiluYW1lIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmdz
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNl
cHRpb24oKSk7CiAKLSAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKG5hbWUpKSk7CisgICAgSlNDOjpKU1ZhbHVl
IGZ1bmN0aW9uID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZyhuYW1lKSkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpAQCAtMzg0LDcgKzM4NCw3IEBAIC0gKHZvaWQpc2V0
VmFsdWU6KGlkKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKICAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4oW3NlbGYgX2ltcF0pOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7
Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
KGV4ZWMsIFN0cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVl
LCBPYmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CisgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVl
LCBPYmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CiAKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4
ZWMpOwpAQCAtNDA3LDcgKzQwNyw3IEBAIC0gKGlkKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtl
eQogICAgICAgICAvLyBsZWF2aW5nIHRoZSBsb2NrIHBlcm1hbmVudGx5IGhlbGQKICAgICAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIAotICAgICAgICBKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhr
ZXkpKSk7CisgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1wXS0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWRkRXhj
ZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIC0gKHZvaWQpcmVtb3Zl
V2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0
aW9uKCkpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgW3NlbGYgX2ltcF0t
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlm
aWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZyhrZXkpKSk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDUwLDcgKzQ1MCw3IEBA
IC0gKEJPT0wpaGFzV2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAg
Qk9PTCByZXN1bHQgPSBbc2VsZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihl
eGVjLCBTdHJpbmcoa2V5KSkpOworICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1By
b3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsK
IAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25U
b0NvbnNvbGUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGZmY2ZkOTY3YjFhZDVmOWUwOTU5YTFkMTQ2MzAwMWUz
ZGVjYTlhYTYuLjM3NTUyNDM2Njk2MGY4ZTA0NTYxYjNiNTA4ZWIyZjU3MDdiYzJmNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC05NzIsMTYgKzk3MiwxNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgQ3VzdG9t
IGdldFByb3BlcnR5TmFtZXMgZnVuY3Rpb24gZXhpc3RzIG9uIERPTVdpbmRvdwogICAgIGlmICgk
aW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25N
b2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7Ci0gICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5
TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IHZvaWQgZ2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9k
ZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2
b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6
RW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3Bl
cnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIHVpbnQzMl90IGdldEVudW1lcmFibGVMZW5ndGgoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0Kik7XG4iKTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6
Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMifSA9IDE7CiAgICAgfQogCiAgICAgIyBDdXN0b20g
Z2V0T3duUHJvcGVydHlOYW1lcyBmdW5jdGlvbgogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRW51bWVyYXRlUHJvcGVydHkifSB8fCAkaW5kZXhlZEdldHRl
ckZ1bmN0aW9uKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0
aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcyJ9ID0gMTsgICAgICAgCiAgICAgfQogCkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rp
b24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKCRzaWduYXR1cmUpOwogICAgICAgICAg
ICAgICAgIG15ICRuYW1lID0gJHNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoISR7ZW5hYmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwg
c3RybGVuKFwiJG5hbWVcIikpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJs
ZW4oXCIkbmFtZVwiKSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmVtb3ZlRGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI2
MDMsMTAgKzI2MDMsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4g
Ii5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0
aW9uYWwifSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3Jc
biIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRU
aGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2
YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Y2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUi
fSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBvYmplY3RcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
ZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCEkYXR0cmli
dXRlLT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGltcGxUeXBlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xuIik7CkBAIC0y
NzE2LDcgKzI3MTYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3Vu
dDsgKytpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTtcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDFkNTkxODliNDcyMDUxMTcx
NzljNjM5YTYwNWIzMDg2ZWRkYmY2ZWYuLmQyNGEyZWE3MDZhZTJkOTQ0MmI3MDc1Zjk1ZTI4ODMz
NjU2MjA2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQg
SlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxG
bG9hdDY0QXJyYXkqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKTsgKytpKQogICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKLSAgICAgQmFz
ZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKKyAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBKU1ZhbHVlIEpTRmxvYXQ2NEFycmF5OjpnZXRDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9h
dDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zs
b2F0NjRBcnJheS5oCmluZGV4IGZmMzg4Y2EwMTc2MGMxMmI5NTc1MDM5ZmVjNzY0MzI5M2ZlODRl
MzQuLjEzZTE1NzdlMzZjZDYxYmRkMWJjMTg3MDZiMzYwMjA4YWMzODJlODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRB
cnJheS5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEpTRmxvYXQ2NEFycmF5IDogcHVibGljIEpT
QXJyYXlCdWZmZXJWaWV3IHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGdl
dE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgRmxvYXQ2NEFy
cmF5KiBpbXBsKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCA1
YTIxNGQwN2RkMTA2MGY5ZWRlYWQ1YzljYjJiZTc5ZDg5OWI3YTk0Li5lMGFhNmQwOTMzMDZhNzBm
NjY2OTA5ZjYwZTE5NjczYmNjNjAyYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAg
LTIyNCw3ICsyMjQsNyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUAogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kp
CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwot
ICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0RXZlbnRUYXJn
ZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggYmYxY2U2N2UyZmUzY2RjYjk3ZTIwMzg3ZjViMGU5
ZTUwODlmMjQ3Zi4uNDA4Y2I4ZjJmZjc5M2UzMWQxYzZlMzQyOTEyNWQzZDFmYTU0NWIxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSlNUZXN0RXZlbnRUYXJnZXQgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICAgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVy
YXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlND
OjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIHN0YXRp
YyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZp
c2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA4N2IyZDFiMjNiOGJjMjU5NTJkYzcxMTk3MDhlOTkx
ZmE4MGFiMDk1Li43MzVhNjdhZTFiYjUxOTJlZjQ5N2YzOGFhZDM4ZTY0ZmQ0MDM5NTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcApAQCAtMTg3OSw3ICsxODc5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2Jq
RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBjYXN0ZWRUaGlzLT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmciKSwgdmFsdWUpOworICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIp
LCB2YWx1ZSk7CiB9CiAKIApAQCAtMjY3Miw3ICsyNjcyLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZU9iamUKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBjYXN0ZWRU
aGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxB
dHRyNCIpLCB2YWx1ZSk7CisgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUpOwog
fQogCiAjZW5kaWYKQEAgLTI2ODcsNyArMjY4Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmpl
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgY2FzdGVkVGhpcy0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImNvbmRpdGlvbmFsQXR0cjUi
KSwgdmFsdWUpOworICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb25kaXRpb25hbEF0dHI1IiksIHZhbHVlKTsKIH0KIAog
I2VuZGlmCkBAIC0yNzAyLDcgKzI3MDIsNyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZQogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGNhc3RlZFRoaXMtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb25kaXRpb25hbEF0dHI2IiksIHZh
bHVlKTsKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAiY29uZGl0aW9uYWxBdHRyNiIpLCB2YWx1ZSk7CiB9CiAKICNlbmRp
ZgpAQCAtMjg0MCw3ICsyODQwLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3QKLSAgICBj
YXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAicmVwbGFj
ZWFibGVBdHRyaWJ1dGUiKSwgdmFsdWUpOworICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJyZXBsYWNlYWJsZUF0dHJpYnV0
ZSIpLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5k
ZXggOTAwMTAxMzhhYjQ2Y2U3ZDk3NTNjYmZmMjk1ZTUzY2RmYWNkMGI1YS4uMDkwNWRlMTk3ZTU1
NjEyOGQ1MjI1YTY1ZDQxMjNlNjhkOTYyZjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNv
YmplY3QuY3BwCkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAsIE5Q
T2JqZWN0KiBvLCBOUElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQKICAg
ICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5
IHByb3BlcnR5TmFtZXMoZXhlYyk7CiAKLSAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCkt
PmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOworICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+Z2V0
UHJvcGVydHlOYW1lcyhvYmotPmltcCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgY2FsbCBOUE5fTWVtQWxsb2MgYnV0IHRoYXQncyBp
biBXZWJLaXQKICAgICAgICAgTlBJZGVudGlmaWVyKiBpZGVudGlmaWVycyA9IHN0YXRpY19jYXN0
PE5QSWRlbnRpZmllcio+KG1hbGxvYyhzaXplb2YoTlBJZGVudGlmaWVyKSAqIHNpemUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCmluZGV4IDc3NGZkZmMzZjRlZjk1M2VmZDdi
ZDZmZDk2NzZmNjQ4N2U4OTkwNzYuLmRmOTA5ZGNlNWVhZDkzODU4ZTAyMzA5Y2Q4MmRjNWE3MzIz
OTVlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcApAQCAtMTQ0LDcgKzE0
NCw3IEBAIFN0cmluZyBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KGNvbnN0IE5QU3RyaW5nKiBzdHJp
bmcpCiAKIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBOUFVURjgqIG5hbWUpCiB7Ci0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywg
Y29udmVydFVURjhUb1VURjE2V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIC0xKSk7CisgICAgcmV0
dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgY29udmVydFVURjhUb1VURjE2V2l0aExh
dGluMUZhbGxiYWNrKG5hbWUsIC0xKSk7CiB9CiAKIH0gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IGNkMzRlNWYxMjAyZDdmM2FkYmRjMTgzMDk4N2Vm
ODZiYWRlNmNjMTMuLjU3ODkxNTg5MzlhMmFmN2I5MmZhYjkwYWY4NGFhYmU5NWFlZjdlMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI2OCw3ICsy
NjgsNyBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKQogSlNWYWx1ZSBPYmpjRmFsbGJhY2tPYmplY3RJ
bXA6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpCiB7CiAgICAgY29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wKiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCo+KG9i
amVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVm
aW5lZEZpZWxkKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+bV9pdGVtKSk7Cisg
ICAgcmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxk
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdGhpc09iamVjdC0+bV9pdGVtKSk7
CiB9CiAKIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICop
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggMDIyMjE5
MDVjNDBlNmVkZmVkNTc5OTllYjIzNWY1ODkxYTdhMmUwOC4uYzcxM2ZmYTRlMjMyOTNjNjZjYzY1
Y2IyOTkzZGEzYTkyZWVkYTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CiAKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpOwogCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90
ZXN0YmluZGluZ3MuY3BwCmluZGV4IDk1NzMwYzQzZDc0MDk4NTdiMWJmZDI5Mjk1MWM1NWRiMGRj
YzVkZjUuLmJhZjI0N2QyZGI2Y2U3ZTdlZTExM2EyMTBiODdjYzMzYTcyNmEwNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAKICAgICAgICAgTXlPYmplY3QgKm15
T2JqZWN0ID0gKE15T2JqZWN0ICopTlBOX0NyZWF0ZU9iamVjdCAobXlGdW5jdGlvblB0cnMpOwog
ICAgICAgICAKLSAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVyKCJteUludGVyZmFj
ZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6Q0xhbmd1YWdlLCAo
dm9pZCAqKW15T2JqZWN0KSk7CisgICAgICAgIGdsb2JhbC5wdXQoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAibXlJbnRlcmZhY2UiKSwgSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVP
YmplY3QoSW5zdGFuY2U6OkNMYW5ndWFnZSwgKHZvaWQgKilteU9iamVjdCkpOwogICAgICAgICAK
ICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKmNvZGUgPSByZWFkSmF2YVNjcmlwdEZyb21GaWxlKGFyZ3ZbaV0pOwpAQCAtMzk0
LDcgKzM5NCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgICAg
ICAgICAgICAgY2hhciogbXNnID0gZXhWYWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmFz
Y2lpKCk7CiAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8gPSAtMTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4VmFsLnR5cGUoKSA9PSBPYmplY3RUeXBlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBWYWx1ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0
KGV4ZWMsSWRlbnRpZmllcigibGluZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
IGxpbmVWYWwgPSBPYmplY3Q6OmR5bmFtaWNDYXN0KGV4VmFsKS5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAibGluZSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChsaW5lVmFsLnR5cGUoKSA9PSBOdW1iZXJUeXBlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmVubyA9IGludChsaW5lVmFsLnRvTnVtYmVyKGV4ZWMpKTsKICAgICAgICAgICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KaW5kZXggYmZhY2YyMTA3
NGExZWU4NTcyMjM2ZTVhYWFjMTJjNWQ5ZTRjMjc3MC4uMzUzMmIwYTY4OWFiY2Q2ZDJkN2UxMzVi
MTdiMGFjNjg1NTRlMzZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCkBA
IC0yNDgsNyArMjQ4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAg
ICAKICAgICAgICAgTXlGaXJzdEludGVyZmFjZSAqbXlJbnRlcmZhY2UgPSBbW015Rmlyc3RJbnRl
cmZhY2UgYWxsb2NdIGluaXRdOwogICAgICAgICAKLSAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJ
ZGVudGlmaWVyKCJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJ
bnN0YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlKSk7CisgICAg
ICAgIGdsb2JhbC5wdXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibXlJbnRl
cmZhY2UiKSwgSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5zdGFuY2U6Ok9iamVjdGl2
ZUNMYW5ndWFnZSwgKHZvaWQgKilteUludGVyZmFjZSkpOwogICAgICAgICAKICAgICAgICAgZm9y
IChpbnQgaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNv
ZGUgPSByZWFkSmF2YVNjcmlwdEZyb21GaWxlKGFyZ3ZbaV0pOwpAQCAtMjYyLDcgKzI2Miw3IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqbXNnID0gZXhWYWwudG9TdHJpbmcoZXhlYykuYXNjaWkoKTsKICAgICAgICAgICAgICAgICAg
ICAgaW50IGxpbmVubyA9IC0xOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhWYWwudHlwZSgp
ID09IE9iamVjdFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwg
PSBPYmplY3Q6OmR5bmFtaWNDYXN0KGV4VmFsKS5nZXQoZXhlYyxJZGVudGlmaWVyKCJsaW5lIikp
OworICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1p
Y0Nhc3QoZXhWYWwpLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5l
IikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVWYWwudHlwZSgpID09IE51bWJl
clR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGxpbmVWYWwu
dG9OdW1iZXIoZXhlYykpOwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNNYW5h
Z2VyLmNwcAppbmRleCBmOTYyMTM4YTFlYzMzM2VjNzFjMTUwMjFiNDdmNDNjYzA3MWRmY2ZmLi42
ZGE5NDMwOGYyNDU4OWYzNmRiMjYyNDM1YWRkYjg5YmEyYzM1ZTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25z
TWFuYWdlci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBuYW1lc3BhY2UgRXh0ZW5zaW9uc01hbmFn
ZXIgewogCiBzdGF0aWMgYm9vbCBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0
JiBydWxlT2JqZWN0LCBDb250ZW50RXh0ZW5zaW9uUnVsZTo6VHJpZ2dlciYgdHJpZ2dlcikKIHsK
LSAgICBKU1ZhbHVlIHRyaWdnZXJPYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRp
ZmllcigmZXhlYywgInRyaWdnZXIiKSk7CisgICAgSlNWYWx1ZSB0cmlnZ2VyT2JqZWN0ID0gcnVs
ZU9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ0cmlnZ2Vy
IikpOwogICAgIGlmICghdHJpZ2dlck9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICF0
cmlnZ2VyT2JqZWN0LmlzT2JqZWN0KCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlk
IHRyaWdnZXIgb2JqZWN0LiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
SlNWYWx1ZSB1cmxGaWx0ZXJPYmplY3QgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRp
ZmllcigmZXhlYywgInVybC1maWx0ZXIiKSk7CisgICAgSlNWYWx1ZSB1cmxGaWx0ZXJPYmplY3Qg
PSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywg
InVybC1maWx0ZXIiKSk7CiAgICAgaWYgKCF1cmxGaWx0ZXJPYmplY3QgfHwgZXhlYy5oYWRFeGNl
cHRpb24oKSB8fCAhdXJsRmlsdGVyT2JqZWN0LmlzU3RyaW5nKCkpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJJbnZhbGlkIHVybC1maWx0ZXIgb2JqZWN0LiIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBib29sIGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYg
ZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIENvbnRlbnRFeHRlbnNpb25SCiAgICAgfQogICAg
IHRyaWdnZXIudXJsRmlsdGVyID0gdXJsRmlsdGVyOwogCi0gICAgSlNWYWx1ZSB1cmxGaWx0ZXJD
YXNlT2JqZWN0ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ1
cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZlIikpOworICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2Fz
ZU9iamVjdCA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZleGVjLCAidXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZSIpKTsKICAgICBpZiAodXJsRmls
dGVyQ2FzZU9iamVjdCAmJiAhZXhlYy5oYWRFeGNlcHRpb24oKSAmJiB1cmxGaWx0ZXJDYXNlT2Jq
ZWN0LmlzQm9vbGVhbigpKQogICAgICAgICB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2
ZSA9IHVybEZpbHRlckNhc2VPYmplY3QudG9Cb29sZWFuKCZleGVjKTsKIApAQCAtNzgsMTMgKzc4
LDEzIEBAIHN0YXRpYyBib29sIGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3Qm
IHJ1bGVPYmplY3QsIENvbnRlbnRFeHRlbnNpb25SCiAKIHN0YXRpYyBib29sIGxvYWRBY3Rpb24o
RXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgQ29udGVudEV4dGVuc2lvblJ1
bGU6OkFjdGlvbiYgYWN0aW9uKQogewotICAgIEpTVmFsdWUgYWN0aW9uT2JqZWN0ID0gcnVsZU9i
amVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJhY3Rpb24iKSk7CisgICAgSlNWYWx1
ZSBhY3Rpb25PYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmZXhlYywgImFjdGlvbiIpKTsKICAgICBpZiAoIWFjdGlvbk9iamVjdCB8fCBleGVjLmhh
ZEV4Y2VwdGlvbigpIHx8ICFhY3Rpb25PYmplY3QuaXNPYmplY3QoKSkgewogICAgICAgICBXVEZM
b2dBbHdheXMoIkludmFsaWQgYWN0aW9uIG9iamVjdC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIEpTVmFsdWUgdHlwZU9iamVjdCA9IGFjdGlvbk9iamVjdC5nZXQoJmV4
ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ0eXBlIikpOworICAgIEpTVmFsdWUgdHlwZU9iamVjdCA9
IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ0
eXBlIikpOwogICAgIGlmICghdHlwZU9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICF0
eXBlT2JqZWN0LmlzU3RyaW5nKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIHVy
bC1maWx0ZXIgb2JqZWN0LiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA1MTEyY2YyZWNjMzFlNjk1MDAzZTM5ZDRl
Y2VkYjQ5MDg2YzRhZjUzLi4wMjcxYmVkM2JlMGRhYmY3MmE4ZjdhYjU0YjRiZTI5YmY5NGFlNzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM3MDEsNyAr
MzcwMSw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udHJvbGxlckpTVmFsdWUoSlNDOjpFeGVj
U3RhdGUmIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0JiBnCiAgICAgaWYgKCFtZWRpYUpTV3JhcHBl
ck9iamVjdCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAgICAgCi0gICAgSlNDOjpJ
ZGVudGlmaWVyIGNvbnRyb2xzSG9zdCgmZXhlYy52bSgpLCAiY29udHJvbHNIb3N0Iik7CisgICAg
SlNDOjpJZGVudGlmaWVyIGNvbnRyb2xzSG9zdCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZygmZXhlYy52bSgpLCAiY29udHJvbHNIb3N0Iik7CiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xz
SG9zdEpTV3JhcHBlciA9IG1lZGlhSlNXcmFwcGVyT2JqZWN0LT5nZXQoJmV4ZWMsIGNvbnRyb2xz
SG9zdCk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU0M6
OmpzTnVsbCgpOwpAQCAtMzcxMCw3ICszNzEwLDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250
cm9sbGVySlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3QmIGcK
ICAgICBpZiAoIWNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCkKICAgICAgICAgcmV0dXJuIEpT
Qzo6anNOdWxsKCk7CiAKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbGxlcklEKCZleGVjLnZt
KCksICJjb250cm9sbGVyIik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXJJRCA9IEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy52bSgpLCAiY29udHJvbGxlciIpOwogICAg
IEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNXcmFwcGVyID0gY29udHJvbHNIb3N0SlNXcmFwcGVy
T2JqZWN0LT5nZXQoJmV4ZWMsIGNvbnRyb2xsZXJJRCk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwpAQCAtMzc1Miw3ICszNzUyLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKICAgICAv
LyAgICAgTm9uZQogICAgIC8vIFJldHVybiB2YWx1ZToKICAgICAvLyAgICAgTm9uZQotICAgIEpT
Qzo6SlNWYWx1ZSBtZXRob2RWYWx1ZSA9IGNvbnRyb2xsZXJPYmplY3QtPmdldChleGVjLCBKU0M6
OklkZW50aWZpZXIoZXhlYywgInVwZGF0ZUNhcHRpb25Db250YWluZXIiKSk7CisgICAgSlNDOjpK
U1ZhbHVlIG1ldGhvZFZhbHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidXBkYXRlQ2FwdGlvbkNvbnRhaW5lciIpKTsKICAg
ICBKU0M6OkpTT2JqZWN0KiBtZXRob2RPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpK
U09iamVjdCo+KG1ldGhvZFZhbHVlKTsKICAgICBpZiAoIW1ldGhvZE9iamVjdCkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTg3OCw3ICs1ODc4LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbnN1
cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0
LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKKyAg
ICBKU0M6OkpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CiAgICAg
aWYgKGZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApA
QCAtNTkwMSw3ICs1OTAxLDcgQEAgc3RhdGljIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yUHJvcGVy
dHkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBjb250cm8KIHsKICAgICBKU0M6
OlB1dFByb3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3QoY29udHJvbGxlclZhbHVlKTsKICAgICBKU0M6
OkpTT2JqZWN0KiBjb250cm9sbGVyT2JqZWN0ID0gY29udHJvbGxlclZhbHVlLnRvT2JqZWN0KGV4
ZWMpOwotICAgIGNvbnRyb2xsZXJPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChjb250cm9sbGVy
T2JqZWN0LCBleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgInBhZ2VTY2FsZUZhY3RvciIpLCBK
U0M6OmpzTnVtYmVyKHBhZ2VTY2FsZUZhY3RvciksIHByb3BlcnR5U2xvdCk7CisgICAgY29udHJv
bGxlck9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGNvbnRyb2xsZXJPYmplY3QsIGV4ZWMsIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAicGFnZVNjYWxlRmFjdG9yIiksIEpTQzo6
anNOdW1iZXIocGFnZVNjYWxlRmFjdG9yKSwgcHJvcGVydHlTbG90KTsKIH0KIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3Qp
CkBAIC01OTMwLDcgKzU5MzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJB
Z2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKICAgICAvLyBSZXR1cm4gdmFsdWU6CiAg
ICAgLy8gICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBjcmVhdGVkIG1lZGlhIGNvbnRyb2xsZXIgaW5z
dGFuY2UuCiAKLSAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC0+
Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CisgICAg
SlNDOjpKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0ZUNvbnRyb2xzIikpOwogICAgIGlm
IChmdW5jdGlvblZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNTk1OCw3ICs1OTU4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKICAgICAvLyBDb25uZWN0IHRoZSBNZWRp
YSwgTWVkaWFDb250cm9sbGVySG9zdCwgYW5kIENvbnRyb2xsZXIgc28gdGhlIEdDIGtub3dzIGFi
b3V0IHRoZWlyIHJlbGF0aW9uc2hpcAogICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhSlNXcmFwcGVy
T2JqZWN0ID0gbWVkaWFKU1dyYXBwZXIudG9PYmplY3QoZXhlYyk7Ci0gICAgSlNDOjpJZGVudGlm
aWVyIGNvbnRyb2xzSG9zdCgmZXhlYy0+dm0oKSwgImNvbnRyb2xzSG9zdCIpOworICAgIEpTQzo6
SWRlbnRpZmllciBjb250cm9sc0hvc3QgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4
ZWMtPnZtKCksICJjb250cm9sc0hvc3QiKTsKICAgICAKICAgICBBU1NFUlQoIW1lZGlhSlNXcmFw
cGVyT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBjb250cm9sc0hvc3QpKTsKIApAQCAtNTk2OCw3
ICs1OTY4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgaWYgKCFtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBl
ck9iamVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEpTQzo6SWRlbnRpZmllciBjb250
cm9sbGVyKCZleGVjLT52bSgpLCAiY29udHJvbGxlciIpOworICAgIEpTQzo6SWRlbnRpZmllciBj
b250cm9sbGVyID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLT52bSgpLCAiY29u
dHJvbGxlciIpOwogCiAgICAgQVNTRVJUKCFjb250cm9sbGVyT2JqZWN0LT5oYXNQcm9wZXJ0eShl
eGVjLCBjb250cm9sbGVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCmluZGV4IGY3ZDcyZjc0YzQxMWQzMjNkOGQ0MmMwMDc2MjAyNjQyYzk3
MDMwODYuLjFiODU2MGI0OGJiZGVlNzVkOGQ2YTc1NmJhZjkyYjlkODAyN2ZhYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMzk1LDcg
KzM5NSw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hh
ZG93Um9vdChTaGFkb3dSb290KiByb290KQogICAgIGFyZ0xpc3QuYXBwZW5kKEpTQzo6anNCb29s
ZWFuKCFtX3NuYXBzaG90SW1hZ2UpKTsKIAogICAgIC8vIEl0IGlzIGV4cGVjdGVkIHRoZSBKUyBm
aWxlIHByb3ZpZGVzIGEgY3JlYXRlT3ZlcmxheShzaGFkb3dSb290LCB0aXRsZSwgc3VidGl0bGUp
IGZ1bmN0aW9uLgotICAgIEpTQzo6SlNPYmplY3QqIG92ZXJsYXkgPSBnbG9iYWxPYmplY3QtPmdl
dChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgImNyZWF0ZU92ZXJsYXkiKSkudG9PYmplY3Qo
ZXhlYyk7CisgICAgSlNDOjpKU09iamVjdCogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4
ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlT3ZlcmxheSIpKS50
b09iamVjdChleGVjKTsKICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwogICAgIEpTQzo6Q2Fs
bFR5cGUgY2FsbFR5cGUgPSBvdmVybGF5LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvdmVy
bGF5LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGVOb25lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmlu
ZGV4IDAyZTNmNDllZjdjODFmZjhhNzA0MzE4NGI2NDBjMDU4ZTZmNmQ2OTcuLmI1MmQxZTYyYTU2
NmI5OTZkY2Q5MmFjOTRkNGEzMGYyNDZiYmM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBp
bmplY3RJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0Q29udGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmIChpczxEb2N1bWVudD4oKnNjcmlwdENvbnRleHQpKQotICAgICAgICBnbG9iYWxPYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIEludGVybmFsczo6aW50ZXJu
YWxzSWQpLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW50ZXJuYWxzOjpjcmVhdGUoZG93bmNh
c3Q8RG9jdW1lbnQ+KHNjcmlwdENvbnRleHQpKSkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIEludGVybmFs
czo6aW50ZXJuYWxzSWQpLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW50ZXJuYWxzOjpjcmVh
dGUoZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdENvbnRleHQpKSkpOwogfQogCiB2b2lkIHJlc2V0
SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5t
bQppbmRleCA5Y2Q2NTVjOWY3MTA1MzVhOWRmMmFmNDU3ZDcwNDQ2YTZkOWI2ZTY3Li4zNDQxZTRm
YjEzNzhkOTM4NzU2NDU2ZWI5NTlkNWRmZDExZjhiYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5t
bQpAQCAtNjI3LDcgKzYyNyw3IEBAIHN0YXRpYyBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tSWRl
bnRpZmllclJlcChJZGVudGlmaWVyUmVwKiBpZGVudGlmaWVyKQogICAgIEFTU0VSVChpZGVudGlm
aWVyLT5pc1N0cmluZygpKTsKICAgCiAgICAgY29uc3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+
c3RyaW5nKCk7ICAgIAotICAgIHJldHVybiBJZGVudGlmaWVyKCZKU0RPTVdpbmRvdzo6Y29tbW9u
Vk0oKSwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHIsIHN0cmxlbihzdHIp
KSk7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJkpTRE9NV2luZG93Ojpjb21t
b25WTSgpLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0
cikpKTsKIH0KIAoga2Vybl9yZXR1cm5fdCBXS1BDSW52b2tlKG1hY2hfcG9ydF90IGNsaWVudFBv
cnQsIHVpbnQzMl90IHBsdWdpbklELCB1aW50MzJfdCByZXF1ZXN0SUQsIHVpbnQzMl90IG9iamVj
dElELCB1aW50NjRfdCBzZXJ2ZXJJZGVudGlmaWVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCmluZGV4IGNhZGU5ZTFlOWZkZjdiNmY2NDEwODVkYjQ3MDNhYjg0MzM4NTNhNmQuLjNiOThm
ZDRlODczZDAwZjE3OGZhOTQ4OTU5ZmE0ODFlYjgxMWZkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0KQEAgLTEyMzEsNyArMTIzMSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjplbnVtZXJhdGUodWludDMyX3Qgb2JqZWN0SUQsIGRhdGFfdCYgcmVzdWx0RGF0
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgCiAgICAgUHJvcGVydHlOYW1lQXJyYXkg
cHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3Bl
cnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5Kj4gYXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggMGRmMGRlYzBj
MjQ3OGYwZmIxZmU4OGM2NDg5MzBiMmFhODJmMGYwMi4uNzUxYjE2YWRjYjAzZWE5ZTNjOTYxMzkw
Y2FjNGVhODQzYmEwZGQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQcm94eUluc3Rh
bmNlOjpnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IG5hbWVBcnIKIAogICAgICAgICBpZiAoaWRlbnRpZmllci0+aXNTdHJpbmcoKSkgewogICAgICAg
ICAgICAgY29uc3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5nKCk7Ci0gICAgICAgICAg
ICBuYW1lQXJyYXkuYWRkKElkZW50aWZpZXIoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBTdHJp
bmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKSk7CisgICAg
ICAgICAgICBuYW1lQXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoJkpTRE9NV2luZG93
Ojpjb21tb25WTSgpLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3Ry
bGVuKHN0cikpKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJ
ZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZpZXItPm51bWJlcigpKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwCmluZGV4IDFjZWQyOTNlYjhjY2M3N2QzNzA5YjliZDM5ODA4Y2MzOTgxMjcz
NzcuLmZkYmU4MWE4ZTBiZTk3Njk0OTlhYzliMmQzZTBmYTMxZGJiNTU4MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5jcHAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAg
ICAgICAgICAgY29uc3QgY2hhciogc3RyaW5nID0gaWRlbnRpZmllclJlcC0+c3RyaW5nKCk7CiAg
ICAgICAgICAgICBpbnQgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhX
aXRoTGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5ndGgpLmltcGwoKSk7CisgICAgICAgICAgICBp
ZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4
V2l0aExhdGluMUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKSk7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmllclJl
cC0+bnVtYmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXggMGQxNjY3NGU1YzE1ZjQ3MTcx
ODU0M2QyNWNhNGYzMTA5YzA1MmQyMi4uYTY1Yzg5MzNmY2UwY2I4MGJkMDk2Yzc2NDc2OGMwMmMx
MDhmYzA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgSWRl
bnRpZmllciBpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAoRXhlY1N0YXRlKiBleGVjLCBJZGVu
dGlmaWVyUmVwKiBpZAogICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IGlkZW50aWZpZXJSZXAtPnN0
cmluZygpOwogICAgIGludCBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKIAotICAgIHJldHVybiBJ
ZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5n
LCBsZW5ndGgpLmltcGwoKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkpOwog
fQogCiBib29sIE5QSlNPYmplY3Q6Omhhc01ldGhvZChOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkK
QEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIE5QSlNPYmplY3Q6OmVudW1lcmF0ZShOUElkZW50aWZp
ZXIqKiBpZGVudGlmaWVycywgdWludDMyX3QqIGlkZW50aWZpZXJDb3VudAogICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhl
eGVjKTsKLSAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG1f
anNPYmplY3QuZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMo
bV9qc09iamVjdC5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgIE5QSWRlbnRpZmllciogbmFtZUlkZW50
aWZpZXJzID0gbnBuTWVtTmV3QXJyYXk8TlBJZGVudGlmaWVyPihwcm9wZXJ0eU5hbWVzLnNpemUo
KSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA0ZjNiZjU5NTFkODIyNjQzMzBjOGRmOGE4ZDY0OGJkMDQ4MTQ5MjZlLi4y
ZTA3ZmZiMTcyMzMwZDRmNjczYjg2ZDU1N2FiNDMyMzQ4NjNlNmJlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTUtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL09iamVj
dC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQt
dGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanM6CisKIDIwMTUtMDItMjggIEd5dXlv
dW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IEVGTCBnYXJkZW5pbmcgMXN0IE1hci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL09iamVj
dC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL09iamVj
dC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAppbmRleCBmZmM2OTMwMDUwYjZiZGE2
MmM1M2I1MDYxMjI3NWQ0ODk4MzFhZDg1Li42OGI3NWU1YTI3NmUzYTkwZTkyOTdiNWRlODRiMTUy
ZjM2NGFkZTFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVy
dHlOYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blBy
b3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CkBAIC00MCw3ICs0MCw3IEBAIFBBU1MgZ2V0U29ydGVk
T3duUHJvcGVydHlOYW1lcyhkZWNvZGVVUkkpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQogUEFTUyBn
ZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKGRlY29kZVVSSUNvbXBvbmVudCkgaXMgWydsZW5ndGgn
LCAnbmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZW5jb2RlVVJJKSBpcyBb
J2xlbmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhlbmNvZGVV
UklDb21wb25lbnQpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKE9iamVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZp
bmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93
blByb3BlcnR5TmFtZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJv
emVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVu
c2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5h
bWVzKE9iamVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9w
ZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3Bl
cnR5TmFtZXMnLCAnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lz
RXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICdu
YW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10KIFBBU1MgZ2V0
U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBlKSBpcyBbJ19fZGVmaW5lR2V0
dGVyX18nLCAnX19kZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdldHRlcl9fJywgJ19fbG9va3Vw
U2V0dGVyX18nLCAnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ2hhc093blByb3BlcnR5Jywg
J2lzUHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAndG9Mb2NhbGVTdHJpbmcn
LCAndG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMo
RnVuY3Rpb24pIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10KIFBBU1MgZ2V0U29y
dGVkT3duUHJvcGVydHlOYW1lcyhGdW5jdGlvbi5wcm90b3R5cGUpIGlzIFsnYXBwbHknLCAnYmlu
ZCcsICdjYWxsJywgJ2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICduYW1lJywgJ3RvU3RyaW5nJ10K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJv
cGVydHlOYW1lcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3du
UHJvcGVydHlOYW1lcy5qcwppbmRleCBiNDI0YjA1ZTRkODNjMmE5YTZiYWUyYTlkMzRiMzQzZWU2
MDk4MTE0Li5mYmQ2NWRkM2FjOTdjZDhhN2QwZWRhYzQzOWZlZDdkNzgzZTAxMGQ1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9w
ZXJ0eU5hbWVzLmpzCkBAIC00OCw3ICs0OCw3IEBACiAgICAgImVuY29kZVVSSSI6ICJbJ2xlbmd0
aCcsICduYW1lJ10iLAogICAgICJlbmNvZGVVUklDb21wb25lbnQiOiAiWydsZW5ndGgnLCAnbmFt
ZSddIiwKIC8vIEJ1aWx0LWluIEVDTUEgb2JqZWN0cwotICAgICJPYmplY3QiOiAiWydjcmVhdGUn
LCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0UHJvdG90eXBl
T2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVu
Z3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXSIs
CisgICAgIk9iamVjdCI6ICJbJ2NyZWF0ZScsICdkZWZpbmVQcm9wZXJ0aWVzJywgJ2RlZmluZVBy
b3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCAnZ2V0T3duUHJv
cGVydHlOYW1lcycsICdnZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCAnZ2V0UHJvdG90eXBlT2YnLCAn
aXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywg
J25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXSIsCiAgICAg
Ik9iamVjdC5wcm90b3R5cGUiOiAiWydfX2RlZmluZUdldHRlcl9fJywgJ19fZGVmaW5lU2V0dGVy
X18nLCAnX19sb29rdXBHZXR0ZXJfXycsICdfX2xvb2t1cFNldHRlcl9fJywgJ19fcHJvdG9fXycs
ICdjb25zdHJ1Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3Bl
cnR5SXNFbnVtZXJhYmxlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2Yn
XSIsCiAgICAgIkZ1bmN0aW9uIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAog
ICAgICJGdW5jdGlvbi5wcm90b3R5cGUiOiAiWydhcHBseScsICdiaW5kJywgJ2NhbGwnLCAnY29u
c3RydWN0b3InLCAnbGVuZ3RoJywgJ25hbWUnLCAndG9TdHJpbmcnXSIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247620</attachid>
            <date>2015-02-28 18:07:38 -0800</date>
            <delta_ts>2015-03-03 21:19:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150301110721.patch</filename>
            <type>text/plain</type>
            <size>259954</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwODQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MmE2NGQxNDFjNmU5YjcyMjI4MjZlNmEzNDE3YTM3OGY5NTAzZWNjLi4yNmE3ZDNhYjcxYmFhZTky
ZmNmMDU3MTE0NGNhNGI5OWVhMTM3OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTUtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGluL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIGBTdHJpbmdJbXBsKmAgcmVw
cmVzZW50cyB3aGV0aGVyIGl0J3MgcHJpdmF0ZSBvciBub3QuCisKKyAgICAgICAgVG8gcmVwcmVz
ZW50IGl0IGluIGBTdHJpbmdJbXBsYCwgd2UgaW50cm9kdWNlIGBTdHJpbmdLaW5kYCBpbnRvIGBT
dHJpbmdJbXBsYC4gVGhlcmUncyA0IGtpbmRzCisgICAgICAgIDEpIFN0cmluZ05vcm1hbCAobm90
IHByaXZhdGUsIG5vdCBhdG9taWMsIG5vdCB1bmlxdWUpLCAyKSBTdHJpbmdBdG9taWMgKG5vdCBw
cml2YXRlLCBhdG9taWMsIG5vdCB1bmlxdWUpLAorICAgICAgICAzKSBTdHJpbmdVbmlxdWUgKG5v
dCBwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpIGFuZCA0KSBTdHJpbmdVbmlxdWVQcml2YXRl
IChwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpLgorICAgICAgICBUaGV5IGFyZSBtdXR1YWxs
eSBleGNsdXNpdmUuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEpIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzLCAyKSBJbmNsdWRlL0V4Y2x1ZGUgU3ltYm9scyBhbmQgMykgSW5jbHVkZS9FeGNsdWRl
IEpTT2JqZWN0IHByb3BlcnR5IG5hbWVzLgorICAgICAgICBJbiB0aGUgYSBsb3Qgb2YgY29kZSwg
d2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBhIGxvdCBvZiBjYWxs
ZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1lQXJyYXlgIGRvZXNu
J3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25zZXJ2YXRpdmUgYXNz
dW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAgIEluIHRoZSBhIGxv
dCBvZiBwbGFjZSwgYElkZW50aWZpZXIoVk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAgY29u
c3RydWN0b3IgaXMgdXNlZC4KKyAgICAgICAgSG93ZXZlciwgaXQncyBhbWJpZ3VvdXMgYmVjYXVz
ZSBgU3RyaW5nSW1wbCpgIGhhcyAyIGRpZmZlcmVudCBtZWFuaW5ncy4KKyAgICAgICAgMSkgbm9y
bWFsIHN0cmluZywgaXQgaXMgcmVwbGFjYWJsZSB3aXRoIGBXVEZTdHJpbmdgIGFuZCAyKSBgdWlk
YCwgd2hpY2ggaG9sZHMgYGlzVW5pcXVlYCBpbmZvcm1hdGlvbiB0byByZXByZXNlbnQgU3ltYm9s
cy4KKyAgICAgICAgU28gd2UgZHJvcHBlZCBJZGVudGlmaWVyIGNvbnN0cnVjdG9ycyBmb3Igc3Ry
aW5ncyBhbmQgaW5zdGVhZCwgaW50cm9kdWNlZCAyIGZhY3RvcnkgZnVuY3Rpb25zLgorICAgICAg
ICArIGBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNKi9FeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
KWAuCisgICAgICAgICAgICBKdXN0IGNvbnN0cnVjdCBJZGVudGlmaWVyIGZyb20gc3RyaW5ncy4g
VGhlIHVuaXF1ZW5lc3Mgb2YgU3RyaW5nSW1wbCogaXMgbm90IGtlcHQuCisgICAgICAgICsgYElk
ZW50aWZpZXI6OmZyb21VaWQoVk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAuCisgICAgICAg
ICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIDIpIGB1aWRgLiBTbyB1bmlxdWVuZXNzIG9m
IGBTdHJpbmdJbXBsKmAgaXMga2VwdC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3Bw
OgorICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb24pOgorICAgICAgICAoSlNPYmplY3RDb3B5
UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAg
ICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5OYW1lcyk6CisgICAgICAg
ICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQpOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24pOgorICAgICAgICAq
IGRmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRlc2ly
ZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmdJZGVudEFuZExvYWRTdG9yYWdlKToKKworICAgICAgICBUbyBicmFuY2ggb24gdGhlIHN0cmlu
ZyBhdG9taWNpdHkgZWZmaWNpZW50bHksIHdlIG5lZWQgdG8gY2FyZWZ1bGx5IGNob29zZSBTdHJp
bmdLaW5kIGZvciBTdHJpbmdBdG9taWMuCisgICAgICAgIFdlIHNlbGVjdCBgMGAgZm9yIFN0cmlu
Z0F0b21pYy4gU28gd2UgY2FuIGNoZWNrIHRoZSBhdG9taWNpdHkgb2YgU3RyaW5nSW1wbCBieSBz
ZWVpbmcgd2hldGhlciBTdHJpbmdLaW5kIGlzIHplcm8uCisgICAgICAgIEl0IGVuYWJsZXMgeDg2
IGNvZGUgdG8gYnJhbmNoIHdpdGggYHRlc3RgIGluc3RydWN0aW9uIGVmZmljaWVudGx5LgorCisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6c3BlY3VsYXRlU3RyaW5nSWRlbnQpOgorCisgICAgICAgIEFzIG5vdGVk
IGluIGRmZyBzZWN0aW9uLCB3ZSBjYW4gY2hlY2sgdGhlIGF0b21pY2l0eSBvZiBTdHJpbmdJbXBs
IHdpdGggdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVu
Y3Rpb25EZXRhaWxzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6Y29uc3RydWN0SW50ZXJuYWxQcm9w
ZXJ0eSk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWFrTWFw
RW50cmllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dHJhY3RTb3VyY2VJbmZvcm1hdGlv
bkZyb21FeGNlcHRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKworICAg
ICAgICBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGV4cGxjaXRseSBjaGVjayBgaXNVbmlxdWUoKWAg
aW4gdGhlIGNhbGxlciBzaWRlLiBXZSBjYW4ganVzdCB1c2UgYElkZW50aWZpZXI6OmZyb21VaWRg
LgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgIChH
bG9iYWxPYmplY3Q6OmFkZENvbnN0cnVjdGFibGVGdW5jdGlvbik6CisgICAgICAgIChmdW5jdGlv
blJ1bik6CisgICAgICAgIChydW5XaXRoU2NyaXB0cyk6CisgICAgICAgICogbGxpbnQvTExJbnRE
YXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJz
ZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphZGRWYXIpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVC
aW5kaW5nUGF0dGVybik6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmg6CisgICAgICAg
IChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyQXJlbmE6Om1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VOdW1lcmljSWRlbnRpZmllcik6CisgICAgICAgICog
cnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6QXJyYXlJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1B1c2gpOgor
ICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NvcnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoK
KyAgICAgICAgKiBydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oOgorICAgICAgICAoSlNDOjpFbnVt
ZXJhdGlvbk1vZGU6OkVudW1lcmF0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9u
TW9kZTo6c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkVu
dW1lcmF0aW9uTW9kZTo6c2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6c2hvdWxkSW5jbHVkZVN5bWJvbHMpOgorICAgICAg
ICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OmNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OnNob3VsZEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6bW9kZVRoYXRTa2lwc0pTT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAg
ICAgKEpTQzo6aGFzRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBl
cnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKToKKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6
SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb20pOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SWRl
bnRpZmllcjo6SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQp
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXlCdWZmZXJWaWV3OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cnVudGltZUZsYWdzKToKKyAgICAgICAgKiBydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJv
bm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9K
U09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5k
TmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9t
aXNlQ29uc3RydWN0b3JGdW5jUmFjZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY0FsbCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aDoKKyAgICAgICAgKEpTQzo6c3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcik6CisgICAg
ICAgIChKU0M6OmdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b0lkZW50aWZpZXIpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBh
cnNlcjxDaGFyVHlwZT46OnRyeUpTT05QUGFyc2UpOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFy
c2VyPENoYXJUeXBlPjo6bWFrZUlkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3Vw
Lmg6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljUHJvcGVydGllcyk6CisgICAgICAgICogcnVu
dGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcEl0ZXJhdG9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpNYXRoT2JqZWN0
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6Ok51bWJlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9i
amVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3Ry
dWN0b3JLZXlzKToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChK
U0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Qcml2YXRlTmFtZS5oOgorICAgICAgICAoSlND
OjpQcml2YXRlTmFtZTo6UHJpdmF0ZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlO
YW1lLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6UHJvcGVydHlOYW1lKToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlOYW1lOjphc0luZGV4KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eTo6YWRkS25vd25VbmlxdWUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdF
eHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6
OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3Bw
OgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGZvckluKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5q
czogQWRkZWQuCisgICAgICAgICh0ZXN0U3ltYm9sKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
c3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNz
L3N5bWJvbC13aXRoLWpzb24uanM6IEFkZGVkLgorCiAyMDE1LTAyLTI3ICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSB0aGUgd2F5IG51
bWJlciBjb25zdGFudHMgYXJlIHdyaXR0ZW4gdG8gaGVscCB0eXBlIHNwZWN1bGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDI0OWYwOGUxZWExNWMxNTQ5MDBmNzRjNjFmY2Y0MTI2ODk0YmYwZjAuLjRjNzVlMGI4YTFiNjM2
MDlkYmU0MDc5MWY4YWI3NDQ3YTQ1YzM1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTUtMDIt
MjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU3RyaW5nS2luZCBpbnRv
IGBTdHJpbmdJbXBsYC4gVGhlcmUncyA0IGtpbmRzCisgICAgICAgIDEpIFN0cmluZ05vcm1hbCAo
bm90IHByaXZhdGUsIG5vdCBhdG9taWMsIG5vdCB1bmlxdWUpLCAyKSBTdHJpbmdBdG9taWMgKG5v
dCBwcml2YXRlLCBhdG9taWMsIG5vdCB1bmlxdWUpLAorICAgICAgICAzKSBTdHJpbmdVbmlxdWUg
KG5vdCBwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpIGFuZCA0KSBTdHJpbmdVbmlxdWVQcml2
YXRlIChwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpLgorICAgICAgICBUaGV5IGFyZSBtdXR1
YWxseSBleGNsdXNpdmUuCisKKyAgICAgICAgU3RyaW5nVW5pcXVlUHJpdmF0ZSBpcyB1c2VkIHRv
IHJlcHJlc2VudCB0aGF0IHRoZSB0YXJnZXQgc3RyaW5nIGlzIHVzZWQgZm9yIGEgcHJpdmF0ZSAo
cHJpdmlsZWdlZCkgbmFtZS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6
CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UpOgorICAgICAgICAoV1RG
OjpBdG9taWNTdHJpbmc6OmZpbmRTbG93Q2FzZSk6CisKKyAgICAgICAgV2hlbiByZWdpc3Rlcmlu
ZyBhIHN0cmluZyBpbnRvIEF0b21pY1N0cmluZ1RhYmxlLCBpdCBzaG91bGQgbm90IGJlIGFuIHVu
aXF1ZSBzdHJpbmcgYmVjYXVzZSB1bmlxdWUgdHlwZXMgYW5kIGF0b21pYyB0eXBlIGFyZSBtdXR1
YWxseSBleGNsdXNpdmUuCisgICAgICAgIFdoZW4gYW4gdW5pcXVlIHN0cmluZyBjb21lcywgd2Ug
ZXh0cmFjdCBhbiBvd25lciBzdHJpbmcgZnJvbSBhbiB1bmlxdWUgc3RyaW5nIGJ5IHVzaW5nIGBT
dHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKWAuIEl0IGFsd2F5cyBzdWNj
ZWVkcyBiZWNhdXNlIGFuIHVuaXF1ZSAobm9uIGVtcHR5KSBzdHJpbmcgaXMgYWx3YXlzIEJ1ZmZl
clN1YnN0cmluZyBhbmQgaGFzIGFuIG93bmVyIHN0cmluZy4KKyAgICAgICAgRW1wdHkgdW5pcXVl
IChhbmQgdW5pcXVlIHByaXZhdGUpIHN0cmluZyBkb2Vzbid0IGhhdmUgYW4gb3duZXIgc3RyaW5n
LiBUaGlzIGNhc2UgaXMgZmlsdGVyZWQgYnkgYCFzdHJpbmcubGVuZ3RoKClgIGd1YXJkLgorCisg
ICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0
cmluZzo6YWRkKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGRXaXRoU3RyaW5nVGFi
bGVQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAg
IChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZSk6CisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKToKKyAgICAg
ICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkpOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVQcml2YXRlRW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpmbGFnSXNOb3RBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjptYXNr
U3RyaW5nS2luZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0cmluZ0tpbmQpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjppc1VuaXF1ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0lt
cGw6OmlzUHJpdmF0ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzQXRvbWljKToKKyAg
ICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c2V0SXNBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUpOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpmbGFnSXNBdG9taWMpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpmbGFnSXNVbmlxdWUpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1N0YXRp
Y3MuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUp
OgorCiAyMDE1LTAyLTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgdW51c2VkIFBvc3NpYmx5TnVsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRjYjBlZmZkMjNkOTc5
Y2NlMzMyZjA4YTM2ZjJmNjk4OWE2MTk5NzkuLjA4NWZjMGU4Nzg5NjcyZGFhZjM4OTNlYjU4YWU3
MzJkOGNlYmMwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDUgQEAKKzIwMTUtMDItMjggIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyBhbmQg
SWRlbnRpZmllcjo6ZnJvbVVpZC4KKworICAgICAgICBUZXN0czoganMvb2JqZWN0LWdldC1vd24t
cHJvcGVydHktc3ltYm9scy5odG1sCisgICAgICAgICAgICAgICBqcy9zeW1ib2wtZGVmaW5lLXBy
b3BlcnR5Lmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuaHRt
bAorICAgICAgICAgICAgICAganMvc3ltYm9sLXdpdGgtanNvbi5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChX
ZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3Jp
cHRJbmplY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dDo6aW5zdGFsbFJlcGxhY2VtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0
cmluZ0hhc2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omdl
dEpTTGlzdGVuZXJGdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQ
SUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0
aG1CdWlsZGVyOjphZGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGht
RGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpnZXRIYXNoQWxnb3JpdGhtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SlNBcnJh
eUZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFN0cmluZ0Zyb21KU09OKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldEJvb2xlYW5Gcm9tSlNPTik6CisgICAgICAgIChXZWJDb3JlOjphZGRU
b0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRKU09ORm9yUlNBQ29tcG9uZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRCb29sVG9KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFVz
YWdlc1RvSlNPTik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1
cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEaWFsb2dI
YW5kbGVyOjpyZXR1cm5WYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rp
b25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQWNjZWxlcmF0aW9uQXJn
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFJvdGF0aW9uUmF0ZUFyZ3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2VsZXJhdGlvbk9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6OnRyeUdldFBy
b3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxs
Q29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9u
OjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjphbGwpOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OnNldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hU
TUxEb2N1bWVudDo6b3Blbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJREJEYXRhYmFzZTo6Y3Jl
YXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5k
ZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlQ29udGV4dE1l
bnVJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFsaXplSlNGdW5j
dGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3Rv
cmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFi
bGVTdHJlYW1KU1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbnRlcm5hbFNsb3RU
b09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRJbnRlcm5hbFNsb3RGcm9tT2JqZWN0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0R2xvYmFsT2JqZWN0OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2Jq
ZWN0OjpyZW1vdmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXpl
cik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBjYWxsV2Vi
U2NyaXB0TWV0aG9kOndpdGhBcmd1bWVudHM6XSk6CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVj
dCBzZXRWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCB2YWx1ZUZv
cktleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtleTpd
KToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IGhhc1dlYlNjcmlwdEtleTpdKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVy
YXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5Lmg6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRy
aWJ1dGUpOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6CisgICAgICAgIChfTlBO
X0VudW1lcmF0ZSk6CisgICAgICAgICogYnJpZGdlL2MvY191dGlsaXR5LmNwcDoKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OmlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKToKKyAgICAgICAgKiBi
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpj
RmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS90ZXN0YmluZGluZ3MuY3BwOgorICAgICAgICAobWFp
bik6CisgICAgICAgICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbToKKyAgICAgICAgKG1haW4pOgor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6RXh0ZW5zaW9uc01hbmFnZXI6
OmxvYWRUcmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpFeHRl
bnNpb25zTWFuYWdlcjo6bG9hZEFjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93
Um9vdCk6CisgICAgICAgICogdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNPYmplY3QpOgorCiAyMDE1
LTAyLTI4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEZ1bGxzY3JlZW4gdmlkZW8gbGF5ZXJzIGFyZSBvZmYgYnkgb25lIHNvbWV0aW1lcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDE3NmQwZjM5ZGZkYzZlYzk4N2YzOWU1NThkOWQxNGRjMjdiNjU5N2IuLjZi
ZWI1MmU1MTNmMjFmNmRkNmVmOGY4ODRmODA3NzgyNmUxYmRlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAxNS0wMi0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nIGFuZCBJZGVudGlmaWVyOjpmcm9tVWlkLgorCisg
ICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW06CisgICAg
ICAgIChpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXApOgorICAgICAgICAqIFBsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUpOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6
OmdldFByb3BlcnR5TmFtZXMpOgorCiAyMDE1LTAyLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpIHRv
IERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZjZhODU4ZGQ1NWEz
OGJkYjYwYmVmMTUyNjY1ZDk1ZmE1NDVhOTYwLi43OWQzODUyY2FmMTMxMTY2NmI4ZjNkZTU3MDU3
MGZjMjEwNTI2NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDItMjggIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyBhbmQg
SWRlbnRpZmllcjo6ZnJvbVVpZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
SlNPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjppZGVudGlmaWVyRnJvbUlkZW50aWZpZXJS
ZXApOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJhdGUpOgorCiAyMDE1LTAy
LTI4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRmV0
Y2ggY2FjaGUgb3JpZ2lucyBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXgg
OTlhMDlkZmVhMTBjMWNhMTNjMTU2Nzg3ZWIwN2FmODljYTQyNDYyMy4uZmUwMWQwNzUzM2NhZDUx
MzE1MTVhN2Q5MGEzY2U0MzNlOTMzNmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUxNiw4ICs1MTYsMTAg
QEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGUKICAgICAgICAgICAgIGZvciAoaXRlcmF0b3IgaXQg
PSBzdGF0aWNWYWx1ZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAg
ICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwogICAgICAgICAgICAgICAgIFN0
YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdldCgpOwotICAgICAgICAgICAgICAg
IGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cihleGVjLCBuYW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKG5hbWUtPmlzUHJpdmF0ZSgpKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkt
PmdldFByb3BlcnR5ICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpKQor
ICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlk
KGV4ZWMsIG5hbWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTUy
Nyw4ICs1MjksMTAgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGUKICAgICAgICAgICAgIGZvciAo
aXRlcmF0b3IgaXQgPSBzdGF0aWNGdW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwogICAg
ICAgICAgICAgICAgIFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdldCgp
OwotICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2Rl
KSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVj
LCBuYW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKG5hbWUtPmlzUHJpdmF0ZSgpKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoIShlbnRyeS0+YXR0
cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcygpKQorICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIG5hbWUpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5j
cHAKaW5kZXggMjM0ZDI0ODhmZjg5MGI4YmVlNjk3ZWY1NWFhNjgwMzgwYTE4MWE0Mi4uNTkwYTUz
NzAxNjk5NTJiMTI5ZjBhMzQ0NjRjZDRhNWU4ZWYzZWE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBKU09iamVjdFJlZiBK
U09iamVjdE1ha2VGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lLCB1
bnNpZ25lZCBwYQogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBzdGFydGlu
Z0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwotICAgIElkZW50
aWZpZXIgbmFtZUlEID0gbmFtZSA/IG5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPnZtKCkpIDogSWRl
bnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7CisgICAgSWRlbnRpZmllciBuYW1lSUQgPSBuYW1l
ID8gbmFtZS0+aWRlbnRpZmllcigmZXhlYy0+dm0oKSkgOiBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJhbm9ueW1vdXMiKTsKICAgICAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdz
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJDb3VudDsgaSsrKQpAQCAt
Njk4LDcgKzY5OCw3IEBAIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgSlNPYmplY3RDb3B5UHJvcGVy
dHlOYW1lcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgICAgSlNPYmplY3QqIGpz
T2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgcHJvcGVy
dHlOYW1lcyA9IG5ldyBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5KHZtKTsKICAgICBQcm9wZXJ0
eU5hbWVBcnJheSBhcnJheSh2bSk7Ci0gICAganNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFBy
b3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKyAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhqc09i
amVjdCwgZXhlYywgYXJyYXksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5h
bWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAppbmRleCAyMmMxNjIzMGM3YzFkMzY5MTFj
N2Q1ODljZTUwZjA5NDI4N2ExZDllLi43ZjllZGI0MTM2ZTI3NDk5NzQ3ZDI5NmQyZjFhMmRjNDg5
YjA0NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3Ry
aW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKQEAg
LTY5LDkgKzcwLDkgQEAgSWRlbnRpZmllciBPcGFxdWVKU1N0cmluZzo6aWRlbnRpZmllcihWTSog
dm0pIGNvbnN0CiAgICAgICAgIHJldHVybiBJZGVudGlmaWVyKElkZW50aWZpZXI6OkVtcHR5SWRl
bnRpZmllcik7CiAKICAgICBpZiAobV9zdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBJ
ZGVudGlmaWVyKHZtLCBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpLCBtX3N0cmluZy5sZW5ndGgoKSk7
CisgICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBtX3N0cmluZy5jaGFy
YWN0ZXJzOCgpLCBtX3N0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgbV9zdHJpbmcuY2hhcmFjdGVyczE2KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1
cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbV9zdHJpbmcuY2hhcmFjdGVyczE2KCksIG1f
c3RyaW5nLmxlbmd0aCgpKTsKIH0KIAogY29uc3QgVUNoYXIqIE9wYXF1ZUpTU3RyaW5nOjpjaGFy
YWN0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggMmRmNzg3NjQxMGU3OGNmOWZhYmYyNDE3ODZlNjAyNDJm
ZTRlZWUwOS4uZjNhMjIzOGViYTk4ZmMxMjgyN2I4MWRlZjJjODBjNjMxNGNlMDVlOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRG
dW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogCiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sobV9leGVjKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQo
bV9leGVjLCBJZGVudGlmaWVyKG1fZXhlYywgbV9uYW1lKSk7CisgICAgSlNWYWx1ZSBmdW5jdGlv
biA9IHRoaXNPYmplY3QtPmdldChtX2V4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVj
LCBtX25hbWUpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBo
YWRFeGNlcHRpb24gPSB0cnVlOwogICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3Bw
CmluZGV4IDc2YTdiMTExYThkODc3YTY3OWI1YzhiOGU4OTZlMWE3YjFiNmI4YWMuLjVhMDViYTg5
YjllOTBjYTk0MDdjYTNhOGVhZTYyMDc0NzI4YTEyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRp
YyBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlLCBKU1ZhbHVlCiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGluc3BlY3Rv
ck9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJv
cGVydHlOYW1lcyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIHNjcmlwdFN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykgewogICAgICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSA9IHByb3BlcnR5TmFtZXNbaV07CiAgICAgICAg
ICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdldChzY3JpcHRTdGF0ZSwgbmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCmluZGV4IDYxMmQ2NDU1MjM4ZGZjNTIwY2JiYjNmMTFmY2FmYzcwZmVhZTE2
MTcuLjMyZGY5M2MyMzRiYTEwYmZhODg0MjJlMjFmYzM1NmNiNjdhOTE3MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
CkBAIC03NSw3ICs3NSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhl
Y3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvCiAgICAgICAgIAogICAg
ICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkLmltcGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSRUxFQVNFX0FT
U0VSVChjbG9zZWRWYXJpYWJsZS0+aXNVbmlxdWUoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNsb3NlZFZhcmlhYmxlLT5pc1ByaXZhdGUoKSk7CiAgICAgfQogICAgIGJvZHktPm92ZXJyaWRl
TmFtZShuYW1lKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291cmNl
LCBib2R5LCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggOWI4ODk2Yjk2ODAxNDkxM2Y0NmIzMmM0
ODBlMDU3ODk2Mzc5ZGZhNC4uNDkzMDllZDYzMmQzNmI2M2EwYjg5MmVmYTc5ZmM4YjgwODZhZjRh
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApA
QCAtMzEsMTIgKzMxLDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogICAgIAotI2RlZmluZSBJTklU
SUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUpLCBtXyMjbmFt
ZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZShBU0NJSUxpdGVyYWwo
IlN5bWJvbC4iICNuYW1lKSkpKQotI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkg
Y29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJp
dmF0ZU5hbWU7OworI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMj
bmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpLCBtXyMjbmFtZSMjUHJpdmF0
ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZShQcml2YXRlTmFtZTo6Q3JlYXRl
UHJpdmF0ZSkpKQorI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSWRl
bnRpZmllciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7
CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8j
I25hbWU7IH0gXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1ByaXZhdGVOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV8jI25hbWUjI1ByaXZhdGVOYW1lOyB9CiAKKyNkZWZpbmUgSU5JVElBTElT
RV9CVUlMVElOX1NZTUJPTFMobmFtZSkgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUpLCBt
XyMjbmFtZSMjU3ltYm9sKElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoQVNDSUlMaXRl
cmFsKCJTeW1ib2wuIiAjbmFtZSkpKSkKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTFMo
bmFtZSkgREVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbV8jI25h
bWUjI1N5bWJvbDsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUihuYW1l
KSBcCisgICAgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IobmFtZSkgXAorICAg
IGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1l
IyNTeW1ib2w7IH0KKwogI2RlZmluZSBJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZ
KG5hbWUpIG1fcHJpdmF0ZVRvUHVibGljTWFwLmFkZChtXyMjbmFtZSMjUHJpdmF0ZU5hbWUuaW1w
bCgpLCAmbV8jI25hbWUpOwogI2RlZmluZSBJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VO
VFJZKG5hbWUpIG1fcHVibGljVG9Qcml2YXRlTWFwLmFkZChtXyMjbmFtZS5pbXBsKCksICZtXyMj
bmFtZSMjUHJpdmF0ZU5hbWUpOwogICAgIApAQCAtNDgsMTEgKzU0LDE0IEBAIGNsYXNzIEJ1aWx0
aW5OYW1lcyB7CiAgICAgICAgIDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmllcnMt
PmVtcHR5SWRlbnRpZmllcikKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRF
X0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMp
CisgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05f
U1lNQk9MKElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNf
RU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BF
UlRZX05BTUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAgICAgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElB
TElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAgICAg
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5J
VElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QVUJMSUNf
VE9fUFJJVkFURV9FTlRSWSkKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2
YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjksMTMgQEAgY2xh
c3MgQnVpbHRpbk5hbWVzIHsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9O
X05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5f
SURFTlRJRklFUl9BQ0NFU1NPUikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SKQog
CiBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CiAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKICAgICBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVf
QlVJTFRJTl9OQU1FUykKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9X
RUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MUykKICAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBjb25zdCBJZGVudGlmaWVyKiwgSWRlbnRpZmllclJl
cEhhc2g+IEJ1aWx0aW5OYW1lc01hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wdWJsaWNUb1By
aXZhdGVNYXA7CiAgICAgQnVpbHRpbk5hbWVzTWFwIG1fcHJpdmF0ZVRvUHVibGljTWFwOwpAQCAt
NzMsNyArODQsOSBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewogI3VuZGVmIERFQ0xBUkVfQlVJTFRJ
Tl9OQU1FUwogI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUwogI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SCi0KKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU1lN
Qk9MUworI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTCisjdW5kZWYgREVDTEFSRV9C
VUlMVElOX1NZTUJPTF9BQ0NFU1NPUgogCiBpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRp
bk5hbWVzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0
aW9uUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9j
YXRpb25Qcm9maWxlLmgKaW5kZXggOWE5ZGIwYmM3MGI5ZjEzNWY2NWRkMmQ3OTZkZTY1Mjg5NmFl
MGZiMS4uNTc4MGYwMGM3MjgxNGEzMTg1MGUxYzgyYTVhZGMyZTJlYjI4ODMxMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Q
cm9maWxlLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSB7CiAKICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydHlOYW1lQXJyYXkoJnZtKTsKLSAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBF
bnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9s
cyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBw
cm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnByb3BlcnR5TmFt
ZVZlY3RvcigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZVZl
Y3Rvci5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHByb3RvdHlw
ZS0+Z2V0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCA3Yjk0N2NkODQ5MGFlYjYyOWQxN2VmMDQ4ZmYxZjQwYmQzODkwYTY5Li42NzQ5NzQ3Mzg5
ZjJkMzJlOTJhYjY0ZTVmNTk2MjMwNDFlNTVlNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDM4
LDcgKzQzOCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAgICAgVmVjdG9yPElkZW50aWZp
ZXIsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiB2YXJpYWJsZXM7CiAgICAgdmFyaWFibGVzLnJl
c2VydmVDYXBhY2l0eShudW1WYXJpYWJsZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtVmFyaWFibGVzOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKHZhclN0YWNrW2ldLmZpcnN0Lmlt
cGwoKS0+aXNBdG9taWMoKSk7CisgICAgICAgIEFTU0VSVCh2YXJTdGFja1tpXS5maXJzdC5pbXBs
KCktPmlzQXRvbWljKCkgfHwgdmFyU3RhY2tbaV0uZmlyc3QuaW1wbCgpLT5pc1VuaXF1ZSgpKTsK
ICAgICAgICAgdmFyaWFibGVzLmFwcGVuZCh2YXJTdGFja1tpXS5maXJzdCk7CiAgICAgfQogICAg
IGNvZGVCbG9jay0+YWRvcHRWYXJpYWJsZXModmFyaWFibGVzKTsKQEAgLTIzNjksNyArMjM2OSw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BUcnlBbmRFbWl0Q2F0Y2goVHJ5
RGF0YSogdHJ5RGF0YSwgUmVnaXN0ZXJJRCoKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRU
aHJvd1JlZmVyZW5jZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBlbWl0T3Bj
b2RlKG9wX3Rocm93X3N0YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFk
ZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcihtX3ZtLCBtZXNzYWdl
KSkpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1
ZShhZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0sIG1lc3NhZ2Up
KSktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0cnVlKTsKIH0KIApAQCAt
MjUzNiw3ICsyNTM2LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhj
ZXB0aW9uSWZOZWVkZWQoKQogICAgIGlmICghaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmll
cihtX3ZtLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSktPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0Nv
bnN0YW50KElkZW50aWZpZXI6OmZyb21TdHJpbmcobV92bSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKSkpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZmFsc2UpOwogfQogICAgIApAQCAtMjU3MCw3ICsyNTcwLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHBy
ZXNzaW8KICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gbmV3TGFiZWxTY29wZShMYWJlbFNjb3Bl
OjpMb29wKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVjdCA9IG5ld1RlbXBvcmFyeSgp
OwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3ROb2RlKTsKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgc3ViamVj
dC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBzdWJq
ZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIHsKICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCAwKTsKICAgICAgICAgZW1pdE1vdmUoYXJncy50
aGlzUmVnaXN0ZXIoKSwgc3ViamVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKaW5kZXggNjBhNDk0ZGRjZjRiMTUz
ODFhY2FmMGM1ODE4OTY0NjRlN2EyZTQzYi4uNjVjMzAxZGJlZTE2ZDNmNzRiNTQyN2I3YTBmNjky
NDg4NDFjNGUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZElkZW50aWZpZXJzLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIERlc2lyZWRJZGVudGlm
aWVyczo6cmVhbGx5QWRkKFZNJiB2bSwgQ29tbW9uRGF0YSogY29tbW9uRGF0YSkKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hZGRlZElkZW50aWZpZXJzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIFN0cmluZ0ltcGwqIHJlcCA9IG1fYWRkZWRJZGVudGlmaWVyc1tpXTsKICAgICAgICAg
QVNTRVJUKHJlcC0+aGFzQXRMZWFzdE9uZVJlZigpKTsKLSAgICAgICAgY29tbW9uRGF0YS0+ZGZn
SWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIoJnZtLCByZXApKTsKKyAgICAgICAgY29tbW9u
RGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCByZXAp
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggMDYxYjU0ODA1MTM5NTM5NGMzNzIwOGYzZmFlMTVlY2NjYjhjZDk3
YS4uYmRhNGQyMjY2OWRiZGY5MWExOWU1NDA1ZTNhNDllYWUyNGVlM2FjOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTQ3NDgsOSAr
NDc0OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9h
ZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nCiAgICAgICAgIG1faml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0b3JhZ2UpKTsKICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAogICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChzdHJpbmcp
LCBlZGdlLCBtX2ppdC5icmFuY2hUZXN0MzIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
WmVybywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLAogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZSwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQo
KSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6
OmZsYWdJc0F0b21pYygpKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihTdHJpbmdJbXBsOjpmbGFnSXNOb3RBdG9taWMoKSkpKTsKICAgICAKICAgICBtX2ludGVy
cHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5nSWRlbnQgfCB+U3BlY1N0cmluZyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4
IDJkNmRhZGNiY2YyZmI4NzMxZTg3YTI0Yjg4Njc2NTNkNjg2MTE5MTguLjNlYTA0YWRkZTVjMGU3
ODQ5MTk0NzhmZTY5OTYzZThlMWZjNWM4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC02NDQyLDkgKzY0NDIsOSBAQCBjbGFzcyBM
b3dlckRGR1RvTExWTSB7CiAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBqc1ZhbHVlVmFsdWUo
c3RyaW5nKSwgZWRnZS5ub2RlKCksIG1fb3V0LmlzTnVsbChzdHJpbmdJbXBsKSk7CiAgICAgICAg
IHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShzdHJpbmcpLCBl
ZGdlLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKKyAgICAgICAgICAg
IG1fb3V0LnRlc3ROb25aZXJvMzIoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKHN0cmlu
Z0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9oYXNoQW5kRmxhZ3MpLAotICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7CisgICAgICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXNOb3RBdG9taWMoKSkp
KTsKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIoZWRnZSwgU3BlY1N0cmluZ0lkZW50IHwg
flNwZWNTdHJpbmcpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggNWIzZDNlNmQz
ZTE1NWVmZmFiZWEzMzY5ZDk4YjVlN2QwMGY3ZDY0Yy4uYzYxMDgwMGU1OWMxZDljOWRkY2JjYTdh
MmJmMTc3OTI2ODU2Y2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTE3NywxOSArMTc3LDE5IEBA
IEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICBTdHJpbmcgc2NyaXB0SUQgPSBTdHJpbmc6Om51bWJlcihzb3VyY2VDb2Rl
LT5wcm92aWRlcigpLT5hc0lEKCkpOwogICAgIEpTT2JqZWN0KiBsb2NhdGlvbiA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
SWRlbnRpZmllcihleGVjLCAibGluZU51bWJlciIpLCBqc051bWJlcihsaW5lTnVtYmVyKSk7Ci0g
ICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJzY3Jp
cHRJZCIpLCBqc1N0cmluZyhleGVjLCBzY3JpcHRJRCkpOworICAgIGxvY2F0aW9uLT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGluZU51bWJlciIp
LCBqc051bWJlcihsaW5lTnVtYmVyKSk7CisgICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzY3JpcHRJZCIpLCBqc1N0cmluZyhl
eGVjLCBzY3JpcHRJRCkpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXIoZXhlYywgImxvY2F0aW9uIiksIGxvY2F0aW9uKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb2NhdGlvbiIpLCBsb2Nh
dGlvbik7CiAKICAgICBTdHJpbmcgbmFtZSA9IGZ1bmN0aW9uLT5uYW1lKGV4ZWMpOwogICAgIGlm
ICghbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOworICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKIAogICAgIFN0cmluZyBkaXNwbGF5
TmFtZSA9IGZ1bmN0aW9uLT5kaXNwbGF5TmFtZShleGVjKTsKICAgICBpZiAoIWRpc3BsYXlOYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
ZmllcihleGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmcoZXhlYywgZGlzcGxheU5hbWUpKTsK
KyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmcoZXhlYywgZGlzcGxheU5hbWUpKTsK
IAogICAgIC8vIEZJWE1FOiBwcm92aWRlIGZ1bmN0aW9uIHNjb3BlIGRhdGEgaW4gInNjb3Blc1Jh
dyIgcHJvcGVydHkgd2hlbiBKU0Mgc3VwcG9ydHMgaXQuCiAgICAgLy8gPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzg3MTkyPiBbSlNDXSBleHBvc2UgZnVuY3Rpb24gKGNsb3N1cmUpIGlubmVyIGNvbnRl
eHQgdG8gZGVidWdnZXIKQEAgLTIwMCw4ICsyMDAsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpmdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBleGVjKQogc3RhdGljIEpTT2JqZWN0
KiBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBuYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKLSAgICByZXN1
bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ2YWx1ZSIpLCB2YWx1
ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAibmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1lKSk7CisgICAgcmVzdWx0LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUi
KSwgdmFsdWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI2Nyw4ICsyNjcsOCBAQCBK
U1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWFrTWFwRW50cmllcyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxw
dHIpOwogICAgIGZvciAoYXV0byBpdCA9IHdlYWtNYXAtPndlYWtNYXBEYXRhKCktPmJlZ2luKCk7
IGl0ICE9IHdlYWtNYXAtPndlYWtNYXBEYXRhKCktPmVuZCgpOyArK2l0KSB7CiAgICAgICAgIEpT
T2JqZWN0KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICBlbnRy
eS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImtleSIpLCBpdC0+a2V5
KTsKLSAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJ2YWx1ZSIpLCBpdC0+dmFsdWUuZ2V0KCkpOworICAgICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleSIpLCBpdC0+a2V5KTsK
KyAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJ2YWx1ZSIpLCBpdC0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBhcnJheS0+cHV0
RGlyZWN0SW5kZXgoZXhlYywgZmV0Y2hlZCsrLCBlbnRyeSk7CiAgICAgICAgIGlmIChudW1iZXJU
b0ZldGNoICYmIGZldGNoZWQgPj0gbnVtYmVyVG9GZXRjaCkKICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAppbmRleCBiMDY5MDczZjgwODIwODBiZWVm
Y2ZhNzE0MDUwNjY5ZjI1ZjE2NTU5Li4xMTQ4NGVkYTdjZThjOTAxY2NkNTZlZjFiNThmOTE4YWY0
MGViOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcApAQCAtNjIsNyArNjIs
NyBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImlz
SFRNTEFsbENvbGxlY3Rpb24iLCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9u
SXNIVE1MQWxsQ29sbGVjdGlvbiwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04oIndlYWtNYXBFbnRyaWVzIiwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bldlYWtNYXBFbnRyaWVzLCBEb250RW51bSwgMSk7CiAKLSAgICBJZGVudGlmaWVyIGV2YWx1YXRl
SWRlbnRpZmllcigmdm0sICJldmFsdWF0ZSIpOworICAgIElkZW50aWZpZXIgZXZhbHVhdGVJZGVu
dGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJldmFsdWF0ZSIpOwogICAgIEdl
dHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAwLCBldmFsdWF0ZUlkZW50aWZpZXIuc3RyaW5nKCksIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUpOwogICAgIGFjY2Vzc29yLT5zZXRH
ZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUuY3BwCmluZGV4IDU4YmI2OGIwYTFmMzg4ZjIxY2FmOGI1ZjYyMmNhZDc3YjIwNzll
MmQuLjQ4MjgzODY1MjRkYzI2YWI0NmM4NDEzNTY4MzFjNzBkYzZlOWZmMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNj
cmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZTo6c19pbmZvID0geyAiSmF2YVNjcmlw
dENhbGxGcmFtZSIKIAogI2RlZmluZSBKU0NfTkFUSVZFX05PTl9JTkRFWF9BQ0NFU1NPUihqc05h
bWUsIGNwcE5hbWUsIGF0dHJpYnV0ZXMpIFwKICAgICB7IFwKLSAgICAgICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyKCZ2bSwganNOYW1lKTsgXAorICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwganNOYW1lKTsgXAogICAgICAgICBHZXR0ZXJT
ZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7
IFwKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgMCwgaWRlbnRpZmllci5zdHJpbmcoKSwgY3BwTmFtZSk7IFwKICAgICAg
ICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbik7IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFja0ZhY3RvcnkuY3BwCmluZGV4IDI3ZGMwOTliZGI1OGIwNzQzYTNiYjZlMTVhMmQzMGQ1M2Iw
MWJjYjIuLmY5ZjZjMWM0OWFhYTYwNmEzNzMzNDhiNmUyZDhmYzI3MGZjZGU4YjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmNwcApAQCAtMTE5LDExICsxMTksMTEgQEAgUGFzc1JlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMKIHN0YXRpYyB2b2lkIGV4dHJhY3RTb3VyY2VJbmZvcm1hdGlvbkZyb21FeGNlcHRpb24oSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBleGNlcHRpb25PYmplY3QsIGludCogbGluZU51
bWJlciwgaW50KiBjb2x1bW5OdW1iZXIsIFN0cmluZyogc291cmNlVVJMKQogewogICAgIC8vIEZJ
WE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTUwODc+IFdlYiBJbnNwZWN0b3I6IFNob3VsZCBu
b3QgbmVlZCB0byBldmFsdWF0ZSBKYXZhU2NyaXB0IGhhbmRsaW5nIGV4Y2VwdGlvbnMKLSAgICBK
U1ZhbHVlIGxpbmVWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgImxpbmUiKSk7CisgICAgSlNWYWx1ZSBsaW5lVmFsdWUgPSBleGNl
cHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJsaW5lIikpOwogICAgICpsaW5lTnVtYmVyID0gbGluZVZhbHVlICYmIGxpbmVWYWx1
ZS5pc051bWJlcigpID8gaW50KGxpbmVWYWx1ZS50b051bWJlcihleGVjKSkgOiAwOwotICAgIEpT
VmFsdWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1bW4iKSk7CisgICAgSlNWYWx1ZSBjb2x1bW5WYWx1ZSA9
IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgImNvbHVtbiIpKTsKICAgICAqY29sdW1uTnVtYmVyID0gY29sdW1uVmFsdWUg
JiYgY29sdW1uVmFsdWUuaXNOdW1iZXIoKSA/IGludChjb2x1bW5WYWx1ZS50b051bWJlcihleGVj
KSkgOiAwOwotICAgIEpTVmFsdWUgc291cmNlVVJMVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdl
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJzb3VyY2VVUkwiKSk7CisgICAg
SlNWYWx1ZSBzb3VyY2VVUkxWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNvdXJjZVVSTCIpKTsKICAgICAq
c291cmNlVVJMID0gc291cmNlVVJMVmFsdWUgJiYgc291cmNlVVJMVmFsdWUuaXNTdHJpbmcoKSA/
IHNvdXJjZVVSTFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSA6IEFTQ0lJTGl0ZXJh
bCgidW5kZWZpbmVkIik7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDQ2MTE2N2FlNjU0MTBm
NDI2ZDdlODc4NDIwNzhlMDIwMDhhNzE1NTUuLmFmNjE0MWE5ZDNkOTBmMWQ4Yzg5YjZkOTdjNWEx
ZGY3OWM5ZWRmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvCiAgICAgCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkp
OwogfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXIKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
OwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0x
NzksNyArMTc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
LSAgICBJZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc1VuaXF1ZSgpID8gSWRlbnRpZmllcjo6ZnJv
bShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7CisgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAKICAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlVmFsdWUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJCiAg
ICAgCiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4o
c3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsK
KyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwga2V5KTsKICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJlc3VsdCA9IGFzT2JqZWN0KGJh
c2UpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIApAQCAtMjMwLDcg
KzIzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgSWRlbnRpZmllciBpZGVudCh2
bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
a2V5KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNl
KS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKSk7CiB9CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZp
ZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkp
OwogICAgIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlkZW50LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yNTcsNyArMjU3LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlm
aWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZSksIGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQo
KSk7CiAgICAgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI2Nyw3ICsyNjcsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50
aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0
KCkpOwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpLT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90
KTsKIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dQogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgZmFsc2UsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBhc09iamVjdChKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZVN0dWIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlk
ZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlk
KHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlUwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQo
dm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0s
IHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwg
dWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlk
KTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwog
ICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJ
bmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0
dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Cisg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8t
PmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlCiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNj
ZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3QKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50
aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHIKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50
aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKQEAgLTEzOTEsMTAgKzEzOTEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEFyZ3VtZW50c0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIGludDMyXwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICAvLyBIZXJlIHdlIGNh
biBhc3N1bWUgdGhhdCB0aGUgYXJndW1lcm50cyB3ZXJlIGNyZWF0ZWQuIEJlY2F1c2Ugb3RoZXJ3
aXNlIHRoZSBKSVQgY29kZSB3b3VsZAogICAgIC8vIGhhdmUgbm90IG1hZGUgdGhpcyBjYWxsLgot
ICAgIElkZW50aWZpZXIgaWRlbnQoJnZtLCAibGVuZ3RoIik7CiAgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBleGVjLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCk7CiAgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
c2xvdCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDBiYzBkN2YyZWUwNDdhZTJl
ZTUxZTAyNWNjZDcwZDg4YjMxNDRkNmYuLjc2YTNhODBiMTY0ZWNkMjdkN2VlZjllNzRiNTM1YjI2
NDRkZTk5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC02MTgsMTEgKzYxOCwxMSBAQCBjbGFz
cyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgICAgICBhZGRGdW5j
dGlvbih2bSwgImdldEVsZW1lbnQiLCBmdW5jdGlvbkdldEVsZW1lbnQsIDEpOwogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgInNldEVsZW1lbnRSb290IiwgZnVuY3Rpb25TZXRFbGVtZW50Um9vdCwg
Mik7CiAgICAgICAgIAotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywg
SWRlbnRpZmllcigmdm0sICJERkdUcnVlIiksIDAsIGZ1bmN0aW9uRmFsc2UxLCBERkdUcnVlSW50
cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAgICAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJPU1JFeGl0IiksIDAsIGZ1bmN0
aW9uVW5kZWZpbmVkMSwgT1NSRXhpdEludHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9u
KTsKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXIo
JnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVuY3Rpb25GYWxzZTIsIElzRmluYWxUaWVySW50cmlu
c2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJwcmVkaWN0SW50MzIiKSwgMCwgZnVu
Y3Rpb25VbmRlZmluZWQyLCBTZXRJbnQzMkhlYXBQcmVkaWN0aW9uSW50cmluc2ljLCBEb250RW51
bSB8IEpTQzo6RnVuY3Rpb24pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwg
dGhpcywgSWRlbnRpZmllcigmdm0sICJmaWF0SW50NTIiKSwgMCwgZnVuY3Rpb25JZGVudGl0eSwg
RmlhdEludDUySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJERkdUcnVlIiksIDAsIGZ1bmN0aW9uRmFsc2UxLCBERkdUcnVlSW50cmluc2ljLCBEb250
RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2
bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJPU1JFeGl0IiksIDAsIGZ1bmN0
aW9uVW5kZWZpbmVkMSwgT1NSRXhpdEludHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9u
KTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVuY3Rpb25GYWxzZTIsIElzRmlu
YWxUaWVySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJwcmVkaWN0SW50MzIiKSwgMCwgZnVuY3Rpb25VbmRlZmluZWQyLCBTZXRJbnQzMkhlYXBQcmVk
aWN0aW9uSW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJmaWF0SW50NTIiKSwgMCwgZnVuY3Rpb25JZGVudGl0eSwgRmlhdEludDUySW50cmluc2ljLCBE
b250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwogICAgICAgICAKICAgICAgICAgYWRkRnVuY3Rpb24o
dm0sICJlZmZlY3RmdWw0MiIsIGZ1bmN0aW9uRWZmZWN0ZnVsNDIsIDApOwogICAgICAgICBhZGRG
dW5jdGlvbih2bSwgIm1ha2VNYXNxdWVyYWRlciIsIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyLCAw
KTsKQEAgLTY0NCwyMCArNjQ0LDIwIEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0ds
b2JhbE9iamVjdCB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJh
eShnbG9iYWxFeGVjKCksIDApOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3Vt
ZW50cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9i
YWxFeGVjKCksIGksIGpzU3RyaW5nKGdsb2JhbEV4ZWMoKSwgYXJndW1lbnRzW2ldKSk7Ci0gICAg
ICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwg
YXJyYXkpOworICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xv
YmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKICAgICAgICAgCi0gICAgICAgIHB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjb25zb2xlIiksIGpzVW5kZWZpbmVk
KCkpOworICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFs
RXhlYygpLCAiY29uc29sZSIpLCBqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKICAgICB2b2lkIGFk
ZEZ1bmN0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIHVuc2lnbmVkIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIElkZW50aWZpZXIgaWRlbnRp
Zmllcigmdm0sIG5hbWUpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFtZSk7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgaWRlbnRp
ZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIu
c3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkQ29uc3RydWN0
YWJsZUZ1bmN0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIElkZW50aWZpZXIgaWRl
bnRpZmllcigmdm0sIG5hbWUpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFtZSk7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgaWRl
bnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCBhcmd1bWVudHMsIGlkZW50aWZp
ZXIuc3RyaW5nKCksIGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgZnVuY3Rpb24pKTsKICAgICB9CiB9
OwpAQCAtODg5LDcgKzg4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25SdW4oRXhlY1N0YXRlKiBleGVjKQogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVj
LT5hcmd1bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
aSkpOwogICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KAotICAgICAgICBleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5
KTsKKyAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKICAgICBKU1ZhbHVlIGV4
Y2VwdGlvbjsKICAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoOwpAQCAtMTI3MCw3ICsxMjcwLDcgQEAg
c3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKICAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwg
cmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChl
dmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNc
biIsIGV2YWx1YXRpb25FeGNlcHRpb24udG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
ICJzdGFjayIpOworICAgICAgICAgICAgSWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7CiAgICAgICAg
ICAgICBKU1ZhbHVlIHN0YWNrVmFsdWUgPSBldmFsdWF0aW9uRXhjZXB0aW9uLmdldChnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgc3RhY2tJRCk7CiAgICAgICAgICAgICBpZiAoIXN0YWNrVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgICAgICBwcmludGYoIiVzXG4iLCBz
dGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBhYjAxNTAxYjEyOTE3ZDllZTgwZWQzMTUy
M2Y5MjU4ZGM0NDJkYTJlLi5lZGZkNjcwMWRjMGYzZDU5MWNiMzc4ZDM5OThjYjdkNDJmOTA0YzUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTYzLDcg
KzE2Myw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VS
VChiaXR3aXNlX2Nhc3Q8aW50Kio+KCZ0ZXN0VmVjdG9yKVswXSA9PSB0ZXN0VmVjdG9yLmJlZ2lu
KCkpOwogI2VuZGlmCiAKLSAgICBBU1NFUlQoU3RyaW5nSW1wbDo6c19oYXNoRmxhZzhCaXRCdWZm
ZXIgPT0gMzIpOworICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9
PSA4KTsKIH0KICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQppbmRleCBkNzFhM2VmZTc2ODlkZjlkZjVlODc5ZTYzZTgyNDdhYzgwNDgzOTU3Li5h
OTFlNDY3OTA2YjVhZmZmYTQ3ZGY3Y2VlN2I1ZTUyYzZmYzIzZTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNzYs
NyArMTc2LDcgQEAgY29uc3QgRnVuY3Rpb25Db2RlID0gMgogY29uc3QgTExJbnRSZXR1cm5QQyA9
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKIAogIyBTdHJpbmcgZmxhZ3MuCi1jb25zdCBIYXNo
RmxhZ3M4Qml0QnVmZmVyID0gMzIKK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA4CiAKICMg
Q29waWVkIGZyb20gUHJvcGVydHlPZmZzZXQuaAogY29uc3QgZmlyc3RPdXRPZkxpbmVPZmZzZXQg
PSAxMDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggZmE2
NDk1MWE5ZGYyYjZiNjQ1MDVmYTFlYTM3YTEwMDRiOWE4ZDk5Ni4uN2U5MWQzNzJjMmY3YTAzOTY2
NTgyOTg4YmQ1OWE1OTgwZjJiYjg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKQEAgLTU2Niw3ICs1NjYsNyBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICB7
CiAgICAgICAgIGlmIChtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50KQog
ICAgICAgICAgICAgdXNlc0FyZ3VtZW50cygpOwotICAgICAgICBBU1NFUlQoaWRlbnQtPmltcGwo
KS0+aXNBdG9taWMoKSk7CisgICAgICAgIEFTU0VSVChpZGVudC0+aW1wbCgpLT5pc0F0b21pYygp
IHx8IGlkZW50LT5pbXBsKCktPmlzVW5pcXVlKCkpOwogICAgICAgICBtX3Njb3BlLm1fdmFyRGVj
bGFyYXRpb25zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqaWRlbnQsIGF0dHJzKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNjMxOGZkNjM2YmVi
M2U3YjkxZDI4ZjY0OTZhZWQ5YWY3YmQ4NzE4Yy4uNGY1YjEyNTY4OGM5MzZlMzU3NDVkOTUyNjA0
NmUyODQwYmMxMDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApA
QCAtMjg2LDEwICsyODYsMTAgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVy
KCkKICAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOwogICAgICAgICBzY29wZS0+
Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKLSAgICAgICAgICAgIGlmIChzY29wZS0+aGFz
RGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAg
ICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmllcjo6ZnJvbVVp
ZChtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1ldGVyKElk
ZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIGlmIChzY29wZS0+
aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5n
ZXQoKSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAodmFy
aWFibGUgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKQEAgLTUxOCw3
ICs1MTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlv
blBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZQogICAgIEFTU0VSVCghbmFtZS5pc0Vt
cHR5KCkpOwogICAgIEFTU0VSVCghbmFtZS5pc051bGwoKSk7CiAgICAgCi0gICAgQVNTRVJUKG5h
bWUuaW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlQobmFtZS5pbXBsKCktPmlzQXRvbWlj
KCkgfHwgbmFtZS5pbXBsKCktPmlzVW5pcXVlKCkpOwogICAgIGlmIChkZXB0aCkgewogICAgICAg
ICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvVmFyaWFibGVzKQogICAgICAgICAgICAgZmFpbElm
RmFsc2VJZlN0cmljdChkZWNsYXJlVmFyaWFibGUoJm5hbWUpLCAiQ2Fubm90IGRlY29uc3RydWN0
IHRvIGEgdmFyaWFibGUgbmFtZWQgJyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IDQyN2I4
NGNkYTUzMjMxYTU0NzA2ZjRjZWZlYzNkODFkNzhiNTBkZGIuLjQwZWNlNTNhMGI2NDRjMDgyMDc5
YzIyZGYwZjk0M2JjMjVkYmRhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlckFyZW5hLmgKQEAgLTczLDIwICs3MywyMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
aWYgKCFsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gdm0tPnByb3BlcnR5TmFtZXMtPmVtcHR5
SWRlbnRpZmllcjsKICAgICAgICAgaWYgKGNoYXJhY3RlcnNbMF0gPj0gTWF4aW11bUNhY2hhYmxl
Q2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVy
KHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBw
ZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAg
ICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICAgICAgaWYgKElkZW50aWZpZXIqIGlkZW50ID0g
bV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dKQogICAgICAgICAgICAgICAgIHJldHVy
biAqaWRlbnQ7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKHZt
LCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5k
KElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgICAg
ICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gJm1faWRlbnRpZmllcnMu
bGFzdCgpOwogICAgICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAg
ICB9CiAgICAgICAgIElkZW50aWZpZXIqIGlkZW50ID0gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFy
YWN0ZXJzWzBdXTsKICAgICAgICAgaWYgKGlkZW50ICYmIElkZW50aWZpZXI6OmVxdWFsKGlkZW50
LT5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gKmlkZW50
OwotICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJz
LCBsZW5ndGgpKTsKKyAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgICAgIG1fcmVjZW50SWRlbnRp
ZmllcnNbY2hhcmFjdGVyc1swXV0gPSAmbV9pZGVudGlmaWVycy5sYXN0KCk7CiAgICAgICAgIHJl
dHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICB9CkBAIC0xMDIsNyArMTAyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICAgICAgaWYg
KElkZW50aWZpZXIqIGlkZW50ID0gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dKQog
ICAgICAgICAgICAgICAgIHJldHVybiAqaWRlbnQ7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJz
LmFwcGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgICAg
IG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3Rl
cnMsIGxlbmd0aCkpOwogICAgICAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNb
MF1dID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICAgICAgcmV0dXJuIG1faWRlbnRp
ZmllcnMubGFzdCgpOwogICAgICAgICB9CkBAIC0xMTYsNyArMTE2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiAgICAgaW5saW5lIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6
bWFrZU51bWVyaWNJZGVudGlmaWVyKFZNKiB2bSwgZG91YmxlIG51bWJlcikKICAgICB7Ci0gICAg
ICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIodm0sIFN0cmluZzo6bnVtYmVyVG9T
dHJpbmdFQ01BU2NyaXB0KG51bWJlcikpKTsKKyAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQo
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3Jp
cHQobnVtYmVyKSkpOwogICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAppbmRleCA5
ODU0OGQyYTQxZDg2Yjc3ZTVkNTdiZjQ3ZmNjZjk2MGY4MmZhOGI5Li5mZDkwM2U1NGQxODBmZGJj
YzJiYzg1YmMzNDg3MmEzNTJmOGJiMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTE4MCwxMCArMTgwLDEwIEBAIGJvb2wgQXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hCiAKICAgICBpZiAoSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVO
YW1lKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRl
cmF0b3JTeW1ib2wpIHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
LSAgICAgICAgdGhpc09iamVjdC0+SlNDX05BVElWRV9GVU5DVElPTihleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBEb250RW51
bSwgMCk7CisgICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJv
cGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNGdW5jSXRlcmF0b3IsIERvbnRF
bnVtLCAwKTsKICAgICAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb20oZXhlYywgaSkpOwogICAgIH0KLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyhtb2RlKSkgeworICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMoKSkgewogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuY2FsbGVlKTsKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGQ3OWNjNTJl
MDkyYmM2ZTkwYjQxYmJlNzk5OGMyYWI3MDdhYTNkMmMuLmM2OTA0ZmE1MDVhYjZhNTZjZGYzMTUw
MTc4ZWI0YzU0Mjc1ZmViM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAgdm9pZCBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJn
dW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcmd1
bWVudHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5h
bWUsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmNwcAppbmRleCBjODgwMGUzY2RjYTYyNTJlYWI5OGZkMDIxMTg2MWUxZDBk
YmVjMTEyLi5iZDM1NTVjNDQyMDliZDc1YTEzOGY1ZjIzOGNiOTY3NWM2ZDI2YzJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJv
dG90eXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90
eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlSXRlcmF0ZSwgRG9udEVu
dW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVJdGVyYXRlLCBEb250RW51bSwgMCk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlJdGVyYXRvclByb3RvdHlwZUl0
ZXJhdGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggM2ZkMDM0YTFjMzI4NDYxYTQ2NWNlNjYy
YzA5OGQyM2RlMWI0ODc0ZC4uYzRhNzBkODkzMTVlYTk5YzNmZTM5MGM3NGYyMDYwYTBjYzFkODlk
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnBy
b3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheVByb3RvRnVuY1ZhbHVl
cywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiB9
CiAKIGJvb2wgQXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKQEAgLTUzMCw3ICs1MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICB0aGlz
T2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCArIG4s
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKLSAgICAgICAgICAgIElkZW50
aWZpZXIgcHJvcGVydHlOYW1lKGV4ZWMsIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGVu
Z3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhleGVjKSk7CisgICAg
ICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8
aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgICAgIHRoaXNPYmotPm1l
dGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KG4pLCBzbG90KTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCkBAIC03MzUsNyArNzM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1NvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIAogICAgIFByb3BlcnR5TmFtZUFy
cmF5IG5hbWVBcnJheShleGVjKTsKLSAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOworICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5n
ZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmosIGV4ZWMsIG5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2Rl
OjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cAppbmRleCA1NmRmMzQ1MDI4N2ZmOTk5YTM4ZmNmNGNiNzE1MGU4NjFhNTY0M2U4Li4wYjI4ZDVj
ODc5NjY2Y2IxNTNiMzhiMzg3ZWY3ZjEwN2M1YmU4MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yMiwyNSArMjIs
MjggQEAKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogCiAjaW5jbHVkZSAiQnVpbHRp
bk5hbWVzLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NC
dWlsdGlucy5oIgogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci0jZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUodm0sICNuYW1l
KQotI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKHZtLCAj
bmFtZSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZShJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCisjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09S
RChuYW1lKSAsIG5hbWUjI0tleXdvcmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUp
KQogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVO
YW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQorI2RlZmluZSBJTklUSUFM
SVpFX1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMjU3lt
Ym9sKCkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAg
ICAgOiBudWxsSWRlbnRpZmllcigpCiAgICAgLCBlbXB0eUlkZW50aWZpZXIoSWRlbnRpZmllcjo6
RW1wdHlJZGVudGlmaWVyKQotICAgICwgdW5kZXJzY29yZVByb3RvKHZtLCAiX19wcm90b19fIikK
LSAgICAsIHRoaXNJZGVudGlmaWVyKHZtLCAidGhpcyIpCi0gICAgLCB1c2VTdHJpY3RJZGVudGlm
aWVyKHZtLCAidXNlIHN0cmljdCIpCisgICAgLCB1bmRlcnNjb3JlUHJvdG8oSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIl9fcHJvdG9fXyIpKQorICAgICwgdGhpc0lkZW50aWZpZXIoSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInRoaXMiKSkKKyAgICAsIHVzZVN0cmljdElkZW50aWZpZXIo
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZSBzdHJpY3QiKSkKICAgICAsIG1fYnVpbHRp
bk5hbWVzKG5ldyBCdWlsdGluTmFtZXModm0sIHRoaXMpKQogICAgIEpTQ19DT01NT05fSURFTlRJ
RklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lE
RU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklU
SUFMSVpFX1BSSVZBVEVfTkFNRSkKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX1NZTUJPTCkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXgg
ZjExMTc3M2YxMDU1NzQ5ODFlOTY4NzdjNDc5M2U0ZTk1YWRiNTg1OC4uZGFlOTEwMWRmMDllZGU2
Mjg1OGFmZGNkOGRkYmVkYTU3MzFkYzZlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMzQsNyArMjM0LDYgQEAKICAgICBt
YWNybyh1bnNjb3BhYmxlKQogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVS
U19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwKLSAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChtYWNybykgXAogICAgIG1hY3JvKGl0ZXJh
dG9yTmV4dCkgXAogICAgIG1hY3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhyZWplY3QpIFwKQEAg
LTI4OSw3ICsyODgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIEpTQ19JREVOVElGSUVS
X0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlm
aWVyIG5hbWUjI1ByaXZhdGVOYW1lOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJ
RklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9Q
Uk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZB
VEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKLSAgICAgICAgCisKKyNkZWZpbmUgSlNDX0lERU5USUZJ
RVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTChuYW1lKSBjb25zdCBJ
ZGVudGlmaWVyIG5hbWUjI1N5bWJvbDsKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCisKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgICAg
ICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlv
bk1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5o
CmluZGV4IDRkYmFmN2I0MTdkYzcwOGZiYzZjNzI1MDlmMTlmNTQ0ZjAxYjk2YmQuLmVkYTJjYjE0
YjU1OTQ3MzA2ZjMzMDQ0NGI4OWM0MGUyYzc4NGMwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCkBAIC0yOCw2MyArMjgsNTIgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gRW51bWVyYXRpb25Nb2RlIHsKLSAgICBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzLAotICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNP
YmplY3QsCi0gICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcywKLSAgICBJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0Ci19OworY2xhc3MgRW51bWVyYXRpb25Nb2RlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyA9IDF1IDw8IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ1Nr
aXBKU09iamVjdCA9IDF1IDw8IDE7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0lu
Y2x1ZGVTeW1ib2xzID0gMXUgPDwgMjsKKworICAgIGVudW0gRW51bWVyYXRpb25Nb2RlUmVwcmVz
ZW50YXRpb25UYWcgOiB1bnNpZ25lZCB7CisgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMgPSAwLAorICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJv
bHMgPSBzX2ZsYWdJbmNsdWRlU3ltYm9scywKKyAgICAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcyA9IHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRpZXMsCisgICAgICAgIEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyA9IHNfZmxhZ0luY2x1ZGVEb250RW51
bVByb3BlcnRpZXMgfCBzX2ZsYWdJbmNsdWRlU3ltYm9scywKKyAgICB9OworCisgICAgRW51bWVy
YXRpb25Nb2RlKEVudW1lcmF0aW9uTW9kZVJlcHJlc2VudGF0aW9uVGFnIHRhZykKKyAgICAgICAg
OiBtX2ZsYWdzKHRhZykKKyAgICB7CisgICAgfQogCi1pbmxpbmUgYm9vbCBzaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAo
bW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNlIElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fZmxhZ3MgJiBzX2ZsYWdJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOwogICAgIH0KLX0KIAot
aW5saW5lIGJvb2wgc2hvdWxkRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyhFbnVtZXJhdGlvbk1v
ZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXM6Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpT
T2JqZWN0OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgYm9vbCBzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKG1fZmxhZ3MgJiBzX2ZsYWdTa2lwSlNPYmpl
Y3QpOwogICAgIH0KLX0KIAotaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVy
dHlOYW1lcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAg
ICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9v
bCBzaG91bGRJbmNsdWRlU3ltYm9scygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9m
bGFncyAmIHNfZmxhZ0luY2x1ZGVTeW1ib2xzOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19CiAKLWlubGluZSBFbnVtZXJhdGlvbk1vZGUgbW9k
ZVRoYXRTa2lwc0pTT2JqZWN0KEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAo
bW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICAgICAgcmV0
dXJuIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q7Ci0gICAgY2FzZSBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllc0FuZFNraXBKU09iamVjdDsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
QW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gbW9kZTsKKyAgICBzdGF0aWMgRW51bWVy
YXRpb25Nb2RlIGNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0KEVudW1lcmF0aW9uTW9kZSBtb2RlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEVudW1lcmF0aW9uTW9kZShtb2RlLm1fZmxhZ3MgfCBzX2Zs
YWdTa2lwSlNPYmplY3QpOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbW9kZTsKLX0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBFbnVtZXJhdGlvbk1vZGUo
dW5zaWduZWQgZmxhZ3MpCisgICAgICAgIDogbV9mbGFncyhmbGFncykKKyAgICB7CisgICAgfQor
CisgICAgdW5zaWduZWQgbV9mbGFnczsKK307CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggOTMwYjZmYWY2YmMxZmM2NWRl
OWU2MWExZmM3ZTYyYTllNWZjNjgwZS4uMzYxNTZhMWUwNTE2ODFmNWNlYjU2MTgyYjZlNGViOTQy
OWI4ZjUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTM3
LDE3ICsxMzcsMTcgQEAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU28KICAgICBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCA9IHNvdXJjZS5wcm92aWRlcigpLT51cmwoKTsKIAogICAgIGlmIChsaW5lICE9
IC0xKQotICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCp2bSwgSWRlbnRpZmllcih2bSwgbGluZVBy
b3BlcnR5TmFtZSksIGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAg
ICAgICBlcnJvci0+cHV0RGlyZWN0KCp2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbGlu
ZVByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwog
ICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQotICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCp2
bSwgSWRlbnRpZmllcih2bSwgc291cmNlVVJMUHJvcGVydHlOYW1lKSwganNTdHJpbmcodm0sIHNv
dXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGVycm9yLT5wdXREaXJl
Y3QoKnZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUp
LCBqc1N0cmluZyh2bSwgc291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKICAgICBy
ZXR1cm4gZXJyb3I7CiB9CiAKIAogYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogZXJyb3IpCiB7Ci0gICAgcmV0dXJuIGVycm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJ
ZGVudGlmaWVyKGV4ZWMsIGxpbmVQcm9wZXJ0eU5hbWUpKQotICAgICAgICB8fCBlcnJvci0+aGFz
UHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpKTsK
KyAgICByZXR1cm4gZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgbGluZVByb3BlcnR5TmFtZSkpCisgICAgICAgIHx8IGVycm9yLT5oYXNQcm9wZXJ0
eShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHNvdXJjZVVSTFByb3BlcnR5TmFt
ZSkpOwogfQogCiBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApp
bmRleCAxMDVhYWVmN2YwOWFhZTE1MmI4NWYzMjA4YjE0YmJmOTBhMWY1YWMzLi4yMjIxY2ZhZDgz
MWJiZGVhYzZjMTgxZDE2MjBlN2MzMGU4ZjVlNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtODIsNyArODIsNyBAQCBK
U09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAgIAotICAgIGlmIChpZGVudC5p
bXBsKCktPmlzVW5pcXVlKCkpIHsKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc1ByaXZhdGUoKSkg
ewogICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUg
dmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCku
c3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1l
c3NhZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aAppbmRleCAwMTMyZDBlNzUyOGVhMzYzYjhjMzEzNmVjZTViMDA4YzUzOWEzOGVmLi5lOTE5MDAx
N2E5ZmFmNDIwOWI3ODU2NDYyMWUwNDgzNmFkYjI3MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0zOCwyMyArMzgsNiBAQCBjbGFzcyBJZGVudGlm
aWVyIHsKICAgICBlbnVtIEVtcHR5SWRlbnRpZmllckZsYWcgeyBFbXB0eUlkZW50aWZpZXIgfTsK
ICAgICBJZGVudGlmaWVyKEVtcHR5SWRlbnRpZmllckZsYWcpIDogbV9zdHJpbmcoU3RyaW5nSW1w
bDo6ZW1wdHkoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQogCi0g
ICAgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgotICAgIHRlbXBsYXRl
PHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pIDogbV9zdHJpbmco
YWRkKGV4ZWMsIGNoYXJhY3RlcnMpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWlj
KCkpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgotICAgIElkZW50
aWZpZXIoVk0qIHZtLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkg
OiBtX3N0cmluZyhhZGQodm0sIGNoYXJhY3RlcnMpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCkt
PmlzQXRvbWljKCkpOyB9Ci0KLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIEF0b21pY1N0cmlu
Z0ltcGwqKTsKLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYp
OwotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiByZXApIDogbV9z
dHJpbmcoYWRkKGV4ZWMsIHJlcCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMo
KSk7IH0KLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSA6
IG1fc3RyaW5nKGFkZChleGVjLCBzLmltcGwoKSkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+
aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hh
ciogcykgOiBJZGVudGlmaWVyKGV4ZWMsIEF0b21pY1N0cmluZyhzKSkgeyB9Ci0KLSAgICBJZGVu
dGlmaWVyKFZNKiB2bSwgY29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRk
KHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9
Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1f
c3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0
b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBTdHJpbmdJbXBsKiByZXApIDogbV9z
dHJpbmcoYWRkKHZtLCByZXApKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkp
OyB9Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhh
ZGQodm0sIHMuaW1wbCgpKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsg
fQotCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsg
fQogICAgIEF0b21pY1N0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxBdG9taWNTdHJpbmdJbXBsKj4obV9zdHJpbmcuaW1wbCgpKTsgfQogCkBAIC02MywxMiArNDYs
MjIgQEAgY2xhc3MgSWRlbnRpZmllciB7CiAgICAgQ1N0cmluZyBhc2NpaSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmFzY2lpKCk7IH0KICAgICBDU3RyaW5nIHV0ZjgoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy51dGY4KCk7IH0KIAotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oY29uc3Qg
UHJpdmF0ZU5hbWUmIG5hbWUpCi0gICAgewotICAgICAgICBJZGVudGlmaWVyIHJlc3VsdDsKLSAg
ICAgICAgcmVzdWx0Lm1fc3RyaW5nID0gbmFtZS51aWQoKTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9CisgICAgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgor
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KKyAgICBzdGF0aWMgSWRlbnRp
ZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnND
b3VudF0pOworICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KKyAgICBzdGF0
aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5n
KFZNKiwgY29uc3QgTENoYXIqLCBpbnQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBm
cm9tU3RyaW5nKFZNKiwgY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSWRl
bnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBBdG9taWNTdHJpbmdJbXBsKik7CisgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcm
KTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFN0
cmluZyYpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29u
c3QgY2hhciopOworCisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChWTSosIFN0cmluZ0lt
cGwqIHVpZCk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChFeGVjU3RhdGUqLCBTdHJp
bmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21VaWQoY29uc3QgUHJpdmF0
ZU5hbWUmKTsKIAogICAgIHN0YXRpYyBJZGVudGlmaWVyIGNyZWF0ZUxDaGFyRnJvbVVDaGFyKFZN
KiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIHsgcmV0dXJuIElkZW50aWZpZXIodm0s
IGFkZDgodm0sIHMsIGxlbmd0aCkpOyB9CiAKQEAgLTEwNSw2ICs5OCwyMCBAQCBjbGFzcyBJZGVu
dGlmaWVyIHsKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogCisgICAgLy8gT25seSB0
byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNo
YXJhY3RlcnNDb3VudD4KKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgY2hhciAoJmNoYXJh
Y3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pIDogbV9zdHJpbmcoYWRkKHZtLCBjaGFyYWN0ZXJzKSkg
eyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorCisgICAgSWRlbnRpZmll
cihWTSogdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwg
cywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorICAg
IElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmlu
ZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMo
KSk7IH0KKyAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIEF0b21pY1N0cmluZ0ltcGwqKTsKKyAg
ICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIElkZW50
aWZpZXIoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHN0cmluZykgOiBtX3N0cmluZyhhZGQodm0sIHN0
cmluZy5pbXBsKCkpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Cisg
ICAgSWRlbnRpZmllcihWTSogdm0sIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQodm0s
IHJlcCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KKworICAgIGVu
dW0gVW5pcXVlSWRlbnRpZmllckZsYWcgeyBVbmlxdWVJZGVudGlmaWVyIH07CisgICAgSWRlbnRp
ZmllcihVbmlxdWVJZGVudGlmaWVyRmxhZywgU3RyaW5nSW1wbCogdWlkKSA6IG1fc3RyaW5nKHVp
ZCkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc1VuaXF1ZSgpKTsgfQorCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJUeXBlPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQzMl90
IHRvVUludDMyRnJvbUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCwgYm9vbCYgb2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRleCA3NDcyZDg0N2Q3NWIzMDNlNjQ1NGYwNmQ2
OWVkNmZjNWVlNjkyM2FjLi5kNDJmZGM2YmZiZTAxMjdiNTQ2Mzk5ODliZjgzZjAyNmY2ZDBmMzYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxp
bmVzLmgKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoRXhl
Y1N0YXRlKiBleGVjLCBBdG9taWNTdHJpbmdJbXBsKiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwog
ICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAgIGlmIChzdHJpbmcp
Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwgQXRvbWlj
U3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5n
IGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBBdG9taWNTdHJp
bmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29t
ZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICNlbmRpZgpAQCAtNDksNyArNDksNyBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmll
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogI2lmbmRlZiBO
REVCVUcKICAgICBjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGVjKTsKICAgICBpZiAo
IXN0cmluZy5pc051bGwoKSkKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxl
bmd0aCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZy5pbXBs
KCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcuaW1w
bCgpLT5pc1VuaXF1ZSgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0
cmluZy5pbXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJl
YWQhIik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNlbmRpZgpAQCAtNzAsNiAr
NzAsNzAgQEAgaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoVk0qIHZtLCBT
dHJpbmdJbXBsKiByKQogICAgIHJldHVybiAqQXRvbWljU3RyaW5nOjphZGRXaXRoU3RyaW5nVGFi
bGVQcm92aWRlcigqdm0sIHIpOwogfQogCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpm
cm9tVWlkKFZNKiB2bSwgU3RyaW5nSW1wbCogdWlkKQoreworICAgIGlmICghdWlkIHx8ICF1aWQt
PmlzVW5pcXVlKCkpCisgICAgICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCB1aWQpOworICAgIHJl
dHVybiBJZGVudGlmaWVyKFVuaXF1ZUlkZW50aWZpZXIsIHVpZCk7Cit9CisKK2lubGluZSBJZGVu
dGlmaWVyIElkZW50aWZpZXI6OmZyb21VaWQoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiB1
aWQpCit7CisgICAgcmV0dXJuIGZyb21VaWQoJmV4ZWMtPnZtKCksIHVpZCk7Cit9CisKK2lubGlu
ZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21VaWQoY29uc3QgUHJpdmF0ZU5hbWUmIG5hbWUp
Cit7CisgICAgcmV0dXJuIElkZW50aWZpZXIoVW5pcXVlSWRlbnRpZmllciwgbmFtZS51aWQoKSk7
Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KK2lubGluZSBJZGVudGlm
aWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBjaGFyICgmY2hhcmFjdGVy
cylbY2hhcmFjdGVyc0NvdW50XSkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgY2hhcmFj
dGVycyk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KK2lubGluZSBJ
ZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBj
aGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKK3sKKyAgICByZXR1cm4gSWRlbnRp
ZmllcigmZXhlYy0+dm0oKSwgY2hhcmFjdGVycyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkK
K3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgcywgbGVuZ3RoKTsKK30KKworaW5saW5lIElk
ZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBp
bnQgbGVuZ3RoKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBzLCBsZW5ndGgpOworfQor
CitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNKiB2bSwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN0cmluZy5pbXBs
KCkpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIElkZW50aWZp
ZXIoJmV4ZWMtPnZtKCksIHN0cmluZy5pbXBsKCkpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgQXRvbWljU3RyaW5nSW1wbCog
YXRvbWljU3RyaW5nKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIGF0b21pY1N0cmlu
Zyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0b21pY1N0cmluZykKK3sKKyAgICByZXR1
cm4gSWRlbnRpZmllcihleGVjLCBhdG9taWNTdHJpbmcpOworfQorCitpbmxpbmUgSWRlbnRpZmll
ciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogcykK
K3sKKyAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBBdG9taWNTdHJpbmcocykpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIElkZW50aWZpZXJJbmxpbmVzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggMjBkNDlkYjhiYTJlMmM1
ODU1MDY2NzQ5ZWY5ZGY1MTU1NDE1NzY4MS4uYzFiMDRhNmUyMmVkMjhhMmY5M2QyMzBkNTYzYzMw
OGU2MjZlMTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
QEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEpTQXJyYXk6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogewogICAgIEpTQXJy
YXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAKLSAgICBpZiAoc2hv
dWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogCiAgICAgSlNPYmplY3Q6OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKaW5k
ZXggYzFjYWQxMDVjN2UwZDVhZDdlZmQyOTZhM2JlZjA2OTZjOTVmNjAwNy4uNWI2NmM0NGYzZTgx
ODQyNTAwOGI2MGFlZDQyNjEzYWJjN2UxOGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEpT
QXJyYXlCdWZmZXI6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKIHsKICAgICBKU0FycmF5
QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXIqPihvYmplY3QpOwogICAg
IAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlm
IChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgYXJyYXku
YWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoKTsKICAgICAKICAgICBCYXNlOjpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuY3BwCmluZGV4IGNiNWM4YTJmMDM5MzQzYzVhMjQwNTBiMDkwODA4ZGVkMjVlMTA5MGIuLmFk
YTY3M2JlNzc0OTdkMDY2MmZjZWNjNzdiMGI4NGJkYzI2ZGE2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTIwMSw3
ICsyMDEsNyBAQCB2b2lkIEpTQXJyYXlCdWZmZXJWaWV3OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoCiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJh
eUJ1ZmZlclZpZXcqPihvYmplY3QpOwogICAgIAogICAgIC8vIGxlbmd0aC9ieXRlT2Zmc2V0L2J5
dGVMZW5ndGggYXJlIERvbnRFbnVtLCBhdCBsZWFzdCBpbiBGaXJlZm94LgotICAgIGlmIChzaG91
bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKG1vZGUuc2hvdWxk
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIGFycmF5LmFkZChleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYnl0ZU9mZnNldCk7CiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCk7CiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5o
CmluZGV4IGRlZDhjODU4MGIwYWMzNWQ0ZDk3NzE2YTAwYWRmMDgwZGNiNmUyZWUuLjMyYWNhZDUy
MGQ1YjQwM2JkMTQ3MjFiYWJmZTY5ZjQyNDJlNThlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDYWxsZWUuaApAQCAtMTAxLDcgKzEwMSw3IEBAIGNsYXNzIEpTQ2FsbGVlIDog
cHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUgPSBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTFiNjZmMTViMzY2
MDczNTYyMzY5MjA1NzdlODFhNzY4ZDFkNTViLi41YmVjODU4OTk5MTU2MmE4ZTI0ZDgwMjY3OGRi
MGExMmU3NjZhYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lk
IEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWls
dGluRnVuY3Rpb24oKSAmJiBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7
CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIG1vZGUu
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmll
ZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYmUwYmRjNzg0MmY5NzMzYzc2YjA2
NDQzYmRhMzY2MTQxOGVhNTk5Ny4uMzRlZDQwOGI1ZDFiMDgxZmZiNGI0YzlhYWY4NjljNWZhNDlk
NDZiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAt
MTM4LDcgKzEzOCw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAg
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3Rh
dGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CiAKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKaW5kZXggNmQwZDIxZmE2MWYzOTg5ZjlkOWI0MTk5ZGFhODg4ZTlmNjY0NGVjYS4u
YTk5OGVlODg1MjFlZjY3MzlhMjIxMTU2N2QzNzgzMmFlMzQ4NTA1NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmgKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoCiB7CiAgICAgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqPihvYmplY3QpOwogICAgIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMoKSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
OwogICAgIAogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LCBleGVjLCBhcnJheSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNmJhOTIyZjc1MDEzMTk4M2M1ZWMxMTlkODc5Mzcy
NzI0MzA3OTZhMC4uMWVmMjU0MTUwNWVhYTA2MWNmNGYzYzhmZjRjNzQ2ZWY5MzU3MjM2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtMzE3LDcgKzMxNyw3IEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoCiAgICAgCiAgICAgLy8g
Q29uc3RydWN0b3JzCiAgICAgCi0gICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVj
dG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3Ry
dWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBPYmplY3RDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0
KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0
cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0
b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQ
cm90b3R5cGUuZ2V0KCkpOwpAQCAtNDA1LDcgKzQwNSw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3Ry
dWN0CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCB0eXBlZEFycmF5SW5kZXggPSBOVU1CRVJfT0Zf
VFlQRURfQVJSQVlfVFlQRVM7IHR5cGVkQXJyYXlJbmRleC0tOykgewogICAgICAgICBtX3R5cGVk
QXJyYXlzW3R5cGVkQXJyYXlJbmRleF0ucHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHR5cGVkQXJyYXlDb25zdHJ1
Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwotICAgICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcihleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3Jz
W3R5cGVkQXJyYXlJbmRleF0tPm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5
cGVkQXJyYXlJbmRleF0sIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdHlwZWRBcnJheUNvbnN0cnVj
dG9yc1t0eXBlZEFycmF5SW5kZXhdLT5uYW1lKGV4ZWMpKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9y
c1t0eXBlZEFycmF5SW5kZXhdLCBEb250RW51bSk7CiAgICAgfQogICAgIAogICAgIEpTRnVuY3Rp
b24qIGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3Bl
cnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cp
OwpAQCAtNDM4LDcgKzQzOCw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgQ29uc29s
ZVByb3RvdHlwZSogY29uc29sZVByb3RvdHlwZSA9IENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgdGhpcywgQ29uc29sZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY29uc29sZVN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTQ29uc29sZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBjb25zb2xlUHJvdG90eXBl
KSk7CiAgICAgSlNDb25zb2xlKiBjb25zb2xlT2JqZWN0ID0gSlNDb25zb2xlOjpjcmVhdGUodm0s
IG1fY29uc29sZVN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXIoZXhlYywgImNvbnNvbGUiKSwgY29uc29sZU9iamVjdCwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJjb25zb2xlIiksIGNvbnNvbGVPYmplY3QsIERvbnRFbnVtKTsKIAogICAg
IHJlc2V0UHJvdG90eXBlKHZtLCBwcm90b3R5cGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA0MWFhZjk2M2Q3ZDRjNzFiOGE3
NjlmZDA0MTE2ZTBhOWM1OTkzYTlhLi5hZjhkZThjYjgwNmY0YjljNGE3Y2EyYTc4N2ZjNDY3NGJk
YjFmMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTMwNSw2ICszMDUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIGJvb2wgaGFzRGVidWdnZXIoKSBjb25z
dCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CiAgICAgYm9vbCBoYXNQcm9maWxlcigpIGNvbnN0IHsg
cmV0dXJuIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUHJvZmlsaW5nKHRoaXMp
OyB9CisgICAgY29uc3QgUnVudGltZUZsYWdzJiBydW50aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX3J1bnRpbWVGbGFnczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
ZXhwbGljaXQgSlNHbG9iYWxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBHbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSogPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAppbmRleCA4NDAzN2EzNDVmOTllODUwMGJm
NmQwNTZhNTE4NDlkYzE5YjU2ZmEwLi5iZGZjMzQ1MGIwMDVkZGQ2NjExYjE3YWFkMmMxZWQ5Y2Nl
MWQwNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
ZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0xMTQsMTEgKzExNCwxNSBAQCB2b2lkIEpTTGV4aWNh
bEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YQogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0
LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAg
ICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJv
bFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAg
aWYgKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSAmJiAhc2hvdWxkSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICAgICAgICAgIGlmIChpdC0+dmFsdWUuZ2V0
QXR0cmlidXRlcygpICYgRG9udEVudW0gJiYgIW1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCF0
aGlzT2JqZWN0LT5pc1ZhbGlkKGl0LT52YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXku
Z2V0KCkpKTsKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LmdldCgpLT5pc1ByaXZhdGUoKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICghbW9kZS5zaG91bGRJbmNs
dWRlU3ltYm9scygpICYmIGl0LT5rZXkuZ2V0KCktPmlzVW5pcXVlKCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpm
cm9tVWlkKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KICAgICAvLyBT
a2lwIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkIGltcGxlbWVudGF0aW9uIG9mIGdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcAppbmRleCA5OTA3NDNhNTU4ZWVhODg3OTkzZTIyN2E2ZWQxOGU1NTBjMjNlMWEzLi5i
Y2U3ZDJmNjM3ZTI3NzFkZWJjYWZiOTViOTAyMTRkYjcwOTY3OThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNDk1LDcgKzQ5NSw3IEBAIGJv
b2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBz
dHJpbmdpZmllciwgU3RyaW5nQnVpCiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0g
c3RyaW5naWZpZXIubV9hcnJheVJlcGxhY2VyUHJvcGVydHlOYW1lcy5kYXRhKCk7CiAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBvYmplY3RQcm9w
ZXJ0eU5hbWVzKGV4ZWMpOwotICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0
eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBtX29i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQoKSwg
ZXhlYywgb2JqZWN0UHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMgPSBvYmplY3RQ
cm9wZXJ0eU5hbWVzLnJlbGVhc2VEYXRhKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
X3NpemUgPSBtX3Byb3BlcnR5TmFtZXMtPnByb3BlcnR5TmFtZVZlY3RvcigpLnNpemUoKTsKQEAg
LTcxMiw3ICs3MTIsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1
ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0KTsK
ICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKICAgICAgICAgICAgICAgICBw
cm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjoKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGRiMmE3MjJjYmE4
ODVjODA4NmRlYjc5MGMyYzI4NTczNzRmNmY3OTkuLmVkMTNlYTBhOGJlM2IzNTI5YWIyNmQ4NDMx
NjJjMzA0M2NlZjQ5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKQEAgLTc4LDggKzc4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJvcGVy
dHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7
IGl0ZXIgIT0gdGFibGUtPmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmICgoIShpdGVy
LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcyhtb2RlKSkgJiYgISgoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24p
ICYmIGRpZFJlaWZ5KSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyKCZ2bSwgaXRlci5rZXkoKSkpOworICAgICAgICAgICAgaWYgKCghKGl0ZXItPmF0dHJpYnV0
ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
KSkgJiYgISgoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pICYmIGRpZFJl
aWZ5KSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgaXRlci5rZXkoKSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTUxOCw3
ICsxNTE4LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUEKIAogdm9pZCBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAg
ICBpZiAoIXNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMobW9kZSkpIHsKKyAgICBp
ZiAoIW1vZGUuc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcygpKSB7CiAgICAgICAg
IC8vIFdlIHN0aWxsIGhhdmUgdG8gZ2V0IG5vbi1pbmRleGVkIHByb3BlcnRpZXMgZnJvbSBhbnkg
c3ViY2xhc3NlcyBvZiBKU09iamVjdCB0aGF0IGhhdmUgdGhlbS4KICAgICAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1NzIs
NyArMTU3Miw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5k
KCk7CiAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSB8fCAhKGl0LT52YWx1ZS5h
dHRyaWJ1dGVzICYgRG9udEVudW0pKQorICAgICAgICAgICAgICAgIGlmIChtb2RlLnNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSB8fCAhKGl0LT52YWx1ZS5hdHRyaWJ1dGVzICYgRG9u
dEVudW0pKQogICAgICAgICAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaXQtPmtleSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC0xNTk0LDcgKzE1OTQsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcgogewogICAgIGdldENs
YXNzUHJvcGVydHlOYW1lcyhleGVjLCBvYmplY3QtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlLCBvYmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSk7CiAKLSAgICBpZiAoIXNo
b3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMobW9kZSkpCisgICAgaWYgKCFtb2RlLnNo
b3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNjc5LDcgKzE2NzksNyBAQCB2b2lkIEpT
T2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAgICAgICBmb3IgKGF1dG8gaXRlciA9
IGhhc2hUYWJsZS0+YmVnaW4oKTsgaXRlciAhPSBoYXNoVGFibGUtPmVuZCgpOyArK2l0ZXIpIHsK
ICAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikK
LSAgICAgICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpLCBpdGVyLnZhbHVlKCksIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLmtl
eSgpKSwgc2xvdCk7CisgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaXRlci52YWx1ZSgpLCB0aGlzLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgaXRlci5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0yODAwLDcgKzI4MDAsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogdm9pZCBKU09i
amVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGVUaGF0U2tpcHNKU09iamVjdChtb2RlKSk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGU6OmNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpKTsKIAogICAgIGlmIChv
YmplY3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAzZjVlMjVkMTViMDNlNjBkNTc4Yzgz
NGMzZmQ1MDkyNzY4YWRhMGQ0Li43ODY3NzVhMGRjNDljMTIzMDdkYWY0NTIyMTZhYjc4MzRlMWFi
ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE1NTQs
NyArMTU1NCw3IEBAIENPTVBJTEVfQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVvZihX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSksIEpTT2JqZWN0CiAKIEFMV0FZU19JTkxJTkUgSWRl
bnRpZmllciBtYWtlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAg
cmV0dXJuIElkZW50aWZpZXIoJnZtLCBuYW1lKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sIG5hbWUpOwogfQogCiBBTFdBWVNfSU5MSU5FIElkZW50aWZpZXIgbWFrZUlk
ZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IGYx
YTJlNTYyZjlhYmY0MDJhYjYzOGRjMDljNmVmYzM4MGQxYzViNGQuLjJhNTE2OTcyMTFjNmQ4YTNi
ZTRlNGU3ODJlMjlhZGMyYTVlYzkwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1MSw3ICsyNTEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1Jh
Y2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IGpz
Q2FzdDxKU1Byb21pc2VEZWZlcnJlZCo+KGRlZmVycmVkVmFsdWUpOwogCiAgICAgLy8gNC4gTGV0
ICdpdGVyYXRvcicgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEdldEl0ZXJhdG9yKGl0ZXJhYmxl
KS4KLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRv
ckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7CiAKQEAgLTM2
Nyw3ICszNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0
cnVjdG9yRnVuY0FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRl
ZmVycmVkID0ganNDYXN0PEpTUHJvbWlzZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAg
ICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0
b3IoaXRlcmFibGUpLgotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdl
dChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBKU1Zh
bHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaAppbmRleCBlZTE4YWJmNmViM2YzMmNmYzAxMjkxZWIxNDQ3NDBl
Zjc4YTk2YTFjLi4wYjllNzM5ZjVhNzAzOTY5YTU0MDYzZWYwOTNkNTc1M2I4MDIzMjZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaApAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqIHN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoRXhlY1N0YXRlKiBleGVj
CiAgICAgICAgIHJldHVybiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSk7CiAK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGJhc2UtPm1l
dGhvZFRhYmxlKHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBiYXNlLT5tZXRob2RU
YWJsZSh2bSktPmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAg
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZXMpOwogICAgIGlmIChz
dHJ1Y3R1cmUtPmNhbkNhY2hlU3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcigpKQpAQCAt
MTQyLDkgKzE0Miw5IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGdlbmVyaWNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywKICAgICAvLyB0aGUgbmV3IGdl
bmVyaWMgUHJvcGVydHlOYW1lQXJyYXkgYW5kIGZhaWxpbmcgYmVjYXVzZSB3ZSd2ZSBhbHJlYWR5
IHZpc2l0ZWQgdGhlbS4KICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9IHN0cnVjdHVy
ZUVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZSh2bSk7CiAgICAgaWYgKHN0cnVjdHVyZSA9PSBj
YWNoZWRTdHJ1Y3R1cmUgJiYgc3RydWN0dXJlLT5jYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseSgp
ICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihsZW5ndGgpID09IGJhc2UtPmdldEFycmF5TGVuZ3Ro
KCkpCi0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1Byb3BlcnR5TmFt
ZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CisgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMo
YmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICBlbHNlCi0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+
Z2V0UHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0
eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgCiAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4o
ZXhlYywgc3RydWN0dXJlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgKaW5kZXggMDU3NTQ0NzZmZDE1NGFkNTYzYTg5MDI0NGRlZGMyZjk2ZjNlMmQxMy4uMzhhZjlk
ZDRhZWFkYzdhZDJiNjY0MWU1MzI1YjUzZDRjNDJiZGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC00NjcsNyArNDY3LDcgQEAgaW5saW5lIEpTU3RyaW5n
KiBqc05vbnRyaXZpYWxTdHJpbmcoVk0qIHZtLCBTdHJpbmcmJiBzKQogCiBBTFdBWVNfSU5MSU5F
IElkZW50aWZpZXIgSlNTdHJpbmc6OnRvSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgdG9BdG9taWNTdHJpbmcoZXhlYykpOwor
ICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRvQXRvbWljU3RyaW5nKGV4
ZWMpKTsKIH0KIAogQUxXQVlTX0lOTElORSBBdG9taWNTdHJpbmcgSlNTdHJpbmc6OnRvQXRvbWlj
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggYjhmYjIyODJhZmFl
ODdlY2M0MTEwMjQ1Y2U5YmI4NzNlOTUwZjBmZi4uZTA0YzE0ZTY5ZWU0Yjg4MmExNDZiZDZkMzYx
MTBiMTdhN2FjMjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTYxLDEwICs2MSwxMiBAQCB2b2lkIEpTU3lt
Ym9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAg
ICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5
bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAg
ICAgaWYgKGl0LT5rZXktPmlzVW5pcXVlKCkpCisgICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNQ
cml2YXRlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoIShp
dC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMobW9kZSkpCi0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
SWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CisgICAgICAgICAgICBpZiAoIW1vZGUu
c2hvdWxkSW5jbHVkZVN5bWJvbHMoKSAmJiBpdC0+a2V5LT5pc1VuaXF1ZSgpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0
ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
KSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlk
KGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggZjZmNWZl
MTczYzcwNGVkZTBmNjUzYjY4MzhlMDk4MDZjYTQ0MmViNy4uZDQ1NDRhNGY2ZjI2Y2FhOGMzODQ1
ZGFmMGZjYWZlNzMyMzI4YmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTU3LDE3ICs1NywxNyBAQCBib29sIExpdGVyYWxQYXJz
ZXI8Q2hhclR5cGU+Ojp0cnlKU09OUFBhcnNlKFZlY3RvcjxKU09OUERhdGE+JiByZXN1bHRzLCBi
b29sIG5lZQogICAgIGRvIHsKICAgICAgICAgVmVjdG9yPEpTT05QUGF0aEVudHJ5PiBwYXRoOwog
ICAgICAgICAvLyBVbmd1YXJkZWQgbmV4dCB0byBzdGFydCBvZmYgdGhlIGxleGVyCi0gICAgICAg
IElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJy
ZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1
cnJlbnRUb2tlbigpLnN0YXJ0KTsKKyAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0
LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3Rh
cnQpOwogICAgICAgICBKU09OUFBhdGhFbnRyeSBlbnRyeTsKICAgICAgICAgaWYgKG5hbWUgPT0g
bV9leGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPnZhcktleXdvcmQpIHsKICAgICAgICAgICAgIGlm
IChtX2xleGVyLm5leHQoKSAhPSBUb2tJZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05QUGF0aEVudHJ5VHlwZURl
Y2xhcmU7Ci0gICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKCZt
X2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVu
dFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAg
ICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMt
PnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2Vu
KCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICBwYXRo
LmFwcGVuZChlbnRyeSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbnRyeS5tX3R5
cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVEb3Q7Ci0gICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRy
eU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
c3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4o
KS5zdGFydCk7CisgICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQs
IG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFy
dCk7CiAgICAgICAgICAgICBwYXRoLmFwcGVuZChlbnRyeSk7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKG1fZXhlYy0+dm0oKS5rZXl3b3Jkcy0+aXNLZXl3b3JkKGVudHJ5Lm1fcGF0aEVudHJ5TmFt
ZSkpCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnRyeUpT
T05QUGFyc2UoVmVjdG9yPEpTT05QRGF0YT4mIHJlc3VsdHMsIGJvb2wgbmVlCiAgICAgICAgICAg
ICAgICAgZW50cnkubV90eXBlID0gSlNPTlBQYXRoRW50cnlUeXBlRG90OwogICAgICAgICAgICAg
ICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tJZGVudGlmaWVyKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1l
ID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0
LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3Rh
cnQpOworICAgICAgICAgICAgICAgIGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwg
bV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgVG9rTFBhcmVuOiB7CkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0
IElkZW50aWZpZXIgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46Om1ha2VJZGVudGlmaWVyKGNvbnN0
IExDaAogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbV9leGVjLT52bSgpLnByb3Bl
cnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcjsKICAgICBpZiAoY2hhcmFjdGVyc1swXSA+PSBNYXhp
bXVtQ2FjaGFibGVDaGFyYWN0ZXIpCi0gICAgICAgIHJldHVybiBJZGVudGlmaWVyKCZtX2V4ZWMt
PnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAKICAgICBpZiAo
bGVuZ3RoID09IDEpIHsKICAgICAgICAgaWYgKCFtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVy
c1swXV0uaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2No
YXJhY3RlcnNbMF1dOwotICAgICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0g
PSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgICAg
IG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIG1f
c2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKICAgICB9CiAgICAgaWYgKCFtX3JlY2Vu
dElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dLmlzTnVsbCgpICYmIElkZW50aWZpZXI6OmVxdWFs
KG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaW1wbCgpLCBjaGFyYWN0ZXJzLCBs
ZW5ndGgpKQogICAgICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBd
XTsKLSAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcigm
bV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIG1fcmVjZW50SWRlbnRpZmll
cnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCks
IGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgcmV0dXJuIG1fcmVjZW50SWRlbnRpZmllcnNbY2hh
cmFjdGVyc1swXV07CiB9CiAKQEAgLTE1NSwxNyArMTU1LDE3IEBAIEFMV0FZU19JTkxJTkUgY29u
c3QgSWRlbnRpZmllciBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6bWFrZUlkZW50aWZpZXIoY29u
c3QgVUNoCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBtX2V4ZWMtPnZtKCkucHJv
cGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyOwogICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1h
eGltdW1DYWNoYWJsZUNoYXJhY3RlcikKLSAgICAgICAgcmV0dXJuIElkZW50aWZpZXIoJm1fZXhl
Yy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIAogICAgIGlm
IChsZW5ndGggPT0gMSkgewogICAgICAgICBpZiAoIW1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0
ZXJzWzBdXS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBtX3Nob3J0SWRlbnRpZmllcnNb
Y2hhcmFjdGVyc1swXV07Ci0gICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBd
XSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAg
ICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4g
bV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwogICAgIH0KICAgICBpZiAoIW1fcmVj
ZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkgJiYgSWRlbnRpZmllcjo6ZXF1
YWwobV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pbXBsKCksIGNoYXJhY3RlcnMs
IGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNb
MF1dOwotICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVy
KCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgbV9yZWNlbnRJZGVudGlm
aWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0o
KSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApp
bmRleCBiN2VjYmIxOTBhMDRiNTA5ZDkwNDEwZmZjNGNjMzJkZDAzOTQ4MGZhLi5hOGEzMzY3ZjUz
ZmE2YzUxOGI5ZGExZTVkZTc3ZjQ5MDBlOWNmYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuaApAQCAtMjkzLDcgKzI5Myw3IEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGlj
UHJvcGVydGllcyhWTSYgdm0sIGNvbnN0IEhhc2hUYWJsZVZhbHVlICgmdmFsdWVzKVtudW1iZXJP
CiAgICAgICAgIGlmICghdmFsdWUubV9rZXkpCiAgICAgICAgICAgICBjb250aW51ZTsgICAgICAg
ICAgICAgICAgCiAKLSAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUoJnZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4odmFsdWUubV9rZXkpLCBzdHJsZW4odmFsdWUubV9rZXkp
KTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlLm1fa2V5KSwgc3Ry
bGVuKHZhbHVlLm1fa2V5KSk7CiAgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBCdWls
dGluKSB7CiAgICAgICAgICAgICB0aGlzT2JqLnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwg
dGhpc09iai5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5idWlsdGluR2VuZXJh
dG9yKCkodm0pLCB2YWx1ZS5hdHRyaWJ1dGVzKCkpOwogICAgICAgICAgICAgY29udGludWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3Rv
dHlwZS5jcHAKaW5kZXggYjIyMGI5ODc1ODg1YzQyZjljZTYzOGYzMjIyNDc5MmMzMjc2MTAxNy4u
MDM1NjRmODg4MTFmM2U3ZmFiZmIwYWRhYjliYmM5YWNhMWZiYWJlYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcApA
QCAtNDUsNyArNDUsNyBAQCB2b2lkIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVy
aXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAK
LSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0
ZU5hbWUsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7Cisg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwg
TWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yTmV4dFByaXZhdGVOYW1l
LCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IDU0ODIy
Mjc2OTQwMGI3MTg1MmFmN2RiOGI3NWVmNTA3NTQ0ZWRkNGYuLmY4NDM2N2FlODBiNzI2Mzc1MDVl
ZGMxNTYzZDhiMjg4OGM1OGM5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwUHJvdG90eXBlLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE1hcFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgbWFwUHJvdG9GdW5j
S2V5cywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+dmFsdWVzLCBtYXBQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIG1hcFByb3RvRnVuY0Vu
dHJpZXMsIERvbnRFbnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVt
LCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7CiAKICAgICBHZXR0ZXJT
ZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7
CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZS5zdHJpbmcoKSwgbWFwUHJvdG9GdW5j
U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmlu
ZGV4IDI4ZmY1YzhkOTI3OWVlNTllNWIxMWU3NTFiOTliNTRiMmY2ZjAzOTQuLjUxNTZlZDJlZmQ1
ZjAwNDEyZmMyNzA0NjcwYWQ4ZGFiM2ZiMjc4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCkBAIC04Nyw0OSArODcsNDkgQEAgdm9pZCBNYXRoT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZv
KCkpKTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2
bSwgIkUiKSwganNOdW1iZXIoZXhwKDEuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFk
T25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZt
LCAiTE4yIiksIGpzTnVtYmVyKGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVh
ZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2
bSwgIkxOMTAiKSwganNOdW1iZXIobG9nKDEwLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwg
UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
KCZ2bSwgIkxPRzJFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERv
bnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyKCZ2bSwgIkxPRzEwRSIpLCBqc051bWJlcigwLjQzNDI5NDQ4MTkwMzI1MTgpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiUEkiKSwganNOdW1iZXIocGlEb3VibGUpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiU1FSVDFfMiIpLCBqc051bWJlcihzcXJ0KDAu
NSkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiU1FSVDIiKSwganNOdW1iZXIoc3Fy
dCgyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotCi0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgImFicyIpLCAxLCBtYXRoUHJvdG9GdW5jQWJzLCBBYnNJbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhY29zIiksIDEsIG1h
dGhQcm90b0Z1bmNBQ29zLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyKCZ2bSwgImFzaW4iKSwgMSwgbWF0aFByb3RvRnVuY0FTaW4sIE5vSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXRhbiIp
LCAxLCBtYXRoUHJvdG9GdW5jQVRhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhY29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvc2gs
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZt
LCAiYXNpbmgiKSwgMSwgbWF0aFByb3RvRnVuY0FTaW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImF0YW5oIiksIDEsIG1hdGhQcm90
b0Z1bmNBVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcigmdm0sICJhdGFuMiIpLCAyLCBtYXRoUHJvdG9GdW5jQVRhbjIsIE5vSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiY2JydCIpLCAx
LCBtYXRoUHJvdG9GdW5jQ2JydCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcigmdm0sICJjZWlsIiksIDEsIG1hdGhQcm90b0Z1bmNDZWlsLCBDZWls
SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAi
Y29zIiksIDEsIG1hdGhQcm90b0Z1bmNDb3MsIENvc0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImNvc2giKSwgMSwgbWF0aFByb3RvRnVuY0Nv
c2gsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIo
JnZtLCAiZXhwIiksIDEsIG1hdGhQcm90b0Z1bmNFeHAsIEV4cEludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImV4cG0xIiksIDEsIG1hdGhQcm90
b0Z1bmNFeHBtMSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcigmdm0sICJmbG9vciIpLCAxLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiZnJvdW5k
IiksIDEsIG1hdGhQcm90b0Z1bmNGcm91bmQsIEZSb3VuZEludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImh5cG90IiksIDIsIG1hdGhQcm90b0Z1
bmNIeXBvdCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcigmdm0sICJsb2ciKSwgMSwgbWF0aFByb3RvRnVuY0xvZywgTG9nSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibG9nMTAiKSwgMSwgbWF0
aFByb3RvRnVuY0xvZzEwLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyKCZ2bSwgImxvZzFwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxcCwgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJsb2cy
IiksIDEsIG1hdGhQcm90b0Z1bmNMb2cyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgIm1heCIpLCAyLCBtYXRoUHJvdG9GdW5jTWF4LCBN
YXhJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0s
ICJtaW4iKSwgMiwgbWF0aFByb3RvRnVuY01pbiwgTWluSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAicG93IiksIDIsIG1hdGhQcm90b0Z1bmNQ
b3csIFBvd0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
KCZ2bSwgInJhbmRvbSIpLCAwLCBtYXRoUHJvdG9GdW5jUmFuZG9tLCBOb0ludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInJvdW5kIiksIDEsIG1h
dGhQcm90b0Z1bmNSb3VuZCwgUm91bmRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcigmdm0sICJzaWduIiksIDEsIG1hdGhQcm90b0Z1bmNTaWduLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNp
biIpLCAxLCBtYXRoUHJvdG9GdW5jU2luLCBTaW5JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNTaW5o
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2
bSwgInNxcnQiKSwgMSwgbWF0aFByb3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJ0YW4iKSwgMSwgbWF0aFByb3Rv
RnVuY1RhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcigmdm0sICJ0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNUYW5oLCBOb0ludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRydW5jIiksIDEsIG1h
dGhQcm90b0Z1bmNUcnVuYywgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcigmdm0sICJpbXVsIiksIDEsIG1hdGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJFIiksIGpzTnVtYmVyKGV4cCgx
LjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxOMiIpLCBq
c051bWJlcihsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJMTjEwIiksIGpzTnVtYmVyKGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8
IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJMT0cyRSIpLCBqc051bWJlcigxLjAgLyBsb2coMi4wKSksIERv
bnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJMT0cxMEUiKSwganNOdW1i
ZXIoMC40MzQyOTQ0ODE5MDMyNTE4KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgIlBJIiksIGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlNRUlQxXzIiKSwganNOdW1iZXIoc3FydCgwLjUpKSwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlNRUlQyIiksIGpzTnVtYmVy
KHNxcnQoMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhYnMiKSwgMSwgbWF0aFByb3RvRnVuY0Ficywg
QWJzSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAiYWNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvcywgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJhc2luIiksIDEsIG1hdGhQcm90b0Z1bmNBU2luLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImF0YW4iKSwgMSwg
bWF0aFByb3RvRnVuY0FUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYWNvc2giKSwgMSwgbWF0aFByb3RvRnVu
Y0FDb3NoLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNBU2luaCwgTm9J
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJhdGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbmgsIE5vSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
YXRhbjIiKSwgMiwgbWF0aFByb3RvRnVuY0FUYW4yLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNicnQiKSwgMSwg
bWF0aFByb3RvRnVuY0NicnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY2VpbCIpLCAxLCBtYXRoUHJvdG9GdW5j
Q2VpbCwgQ2VpbEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQ29zLCBDb3NJbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJjb3NoIiksIDEsIG1hdGhQcm90b0Z1bmNDb3NoLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4cCIp
LCAxLCBtYXRoUHJvdG9GdW5jRXhwLCBFeHBJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJleHBtMSIpLCAxLCBtYXRoUHJv
dG9GdW5jRXhwbTEsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZmxvb3IiKSwgMSwgbWF0aFByb3RvRnVuY0Zsb29y
LCBGbG9vckludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImZyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jRnJvdW5kLCBGUm91
bmRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJoeXBvdCIpLCAyLCBtYXRoUHJvdG9GdW5jSHlwb3QsIE5vSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAibG9nIiksIDEsIG1hdGhQcm90b0Z1bmNMb2csIExvZ0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImxvZzEwIiksIDEs
IG1hdGhQcm90b0Z1bmNMb2cxMCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb2cxcCIpLCAxLCBtYXRoUHJvdG9G
dW5jTG9nMXAsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibG9nMiIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMiwgTm9J
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJtYXgiKSwgMiwgbWF0aFByb3RvRnVuY01heCwgTWF4SW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibWlu
IiksIDIsIG1hdGhQcm90b0Z1bmNNaW4sIE1pbkludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBvdyIpLCAyLCBtYXRoUHJv
dG9GdW5jUG93LCBQb3dJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJyYW5kb20iKSwgMCwgbWF0aFByb3RvRnVuY1JhbmRv
bSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jUm91bmQsIFJvdW5kSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAic2lnbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2lnbiwgTm9JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzaW4i
KSwgMSwgbWF0aFByb3RvRnVuY1NpbiwgU2luSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9u
KTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAic2luaCIpLCAxLCBtYXRoUHJv
dG9GdW5jU2luaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzcXJ0IiksIDEsIG1hdGhQcm90b0Z1bmNTcXJ0LCBT
cXJ0SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAidGFuIiksIDEsIG1hdGhQcm90b0Z1bmNUYW4sIE5vSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
dGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0cnVuYyIpLCAxLCBt
YXRoUHJvdG9GdW5jVHJ1bmMsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW11bCIpLCAxLCBtYXRoUHJvdG9GdW5j
SU11bCwgSU11bEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CiB9CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ckNvbnN0cnVjdG9yLmNwcAppbmRleCAzY2ZlOTQxMTZmYTA2MWJjYjVhMjEyNzE2NWE0ZDAxNDg0
MTcyZjVkLi45NWE4ZGNhOTA4ZmE1YjdmZWExNTkxMjk1MTA5MTcyNDNhYjdjMDJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3Bw
CkBAIC01OSwyMSArNTksMjEgQEAgdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKICAgICAvLyBuby4g
b2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgSWRlbnRpZmllcigmdm0sICJFUFNJTE9OIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwg
UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
KCZ2bSwgIk1BWF9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMw
OCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJNSU5fVkFMVUUiKSwganNEb3VibGVO
dW1iZXIoNUUtMzI0KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk1BWF9TQUZFX0lO
VEVHRVIiKSwganNEb3VibGVOdW1iZXIoOTAwNzE5OTI1NDc0MDk5MS4wKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyKCZ2bSwgIk1JTl9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIoLTkw
MDcxOTkyNTQ3NDA5OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJORUdBVElW
RV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcigtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjppbmZpbml0eSgpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIlBPU0lUSVZFX0lO
RklOSVRZIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5m
aW5pdHkoKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJOYU4iKSwganNOYU4oKSwg
RG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotCi0gICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmpl
Y3QoKSwgSWRlbnRpZmllcigmdm0sICJpc0Zpbml0ZSIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1
bmNJc0Zpbml0ZSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNJbnRlZ2VyIiksIDEsIG51bWJlckNv
bnN0cnVjdG9yRnVuY0lzSW50ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJl
clByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNOYU4iKSwgMSwg
bnVtYmVyQ29uc3RydWN0b3JGdW5jSXNOYU4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBu
dW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgImlzU2FmZUlu
dGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZlSW50ZWdlciwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50
aWZpZXIoJnZtLCAicGFyc2VGbG9hdCIpLCAxLCBnbG9iYWxGdW5jUGFyc2VGbG9hdCwgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElk
ZW50aWZpZXIoJnZtLCAicGFyc2VJbnQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNlSW50LCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiRVBTSUxPTiIpLCBqc0RvdWJsZU51
bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSksIERvbnREZWxldGUg
fCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNQVhfVkFMVUUiKSwganNEb3VibGVOdW1i
ZXIoMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFk
T25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAiTUlOX1ZBTFVFIiksIGpzRG91YmxlTnVtYmVyKDVFLTMyNCksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNQVhfU0FGRV9JTlRFR0VSIiks
IGpzRG91YmxlTnVtYmVyKDkwMDcxOTkyNTQ3NDA5OTEuMCksIERvbnREZWxldGUgfCBEb250RW51
bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJNSU5fU0FGRV9JTlRFR0VSIiksIGpzRG91YmxlTnVtYmVy
KC05MDA3MTk5MjU0NzQwOTkxLjApLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiTkVHQVRJVkVfSU5GSU5JVFkiKSwganNEb3VibGVOdW1iZXIoLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJl
YWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJQT1NJVElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcihzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTmFOIiksIGpzTmFOKCksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKKworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiaXNGaW5pdGUiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNG
aW5pdGUsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzSW50ZWdlciIpLCAxLCBu
dW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0ludGVnZXIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImlzTmFOIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzTmFOLCBOb0ludHJpbnNp
YywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpc1NhZmVJbnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVj
dG9yRnVuY0lzU2FmZUludGVnZXIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQ
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBh
cnNlRmxvYXQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQsIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgInBhcnNlSW50IiksIDEsIGdsb2JhbEZ1bmNQYXJzZUludCwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwogfQogCiAvLyBFQ01BIDE1LjcuMQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4
IDYwMmU1NzUyODllMTZjZGMxNmEwYmJhMzQ5Nzg1ZjJlMjdlZjE3ZGQuLmJmYjVmNjQ3YmNiZDdm
OWYyYTlhNjg1ODE0YzAyYTEzYTg2MzRkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAog
I2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFy
cmF5LmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0
YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVm
aW5lUHJvcGVydHkoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKQEAgLTg0LDEzICs4
NiwxNiBAQCBPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKK3ZvaWQg
T2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCiB7Ci0gICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiT2JqZWN0Iikuc3RyaW5n
KCkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBvYmplY3RQcm90b3R5cGUtPmNsYXNz
SW5mbygpLT5jbGFzc05hbWUpOwogICAgIC8vIEVDTUEgMTUuMi4zLjEKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBvYmplY3RQ
cm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAvLyBuby4g
b2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5ydW50aW1l
RmxhZ3MoKS5pc1N5bWJvbEVuYWJsZWQoKSkKKyAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTigi
Z2V0T3duUHJvcGVydHlTeW1ib2xzIiwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5
bWJvbHMsIERvbnRFbnVtLCAxKTsKIH0KIAogYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQpAQCAtMjA2LDcgKzIxMSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09i
amVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVl
IHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3Bl
cnRpZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVu
dCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAg
IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9w
ZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAg
IEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXpl
X3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMjE1LDEyICsyMjAsMjkgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFt
ZXMoRXhlY1N0YXRlKiBleGUKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2Fj
aGUuCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVz
IG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CisgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSkt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4
ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOworICAgIEpTQXJyYXkqIG5h
bWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBzaXplX3QgbnVtUHJvcGVy
dGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVt
UHJvcGVydGllczsgaSsrKSB7CisgICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGltcGwgPSBwcm9w
ZXJ0aWVzW2ldLmltcGwoKTsKKyAgICAgICAgaWYgKGltcGwtPmlzVW5pcXVlKCkpCisgICAgICAg
ICAgICBuYW1lcy0+cHVzaChleGVjLCBTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBpbXBsKSk7
CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZXMpOworfQorCisvLyBGSVhN
RTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIGtleXMg
b2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhl
Yy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwg
ZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKICAgICBKU0FycmF5KiBrZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsK
ICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMzMxLDcgKzM1Myw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCiB7
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBhc09iamVj
dChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMoYXNPYmplY3QocHJvcGVydGllcyksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhl
YywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVy
dHlOYW1lcy5zaXplKCk7CiAgICAgVmVjdG9yPFByb3BlcnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRv
cnM7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFya0J1ZmZlcjsKQEAgLTM5OCw3ICs0MjAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkg
bmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJv
cGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFy
cmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2Fs
bGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4K
QEAgLTQzNSw3ICs0NTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5h
bWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIFByb3BlcnR5
TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZv
ciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUg
dGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0
aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDgzLDcgKzUwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCiAKICAg
ICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGll
cywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMs
IEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1i
b2xzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVy
dGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBp
dGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAg
IC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9w
ZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTUxMyw3ICs1MzUsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhl
Y1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5h
bWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApp
bmRleCAxMjUyNzgxYTVlODkwMDY5ZWE3ZDkwMTMwZmYzMWVlOWU5MGQzOGQ1Li5iYjA2N2IxNTU1
ZmUwOTg2MWJlYTQyZDE5MmFhOTZhZjM3YzMwMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTMzLDEwICszMywxMCBAQCBj
bGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAotICAgIHN0YXRpYyBPYmpl
Y3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVj
dFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQorICAgIHN0YXRpYyBPYmplY3RDb25zdHJ1Y3Rv
ciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogICAgIHsKICAg
ICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBPYmplY3RDb25zdHJ1Y3Rvcih2
bSwgc3RydWN0dXJlKTsKLSAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBv
YmplY3RQcm90b3R5cGUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IGdsb2JhbE9iamVjdCwgb2JqZWN0UHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOwogICAgIH0KIApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgT2JqZWN0UHJvdG90eXBlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAppbmRleCAyMTQxNjQ0
NjY0NWM3ZmZmMDNmN2M4MmQxNzg3MzlhZDU2MDhiZjY0Li41NzM2YTQwOTQzNGZiMGI1N2EzOWQ2
ZmM4ODYwMDM1OTI3NjczNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcml2YXRlTmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
aXZhdGVOYW1lLmgKQEAgLTM1LDE5ICszNSwyNSBAQCBjbGFzcyBQcml2YXRlTmFtZSB7CiAgICAg
UHJpdmF0ZU5hbWUoKQogICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVF
bXB0eSgpKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7CiAgICAg
fQotICAgIFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCi0gICAgICAgIDog
bV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5pbXBsKCkpKQorCisg
ICAgZW51bSBDcmVhdGVQcml2YXRlVGFnIHsgQ3JlYXRlUHJpdmF0ZSB9OworICAgIFByaXZhdGVO
YW1lKENyZWF0ZVByaXZhdGVUYWcpCisgICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0
ZVVuaXF1ZVByaXZhdGVFbXB0eSgpKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNV
bmlxdWUoKSk7CiAgICAgfQorCiAgICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCog
dWlkKQogICAgICAgICA6IG1faW1wbCh1aWQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9pbXBs
LT5pc1VuaXF1ZSgpKTsKICAgICB9CiAKKyAgICBleHBsaWNpdCBQcml2YXRlTmFtZShjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uKQorICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVV
bmlxdWUoZGVzY3JpcHRpb24uaW1wbCgpKSkKKyAgICB7CisgICAgfQorCiAgICAgQXRvbWljU3Ry
aW5nSW1wbCogdWlkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1w
bCo+KG1faW1wbC5nZXQoKSk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcml2YXRl
TmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHVpZCgpID09IG90aGVyLnVpZCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCmluZGV4IDMwNzRjNzJl
MTA3MDEzM2I5N2IwM2IxZGZmNGE0M2RlMTMyZmMwYTYuLjA5NGJkMjVjZWY1OTdmMWFkMmY5YTQ1
Y2NmZWIxMTIwMjYzMmFhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZS5oCkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAgICAg
UHJvcGVydHlOYW1lKEF0b21pY1N0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSkKICAgICAgICAgOiBt
X2ltcGwocHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9p
bXBsLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9pbXBsLT5pc0F0
b21pYygpIHx8IG1faW1wbC0+aXNVbmlxdWUoKSk7CiAgICAgfQogCiAgICAgUHJvcGVydHlOYW1l
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKQEAgLTk0LDcgKzk0LDYgQEAgY2xhc3Mg
UHJvcGVydHlOYW1lIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ltcGwpOwogICAgICAgICBB
U1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNBdG9t
aWMoKSk7CiAgICAgfQogCiAgICAgQXRvbWljU3RyaW5nSW1wbCogdWlkKCkgY29uc3QKQEAgLTEw
NCwxNCArMTAzLDE0IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAKICAgICBBdG9taWNTdHJpbmdJ
bXBsKiBwdWJsaWNOYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmlz
VW5pcXVlKCkgPyBudWxscHRyIDogbV9pbXBsOworICAgICAgICByZXR1cm4gKCFtX2ltcGwgfHwg
bV9pbXBsLT5pc1VuaXF1ZSgpKSA/IG51bGxwdHIgOiBtX2ltcGw7CiAgICAgfQogCiAgICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5kZXggPSBVSU5UX01BWDsKIAogICAgIHVpbnQzMl90
IGFzSW5kZXgoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbCA/IHRvVUludDMyRnJvbVN0
cmluZ0ltcGwobV9pbXBsKSA6IE5vdEFuSW5kZXg7CisgICAgICAgIHJldHVybiAobV9pbXBsICYm
ICFtX2ltcGwtPmlzVW5pcXVlKCkpID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDog
Tm90QW5JbmRleDsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5jcHAKaW5kZXggNDQ3NWI4OThhOTc0OTc3Y2U2OGU0NzU5ZGNhZDA2YmQ2YTA0ODM3
My4uMzE3NmViZWVjMDMzMjY5MzM1NDZlNDU1YWQyMmEwMjkzYzNhNzExZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcApAQCAt
MzEsOSArMzEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBQcm9wZXJ0eU5hbWVBcnJheTo6
YWRkKFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFpZGVudGlmaWVyIHx8
IGlkZW50aWZpZXIgPT0gU3RyaW5nSW1wbDo6ZW1wdHkoKSB8fCBpZGVudGlmaWVyLT5pc0F0b21p
YygpKTsKKyAgICBBU1NFUlQoIWlkZW50aWZpZXIgfHwgKCFpZGVudGlmaWVyLT5pc1ByaXZhdGUo
KSAmJiBpZGVudGlmaWVyID09IFN0cmluZ0ltcGw6OmVtcHR5KCkgfHwgaWRlbnRpZmllci0+aXNB
dG9taWMoKSB8fCBpZGVudGlmaWVyLT5pc1VuaXF1ZSgpKSk7CiAgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKLSAgICAgICAgdWludDMyX3QgaW5kZXggPSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmll
cihtX3ZtLCBpZGVudGlmaWVyKSkuYXNJbmRleCgpOworICAgICAgICB1aW50MzJfdCBpbmRleCA9
IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlkZW50aWZpZXIpKS5hc0lu
ZGV4KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5kZXgsIGluZGV4ID09IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCB8fCBpbmRleCA+PSBtX3ByZXZpb3VzbHlFbnVtZXJhdGVkTGVuZ3RoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TmFtZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5oCmluZGV4IDk5NGYwOWM5MDU0MDExZTQxYjIzMzhmOWQwNTA0YjJkNDliZmYzOWEu
Ljg5ZmNiZGVjZjdlODFjZTIzNWQ0YjEwM2U1OTQ2OWM5ODExYTdjNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaApAQCAtOTgsNyAr
OTgsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheSB7CiAgICAgdm9pZCBhZGRLbm93blVuaXF1
ZShTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgbV9zZXQtPmFkZChpZGVu
dGlmaWVyKTsKLSAgICAgICAgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5hcHBlbmQoSWRl
bnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSk7CisgICAgICAgIG1fZGF0YS0+cHJvcGVydHlOYW1l
VmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgaWRlbnRpZmllcikpOwog
ICAgIH0KIAogICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWduZWQgaSkgeyByZXR1cm4g
bV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IDQ1ZTgwZjVjZGMx
NWE1NmYyYzY2MmI1MzRiNWQyZGRkYjViZmU5OTIuLmVlMWQ4YjNmYzY5Zjk0M2I5NGE1MjU5Y2Y3
YzE4NmNhYzYzNzNmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgUmVnRXhwQ29uc3RydWN0
b3I6OlJlZ0V4cENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4
cFByb3RvdHkKIAogdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJSZWdFeHAiKS5zdHJpbmcoKSk7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sIHJlZ0V4cFByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNz
TmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogCiAgICAgLy8gRUNNQSAxNS4x
MC41LjEgUmVnRXhwLnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNGQ5ZDBiMjdlNGQwYzhjOTFmOWZlYjQ1YTFkNTRlNTk1
ZDMzZDUxOS4uNTQ5YTNhMmY5YTc0YzNhMWE5ZGM3MDAxMDQxMmZhNDc5ZDkxYTg1YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMDUs
MjEgKzEwNSwyMSBAQCBib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcgogCiB2b2lkIFJlZ0V4cE9iamVj
dDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUp
KQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAg
ICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFzZTo6Z2V0UHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6
Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUp
CiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAg
aWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKICAgICBCYXNl
OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRl
cmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRl
cmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDU3M2FjZmE1Y2Q3NjRiMDllZTc1NDNiMzQ3YjQ5YTUx
MTFlNzA1MzcuLjhlYTYxMDQ4ZDc0OTdlYWMwNWM5MTExYmMxMjY4M2I2Y2Y4MjQ5ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3Rv
dHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTZXRJdGVyYXRvclByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBl
KHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvclByaXZhdGVOYW1lLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVu
dW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7
CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvck5leHRQ
cml2YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApp
bmRleCBmODhlYTdjZjk4NjhmNjY4YjhjMmU4ODgxNWZmNjVjZjM5OTI3YjQ5Li40OTk2ZGEwZWE1
MzEzZmQyZTYxZTcxYTZlZjQzODM1MWZhYTNiYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTZXRQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIHNl
dFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPnZhbHVlcywgc2V0UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7
CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQ
cm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBzZXRQcm90b0Z1bmNLZXlzLCBE
b250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwogCiAgICAgR2V0
dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIHNldFByb3Rv
RnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAKaW5kZXggNTAwMWJjYzRlMWI3ZTM3OTNlZDI2ZTE0MjBhODBhNjA0NjhlMTNjNi4uYWIz
OTQ5ZTA3ZTMzZTFhMTlmNzUzNTlmMjk5ODFhMjE0OWFmMGJkNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAg
dm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICBpbnQgc2l6ZSA9IHRoaXNPYmplY3QtPmludGVy
bmFsVmFsdWUoKS0+bGVuZ3RoKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kp
CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwot
ICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmICht
b2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
aW5kZXggYzc2OTA1MTNkN2FhNzAzYjdmYjIzZDE1YzNmMjA3YTVjMGViMWQyNy4uOWY3YzJkZWQ1
MGIzOTJmZjljNWVkYTVlYmFkZGYwYzFjYzkzZTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC05NDcsNyArOTQ3LDExIEBAIHZvaWQgU3RydWN0
dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShWTSYgdm0sIFByb3BlcnR5TmFtZUFy
cmF5JiBwcm9wZXJ0CiAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gcHJvcGVydHlU
YWJsZSgpLT5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBw
cm9wZXJ0eVRhYmxlKCktPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAg
QVNTRVJUKGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgfHwgIShpdGVyLT5hdHRyaWJ1dGVz
ICYgRG9udEVudW0pKTsKLSAgICAgICAgaWYgKCFpdGVyLT5rZXktPmlzVW5pcXVlKCkgJiYgKCEo
aXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKG1vZGUpKSkgeworICAgICAgICBpZiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVu
dW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CisgICAgICAg
ICAgICBpZiAoaXRlci0+a2V5LT5pc1ByaXZhdGUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIGlmICghbW9kZS5zaG91bGRJbmNsdWRlU3ltYm9scygpICYmIGl0ZXIt
PmtleS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGlmIChrbm93blVuaXF1ZSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZEtub3du
VW5pcXVlKGl0ZXItPmtleSk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTljZTY4NjI3
NGZkNzczOTI4ZGRkNTlmZjFmOWNhZjRlZWJlMjExZS4uYWE5NGZhMzFmMWEwOTViZTM4ODRjNDE3
ODAyNDRiNzE4OGIzMDI4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtNDQsNyArNDQsNyBAQCBTeW1ib2xDb25zdHJ1
Y3Rvcjo6U3ltYm9sQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIH0K
IAogI2RlZmluZSBJTklUSUFMSVpFX1dFTExfS05PV05fU1lNQk9MUyhuYW1lKSBcCi0gICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAjbmFtZSksIFN5bWJv
bDo6Y3JlYXRlKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZS5pbXBsKCkp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAjbmFtZSksIFN5bWJv
bDo6Y3JlYXRlKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNTeW1ib2wuaW1wbCgpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiB2b2lkIFN5bWJvbENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSogcHJvdG90eXBlKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDBmNzM1NDBmNDM1OTZhNzI0NmUy
OTQyNDJiZTA1MmExZDQ1NjZkZjguLmMxYjNlODFkN2MzNzUyMTA1MzRmYWE1MGE0NWYyZmZjMDk1
OGFiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY1NiwxMCArNjU2
LDEwIEBAIEpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBlcnJvcikKICAgICAgICAgdW5zaWduZWQgbGluZTsKICAgICAgICAgdW5zaWduZWQgY29sdW1u
OwogICAgICAgICBzdGFja0ZyYW1lLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7
Ci0gICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyKHRoaXMsICJs
aW5lIiksIGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwotICAgICAgICBl
eGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcih0aGlzLCAiY29sdW1uIiksIGpz
TnVtYmVyKGNvbHVtbiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGV4Y2VwdGlv
bi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHRoaXMsICJsaW5lIiks
IGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBleGNlcHRp
b24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh0aGlzLCAiY29sdW1u
IiksIGpzTnVtYmVyKGNvbHVtbiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgICAgIGlm
ICghc3RhY2tGcmFtZS5zb3VyY2VVUkwuaXNFbXB0eSgpKQotICAgICAgICAgICAgZXhjZXB0aW9u
LT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXIodGhpcywgInNvdXJjZVVSTCIpLCBqc1N0cmlu
Zyh0aGlzLCBzdGFja0ZyYW1lLnNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7Cisg
ICAgICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh0aGlzLCAic291cmNlVVJMIiksIGpzU3RyaW5nKHRoaXMsIHN0YWNrRnJhbWUuc291cmNl
VVJMKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKICAgICB9CiAgICAgaWYgKGV4Y2VwdGlvbi0+
aXNFcnJvckluc3RhbmNlKCkgJiYgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlv
biktPmFwcGVuZFNvdXJjZVRvTWVzc2FnZSgpKSB7CiAgICAgICAgIEZpbmRGaXJzdENhbGxlckZy
YW1lV2l0aENvZGVibG9ja0Z1bmN0b3IgZnVuY3RvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3lt
Ym9scy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1v
d24tcHJvcGVydHktc3ltYm9scy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGU5M2Q4YjI0NzlkZTkyYWQ5NjBl
NzViNDJlNzkxZmQ5MjVmMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzCkBAIC0w
LDAgKzEsMzUgQEAKKy8vIFRoaXMgdGVzdHMgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scy4K
KwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpKTsKKworLy8gcHJpdmF0
ZSBuYW1lcyBmb3IgcHJpdmlsZWdlZCBjb2RlIHNob3VsZCBub3QgYmUgZXhwb3NlZC4KK2lmIChP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGdsb2JhbCkubGVuZ3RoICE9PSAwKQorICAgIHRo
cm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGds
b2JhbCkubGVuZ3RoOworCit2YXIgb2JqZWN0ID0ge307Cit2YXIgc3ltYm9sID0gU3ltYm9sKCJD
b2NvYSIpOworb2JqZWN0W3N5bWJvbF0gPSAiQ2FwcHVjY2lubyI7CitpZiAoT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBi
YWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoOwor
aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggIT09IDEpCisg
ICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMob2JqZWN0KS5sZW5ndGg7CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmpl
Y3QpWzBdICE9PSBzeW1ib2wpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIFN0cmlu
ZyhPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0pOworCitmdW5jdGlvbiBm
b3JJbihvYmopIHsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICAvLyBTeW1ib2wgc2hvdWxkIG5v
dCBiZSBlbnVtZXJhdGVkLgorICAgIGZvciAodmFyIGtleSBpbiBvYmopIGFycmF5LnB1c2goa2V5
KTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK2lmIChmb3JJbihvYmplY3QpLmxlbmd0aCAhPT0g
MCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgZm9ySW4ob2JqZWN0KS5sZW5ndGg7
CitpZiAoT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9y
OiBiYWQgdmFsdWUgIiArIE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoOworCitkZWxldGUgb2Jq
ZWN0W3N5bWJvbF07CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KS5sZW5n
dGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUg
IiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1kZWZpbmUtcHJv
cGVydHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1kZWZp
bmUtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFjM2VjMDVmODA2ZTM3MjU3NzM2MjQ4MjYxOTgx
NTIzMGI2YjNkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDMzIEBACisvLyBU
aGlzIHRlc3RzIE9iamVjdC5jcmVhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgT2JqZWN0LmRl
ZmluZVByb3BlcnRpZXMgd29yayB3aXRoIFN5bWJvbC4KKworZnVuY3Rpb24gdGVzdFN5bWJvbChv
YmplY3QpIHsKKyAgICBpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3Ip
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IG9iamVjdCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0ZXJh
dG9yIjsKKyAgICBpZiAob2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJvbC5pdGVyYXRv
cikpCisgICAgICAgIHRocm93ICJFcnJvcjogU3ltYm9sLml0ZXJhdG9yIGlzIGRlZmluZWQgYXMg
ZW51bWVyYWJsZSI7CisgICAgaWYgKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAhPT0gJ3sidmFsdWUiOjQyLCJ3
cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUiOmZhbHNlfScp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2NyaXB0b3IgIiArIEpTT04u
c3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wu
aXRlcmF0b3IpKTsKKyAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3Qp
Lmxlbmd0aCAhPT0gMSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgT2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aDsKKyAgICBpZiAoT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdICE9PSBTeW1ib2wuaXRlcmF0b3IpCisgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scyhvYmplY3QpWzBdKTsKK30KKwordmFyIG9iamVjdCA9IE9iamVjdC5jcmVhdGUoT2Jq
ZWN0LnByb3RvdHlwZSwgeworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7CisgICAgICAgIHZhbHVl
OiA0MgorICAgIH0KK30pOwordGVzdFN5bWJvbChvYmplY3QpOworCit2YXIgb2JqZWN0ID0gT2Jq
ZWN0LmRlZmluZVByb3BlcnRpZXMoe30sIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogeworICAg
ICAgICB2YWx1ZTogNDIKKyAgICB9Cit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsKKwordmFyIG9i
amVjdCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgU3ltYm9sLml0ZXJhdG9yLCB7CisgICAg
dmFsdWU6IDQyCit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZjUwN2NkOWVlNTNjNTFiMmMyMTljNzI4YzRkM2M1NWVkZDc3YzVjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1i
b2wtc2VhbC1hbmQtZnJlZXplLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vIFRoaXMgdGVzdHMgT2Jq
ZWN0LnNlYWwgYW5kIE9iamVjdC5mcmVlemUgYWZmZWN0IG9uIFN5bWJvbCBwcm9wZXJ0aWVzLgor
Cit2YXIgb2JqZWN0ID0geworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiA0MgorfTsKKworaWYgKCFv
YmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICB0aHJvdyAiRXJyb3I6
IG9iamVjdCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsKK2lmIChKU09OLnN0cmluZ2lm
eShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9y
KSkgIT09ICd7InZhbHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUiOnRydWUsImNv
bmZpZ3VyYWJsZSI6dHJ1ZX0nKQorICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2Ny
aXB0b3IgIiArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKTsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzKG9iamVjdCkubGVuZ3RoICE9PSAxKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIg
KyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSAhPT0gU3ltYm9sLml0ZXJhdG9yKQor
ICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scyhvYmplY3QpWzBdKTsKKworT2JqZWN0LnNlYWwob2JqZWN0KTsKK2lmICghb2Jq
ZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikpCisgICAgdGhyb3cgIkVycm9yOiBv
YmplY3QgZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVyYXRvciI7CitpZiAoSlNPTi5zdHJpbmdpZnko
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikp
ICE9PSAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25m
aWd1cmFibGUiOmZhbHNlfScpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcHJvcGVydHkgZGVzY3Jp
cHRvciAiICsgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihv
YmplY3QsIFN5bWJvbC5pdGVyYXRvcikpOworCitPYmplY3QuZnJlZXplKG9iamVjdCk7CitpZiAo
IW9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpKQorICAgIHRocm93ICJFcnJv
cjogb2JqZWN0IGRvZXNuJ3QgaGF2ZSBTeW1ib2wuaXRlcmF0b3IiOworaWYgKEpTT04uc3RyaW5n
aWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0
b3IpKSAhPT0gJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOnRydWUs
ImNvbmZpZ3VyYWJsZSI6ZmFsc2V9JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBwcm9wZXJ0eSBk
ZXNjcmlwdG9yICIgKyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Mw
M2Q1ZDVhMTFkNDgyYWFmNjAzOGNjMGE0N2Y5NzE5YzVkOWY5YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXdpdGgtanNvbi5qcwpA
QCAtMCwwICsxLDE0IEBACisvLyBUaGlzIHRlc3RzIEpTT04gY29ycmVjdGx5IGJlaGF2ZXMgd2l0
aCBTeW1ib2wuCisKK2lmIChKU09OLnN0cmluZ2lmeShTeW1ib2woJ0NvY29hJykpICE9PSB1bmRl
ZmluZWQpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIEpTT04uc3RyaW5naWZ5KFN5
bWJvbCgnQ29jb2EnKSk7CisKK3ZhciBvYmplY3QgPSB7fTsKK3ZhciBzeW1ib2wgPSBTeW1ib2wo
IkNvY29hIik7CitvYmplY3Rbc3ltYm9sXSA9IDQyOworb2JqZWN0WydDYXBwdWNjaW5vJ10gPSA0
MjsKK2lmIChKU09OLnN0cmluZ2lmeShvYmplY3QpICE9PSAneyJDYXBwdWNjaW5vIjo0Mn0nKQor
ICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBKU09OLnN0cmluZ2lmeShvYmplY3QpOwor
CitpZiAoSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBbIFN5bWJvbCgnQ29jb2EnKSBdKSAhPT0gInt9
IikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgSlNPTi5zdHJpbmdpZnkob2JqZWN0
LCBbIFN5bWJvbCgnQ29jb2EnKSBdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApp
bmRleCAwNjI5MGMyNGU0NzNkM2U5NjViNDUwNDAwMGE2M2EyYTcyMDA4ZjVjLi45ZjEzMGVkY2Yy
OGNiZjJmNWYwYTEwNTg3MTcwMTYxYjQxMjEwZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuY3BwCkBAIC00MDMsNiArNDAzLDkgQEAgUmVmPFN0cmluZ0ltcGw+IEF0b21pY1N0cmlu
Zzo6YWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQogICAgIGlmICghc3RyaW5nLmxlbmd0
aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7CiAKKyAgICBpZiAoc3Ry
aW5nLmlzVW5pcXVlKCkpCisgICAgICAgIHJldHVybiBhZGQoc3RyaW5nLmV4dHJhY3RGb2xkZWRT
dHJpbmdJblVuaXF1ZSgpKTsKKwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0
b21pYygpLCAiQXRvbWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhl
IHN0cmluZyBpcyBhbHJlYWR5IGF0b21pYy4iKTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9j
a2VyIGxvY2tlcjsKQEAgLTQyMSw2ICs0MjQsOSBAQCBSZWY8U3RyaW5nSW1wbD4gQXRvbWljU3Ry
aW5nOjphZGRTbG93Q2FzZShBdG9taWNTdHJpbmdUYWJsZSYgc3RyaW5nVGFibGUsIFN0cmluZwog
ICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVt
cHR5KCk7CiAKKyAgICBpZiAoc3RyaW5nLmlzVW5pcXVlKCkpCisgICAgICAgIHJldHVybiBhZGQo
c3RyaW5nVGFibGUsIHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKSk7CisKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZyBz
aG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBhdG9t
aWMuIik7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CkBAIC01MDMsNiAr
NTA5LDEyIEBAIEF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZFNsb3dDYXNlKFN0
cmluZ0ltcGwmIHN0cmluZykKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNB
dG9taWMoKSwgIkF0b21pY1N0cmluZ0ltcGxzIHNob3VsZCByZXR1cm4gZnJvbSB0aGUgZmFzdCBj
YXNlLiIpOwogCisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CisKKyAgICBp
ZiAoc3RyaW5nLmlzVW5pcXVlKCkpCisgICAgICAgIHJldHVybiBmaW5kKCZzdHJpbmcuZXh0cmFj
dEZvbGRlZFN0cmluZ0luVW5pcXVlKCkpOworCiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIg
bG9ja2VyOwogICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNTdHJpbmdUYWJsZSA9IHN0
cmluZ1RhYmxlKCk7CiAgICAgYXV0byBpdGVyYXRvciA9IGF0b21pY1N0cmluZ1RhYmxlLmZpbmQo
JnN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCBiYWU5ZDM2MmQyNzUx
ZTVhNzNjZTBiMWI3ZTJhNDExYjAxODM3ZjMzLi42MDljZjczMWQyN2JmYzA2NzhkNmM2OTgzYzRj
YjA4YjZhMjI5MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTE4MywxMSAr
MTgzLDkgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHN0cmluZykKICAgICB7Ci0gICAgICAgIGlmICghc3Ry
aW5nIHx8IHN0cmluZy0+aXNBdG9taWMoKSkgewotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghc3RyaW5nIHx8ICFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8
fCBpc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVz
IGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBpZiAoIXN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBzdHJpbmc7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNl
KCpzdHJpbmcpOworICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmcpOwogICAgIH0KICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERh
dGEoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICNpZiBVU0UoQ0Yp
CkBAIC0xOTcsMTEgKzE5NSw5IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgU3RyaW5nVGFibGVQcm92aWRlcj4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoU3RyaW5nVGFibGVQ
cm92aWRlciYgc3RyaW5nVGFibGVQcm92aWRlciwgU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIHsK
LSAgICAgICAgaWYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKSB7Ci0gICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcgfHwgIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3Ry
aW5nLT5pc1VuaXF1ZSgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0
b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgIGlmICgh
c3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gYWRkU2xvd0Nhc2UoKnN0cmluZ1RhYmxlUHJvdmlkZXIuYXRvbWljU3RyaW5nVGFibGUo
KSwgKnN0cmluZyk7CisgICAgICAgIHJldHVybiBhZGQoKnN0cmluZ1RhYmxlUHJvdmlkZXIuYXRv
bWljU3RyaW5nVGFibGUoKSwgKnN0cmluZyk7CiAgICAgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RApAQCAtMjEzLDcgKzIwOSwyNSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAgIEF0b21pY1N0
cmluZyhBU0NJSUxpdGVyYWwpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwotICAgIAorCisgICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsJiBzdHJp
bmcpCisgICAgeworICAgICAgICBpZiAoc3RyaW5nLmlzQXRvbWljKCkpIHsKKyAgICAgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBpc0luQXRvbWljU3RyaW5n
VGFibGUoJnN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRo
cmVhZCEiKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChBdG9taWNTdHJpbmdUYWJsZSYgc3RyaW5nVGFibGUs
IFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmIChzdHJpbmcuaXNBdG9taWMo
KSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8
IGlzSW5BdG9taWNTdHJpbmdUYWJsZSgmc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVz
IGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3RyaW5nVGFibGUsIHN0cmluZyk7
CisgICAgfQorCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1RhYmxlJiwgU3Ry
aW5nSW1wbCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCBjMjQ5ZjRkN2Zm
ZDVkYWJlZTE2NDA2NGE2MjE5MjRkY2YzNDU3ZGM4Li4yNzJlYzlhOTlkOThlMWRkNjk2NzM1YmUw
NjZhNGYxOThmMjAxZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTI5Miw3
ICsyOTIsOCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlKFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVwKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4g
Y3JlYXRlVW5pcXVlRW1wdHkoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gc3RyaW5nID0gY3JlYXRl
U3Vic3RyaW5nU2hhcmluZ0ltcGwocmVwLCAwLCBsZW5ndGgpOwotICAgIHN0cmluZy0+bV9oYXNo
QW5kRmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc3RyaW5nLT5tX2hhc2hBbmRGbGFncyk7
CisgICAgQVNTRVJUKCFzdHJpbmctPmlzQXRvbWljKCkpOworICAgIHN0cmluZy0+bV9oYXNoQW5k
RmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc3RyaW5nLT5tX2hhc2hBbmRGbGFncywgZmFs
c2UpOwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5k
ZXggMjY2Yjk3ZTRjODg2NjdiZjE0NjBlN2I5MWJiMDUxYzRiYTUzODk3Yi4uOGNlZTg1MGJjZWU2
NjdmNDg0YzZmZmZjZDZkNzBhZjVjOWYxYjFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
QEAgLTE0MSw2ICsxNDEsMjUgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIEJ1ZmZlclN1
YnN0cmluZywKICAgICB9OwogCisgICAgLy8gVGhlIGJvdHRvbSA2IGJpdHMgaW4gdGhlIGhhc2gg
YXJlIGZsYWdzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDY7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFnQ291bnQp
IC0gMTsKKyAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJpbmdIYXNoZXI6OmZs
YWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zvcl9TdHJpbmdJbXBs
X2ZsYWdzKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnU3RyaW5nS2luZENvdW50
ID0gNDsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnU3RyaW5nS2luZElz
VW5pcXVlID0gMXUgPDwgKHNfZmxhZ1N0cmluZ0tpbmRDb3VudCArIDEpOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzX2hhc2hNYXNrU3RyaW5nS2luZCA9ICgxdSA8PCBzX2ZsYWdTdHJpbmdL
aW5kQ291bnQpIHwgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1VuaXF1ZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgc19oYXNoRmxhZzhCaXRCdWZmZXIgPSAxdSA8PCAzOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCA9IDF1IDw8IDI7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXAgPSAoMXUgPDwgMCkg
fCAoMXUgPDwgMSk7CisKKyAgICBlbnVtIFN0cmluZ0tpbmQgeworICAgICAgICBTdHJpbmdBdG9t
aWMgPSAwdSA8PCBzX2ZsYWdTdHJpbmdLaW5kQ291bnQsCisgICAgICAgIFN0cmluZ05vcm1hbCA9
IDF1IDw8IHNfZmxhZ1N0cmluZ0tpbmRDb3VudCwKKyAgICAgICAgU3RyaW5nVW5pcXVlID0gMnUg
PDwgc19mbGFnU3RyaW5nS2luZENvdW50LAorICAgICAgICBTdHJpbmdVbmlxdWVQcml2YXRlID0g
M3UgPDwgc19mbGFnU3RyaW5nS2luZENvdW50LAorICAgIH07CisKICAgICAvLyBVc2VkIHRvIGNv
bnN0cnVjdCBzdGF0aWMgc3RyaW5ncywgd2hpY2ggaGF2ZSBhbiBzcGVjaWFsIHJlZkNvdW50IHRo
YXQgY2FuIG5ldmVyIGhpdCB6ZXJvLgogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgc3RhdGlj
IHN0cmluZyB3aWxsIG5ldmVyIGJlIGRlc3Ryb3llZCwgd2hpY2ggaXMgaW1wb3J0YW50IGJlY2F1
c2UKICAgICAvLyBzdGF0aWMgc3RyaW5ncyB3aWxsIGJlIHNoYXJlZCBhY3Jvc3MgdGhyZWFkcyAm
IHJlZi1jb3VudGVkIGluIGEgbm9uLXRocmVhZHNhZmUgbWFubmVyLgpAQCAtMTUwLDcgKzE2OSw3
IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEZs
YWdJc1N0YXRpY1N0cmluZykKICAgICAgICAgLCBtX2xlbmd0aCgwKQogICAgICAgICAsIG1fZGF0
YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAgICwg
bV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBzX2hhc2hGbGFnSXNBdG9taWMg
fCBCdWZmZXJPd25lZCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1
ZmZlciB8IFN0cmluZ0F0b21pYyB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAgICAgLy8gRW5z
dXJlIHRoYXQgdGhlIGhhc2ggaXMgY29tcHV0ZWQgc28gdGhhdCBBdG9taWNTdHJpbmdIYXNoIGNh
biBjYWxsIGV4aXN0aW5nSGFzaCgpCiAgICAgICAgIC8vIHdpdGggaW1wdW5pdHkuIFRoZSBlbXB0
eSBzdHJpbmcgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IGlzIG5ldmVyIGVudGVyZWQgaW50bwpAQCAt
MTY3LDcgKzE4Niw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQo
c19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAg
ICwgbV9kYXRhOCh0YWlsUG9pbnRlcjxMQ2hhcj4oKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFn
cyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKQorICAgICAgICAsIG1faGFz
aEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50
ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAgICAgICAgIEFTU0VSVCht
X2xlbmd0aCk7CkBAIC0xODAsNyArMTk5LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAg
IDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKICAgICAgICAgLCBtX2RhdGExNih0YWlsUG9pbnRlcjxVQ2hhcj4oKSkKLSAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFn
cyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X2RhdGExNik7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0xOTMsNyArMjEyLDcgQEAg
Y2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVt
ZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KGNoYXJh
Y3RlcnMubGVha1B0cigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0
QnVmZmVyIHwgQnVmZmVyT3duZWQpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxh
ZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJPd25lZCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTIwNiw3ICsy
MjUsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291
bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0
YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVySW50ZXJuYWwp
CisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwp
CiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwogICAgICAgICBBU1NFUlQobV9sZW5n
dGgpOwpAQCAtMjE4LDcgKzIzNyw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1f
cmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgp
CiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdz
KHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNo
QW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRl
cm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1f
bGVuZ3RoKTsKQEAgLTIzMSw3ICsyNTAsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAg
OiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVu
Z3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMubGVha1B0cigpKQotICAgICAgICAs
IG1faGFzaEFuZEZsYWdzKEJ1ZmZlck93bmVkKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0
cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2
KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTI0NCw3ICsyNjMsNyBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAg
ICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycykK
LSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlclN1
YnN0cmluZykKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8
IFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKICAgICB7CiAgICAgICAgIEFTU0VSVChp
czhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKQEAgLTI2MSw3ICsyODAsNyBAQCBj
bGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1l
bnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJh
Y3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVyU3Vic3RyaW5nKQorICAgICAg
ICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKICAgICB7
CiAgICAgICAgIEFTU0VSVCghaXM4Qml0KCkpOwogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwpA
QCAtMjczLDE0ICsyOTIsMTQgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIFNUUklOR19T
VEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgZW51
bSBDcmVhdGVFbXB0eVVuaXF1ZVRhZyB7IENyZWF0ZUVtcHR5VW5pcXVlIH07Ci0gICAgU3RyaW5n
SW1wbChDcmVhdGVFbXB0eVVuaXF1ZVRhZykKKyAgICBlbnVtIENyZWF0ZVVuaXF1ZUVtcHR5VGFn
IHsgQ3JlYXRlVW5pcXVlRW1wdHkgfTsKKyAgICBTdHJpbmdJbXBsKENyZWF0ZVVuaXF1ZUVtcHR5
VGFnLCBib29sIGlzUHJpdmF0ZSkKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNy
ZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgoMCkKICAgICAgICAgLy8gV2UgZXhwZWN0IG1fbGVu
Z3RoIHRvIGJlIGluaXRpYWxpemVkIHRvIDAgYXMgd2UgdXNlIGl0CiAgICAgICAgIC8vIHRvIHJl
cHJlc2VudCBhIG51bGwgdGVybWluYXRlZCBidWZmZXIuCiAgICAgICAgICwgbV9kYXRhOChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fbGVuZ3RoKSkKLSAgICAgICAgLCBtX2hhc2hB
bmRGbGFncyhoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZm
ZXJJbnRlcm5hbCkpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yVW5p
cXVlKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwsIGlzUHJpdmF0ZSkpCiAg
ICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAKQEAgLTM4MCw3ICszOTksMTIgQEAgY2xh
c3MgU3RyaW5nSW1wbCB7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlVW5pcXVlRW1wdHkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVuaXF1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZVVuaXF1ZUVtcHR5LCBmYWxzZSkpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlxdWVQcml2
YXRlRW1wdHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1w
bChDcmVhdGVVbmlxdWVFbXB0eSwgdHJ1ZSkpOwogICAgIH0KIAogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaXF1ZShQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHJlcCk7CkBAIC0zOTMsOCArNDE3LDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAK
ICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGZs
YWdJczhCaXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQotICAgIHN0YXRpYyB1
bnNpZ25lZCBmbGFnSXNBdG9taWMoKSB7IHJldHVybiBzX2hhc2hGbGFnSXNBdG9taWM7IH0KLSAg
ICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzVW5pcXVlKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzVW5p
cXVlOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc05vdEF0b21pYygpIHsgcmV0dXJuIHNf
aGFzaE1hc2tTdHJpbmdLaW5kOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIG1hc2tTdHJpbmdLaW5k
KCkgeyByZXR1cm4gc19oYXNoTWFza1N0cmluZ0tpbmQ7IH0KICAgICBzdGF0aWMgdW5zaWduZWQg
ZGF0YU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2RhdGE4
KTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgpAQCAtNDU0LDE3ICs0NzgsMjAgQEAgY2xh
c3MgU3RyaW5nSW1wbCB7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IHNpemVJ
bkJ5dGVzKCkgY29uc3Q7CiAKLSAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNVbmlxdWU7IH0KKyAgICBTdHJpbmdLaW5kIHN0cmlu
Z0tpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdHJpbmdLaW5kPihtX2hhc2hBbmRG
bGFncyAmIHNfaGFzaE1hc2tTdHJpbmdLaW5kKTsgfQorCisgICAgYm9vbCBpc1VuaXF1ZSgpIGNv
bnN0IHsgcmV0dXJuIHN0cmluZ0tpbmQoKSAmIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNVbmlxdWU7
IH0KKyAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZ0tpbmQoKSA9PSBT
dHJpbmdVbmlxdWVQcml2YXRlOyB9CisgICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJu
IHN0cmluZ0tpbmQoKSA9PSBTdHJpbmdBdG9taWM7IH0KIAotICAgIGJvb2wgaXNBdG9taWMoKSBj
b25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdJc0F0b21pYzsgfQogICAg
IHZvaWQgc2V0SXNBdG9taWMoYm9vbCBpc0F0b21pYykKICAgICB7CiAgICAgICAgIEFTU0VSVCgh
aXNTdGF0aWMoKSk7CiAgICAgICAgIEFTU0VSVCghaXNVbmlxdWUoKSk7CiAgICAgICAgIGlmIChp
c0F0b21pYykKLSAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdJc0F0b21p
YzsKKyAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzID0gKG1faGFzaEFuZEZsYWdzICYgKH5zX2hh
c2hNYXNrU3RyaW5nS2luZCkpIHwgU3RyaW5nQXRvbWljOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ0lzQXRvbWljOworICAgICAgICAgICAg
bV9oYXNoQW5kRmxhZ3MgPSAobV9oYXNoQW5kRmxhZ3MgJiAofnNfaGFzaE1hc2tTdHJpbmdLaW5k
KSkgfCBTdHJpbmdOb3JtYWw7CiAgICAgfQogCiAjaWYgU1RSSU5HX1NUQVRTCkBAIC03MDYsNiAr
NzMzLDE2IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBjb25zdCBVQ2hhciBsYXRpbjFDYXNlRm9sZFRhYmxlWzI1Nl07CiAKKyAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgU3RyaW5nSW1wbCYgZXh0cmFjdEZvbGRlZFN0cmluZ0luVW5pcXVl
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChsZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChpc1Vu
aXF1ZSgpKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0
cmluZyk7CisgICAgICAgIEFTU0VSVChzdWJzdHJpbmdCdWZmZXIoKSk7CisgICAgICAgIEFTU0VS
VCghc3Vic3RyaW5nQnVmZmVyKCktPmlzVW5pcXVlKCkpOworICAgICAgICByZXR1cm4gKnN1YnN0
cmluZ0J1ZmZlcigpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBib29sIHJlcXVpcmVzQ29weSgp
IGNvbnN0CiAgICAgewpAQCAtNzcyLDIzICs4MDksMTIgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJl
YWxsb2NhdGVJbnRlcm5hbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+LCB1bnNpZ25lZCwgQ2hhclR5
cGUqJik7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmlu
Z0ltcGw+IGNyZWF0ZUludGVybmFsKGNvbnN0IENoYXJUeXBlKiwgdW5zaWduZWQpOwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBORVZFUl9JTkxJTkUgdW5zaWduZWQgaGFzaFNsb3dDYXNlKCkgY29u
c3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1bnNpZ25lZCBoYXNoQW5kRmxhZ3NG
b3JVbmlxdWUodW5zaWduZWQgZmxhZ3MpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dW5zaWduZWQgaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHVuc2lnbmVkIGZsYWdzLCBib29sIGlzUHJp
dmF0ZSk7CiAKICAgICAvLyBUaGUgYm90dG9tIGJpdCBpbiB0aGUgcmVmIGNvdW50IGluZGljYXRl
cyBhIHN0YXRpYyAoaW1tb3J0YWwpIHN0cmluZy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZyA9IDB4MTsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19yZWZDb3VudEluY3JlbWVudCA9IDB4MjsgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcmVm
IC8gZGVyZWYgd2l0aG91dCBkaXN0dXJiaW5nIHRoZSBzdGF0aWMgc3RyaW5nIGZsYWcuCiAKLSAg
ICAvLyBUaGUgYm90dG9tIDcgYml0cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3MuCi0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0NvdW50ID0gNzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc19mbGFnTWFzayA9ICgxdSA8PCBzX2ZsYWdDb3VudCkgLSAxOwotICAgIENPTVBJTEVfQVNT
RVJUKHNfZmxhZ0NvdW50IDw9IFN0cmluZ0hhc2hlcjo6ZmxhZ0NvdW50LCBTdHJpbmdIYXNoZXJf
cmVzZXJ2ZXNfZW5vdWdoX2JpdHNfZm9yX1N0cmluZ0ltcGxfZmxhZ3MpOwotCi0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdJc1VuaXF1ZSA9IDF1IDw8IDY7Ci0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWc4Qml0QnVmZmVyID0gMXUgPDwgNTsKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0lzQXRvbWljID0gMXUgPDwgNDsKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgPSAxdSA8PCAzOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hNYXNrQnVmZmVyT3duZXJzaGlwID0gMXUgfCAo
MXUgPDwgMSk7Ci0KICNpZiBTVFJJTkdfU1RBVFMKICAgICBXVEZfRVhQT1JUREFUQSBzdGF0aWMg
U3RyaW5nU3RhdHMgbV9zdHJpbmdTdGF0czsKICNlbmRpZgpAQCAtODAzLDcgKzgyOSw3IEBAIGNs
YXNzIFN0cmluZ0ltcGwgewogCiAgICAgICAgIC8vIFRoZXNlIHZhbHVlcyBtaW1pYyBDb25zdHJ1
Y3RGcm9tTGl0ZXJhbC4KICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlhbFJl
ZkNvdW50ID0gc19yZWZDb3VudEluY3JlbWVudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHNfaW5pdGlhbEZsYWdzID0gc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5h
bDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlhbEZsYWdzID0gc19oYXNo
RmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbDsKICAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaFNoaWZ0ID0gc19mbGFnQ291bnQ7CiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKaW5kZXggNjViYjY3MjFkNzQzZmEx
MDQxYzI5MmI2MGY0ZDAzMjkyODNkOGU1MS4uMDdkOGRmMjVmM2IyOGYwZDc2MzFjYmFkMjBiZmEz
NDJkMzMyOGVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNz
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCkBAIC01Miwx
MiArNTIsMTIgQEAgU3RyaW5nSW1wbCogU3RyaW5nSW1wbDo6ZW1wdHkoKQogLy8ga2V5cyBtZWFu
cyB0aGF0IHdlIGRvbid0IG5lZWQgdGhlbSB0byBtYXRjaCBhbnkgb3RoZXIgc3RyaW5nIChpbiBm
YWN0LAogLy8gdGhhdCdzIGV4YWN0bHkgdGhlIG9wb3NpdGUgb2Ygd2hhdCB3ZSB3YW50ISksIGFu
ZCB0aGUgbm9ybWFsIGhhc2ggd291bGQKIC8vIGxlYWQgdG8gbG90cyBvZiBjb25mbGljdHMuCi11
bnNpZ25lZCBTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUodW5zaWduZWQgZmxhZ3Mp
Cit1bnNpZ25lZCBTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUodW5zaWduZWQgZmxh
Z3MsIGJvb2wgaXNQcml2YXRlKQogewogICAgIHN0YXRpYyB1bnNpZ25lZCBzX25leHRIYXNoQW5k
RmxhZ3NGb3JVbmlxdWUgPSAwOwogICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSArPSAx
IDw8IHNfZmxhZ0NvdW50OwogICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSB8PSAxIDw8
IDMxOwotICAgIHVuc2lnbmVkIGZsYWdzRm9yVW5pcXVlID0gKGZsYWdzICYgc19mbGFnTWFzaykg
fCBzX2hhc2hGbGFnSXNBdG9taWMgfCBzX2hhc2hGbGFnSXNVbmlxdWU7CisgICAgdW5zaWduZWQg
ZmxhZ3NGb3JVbmlxdWUgPSAoKGZsYWdzICYgc19mbGFnTWFzaykgJiAofnNfaGFzaE1hc2tTdHJp
bmdLaW5kKSkgfCAoaXNQcml2YXRlID8gU3RyaW5nVW5pcXVlUHJpdmF0ZSA6IFN0cmluZ1VuaXF1
ZSk7CiAgICAgcmV0dXJuIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSB8IGZsYWdzRm9yVW5p
cXVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KaW5kZXggMTgzYzQ3OTA1NzdiMDRiODI0
YTU2MDM1NDdiZmIwNGI1YzcxNjRkZi4uNzNhNDQ4MzEyOTRlMzZjMzQxOWM2N2IyOTdlNjcyYzZl
Yzc1ZDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpAQCAtMTU4LDcgKzE1OCw3IEBAIGJv
b2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5q
ZWN0ZWQoKQogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAKLSAgICBKU0M6
OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpT
Qzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7CisgICAgSlND
OjpKU1ZhbHVlIHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50
IikpOwogICAgIGlmIChyZXBsYWNlbWVudEZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAKICAgICAvLyBMb29rdXAgdGhlICJj
cmVhdGVQbHVnaW5SZXBsYWNlbWVudCIgZnVuY3Rpb24uCi0gICAgSlNDOjpKU1ZhbHVlIHJlcGxh
Y2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIo
ZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOworICAgIEpTQzo6SlNWYWx1ZSByZXBs
YWNlbWVudEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKICAgICBpZiAo
cmVwbGFjZW1lbnRGdW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgSlNDOjpKU09iamVjdCogcmVwbGFjZW1lbnRPYmplY3QgPSByZXBsYWNlbWVu
dEZ1bmN0aW9uLnRvT2JqZWN0KGV4ZWMpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290
KQogICAgIH0KIAogICAgIC8vIEdldCB0aGUgPHZpZGVvPiBjcmVhdGVkIHRvIHJlcGxhY2UgdGhl
IHBsdWctaW4uCi0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMs
IEpTQzo6SWRlbnRpZmllcihleGVjLCAidmlkZW8iKSk7CisgICAgSlNDOjpKU1ZhbHVlIHZhbHVl
ID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAidmlkZW8iKSk7CiAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSAmJiAhdmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSkKICAgICAgICAgbV9tZWRpYUVsZW1lbnQgPSBKU0hUTUxWaWRlb0Vs
ZW1lbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCBib29sIFF1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9v
dCkKICAgICB9CiAKICAgICAvLyBHZXQgdGhlIHNjcmlwdGluZyBpbnRlcmZhY2UuCi0gICAgdmFs
dWUgPSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJzY3JpcHRP
YmplY3QiKSk7CisgICAgdmFsdWUgPSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzY3JpcHRPYmplY3QiKSk7CiAgICAgaWYgKCFleGVjLT5o
YWRFeGNlcHRpb24oKSAmJiAhdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgbV9z
Y3JpcHRPYmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAppbmRleCBkZjRkYzc4NjJkMmRhYWE5ZjJiNjc2ZDFlZDMx
NzJhMmYzZWFmZDI5Li40Y2QwODM4ZjM2NDI1MzgzZThjMTg4ODI2NmY4MjEyMWEwMGU3NWIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAtNjMsNyArNjMs
NyBAQCBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4mIG1hcCkgYwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGlj
dGlvbmFyeS5leGVjU3RhdGUoKTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFt
ZXMoZXhlYyk7Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9wZXJ0
eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0
ICE9IHByb3BlcnR5TmFtZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tl
eSA9IGl0LT5zdHJpbmcoKTsKICAgICAgICAgaWYgKHN0cmluZ0tleS5pc0VtcHR5KCkpCkBAIC04
OCw3ICs4OCw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyhWZWN0b3I8
U3RyaW5nPiYgbmFtZXMpIGNvbnN0CiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5
LmV4ZWNTdGF0ZSgpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVj
KTsKLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFy
cmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJv
cGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAgICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQt
PnN0cmluZygpOwogICAgICAgICBpZiAoIXN0cmluZ0tleS5pc0VtcHR5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IGJi
NTAxOGMxNzk5MmQ2MGQyZWYyNGJmZWQ2ODEwYjIyNDcxNzI3MTYuLjZmODA2NjE0ZWE0YjBjYjQx
NmE1M2YyNzI5MmQ5Y2VkOTVjZjY5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBi
b29sIGdldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtl
eVBhdGhFbGVtZW50LCBKCiAgICAgfQogICAgIGlmICghb2JqZWN0LmlzT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJmV4ZWMtPnZtKCks
IGtleVBhdGhFbGVtZW50LnV0ZjgoKS5kYXRhKCkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmll
ciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksIGtleVBhdGhFbGVtZW50LnV0
ZjgoKS5kYXRhKCkpOwogICAgIGlmICghYXNPYmplY3Qob2JqZWN0KS0+aGFzUHJvcGVydHkoZXhl
YywgaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQgPSBhc09i
amVjdChvYmplY3QpLT5nZXQoZXhlYywgaWRlbnRpZmllcik7CkBAIC03MCw3ICs3MCw3IEBAIHN0
YXRpYyBib29sIHNldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUmIG9iamVjdCwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoRWxlbWVudCwKIHsKICAgICBpZiAoIWNhblNldChvYmplY3QsIGtleVBhdGhF
bGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmll
cigmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CisgICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwga2V5
UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CiAgICAgYXNPYmplY3Qob2JqZWN0KS0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIGlkZW50aWZpZXIsIGpzVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xh
cmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVE
ZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggODk2Yjk5Y2U5MWI3MmM2Y2ZlODAyYjE3Y2JkMDcw
ZjI0NWQ0YTQ3ZC4uY2Y4YzZiYWU3NWU0YTdkNWQ5M2I3NzRjNWI2NDU3NGY0ZGFhYTE0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBKU0NTU1N0eWxlRGVj
bGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGUKIAogICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzID0gbmV3IElkZW50aWZpZXJbbnVt
Q1NTUHJvcGVydGllc107CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVy
dGllczsgKytpKQotICAgICAgICAgICAgcHJvcGVydHlJZGVudGlmaWVyc1tpXSA9IElkZW50aWZp
ZXIoZXhlYywganNQcm9wZXJ0eU5hbWVzW2ldLmltcGwoKSk7CisgICAgICAgICAgICBwcm9wZXJ0
eUlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBqc1Byb3BlcnR5
TmFtZXNbaV0pOwogICAgIH0KIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVy
dGllczsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxs
YmFja0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEu
Y3BwCmluZGV4IGUxZDcyNWY4YzZkMTExMzQxMjE1ZTEwYmRkN2FiNjcyN2U3NGVhZDQuLjQ1MWRh
YzYyMzEzYjIzM2FkZjY1ZDhmNzBiYWIzMWMzODM2NTk3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgSlNWYWx1
ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSlNWYWx1ZSB0aGlzVmFsdWUsIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyJgogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gY2FsbGJhY2soKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2FsbGJhY2so
KSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAg
ICAgZnVuY3Rpb24gPSBjYWxsYmFjaygpLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFu
ZGxlRXZlbnQiKSk7CisgICAgICAgIGZ1bmN0aW9uID0gY2FsbGJhY2soKS0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhbmRsZUV2ZW50IikpOwogICAgICAgICBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhv
c3RDdXN0b20uY3BwCmluZGV4IGRhNTJjZWMyY2ZkY2M3NmExY2Q0MGQyZTQ1YWUwOTU2NDY1ZTFm
NzYuLjhkMmQwMjA2NGU1N2VhYTQ3ODE4MGJiOGU0NWJkMzAwNGU4ZjMxN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1
c3RvbS5jcHAKQEAgLTg5LDggKzg5LDggQEAgc3RhdGljIEpTQXJyYXkqIGdldEpTTGlzdGVuZXJG
dW5jdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnMKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEpTT2JqZWN0KiBsaXN0ZW5lckVudHJ5ID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaXN0ZW5lciIpLCBmdW5jdGlvbik7Ci0g
ICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJ1c2VDYXB0dXJlIiksIGpzQm9vbGVhbihsaXN0ZW5lckluZm8uZXZlbnRMaXN0ZW5lclZl
Y3RvcltpXS51c2VDYXB0dXJlKSk7CisgICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaXN0ZW5lciIpLCBmdW5j
dGlvbik7CisgICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ1c2VDYXB0dXJlIiksIGpzQm9vbGVhbihsaXN0ZW5l
ckluZm8uZXZlbnRMaXN0ZW5lclZlY3RvcltpXS51c2VDYXB0dXJlKSk7CiAgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgb3V0cHV0SW5kZXgrKywgSlNWYWx1ZShsaXN0ZW5lckVu
dHJ5KSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTgsNyArMTE4LDcgQEAgSlNW
YWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICBpZiAoIWxpc3RlbmVycy0+bGVuZ3RoKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZSA9IGxpc3RlbmVyc0FycmF5W2ld
LmV2ZW50VHlwZTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
ZmllcihleGVjLCBldmVudFR5cGUuaW1wbCgpKSwgSlNWYWx1ZShsaXN0ZW5lcnMpKTsKKyAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCBldmVudFR5cGUuaW1wbCgpKSwgSlNWYWx1ZShsaXN0ZW5lcnMpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAKaW5kZXggMDgxMGJjODFlOWEwNWVlYWRlZWY0
ZjBlNjY5OTRkMjFiOTM1M2FhNy4uYTlmMzcyNjU3MGUyODk0YWJhNjFlODVjYzA5ZjA5YzE0OGIx
OGY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdv
cml0aG1CdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwCkBAIC01NiwyMSArNTYsMjEgQEAgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlcj4gSlNDcnlwdG9BbGdvcml0aG1CdWls
ZGVyOjpjcmUKIHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhciog
a2V5LCB1bnNpZ25lZCB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7Ci0gICAg
SWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAgICBtX2RpY3Rpb25hcnkt
PnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNOdW1iZXIodmFsdWUpKTsKIH0KIAogdm9pZCBK
U0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwotICAgIElkZW50aWZpZXIg
aWRlbnRpZmllcigmdm0sIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qo
dm0sIGlkZW50aWZpZXIsIGpzU3RyaW5nKG1fZXhlYywgdmFsdWUpKTsKIH0KIAogdm9pZCBKU0Ny
eXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgYnVmZmVyKQogewogICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIFJlZlB0cjxVaW50OEFycmF5
PiBhcnJheVZpZXcgPSBVaW50OEFycmF5OjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGFycmF5
Vmlldy0+d3JhcChtX2V4ZWMsIHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBA
IC03OCw3ICs3OCw3IEBAIHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3Qg
Y2hhcioga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlCiB2b2lkIEpTQ3J5cHRvQWxn
b3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwgY29uc3QgQ3J5cHRvQWxnb3JpdGht
RGVzY3JpcHRpb25CdWlsZGVyJiBuZXN0ZWRCdWlsZGVyKQogewogICAgIFZNJiB2bSA9IG1fZXhl
Yy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50
aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAg
IGNvbnN0IEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlciYganNCdWlsZGVyID0gc3RhdGljX2Nhc3Q8
Y29uc3QgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyJj4obmVzdGVkQnVpbGRlcik7CiAgICAgbV9k
aWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzQnVpbGRlci5yZXN1bHQoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5LmNwcAppbmRleCA2NGQ1NmQ5NzBhNzRlNWRjMWFlYWEzODU5NWI1
NmJkMWU2MzQ2ZmUyLi40YWU2YWU1MDYyNDZlMzlmYmZjYzUyZDM3MGMwNjZmODljZTAzYzhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxn
b3JpdGhtRGljdGlvbmFyeS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBKU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnk6OmdldEFsZ29yaXRobUlkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHUKIAogc3RhdGljIEpTVmFsdWUgZ2V0UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogb2JqZWN0LCBjb25zdCBjaGFyKiBuYW1lKQogewotICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllcihleGVjLCBuYW1lKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsIG5hbWUpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7
CiAKICAgICBpZiAob2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRpZmllciwgc2xv
dCkpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIGJvb2wgZ2V0SGFzaEFsZ29yaXRobShKU0Rp
Y3Rpb25hcnkmIGRpY3Rpb25hcnksIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBkaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpOwogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBkaWN0aW9uYXJ5LmluaXRpYWxpemVyT2JqZWN0KCk7CiAKLSAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIoZXhlYywgImhhc2giKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJoYXNoIik7CiAgICAgUHJvcGVydHlTbG90IHNsb3Qo
b2JqZWN0KTsKIAogICAgIEpTVmFsdWUgaGFzaCA9IGdldFByb3BlcnR5KGV4ZWMsIG9iamVjdCwg
Imhhc2giKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
S2V5U2VyaWFsaXphdGlvbkpXSy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCmluZGV4IGE4OTE3ZDc1ZGE0ZDg0NjA0NGFmMWFl
MjllMWE5Y2U0MWQ1ZjMzMTkuLjFlMWE1MjZmMjYxMzk0NmM3ODcyMmVjOTAwMWU3NGVhZmQzZTU3
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2Vy
aWFsaXphdGlvbkpXSy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlw
dG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBib29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIEpTQXJyYXkqJiByZXN1bHQpCiB7Ci0g
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5
U2xvdCBzbG90KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
aWRlbnRpZmllciwgc2xvdCkpCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBib29sIGdldEpTQXJy
YXlGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBr
ZXksCiAKIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgSWRl
bnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBz
bG90KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRp
Zmllciwgc2xvdCkpCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21K
U09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwKIAog
c3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGpzb24sIGNvbnN0IGNoYXIqIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIElkZW50aWZpZXIg
aWRlbnRpZmllcihleGVjLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChqc29u
KTsKIAogICAgIGlmICghanNvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50aWZpZXIsIHNs
b3QpKQpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBK
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleURhdGEoKSBjb25zdAogc3RhdGljIHZvaWQg
YWRkVG9KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtl
eSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlm
aWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAganNvbi0+cHV0RGly
ZWN0KHZtLCBpZGVudGlmaWVyLCBqc1N0cmluZyhleGVjLCB2YWx1ZSkpOwogfQogCkBAIC01NDIs
MTMgKzU0MiwxMyBAQCBzdGF0aWMgdm9pZCBidWlsZEpTT05Gb3JSU0FDb21wb25lbnRzKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXlEYXRhUgogICAgICAgICBhZGRUb0pTT04o
ZXhlYywganNQcmltZUluZm8sICJ0IiwgYmFzZTY0VVJMRW5jb2RlKGRhdGEub3RoZXJQcmltZUlu
Zm9zKClbaV0uZmFjdG9yQ1JUQ29lZmZpY2llbnQpKTsKICAgICAgICAgb3RoLT5wdXREaXJlY3RJ
bmRleChleGVjLCBpLCBqc1ByaW1lSW5mbyk7CiAgICAgfQotICAgIHJlc3VsdC0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIm90aCIpLCBvdGgpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm90aCIp
LCBvdGgpOwogfQogCiBzdGF0aWMgdm9pZCBhZGRCb29sVG9KU09OKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgYm9vbCB2YWx1ZSkKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7Cisg
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtl
eSk7CiAgICAganNvbi0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc0Jvb2xlYW4odmFsdWUp
KTsKIH0KIApAQCAtNjc1LDcgKzY3NSw3IEBAIHN0YXRpYyB2b2lkIGFkZFVzYWdlc1RvSlNPTihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBDcnlwdG9LZXlVc2FnZSB1c2FnCiAgICAg
aWYgKHVzYWdlcyAmIENyeXB0b0tleVVzYWdlRGVyaXZlQml0cykKICAgICAgICAga2V5T3BzLT5w
dXREaXJlY3RJbmRleChleGVjLCBpbmRleCsrLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgQVND
SUlMaXRlcmFsKCJkZXJpdmVCaXRzIikpKTsKIAotICAgIGpzb24tPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJrZXlfb3BzIiksIGtleU9wcyk7CisgICAganNvbi0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleV9vcHMi
KSwga2V5T3BzKTsKIH0KIAogU3RyaW5nIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6c2Vy
aWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ3J5cHRvS2V5JiBrZXkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAK
aW5kZXggNzgzNjY4MTkwMmZjM2IyNDBiYWEwZTVlYThlNjZmNGQxYjBkMmY2ZC4uNTRlYjMzMTE2
M2RlNjhjOTY3YTFiNGMzYzE5ZTY1YmY1ZDRjNDljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtNzQsNyAr
NzQsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVS
SShjb25zdCBTdHJpbmcmIHByZWZpeCkKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIAotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBt
X2N1c3RvbVJlc29sdmVyLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAibG9va3VwTmFtZXNw
YWNlVVJJIikpOworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBtX2N1c3RvbVJlc29sdmVyLT5nZXQo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibG9va3VwTmFtZXNwYWNlVVJJIikp
OwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVO
b25lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmlu
Z01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01h
cEN1c3RvbS5jcHAKaW5kZXggM2FmYWFlMjM0MDc3NDlhYzdhOWYyNzIwZjNmODk3ZjBiZTU3Y2Rl
Ny4uNTI1OThjZWMyNDc1ZjE2YWJjZDkxODE3YTBjODM2MWJmNWNmYzA5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcApAQCAt
NTMsNyArNTMsNyBAQCB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAgIHRoaXNPYmplY3QtPm1f
aW1wbC0+Z2V0TmFtZXMobmFtZXMpOwogICAgIHNpemVfdCBsZW5ndGggPSBuYW1lcy5zaXplKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBuYW1lc1tpXSkpOworICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG5hbWVzW2ldKSk7CiAKICAg
ICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCmluZGV4IDQ4ZjgxODQ1MjI3NjgyMGFhYWUxZmE0ODNjZjQ3ZTQ4NDE2MGI3
NTIuLjI3MWU4MmY0ZWJjZWNjMDQ2YzQ3OTU3YmI3Zjk4MDY0MDliM2VmOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQyOCw3
ICs0MjgsNyBAQCBib29sIEpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2Jq
ZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBEb24ndCBhbGxvdyBzaGFkb3dpbmcgbG9jYXRpb24gdXNpbmcgYWNjZXNzb3Ig
cHJvcGVydGllcy4KLSAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYm
IHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpKQorICAgIGlmIChk
ZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgcHJvcGVydHlOYW1lID09IElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvY2F0aW9uIikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKQEAgLTQ0NCw3ICs0NDQs
NyBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiAgICAgaWYgKEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZURPTVdpbmRvdyhl
eGVjKS5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChhY3RpdmVGcmFtZS0+c2V0dGluZ3MoKS51c2Vz
RGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpICYmICFhY3RpdmVGcmFtZS0+dHJl
ZSgpLnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGltcGwoKSkpCi0gICAgICAgICAgICAgICAgcHV0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9uIiksIHZhbHVlKTsK
KyAgICAgICAgICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAibG9jYXRpb24iKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNTI2LDcgKzUyNiw3IEBAIGlubGluZSB2b2lkIERpYWxvZ0hhbmRs
ZXI6OmRpYWxvZ0NyZWF0ZWQoRE9NV2luZG93JiBkaWFsb2cpCiAgICAgLy8gICAgICAgIHdvcmxk
IGlmIGRpYWxvZ0FyZ3VtZW50cyBjb21lcyBmcm9tIGFuIGlzb2xhdGVkIHdvcmxkLgogICAgIEpT
RE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NV2luZG93KG1fZnJhbWUuZ2V0KCksIG5v
cm1hbFdvcmxkKG1fZXhlYy0+dm0oKSkpOwogICAgIGlmIChKU1ZhbHVlIGRpYWxvZ0FyZ3VtZW50
cyA9IG1fZXhlYy0+YXJndW1lbnQoMSkpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0
KG1fZXhlYy0+dm0oKSwgSWRlbnRpZmllcihtX2V4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlh
bG9nQXJndW1lbnRzKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QobV9leGVjLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywgImRpYWxvZ0FyZ3VtZW50cyIpLCBk
aWFsb2dBcmd1bWVudHMpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBEaWFsb2dIYW5kbGVyOjpyZXR1
cm5WYWx1ZSgpIGNvbnN0CkBAIC01MzQsNyArNTM0LDcgQEAgaW5saW5lIEpTVmFsdWUgRGlhbG9n
SGFuZGxlcjo6cmV0dXJuVmFsdWUoKSBjb25zdAogICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmpl
Y3QgPSB0b0pTRE9NV2luZG93KG1fZnJhbWUuZ2V0KCksIG5vcm1hbFdvcmxkKG1fZXhlYy0+dm0o
KSkpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIobV9leGVjLCAicmV0dXJuVmFsdWUiKTsKKyAg
ICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywg
InJldHVyblZhbHVlIik7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBpZiAoIUpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBt
X2V4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZl
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25F
dmVudEN1c3RvbS5jcHAKaW5kZXggZmNhN2M3ZWQ2YWQ1ZDg3M2UwN2EyMDI3MzcxZTc2OGY2ZTMy
YmIzNy4uZWNiYjMzZWVmODc4YzVlNWYxZTAzYzlmOGI3NjYwM2UyY2IyMjA1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1
c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90aW9u
RGF0YTo6QWNjZWxlcmF0aW9uPiByZWFkQWNjZWxlcmF0aW9uQXJndW1lbnQoSlNWYWwKICAgICAv
LyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3Qu
CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogCi0gICAgSlNW
YWx1ZSB4VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ4IikpOwor
ICAgIEpTVmFsdWUgeFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAieCIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZVggPSAheFZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCk7CkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRh
dGE6OkFjY2VsZXJhdGlvbj4gcmVhZEFjY2VsZXJhdGlvbkFyZ3VtZW50KEpTVmFsCiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEpTVmFsdWUg
eVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAieSIpKTsKKyAgICBK
U1ZhbHVlIHlWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgInkiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVZID0gIXlWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
OwpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxEZXZpY2VNb3Rpb25EYXRhOjpB
Y2NlbGVyYXRpb24+IHJlYWRBY2NlbGVyYXRpb25Bcmd1bWVudChKU1ZhbAogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlIHpWYWx1
ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInoiKSk7CisgICAgSlNWYWx1
ZSB6VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJ6IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgYm9vbCBjYW5Qcm92aWRlWiA9ICF6VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAg
LTg2LDcgKzg2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6Um90YXRp
b25SYXRlPiByZWFkUm90YXRpb25SYXRlQXJndW1lbnQoSlNWYWwKICAgICAvLyBHaXZlbiB0aGUg
YWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3QuCiAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IHZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogCi0gICAgSlNWYWx1ZSBhbHBoYVZh
bHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYWxwaGEiKSk7CisgICAg
SlNWYWx1ZSBhbHBoYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAiYWxwaGEiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVBbHBoYSA9ICFhbHBoYVZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCk7CkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERl
dmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZT4gcmVhZFJvdGF0aW9uUmF0ZUFyZ3VtZW50KEpT
VmFsCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIEpTVmFsdWUgYmV0YVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVj
LCAiYmV0YSIpKTsKKyAgICBKU1ZhbHVlIGJldGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImJldGEiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVCZXRhID0g
IWJldGFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRp
YyBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZT4gcmVhZFJvdGF0aW9u
UmF0ZUFyZ3VtZW50KEpTVmFsCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIEpTVmFsdWUgZ2FtbWFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgImdhbW1hIikpOworICAgIEpTVmFsdWUgZ2FtbWFWYWx1ZSA9IG9i
amVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImdhbW1hIikpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9v
bCBjYW5Qcm92aWRlR2FtbWEgPSAhZ2FtbWFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAt
MTE5LDE4ICsxMTksMTggQEAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6Um90
YXRpb25SYXRlPiByZWFkUm90YXRpb25SYXRlQXJndW1lbnQoSlNWYWwKIHN0YXRpYyBKU09iamVj
dCogY3JlYXRlQWNjZWxlcmF0aW9uT2JqZWN0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6OkFjY2Vs
ZXJhdGlvbiogYWNjZWxlcmF0aW9uLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIG9iamVjdC0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIngiKSwgYWNjZWxlcmF0aW9uLT5jYW5Q
cm92aWRlWCgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT54KCkpIDoganNOdWxsKCkpOwotICAg
IG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInkiKSwgYWNj
ZWxlcmF0aW9uLT5jYW5Qcm92aWRlWSgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT55KCkpIDog
anNOdWxsKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIo
ZXhlYywgInoiKSwgYWNjZWxlcmF0aW9uLT5jYW5Qcm92aWRlWigpID8ganNOdW1iZXIoYWNjZWxl
cmF0aW9uLT56KCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIngiKSwgYWNjZWxlcmF0aW9uLT5jYW5Q
cm92aWRlWCgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT54KCkpIDoganNOdWxsKCkpOworICAg
IG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgInkiKSwgYWNjZWxlcmF0aW9uLT5jYW5Qcm92aWRlWSgpID8ganNOdW1iZXIoYWNjZWxlcmF0
aW9uLT55KCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInoiKSwgYWNjZWxlcmF0aW9uLT5jYW5Qcm92
aWRlWigpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT56KCkpIDoganNOdWxsKCkpOwogICAgIHJl
dHVybiBvYmplY3Q7CiB9CiAKIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUm90YXRpb25SYXRlT2Jq
ZWN0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZSogcm90YXRpb25SYXRlLCBF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXIoZXhlYywgImFscGhhIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUFscGhhKCkgPyBqc051
bWJlcihyb3RhdGlvblJhdGUtPmFscGhhKCkpIDoganNOdWxsKCkpOwotICAgIG9iamVjdC0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImJldGEiKSwgIHJvdGF0aW9uUmF0
ZS0+Y2FuUHJvdmlkZUJldGEoKSAgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmJldGEoKSkgIDog
anNOdWxsKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIo
ZXhlYywgImdhbW1hIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUdhbW1hKCkgPyBqc051bWJl
cihyb3RhdGlvblJhdGUtPmdhbW1hKCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFscGhhIiksIHJv
dGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUFscGhhKCkgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmFs
cGhhKCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImJldGEiKSwgIHJvdGF0aW9uUmF0ZS0+Y2FuUHJv
dmlkZUJldGEoKSAgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmJldGEoKSkgIDoganNOdWxsKCkp
OworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgImdhbW1hIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUdhbW1hKCkgPyBqc051
bWJlcihyb3RhdGlvblJhdGUtPmdhbW1hKCkpIDoganNOdWxsKCkpOwogICAgIHJldHVybiBvYmpl
Y3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCmlu
ZGV4IDIwZDhmODNjZDBlNDlhYTZhMDRjM2Y2N2JjOGQyNWVlMjNiZjk4ZjAuLmU5ODQ5MDllNzZi
MjU5NDBkYTllZWNkMGQ5NjU5OWUwZThmNmY1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBKU0RpY3Rpb25hcnk6OkdldFByb3BlcnR5UmVzdWx0IEpTRGljdGlvbmFyeTo6dHJ5R2V0
UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiBmaW5hbFJlc3VsdCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIobV9leGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIFByb3BlcnR5
U2xvdCBzbG90KG1faW5pdGlhbGl6ZXJPYmplY3QuZ2V0KCkpOwogCiAgICAgaWYgKCFtX2luaXRp
YWxpemVyT2JqZWN0LmdldCgpLT5nZXRQcm9wZXJ0eVNsb3QobV9leGVjLCBpZGVudGlmaWVyLCBz
bG90KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3Bw
CmluZGV4IGEyY2YyNjhkZDY2NGY2NmFiOGZjNmE3ZDA2NGJkMmMwZDA3YzFmODguLjVmZmQzYzYz
NWFhMTUzMjRmMjY2Y2RiMGY4NmMxZTA3NzMzMzM3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQg
SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSho
YW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgLy8gSWYganNGdW5jdGlvbiBpcyBu
b3QgYWN0dWFsbHkgYSBmdW5jdGlvbiwgc2VlIGlmIGl0IGltcGxlbWVudHMgdGhlIEV2ZW50TGlz
dGVuZXIgaW50ZXJmYWNlIGFuZCB1c2UgdGhhdAogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZU5vbmUpIHsKLSAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICAgICAgaGFuZGxlRXZl
bnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKICAgICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSho
YW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmlu
ZGV4IDgxMjI1MDdiNGZiYzY4ZTEyM2Y2NzJmYTMxMDg4YTUyY2E3MGU5NjUuLjNlYmE0MjFiYzcz
NDE3NzNhYzhmNmFhNmIxMjFlYWNkMWU4MmE3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC03MCw3
ICs3MCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxs
Q29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlv
bi5pdGVtKGluZGV4KSkpOwogCiAgICAgICAgIC8vIFN1cHBvcnQgZm9yIGRvY3VtZW50LmltYWdl
cygnPG5hbWU+JykgZXRjLgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5hbWVkSXRl
bXMoZXhlYywganNDb2xsZWN0aW9uLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZykpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuYW1lZEl0ZW1zKGV4ZWMsIGpzQ29sbGVjdGlvbiwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBzdHJpbmcpKSk7CiAgICAgfQogCiAgICAgLy8g
VGhlIHNlY29uZCBhcmcsIGlmIHNldCwgaXMgdGhlIGluZGV4IG9mIHRoZSBpdGVtIHdlIHdhbnQK
QEAgLTEwNiwxMiArMTA2LDEyIEBAIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgdWludDMyX3QgaW5kZXggPSB0b1VJbnQzMkZyb21TdHJpbmdJ
bXBsKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS5pbXBsKCkp
OwogICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuaXRlbShpbmRleCkpOwotICAg
IHJldHVybiBuYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgcmV0dXJuIG5hbWVk
SXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKIH0KIAogSlNWYWx1ZSBKU0hU
TUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBuYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgSlNWYWx1ZSB2
YWx1ZSA9IG5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKICAgICBy
ZXR1cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/IGpzTnVsbCgpIDogdmFsdWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApp
bmRleCAzYWQ5YTQ3MjkwMzRjZGQwNzc2OWY3Y2U2MGM3ZGVmMmIxYzkwOTUyLi42ZDM5YzQ1OWQ3
ZDI1NTU0YTk3ZGU0ZGI3MjRkMzE2NWMyOTMzZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMTMsNyArMTEzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEUKIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6OmFsbChF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgLy8gSWYgImFsbCIgaGFzIGJlZW4gb3Zlcndy
aXR0ZW4sIHJldHVybiB0aGUgb3ZlcndyaXR0ZW4gdmFsdWUKLSAgICBKU1ZhbHVlIHYgPSBnZXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiYWxsIikpOworICAgIEpTVmFsdWUg
diA9IGdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJh
bGwiKSk7CiAgICAgaWYgKHYpCiAgICAgICAgIHJldHVybiB2OwogCkBAIC0xMjMsNyArMTIzLDcg
QEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHZv
aWQgSlNIVE1MRG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgLy8gQWRkICJhbGwiIHRvIHRoZSBwcm9wZXJ0eSBtYXAuCi0gICAgcHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImFsbCIpLCB2YWx1ZSk7CisgICAgcHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFsbCIpLCB2YWx1
ZSk7CiB9CiAKIHN0YXRpYyBEb2N1bWVudCogZmluZENhbGxpbmdEb2N1bWVudChFeGVjU3RhdGUq
IGV4ZWMpCkBAIC0xNDYsNyArMTQ2LDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUo
KSkgewogICAgICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd3JhcHBlciA9IHRvSlNET01XaW5k
b3dTaGVsbChmcmFtZSwgY3VycmVudFdvcmxkKGV4ZWMpKTsKICAgICAgICAgICAgIGlmICh3cmFw
cGVyKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHdyYXBwZXItPmdldChl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsICJvcGVuIikpOworICAgICAgICAgICAgICAgIEpTVmFsdWUg
ZnVuY3Rpb24gPSB3cmFwcGVyLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAib3BlbiIpKTsKICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAg
ICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IDo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxE
YXRhKTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCAyODY3ZDYwZjJhMDI2MjdmMDdjZDAw
YTM0MGU1OWM3ODExMjRkOTgzLi4yODQ4OTcxMmE3ZjZjY2M0OTkwN2E2YWZiMzE1ZGM1ZmQ3Yzhj
ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplYwogCiBKU1ZhbHVlIEpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246Om5hbWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IG5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0g
bmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogICAgIHJldHVybiB2
YWx1ZS5pc1VuZGVmaW5lZCgpID8ganNOdWxsKCkgOiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCBlNmEx
NDBmNTQ1ODQ5YjhhYTY0OTQ3ZTBkNjY3Zjg4MzZmNGM5YWVhLi5hMjVkY2E5OTE4YzNhZTJlZTc2
YTE4MDVhMjBkMGIxMGJkYWYxOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtNjAsNyArNjAsNyBAQCBKU1ZhbHVlIEpT
SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBJREJL
ZXlQYXRoIGtleVBhdGg7CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2U7CiAgICAgaWYg
KCFvcHRpb25zVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBKU1ZhbHVlIGtl
eVBhdGhWYWx1ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAia2V5
UGF0aCIpKTsKKyAgICAgICAgSlNWYWx1ZSBrZXlQYXRoVmFsdWUgPSBvcHRpb25zVmFsdWUuZ2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleVBhdGgiKSk7CiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogCkBAIC03MCw3ICs3MCw3IEBAIEpTVmFsdWUgSlNJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0b0luY3JlbWVudCA9IG9wdGlvbnNWYWx1
ZS5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYXV0b0luY3JlbWVudCIpKS50b0Jvb2xlYW4o
ZXhlYyk7CisgICAgICAgIGF1dG9JbmNyZW1lbnQgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImF1dG9JbmNyZW1lbnQiKSkudG9Cb29sZWFuKGV4
ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDA0MDQ0ZDM1ZDM5NTljNWYx
OGNmMmJkNWIzNTUzYmE4MmQ4MzVlZWMuLjg1MDdlNDk0YTM3NmRiNzk5ZTU2ZmJlZThiZDFjYzZk
OWQxNjc4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2Jq
ZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
T2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC02NywxMSArNjcsMTEgQEAgSlNWYWx1ZSBKU0lEQk9i
amVjdFN0b3JlOjpjcmVhdGVJbmRleChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYm9vbCB1bmlxdWUg
PSBmYWxzZTsKICAgICBib29sIG11bHRpRW50cnkgPSBmYWxzZTsKICAgICBpZiAoIW9wdGlvbnNW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHVuaXF1ZSA9IG9wdGlvbnNWYWx1
ZS5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAidW5pcXVlIikpLnRvQm9vbGVhbihleGVjKTsK
KyAgICAgICAgdW5pcXVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJ1bmlxdWUiKSkudG9Cb29sZWFuKGV4ZWMpOwogICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAot
ICAgICAgICBtdWx0aUVudHJ5ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4
ZWMsICJtdWx0aUVudHJ5IikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgbXVsdGlFbnRyeSA9
IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibXVs
dGlFbnRyeSIpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAppbmRleCA1YWFl
NWFlOTY3YWQ5M2EyN2Y4OGQzNmQ3MGU5NzhkZTljZWI0MDEwLi40YTFmYzYxYmY5ZWQ3MDA2ZDc5
YmMzYTJlMmY1ZWM2Y2E2MmIyNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbWFnZURhdGFDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEltYWdlRGF0
YSogaW1hZ2VECiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIAogICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEsIGltYWdlRGF0YSk7Ci0g
ICAgSWRlbnRpZmllciBkYXRhTmFtZShleGVjLCAiZGF0YSIpOworICAgIElkZW50aWZpZXIgZGF0
YU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJkYXRhIik7CiAgICAgd3JhcHBl
ci0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGRhdGFOYW1lLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgaW1hZ2VEYXRhLT5kYXRhKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIGV4ZWMt
PmhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KGltYWdlRGF0YS0+ZGF0YSgpLT5sZW5ndGgo
KSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3Bl
Y3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggZDg2YTQ4MGIwYzM4MDZiZGU2
N2U5ZGI0YTY2NzQyODI2NjlhZmY2Ni4uODU1MGViNDUzZjkzZmNhYWJiMzEzNjA0YWM1NDJmYzdi
NzU0NjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0
b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIHN0
YXRpYyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQXJy
YXkqIGFycmF5LCBDb250ZXh0TWVuCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJh
eS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBKU09iamVjdCogaXRlbSA9IGFzT2JqZWN0KGFy
cmF5LT5nZXRJbmRleChleGVjLCBpKSk7Ci0gICAgICAgIEpTVmFsdWUgbGFiZWwgPSBpdGVtLT5n
ZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAibGFiZWwiKSk7Ci0gICAgICAgIEpTVmFsdWUgdHlw
ZSA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ0eXBlIikpOwotICAgICAgICBK
U1ZhbHVlIGlkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImlkIikpOwotICAg
ICAgICBKU1ZhbHVlIGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAi
ZW5hYmxlZCIpKTsKLSAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgImNoZWNrZWQiKSk7Ci0gICAgICAgIEpTVmFsdWUgc3ViSXRlbXMgPSBp
dGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAic3ViSXRlbXMiKSk7CisgICAgICAgIEpT
VmFsdWUgbGFiZWwgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAibGFiZWwiKSk7CisgICAgICAgIEpTVmFsdWUgdHlwZSA9IGl0ZW0tPmdldChleGVjLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ0eXBlIikpOworICAgICAgICBKU1ZhbHVlIGlkID0g
aXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImlkIikpOworICAg
ICAgICBKU1ZhbHVlIGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAiZW5hYmxlZCIpKTsKKyAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+
Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNoZWNrZWQiKSk7CisgICAg
ICAgIEpTVmFsdWUgc3ViSXRlbXMgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAic3ViSXRlbXMiKSk7CiAgICAgICAgIGlmICghdHlwZS5pc1N0cmluZygpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNmRkZTUxMGM0MzI1NTI2Y2QyNzk3OWI4
MjJiNzEyNDYxMjc1M2JkNC4uYzMxYWRhZjc3MTYyYjgyYTg5ZDdiNDNkNzU3ZGVmYzI1OTc0MzE1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0
ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0
ZW5lci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5l
cjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAg
IGFyZ3MuYXBwZW5kKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBtX2V2ZW50UGFyYW1ldGVyTmFt
ZSkpOwogICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIG1fY29kZSkpOwog
Ci0gICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIElk
ZW50aWZpZXIoZXhlYywgbV9mdW5jdGlvbk5hbWUpLCBtX3NvdXJjZVVSTCwgbV9wb3NpdGlvbik7
IC8vIEZJWE1FOiBpcyBnbG9iYWxFeGVjIG9rPworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0g
Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1f
ZnVuY3Rpb25OYW1lKSwgbV9zb3VyY2VVUkwsIG1fcG9zaXRpb24pOyAvLyBGSVhNRTogaXMgZ2xv
YmFsRXhlYyBvaz8KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVw
b3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNv
bmRpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25k
aXRpb24uY3BwCmluZGV4IDcxNzI2YmJmMWIxZWI2NzFlMWE2YjRlZDQ4MmM2MWUyYjU4YWJjYTMu
LjdiNDExOWE1YTVkMGI3Mjg5ZjNlMTM2OGQ5MTBkNzZhNzk4ZDhiNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcApAQCAt
NTIsNyArNTIsNyBAQCBzaG9ydCBKU05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIE5vZGUqIGZpbHRlck5vZGUpCiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmaWx0ZXIsIGNhbGxEYXRh
KTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAgIGZpbHRlciA9
IGZpbHRlci5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYWNjZXB0Tm9kZSIpKTsKKyAgICAg
ICAgZmlsdGVyID0gZmlsdGVyLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJhY2NlcHROb2RlIikpOwogICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZpbHRlciwg
Y2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CiAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiTm9kZUZpbHRlciBvYmplY3QgZG9lcyBub3QgaGF2ZSBhbiBhY2NlcHROb2RlIGZ1bmN0
aW9uIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1
bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FM
UmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKaW5kZXggM2M5MmJlYjEzNGVkMDYzMzFiMzlmNjFm
MzY5ZTRkODhkYzMzM2RhMy4uOGM5ZWI4ZjljMTlmOTBhMDBhMzZkZjUzNWY5OTNiYWM3YTEzZWJl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRS
b3dMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCkBAIC03NCw3ICs3NCw3IEBAIEpTVmFsdWUgSlNTUUxS
ZXN1bHRTZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBvYmplY3QtPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIG1faW1wbC0+Y29sdW1uTmFtZXMoKVtpXSks
IGpzVmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgICAgIG9iamVjdC0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbV9pbXBsLT5jb2x1
bW5OYW1lcygpW2ldKSwganNWYWx1ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICB9CiAK
ICAgICByZXR1cm4gb2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdG9yYWdlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3Rv
cmFnZUN1c3RvbS5jcHAKaW5kZXggOTQyYzRkZmI2ZTdlNjhmODlhMGNmNzlkNTQ1ZTMxOTE0NmJj
MjczNy4uZDY0NjAzZTFiOGQyNWVkZjVkMWYyOWM1ZjcwMzcyMWI2YmNhMzMxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCkBAIC05MSw3ICs5
MSw3IEBAIHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm47CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgdGhp
c09iamVjdC0+bV9pbXBsLT5rZXkoaSwgZWMpKSk7CisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdGhpc09iamVjdC0+bV9pbXBsLT5rZXkoaSwg
ZWMpKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKaW5kZXgg
YjgxYWFjZDUwMDhiNTc0NDgyZDllYzE2M2E3YTM3MGFlZDdjZDdkNy4uNjBmYzU0NWE1Y2EzZGIx
NTg1ZjQ3NmVhNTBjMzY3NTdiMGY1YzM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
dm9pZCBzZXRJbnRlcm5hbFNsb3RUb09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2Jq
ZWN0VmFsdWUsIFByaXZhdGVOYW1lJgogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RW
YWx1ZS50b09iamVjdChleGVjKTsKICAgICBQdXRQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KG9i
amVjdFZhbHVlKTsKLSAgICBvYmplY3QtPnB1dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZy
b20obmFtZSksIHZhbHVlLCBwcm9wZXJ0eVNsb3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwg
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChuYW1lKSwgdmFsdWUsIHByb3BlcnR5U2xvdCk7CiB9
CiAKIEpTVmFsdWUgZ2V0SW50ZXJuYWxTbG90RnJvbU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgb2JqZWN0VmFsdWUsIFByaXZhdGVOYW1lJiBuYW1lKQpAQCAtNTUsNyArNTUsNyBAQCBK
U1ZhbHVlIGdldEludGVybmFsU2xvdEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IG9iamVjdFZhbHVlLCBQcml2YXRlTgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RWYWx1
ZS50b09iamVjdChleGVjKTsKICAgICBQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KG9iamVjdFZh
bHVlKTsKIAotICAgIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
KG5hbWUpOworICAgIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKG5hbWUpOwogICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5U2xvdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgcmV0dXJuIHByb3BlcnR5U2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5j
cHAKaW5kZXggY2I0OTMxZGQ1NmE3NmViMzI0YmE2ZjNkZTk1MTY0NzM0ZTgwZTQ5Yi4uMDNkNDQ3
NjU4OTc5NzhjMDA0YWQ5MzFhYzE2NDBkMzE2ODBlM2ExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHN0YXRpYyBib29sIGhhbmRsZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUp
CiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB2YWx1
ZSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7Ci0gICAgc2NyaXB0U3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJ
ZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CisgICAgc2Ny
aXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNP
YmplY3QoKSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAK
QEAgLTYxLDE0ICs2MSwxNCBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcAogewogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUt
PnZtKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBn
bG9iYWxPYmplY3QsIHZhbHVlKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0
U3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpLCB0
b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0dXJuIGhhbmRs
ZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0Ojpn
ZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QmIHZhbHVlKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlw
dFN0YXRlKTsKLSAgICBKU1ZhbHVlIGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5nZXQoc2NyaXB0U3RhdGUsIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUp
KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5nZXQoc2NyaXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUs
IG5hbWUpKTsKICAgICBpZiAoIWpzVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
ODIsNyArODIsNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgRGVwcgogYm9vbCBTY3JpcHRHbG9iYWxP
YmplY3Q6OnJlbW92ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5h
bWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIHNjcmlwdFN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5
KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNjcmlwdFN0YXRlLCBJZGVudGlm
aWVyKHNjcmlwdFN0YXRlLCBuYW1lKSk7CisgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoc2NyaXB0U3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc2NyaXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2Ny
aXB0U3RhdGUsIG5hbWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKaW5kZXggZGNhNTYwM2Y5YzM5OTYxODMzOGFmN2UwZGIzMWFkZjEwY2I2
YjZmOS4uYjFjNTI4MDdiOTAzZmFlNmNmMmQ1OGUxMGYwYmI0MDAwNzlkMzJhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CkBAIC01MjEsNyArNTIxLDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsK
ICAgICAgICAgOiBDbG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAg
ICAgICwgbV9ibG9iVVJMcyhibG9iVVJMcykKLSAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihl
eGVjLCBlbXB0eVN0cmluZygpKQorICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgZW1wdHlTdHJpbmcoKSkpCiAgICAgewogICAgICAgICB3cml0
ZShDdXJyZW50VmVyc2lvbik7CiAgICAgICAgIGZpbGxUcmFuc2Zlck1hcChtZXNzYWdlUG9ydHMs
IG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMpOwpAQCAtMTAxNCw3ICsxMDE0LDcgQEAgY2xhc3Mg
Q2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgaWYgKHN0ci5pc051bGwoKSkK
ICAgICAgICAgICAgIHdyaXRlKG1fZW1wdHlJZGVudGlmaWVyKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgd3JpdGUoSWRlbnRpZmllcihtX2V4ZWMsIHN0cikpOworICAgICAgICAgICAgd3Jp
dGUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsIHN0cikpOwogICAgIH0KIAogICAgIHZv
aWQgd3JpdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCkBAIC0xMjQ4LDcgKzEyNDgs
NyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShK
U1ZhbHVlIGluKQogICAgICAgICAgICAgICAgICAgICBsZW5ndGhTdGFjay5yZW1vdmVMYXN0KCk7
CiAKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1l
QXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFj
ay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAg
ICBhcnJheS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKGFycmF5
LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlTdGFj
ay5sYXN0KCkuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25JbmRl
eFByb3BlcnRpZXNUYWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBl
bmQoMCk7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9u
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgIGlucHV0
T2JqZWN0U3RhY2suYXBwZW5kKGluT2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNr
LmFwcGVuZCgwKTsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0
eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNr
Lmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgaW5P
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMoaW5PYmplY3QsIG1fZXhl
YywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0
TWVtYmVyOgogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CkBAIC0xMzgxLDcgKzEzODEsNyBAQCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVl
IGluKQogICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gaW5wdXRPYmplY3RT
dGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpT
U2V0Kj4ob2JqZWN0KSB8fCBqc0R5bmFtaWNDYXN0PEpTTWFwKj4ob2JqZWN0KSk7CiAgICAgICAg
ICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhl
YykpOwotICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNr
Lmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAg
ICAgICAgICAgICAgICAgICAgd3JpdGUoTm9uTWFwUHJvcGVydGllc1RhZyk7CiAgICAgICAgICAg
ICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgICAgICBnb3Rv
IG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI7CkBAIC0yNDYwLDExICsyNDYwLDExIEBAIERlc2VyaWFs
aXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoKQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoSlNWYWx1ZSB0ZXJtaW5hbCA9IHJlYWRUZXJtaW5hbCgp
KSB7Ci0gICAgICAgICAgICAgICAgcHV0UHJvcGVydHkob3V0cHV0T2JqZWN0U3RhY2subGFzdCgp
LCBJZGVudGlmaWVyKG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSksIHRlcm1pbmFsKTsK
KyAgICAgICAgICAgICAgICBwdXRQcm9wZXJ0eShvdXRwdXRPYmplY3RTdGFjay5sYXN0KCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0cmluZygpKSwgdGVy
bWluYWwpOwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKE9iamVjdEVuZFZpc2l0
TWVtYmVyKTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZVN0YWNrLmFwcGVuZChJZGVudGlmaWVy
KG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSkpOworICAgICAgICAgICAgcHJvcGVydHlO
YW1lU3RhY2suYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBjYWNoZWRTdHJp
bmctPnN0cmluZygpKSk7CiAgICAgICAgICAgICBnb3RvIHN0YXRlVW5rbm93bjsKICAgICAgICAg
fQogICAgICAgICBjYXNlIE9iamVjdEVuZFZpc2l0TWVtYmVyOiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IGIzMWUzZWI2OTUzYmJi
NDljMTZkYWFkOWIxNjBjYTFjMDAwYTI2NmEuLmM4YzZhODkzY2U5MjM1YTc5NTk4MmUyNzEzZTgy
M2UxMDU1YzUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2Ny
aXB0T2JqZWN0Lm1tCkBAIC0zMzAsNyArMzMwLDcgQEAgLSAoaWQpY2FsbFdlYlNjcmlwdE1ldGhv
ZDooTlNTdHJpbmcgKiluYW1lIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmdzCiAgICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7
CiAKLSAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgU3RyaW5nKG5hbWUpKSk7CisgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9u
ID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0
cmluZyhuYW1lKSkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVOb25lKQpAQCAtMzg0LDcgKzM4NCw3IEBAIC0gKHZvaWQpc2V0VmFsdWU6KGlk
KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4o
W3NlbGYgX2ltcF0pOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7Ci0gICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0
cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVlLCBPYmpjT2Jq
ZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CisgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0
cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVlLCBPYmpjT2Jq
ZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CiAKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAt
NDA3LDcgKzQwNyw3IEBAIC0gKGlkKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQogICAgICAg
ICAvLyBsZWF2aW5nIHRoZSBsb2NrIHBlcm1hbmVudGx5IGhlbGQKICAgICAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIAotICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0g
W3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7Cisg
ICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWRkRXhjZXB0aW9uVG9D
b25zb2xlKGV4ZWMpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIC0gKHZvaWQpcmVtb3ZlV2ViU2NyaXB0
S2V5OihOU1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwog
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlmaWVyKGV4ZWMs
IFN0cmluZyhrZXkpKSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVBy
b3BlcnR5KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0
cmluZyhrZXkpKSk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
YWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIC0gKEJPT0wp
aGFzV2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgQk9PTCByZXN1
bHQgPSBbc2VsZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJp
bmcoa2V5KSkpOworICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1Byb3BlcnR5KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKIAogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUo
ZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IGZmY2ZkOTY3YjFhZDVmOWUwOTU5YTFkMTQ2MzAwMWUzZGVjYTlhYTYu
LjM3NTUyNDM2Njk2MGY4ZTA0NTYxYjNiNTA4ZWIyZjU3MDdiYzJmNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC05NzIs
MTYgKzk3MiwxNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgQ3VzdG9tIGdldFByb3Bl
cnR5TmFtZXMgZnVuY3Rpb24gZXhpc3RzIG9uIERPTVdpbmRvdwogICAgIGlmICgkaW50ZXJmYWNl
TmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUg
PSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7Ci0gICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpT
Qzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
O1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0
U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtc
biIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldEdl
bmVyaWNQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRp
b25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMo
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYs
IEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIHVpbnQzMl90IGdldEVudW1lcmFibGVMZW5ndGgoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTT2JqZWN0Kik7XG4iKTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMifSA9IDE7CiAgICAgfQogCiAgICAgIyBDdXN0b20gZ2V0T3duUHJv
cGVydHlOYW1lcyBmdW5jdGlvbgogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tRW51bWVyYXRlUHJvcGVydHkifSB8fCAkaW5kZXhlZEdldHRlckZ1bmN0aW9u
KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9
IEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwog
ICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9
ID0gMTsgICAgICAgCiAgICAgfQogCkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRS
dW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKCRzaWduYXR1cmUpOwogICAgICAgICAgICAgICAgIG15
ICRuYW1lID0gJHNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoISR7ZW5hYmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUo
JnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwi
JG5hbWVcIikpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFt
ZVwiKSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmVtb3ZlRGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI2MDMsMTAgKzI2
MDMsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3JcbiIpOwotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhp
cy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgXCIk
bmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifSkgewogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBvYmplY3RcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0
YXRpYykgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JGltcGxUeXBlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xuIik7CkBAIC0yNzE2LDcgKzI3
MTYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0g
MCwgY291bnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDFkNTkxODliNDcyMDUxMTcxNzljNjM5YTYw
NWIzMDg2ZWRkYmY2ZWYuLmQyNGEyZWE3MDZhZTJkOTQ0MmI3MDc1Zjk1ZTI4ODMzNjU2MjA2MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zs
b2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRmxvYXQ2NEFycmF5LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgSlNGbG9hdDY0
QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxGbG9hdDY0QXJy
YXkqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKTsgKytpKQogICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKLSAgICAgQmFzZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAg
ICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOwogfQogCiBKU1ZhbHVlIEpTRmxvYXQ2NEFycmF5OjpnZXRDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXku
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJh
eS5oCmluZGV4IGZmMzg4Y2EwMTc2MGMxMmI5NTc1MDM5ZmVjNzY0MzI5M2ZlODRlMzQuLjEzZTE1
NzdlMzZjZDYxYmRkMWJjMTg3MDZiMzYwMjA4YWMzODJlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCkBA
IC01MSw3ICs1MSw3IEBAIGNsYXNzIEpTRmxvYXQ2NEFycmF5IDogcHVibGljIEpTQXJyYXlCdWZm
ZXJWaWV3IHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6
RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgRmxvYXQ2NEFycmF5KiBpbXBs
KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCA1YTIxNGQwN2Rk
MTA2MGY5ZWRlYWQ1YzljYjJiZTc5ZDg5OWI3YTk0Li5lMGFhNmQwOTMzMDZhNzBmNjY2OTA5ZjYw
ZTE5NjczYmNjNjAyYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3Vu
dCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpCiAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgICBCYXNl
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmgKaW5kZXggYmYxY2U2N2UyZmUzY2RjYjk3ZTIwMzg3ZjViMGU5ZTUwODlmMjQ3
Zi4uNDA4Y2I4ZjJmZjc5M2UzMWQxYzZlMzQyOTEyNWQzZDFmYTU0NWIxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNUZXN0
RXZlbnRUYXJnZXQgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2Rl
IG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJh
dGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAppbmRleCA4N2IyZDFiMjNiOGJjMjU5NTJkYzcxMTk3MDhlOTkxZmE4MGFiMDk1
Li43MzVhNjdhZTFiYjUxOTJlZjQ5N2YzOGFhZDM4ZTY0ZmQ0MDM5NTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApA
QCAtMTg3OSw3ICsxODc5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgLy8gU2hhZG93
aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSwg
dmFsdWUpOworICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7
CiB9CiAKIApAQCAtMjY3Miw3ICsyNjcyLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamUKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBjYXN0ZWRUaGlzLT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2
YWx1ZSk7CisgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgImNvbmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUpOwogfQogCiAjZW5k
aWYKQEAgLTI2ODcsNyArMjY4Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
NUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplCiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImNvbmRpdGlvbmFsQXR0cjUiKSwgdmFsdWUp
OworICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJjb25kaXRpb25hbEF0dHI1IiksIHZhbHVlKTsKIH0KIAogI2VuZGlmCkBA
IC0yNzAyLDcgKzI3MDIsNyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZQogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb25kaXRpb25hbEF0dHI2IiksIHZhbHVlKTsKKyAg
ICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAiY29uZGl0aW9uYWxBdHRyNiIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjg0
MCw3ICsyODQwLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3QKLSAgICBjYXN0ZWRUaGlz
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAicmVwbGFjZWFibGVBdHRy
aWJ1dGUiKSwgdmFsdWUpOworICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1
ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggOTAwMTAx
MzhhYjQ2Y2U3ZDk3NTNjYmZmMjk1ZTUzY2RmYWNkMGI1YS4uMDkwNWRlMTk3ZTU1NjEyOGQ1MjI1
YTY1ZDQxMjNlNjhkOTYyZjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3Bw
CkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAsIE5QT2JqZWN0KiBv
LCBOUElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQKICAgICAgICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5
TmFtZXMoZXhlYyk7CiAKLSAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPmdldFByb3Bl
cnR5TmFtZXMob2JqLT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlO
YW1lcyhvYmotPmltcCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCByZWFsbHkgY2FsbCBOUE5fTWVtQWxsb2MgYnV0IHRoYXQncyBpbiBXZWJLaXQK
ICAgICAgICAgTlBJZGVudGlmaWVyKiBpZGVudGlmaWVycyA9IHN0YXRpY19jYXN0PE5QSWRlbnRp
Zmllcio+KG1hbGxvYyhzaXplb2YoTlBJZGVudGlmaWVyKSAqIHNpemUpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX3V0aWxpdHkuY3BwCmluZGV4IDc3NGZkZmMzZjRlZjk1M2VmZDdiZDZmZDk2NzZm
NjQ4N2U4OTkwNzYuLmRmOTA5ZGNlNWVhZDkzODU4ZTAyMzA5Y2Q4MmRjNWE3MzIzOTVlYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIFN0
cmluZyBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KGNvbnN0IE5QU3RyaW5nKiBzdHJpbmcpCiAKIElk
ZW50aWZpZXIgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBOUFVURjgqIG5hbWUpCiB7Ci0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgY29udmVydFVU
RjhUb1VURjE2V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIC0xKSk7CisgICAgcmV0dXJuIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgY29udmVydFVURjhUb1VURjE2V2l0aExhdGluMUZhbGxi
YWNrKG5hbWUsIC0xKSk7CiB9CiAKIH0gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCmluZGV4IGNkMzRlNWYxMjAyZDdmM2FkYmRjMTgzMDk4N2VmODZiYWRlNmNj
MTMuLjU3ODkxNTg5MzlhMmFmN2I5MmZhYjkwYWY4NGFhYmU5NWFlZjdlMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI2OCw3ICsyNjgsNyBAQCBi
b29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lKQogSlNWYWx1ZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpCiB7CiAgICAgY29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiB0aGlz
T2JqZWN0ID0ganNDYXN0PGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCo+KG9iamVjdCk7Ci0g
ICAgcmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxk
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+bV9pdGVtKSk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdGhpc09iamVjdC0+bV9pdGVtKSk7CiB9CiAKIGJv
b2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICopIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggMDIyMjE5MDVjNDBlNmVk
ZmVkNTc5OTllYjIzNWY1ODkxYTdhMmUwOC4uYzcxM2ZmYTRlMjMyOTNjNjZjYzY1Y2IyOTkzZGEz
YTkyZWVkYTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAt
NzUsNyArNzUsNyBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
Zmllcjo6ZnJvbShleGVjLCBpKSk7CiAKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgpOwogCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvdGVzdGJpbmRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGlu
Z3MuY3BwCmluZGV4IDk1NzMwYzQzZDc0MDk4NTdiMWJmZDI5Mjk1MWM1NWRiMGRjYzVkZjUuLmJh
ZjI0N2QyZGI2Y2U3ZTdlZTExM2EyMTBiODdjYzMzYTcyNmEwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS90ZXN0YmluZGluZ3MuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KQogICAgICAgICAKICAgICAgICAgTXlPYmplY3QgKm15T2JqZWN0ID0g
KE15T2JqZWN0ICopTlBOX0NyZWF0ZU9iamVjdCAobXlGdW5jdGlvblB0cnMpOwogICAgICAgICAK
LSAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVyKCJteUludGVyZmFjZSIpLCBJbnN0
YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6Q0xhbmd1YWdlLCAodm9pZCAqKW15
T2JqZWN0KSk7CisgICAgICAgIGdsb2JhbC5wdXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAibXlJbnRlcmZhY2UiKSwgSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5z
dGFuY2U6OkNMYW5ndWFnZSwgKHZvaWQgKilteU9iamVjdCkpOwogICAgICAgICAKICAgICAgICAg
Zm9yIChpbnQgaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KmNvZGUgPSByZWFkSmF2YVNjcmlwdEZyb21GaWxlKGFyZ3ZbaV0pOwpAQCAtMzk0LDcgKzM5NCw3
IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgICAgICAgICAgICAg
Y2hhciogbXNnID0gZXhWYWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmFzY2lpKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8gPSAtMTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGV4VmFsLnR5cGUoKSA9PSBPYmplY3RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsSWRl
bnRpZmllcigibGluZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwg
PSBPYmplY3Q6OmR5bmFtaWNDYXN0KGV4VmFsKS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAibGluZSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lVmFs
LnR5cGUoKSA9PSBOdW1iZXJUeXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVu
byA9IGludChsaW5lVmFsLnRvTnVtYmVyKGV4ZWMpKTsKICAgICAgICAgICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KaW5kZXggYmZhY2YyMTA3NGExZWU4NTcy
MjM2ZTVhYWFjMTJjNWQ5ZTRjMjc3MC4uMzUzMmIwYTY4OWFiY2Q2ZDJkN2UxMzViMTdiMGFjNjg1
NTRlMzZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCkBAIC0yNDgsNyAr
MjQ4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAKICAgICAg
ICAgTXlGaXJzdEludGVyZmFjZSAqbXlJbnRlcmZhY2UgPSBbW015Rmlyc3RJbnRlcmZhY2UgYWxs
b2NdIGluaXRdOwogICAgICAgICAKLSAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVy
KCJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6
T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlKSk7CisgICAgICAgIGdsb2Jh
bC5wdXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibXlJbnRlcmZhY2UiKSwg
SW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFn
ZSwgKHZvaWQgKilteUludGVyZmFjZSkpOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9
IDE7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvZGUgPSByZWFk
SmF2YVNjcmlwdEZyb21GaWxlKGFyZ3ZbaV0pOwpAQCAtMjYyLDcgKzI2Miw3IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgICAgICAgICAgICAgY2hhciAqbXNnID0g
ZXhWYWwudG9TdHJpbmcoZXhlYykuYXNjaWkoKTsKICAgICAgICAgICAgICAgICAgICAgaW50IGxp
bmVubyA9IC0xOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhWYWwudHlwZSgpID09IE9iamVj
dFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwgPSBPYmplY3Q6
OmR5bmFtaWNDYXN0KGV4VmFsKS5nZXQoZXhlYyxJZGVudGlmaWVyKCJsaW5lIikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhW
YWwpLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVWYWwudHlwZSgpID09IE51bWJlclR5cGUpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGxpbmVWYWwudG9OdW1iZXIo
ZXhlYykpOwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcApp
bmRleCBmOTYyMTM4YTFlYzMzM2VjNzFjMTUwMjFiNDdmNDNjYzA3MWRmY2ZmLi42ZGE5NDMwOGYy
NDU4OWYzNmRiMjYyNDM1YWRkYjg5YmEyYzM1ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5j
cHAKQEAgLTUwLDEzICs1MCwxMyBAQCBuYW1lc3BhY2UgRXh0ZW5zaW9uc01hbmFnZXIgewogCiBz
dGF0aWMgYm9vbCBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2Jq
ZWN0LCBDb250ZW50RXh0ZW5zaW9uUnVsZTo6VHJpZ2dlciYgdHJpZ2dlcikKIHsKLSAgICBKU1Zh
bHVlIHRyaWdnZXJPYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigmZXhl
YywgInRyaWdnZXIiKSk7CisgICAgSlNWYWx1ZSB0cmlnZ2VyT2JqZWN0ID0gcnVsZU9iamVjdC5n
ZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ0cmlnZ2VyIikpOwogICAg
IGlmICghdHJpZ2dlck9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICF0cmlnZ2VyT2Jq
ZWN0LmlzT2JqZWN0KCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIHRyaWdnZXIg
b2JqZWN0LiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgSlNWYWx1ZSB1
cmxGaWx0ZXJPYmplY3QgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigmZXhl
YywgInVybC1maWx0ZXIiKSk7CisgICAgSlNWYWx1ZSB1cmxGaWx0ZXJPYmplY3QgPSB0cmlnZ2Vy
T2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgInVybC1maWx0
ZXIiKSk7CiAgICAgaWYgKCF1cmxGaWx0ZXJPYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8
fCAhdXJsRmlsdGVyT2JqZWN0LmlzU3RyaW5nKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJ
bnZhbGlkIHVybC1maWx0ZXIgb2JqZWN0LiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
OSw3ICs2OSw3IEBAIHN0YXRpYyBib29sIGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgSlNP
YmplY3QmIHJ1bGVPYmplY3QsIENvbnRlbnRFeHRlbnNpb25SCiAgICAgfQogICAgIHRyaWdnZXIu
dXJsRmlsdGVyID0gdXJsRmlsdGVyOwogCi0gICAgSlNWYWx1ZSB1cmxGaWx0ZXJDYXNlT2JqZWN0
ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ1cmwtZmlsdGVy
LWlzLWNhc2Utc2Vuc2l0aXZlIikpOworICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2FzZU9iamVjdCA9
IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAi
dXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZSIpKTsKICAgICBpZiAodXJsRmlsdGVyQ2FzZU9i
amVjdCAmJiAhZXhlYy5oYWRFeGNlcHRpb24oKSAmJiB1cmxGaWx0ZXJDYXNlT2JqZWN0LmlzQm9v
bGVhbigpKQogICAgICAgICB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9IHVybEZp
bHRlckNhc2VPYmplY3QudG9Cb29sZWFuKCZleGVjKTsKIApAQCAtNzgsMTMgKzc4LDEzIEBAIHN0
YXRpYyBib29sIGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmpl
Y3QsIENvbnRlbnRFeHRlbnNpb25SCiAKIHN0YXRpYyBib29sIGxvYWRBY3Rpb24oRXhlY1N0YXRl
JiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgQ29udGVudEV4dGVuc2lvblJ1bGU6OkFjdGlv
biYgYWN0aW9uKQogewotICAgIEpTVmFsdWUgYWN0aW9uT2JqZWN0ID0gcnVsZU9iamVjdC5nZXQo
JmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJhY3Rpb24iKSk7CisgICAgSlNWYWx1ZSBhY3Rpb25P
YmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhl
YywgImFjdGlvbiIpKTsKICAgICBpZiAoIWFjdGlvbk9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlv
bigpIHx8ICFhY3Rpb25PYmplY3QuaXNPYmplY3QoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMo
IkludmFsaWQgYWN0aW9uIG9iamVjdC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIEpTVmFsdWUgdHlwZU9iamVjdCA9IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50
aWZpZXIoJmV4ZWMsICJ0eXBlIikpOworICAgIEpTVmFsdWUgdHlwZU9iamVjdCA9IGFjdGlvbk9i
amVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ0eXBlIikpOwog
ICAgIGlmICghdHlwZU9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICF0eXBlT2JqZWN0
LmlzU3RyaW5nKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIHVybC1maWx0ZXIg
b2JqZWN0LiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCA1MTEyY2YyZWNjMzFlNjk1MDAzZTM5ZDRlY2VkYjQ5MDg2
YzRhZjUzLi4wMjcxYmVkM2JlMGRhYmY3MmE4ZjdhYjU0YjRiZTI5YmY5NGFlNzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM3MDEsNyArMzcwMSw3IEBA
IHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udHJvbGxlckpTVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0JiBnCiAgICAgaWYgKCFtZWRpYUpTV3JhcHBlck9iamVjdCkK
ICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAgICAgCi0gICAgSlNDOjpJZGVudGlmaWVy
IGNvbnRyb2xzSG9zdCgmZXhlYy52bSgpLCAiY29udHJvbHNIb3N0Iik7CisgICAgSlNDOjpJZGVu
dGlmaWVyIGNvbnRyb2xzSG9zdCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy52
bSgpLCAiY29udHJvbHNIb3N0Iik7CiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xzSG9zdEpTV3Jh
cHBlciA9IG1lZGlhSlNXcmFwcGVyT2JqZWN0LT5nZXQoJmV4ZWMsIGNvbnRyb2xzSG9zdCk7CiAg
ICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgp
OwpAQCAtMzcxMCw3ICszNzEwLDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3QmIGcKICAgICBpZiAo
IWNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxs
KCk7CiAKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbGxlcklEKCZleGVjLnZtKCksICJjb250
cm9sbGVyIik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXJJRCA9IEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmZXhlYy52bSgpLCAiY29udHJvbGxlciIpOwogICAgIEpTQzo6SlNW
YWx1ZSBjb250cm9sbGVySlNXcmFwcGVyID0gY29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0LT5n
ZXQoJmV4ZWMsIGNvbnRyb2xsZXJJRCk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwpAQCAtMzc1Miw3ICszNzUyLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKICAgICAvLyAgICAgTm9u
ZQogICAgIC8vIFJldHVybiB2YWx1ZToKICAgICAvLyAgICAgTm9uZQotICAgIEpTQzo6SlNWYWx1
ZSBtZXRob2RWYWx1ZSA9IGNvbnRyb2xsZXJPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZp
ZXIoZXhlYywgInVwZGF0ZUNhcHRpb25Db250YWluZXIiKSk7CisgICAgSlNDOjpKU1ZhbHVlIG1l
dGhvZFZhbHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAidXBkYXRlQ2FwdGlvbkNvbnRhaW5lciIpKTsKICAgICBKU0M6OkpT
T2JqZWN0KiBtZXRob2RPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+
KG1ldGhvZFZhbHVlKTsKICAgICBpZiAoIW1ldGhvZE9iamVjdCkKICAgICAgICAgcmV0dXJuOwpA
QCAtNTg3OCw3ICs1ODc4LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNv
bnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
IAotICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhl
YywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKKyAgICBKU0M6OkpT
VmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CiAgICAgaWYgKGZ1bmN0
aW9uVmFsdWUuaXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNTkwMSw3
ICs1OTAxLDcgQEAgc3RhdGljIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yUHJvcGVydHkoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBjb250cm8KIHsKICAgICBKU0M6OlB1dFByb3Bl
cnR5U2xvdCBwcm9wZXJ0eVNsb3QoY29udHJvbGxlclZhbHVlKTsKICAgICBKU0M6OkpTT2JqZWN0
KiBjb250cm9sbGVyT2JqZWN0ID0gY29udHJvbGxlclZhbHVlLnRvT2JqZWN0KGV4ZWMpOwotICAg
IGNvbnRyb2xsZXJPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChjb250cm9sbGVyT2JqZWN0LCBl
eGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgInBhZ2VTY2FsZUZhY3RvciIpLCBKU0M6OmpzTnVt
YmVyKHBhZ2VTY2FsZUZhY3RvciksIHByb3BlcnR5U2xvdCk7CisgICAgY29udHJvbGxlck9iamVj
dC0+bWV0aG9kVGFibGUoKS0+cHV0KGNvbnRyb2xsZXJPYmplY3QsIGV4ZWMsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAicGFnZVNjYWxlRmFjdG9yIiksIEpTQzo6anNOdW1iZXIo
cGFnZVNjYWxlRmFjdG9yKSwgcHJvcGVydHlTbG90KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCkBAIC01OTMw
LDcgKzU5MzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRv
d1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKICAgICAvLyBSZXR1cm4gdmFsdWU6CiAgICAgLy8gICAg
IEEgcmVmZXJlbmNlIHRvIHRoZSBjcmVhdGVkIG1lZGlhIGNvbnRyb2xsZXIgaW5zdGFuY2UuCiAK
LSAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMs
IEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CisgICAgSlNDOjpKU1Zh
bHVlIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0ZUNvbnRyb2xzIikpOwogICAgIGlmIChmdW5jdGlv
blZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTk1OCw3
ICs1OTU4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKICAgICAvLyBDb25uZWN0IHRoZSBNZWRpYSwgTWVkaWFD
b250cm9sbGVySG9zdCwgYW5kIENvbnRyb2xsZXIgc28gdGhlIEdDIGtub3dzIGFib3V0IHRoZWly
IHJlbGF0aW9uc2hpcAogICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhSlNXcmFwcGVyT2JqZWN0ID0g
bWVkaWFKU1dyYXBwZXIudG9PYmplY3QoZXhlYyk7Ci0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRy
b2xzSG9zdCgmZXhlYy0+dm0oKSwgImNvbnRyb2xzSG9zdCIpOworICAgIEpTQzo6SWRlbnRpZmll
ciBjb250cm9sc0hvc3QgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCks
ICJjb250cm9sc0hvc3QiKTsKICAgICAKICAgICBBU1NFUlQoIW1lZGlhSlNXcmFwcGVyT2JqZWN0
LT5oYXNQcm9wZXJ0eShleGVjLCBjb250cm9sc0hvc3QpKTsKIApAQCAtNTk2OCw3ICs1OTY4LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRv
d1Jvb3QqIHJvb3QpCiAgICAgaWYgKCFtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sbGVyKCZl
eGVjLT52bSgpLCAiY29udHJvbGxlciIpOworICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sbGVy
ID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLT52bSgpLCAiY29udHJvbGxlciIp
OwogCiAgICAgQVNTRVJUKCFjb250cm9sbGVyT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBjb250
cm9sbGVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCmluZGV4IGY3ZDcyZjc0YzQxMWQzMjNkOGQ0MmMwMDc2MjAyNjQyYzk3MDMwODYuLjFi
ODU2MGI0OGJiZGVlNzVkOGQ2YTc1NmJhZjkyYjlkODAyN2ZhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMzk1LDcgKzM5NSw3IEBA
IHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChT
aGFkb3dSb290KiByb290KQogICAgIGFyZ0xpc3QuYXBwZW5kKEpTQzo6anNCb29sZWFuKCFtX3Nu
YXBzaG90SW1hZ2UpKTsKIAogICAgIC8vIEl0IGlzIGV4cGVjdGVkIHRoZSBKUyBmaWxlIHByb3Zp
ZGVzIGEgY3JlYXRlT3ZlcmxheShzaGFkb3dSb290LCB0aXRsZSwgc3VidGl0bGUpIGZ1bmN0aW9u
LgotICAgIEpTQzo6SlNPYmplY3QqIG92ZXJsYXkgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBK
U0M6OklkZW50aWZpZXIoZXhlYywgImNyZWF0ZU92ZXJsYXkiKSkudG9PYmplY3QoZXhlYyk7Cisg
ICAgSlNDOjpKU09iamVjdCogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlT3ZlcmxheSIpKS50b09iamVjdChl
eGVjKTsKICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwogICAgIEpTQzo6Q2FsbFR5cGUgY2Fs
bFR5cGUgPSBvdmVybGF5LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvdmVybGF5LCBjYWxs
RGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGVOb25lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IDAyZTNm
NDllZjdjODFmZjhhNzA0MzE4NGI2NDBjMDU4ZTZmNmQ2OTcuLmI1MmQxZTYyYTU2NmI5OTZkY2Q5
MmFjOTRkNGEzMGYyNDZiYmM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBpbmplY3RJbnRl
cm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4
dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChpczxE
b2N1bWVudD4oKnNjcmlwdENvbnRleHQpKQotICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIEludGVybmFsczo6aW50ZXJuYWxzSWQpLCB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW50ZXJuYWxzOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1l
bnQ+KHNjcmlwdENvbnRleHQpKSkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIEludGVybmFsczo6aW50ZXJu
YWxzSWQpLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW50ZXJuYWxzOjpjcmVhdGUoZG93bmNh
c3Q8RG9jdW1lbnQ+KHNjcmlwdENvbnRleHQpKSkpOwogfQogCiB2b2lkIHJlc2V0SW50ZXJuYWxz
T2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRleCA5
Y2Q2NTVjOWY3MTA1MzVhOWRmMmFmNDU3ZDcwNDQ2YTZkOWI2ZTY3Li4zNDQxZTRmYjEzNzhkOTM4
NzU2NDU2ZWI5NTlkNWRmZDExZjhiYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtNjI3
LDcgKzYyNyw3IEBAIHN0YXRpYyBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJl
cChJZGVudGlmaWVyUmVwKiBpZGVudGlmaWVyKQogICAgIEFTU0VSVChpZGVudGlmaWVyLT5pc1N0
cmluZygpKTsKICAgCiAgICAgY29uc3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5nKCk7
ICAgIAotICAgIHJldHVybiBJZGVudGlmaWVyKCZKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSwgU3Ry
aW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHIsIHN0cmxlbihzdHIpKSk7CisgICAg
cmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBT
dHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKTsKIH0K
IAoga2Vybl9yZXR1cm5fdCBXS1BDSW52b2tlKG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQz
Ml90IHBsdWdpbklELCB1aW50MzJfdCByZXF1ZXN0SUQsIHVpbnQzMl90IG9iamVjdElELCB1aW50
NjRfdCBzZXJ2ZXJJZGVudGlmaWVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4
IGNhZGU5ZTFlOWZkZjdiNmY2NDEwODVkYjQ3MDNhYjg0MzM4NTNhNmQuLjNiOThmZDRlODczZDAw
ZjE3OGZhOTQ4OTU5ZmE0ODFlYjgxMWZkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KQEAgLTEyMzEsNyArMTIzMSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
OjplbnVtZXJhdGUodWludDMyX3Qgb2JqZWN0SUQsIGRhdGFfdCYgcmVzdWx0RGF0CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlO
YW1lcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
KyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5Kj4gYXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggMGRmMGRlYzBjMjQ3OGYwZmIx
ZmU4OGM2NDg5MzBiMmFhODJmMGYwMi4uNzUxYjE2YWRjYjAzZWE5ZTNjOTYxMzkwY2FjNGVhODQz
YmEwZGQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJv
eHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94
eUluc3RhbmNlLm1tCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQcm94eUluc3RhbmNlOjpnZXRQ
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIG5hbWVBcnIK
IAogICAgICAgICBpZiAoaWRlbnRpZmllci0+aXNTdHJpbmcoKSkgewogICAgICAgICAgICAgY29u
c3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5nKCk7Ci0gICAgICAgICAgICBuYW1lQXJy
YXkuYWRkKElkZW50aWZpZXIoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBTdHJpbmc6OmZyb21V
VEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKSk7CisgICAgICAgICAgICBu
YW1lQXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoJkpTRE9NV2luZG93Ojpjb21tb25W
TSgpLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikp
KSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIGlkZW50aWZpZXItPm51bWJlcigpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwCmluZGV4IDFjZWQyOTNlYjhjY2M3N2QzNzA5YjliZDM5ODA4Y2MzOTgxMjczNzcuLmZkYmU4
MWE4ZTBiZTk3Njk0OTlhYzliMmQzZTBmYTMxZGJiNTU4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAK
QEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgICAgICAgICAg
Y29uc3QgY2hhciogc3RyaW5nID0gaWRlbnRpZmllclJlcC0+c3RyaW5nKCk7CiAgICAgICAgICAg
ICBpbnQgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGlkZW50aWZpZXIgPSBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4x
RmFsbGJhY2soc3RyaW5nLCBsZW5ndGgpLmltcGwoKSk7CisgICAgICAgICAgICBpZGVudGlmaWVy
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGlu
MUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
aWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmllclJlcC0+bnVtYmVy
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXggMGQxNjY3NGU1YzE1ZjQ3MTcxODU0M2QyNWNh
NGYzMTA5YzA1MmQyMi4uYTY1Yzg5MzNmY2UwY2I4MGJkMDk2Yzc2NDc2OGMwMmMxMDhmYzA3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
SlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgSWRlbnRpZmllciBp
ZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyUmVw
KiBpZAogICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IGlkZW50aWZpZXJSZXAtPnN0cmluZygpOwog
ICAgIGludCBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKIAotICAgIHJldHVybiBJZGVudGlmaWVy
KGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5ndGgp
LmltcGwoKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5n
Ojpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkpOwogfQogCiBib29s
IE5QSlNPYmplY3Q6Omhhc01ldGhvZChOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKQEAgLTI0MCw3
ICsyNDAsNyBAQCBib29sIE5QSlNPYmplY3Q6OmVudW1lcmF0ZShOUElkZW50aWZpZXIqKiBpZGVu
dGlmaWVycywgdWludDMyX3QqIGlkZW50aWZpZXJDb3VudAogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAg
ICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG1fanNPYmplY3Qu
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVj
dC5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgIE5QSWRlbnRpZmllciogbmFtZUlkZW50aWZpZXJzID0g
bnBuTWVtTmV3QXJyYXk8TlBJZGVudGlmaWVyPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA0ZjNiZjU5NTFkODIyNjQzMzBjOGRmOGE4ZDY0OGJkMDQ4MTQ5MjZlLi4yZTA3ZmZiMTcy
MzMwZDRmNjczYjg2ZDU1N2FiNDMyMzQ4NjNlNmJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTUtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL09iamVjdC1nZXRPd25Q
cm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvT2Jq
ZWN0LWdldE93blByb3BlcnR5TmFtZXMuanM6CisKIDIwMTUtMDItMjggIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEVGTCBnYXJk
ZW5pbmcgMXN0IE1hci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Q
cm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Q
cm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAppbmRleCBmZmM2OTMwMDUwYjZiZGE2MmM1M2I1MDYx
MjI3NWQ0ODk4MzFhZDg1Li42OGI3NWU1YTI3NmUzYTkwZTkyOTdiNWRlODRiMTUyZjM2NGFkZTFm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMtZXhwZWN0ZWQudHh0CkBAIC00MCw3ICs0MCw3IEBAIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVy
dHlOYW1lcyhkZWNvZGVVUkkpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQogUEFTUyBnZXRTb3J0ZWRP
d25Qcm9wZXJ0eU5hbWVzKGRlY29kZVVSSUNvbXBvbmVudCkgaXMgWydsZW5ndGgnLCAnbmFtZSdd
CiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZW5jb2RlVVJJKSBpcyBbJ2xlbmd0aCcs
ICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhlbmNvZGVVUklDb21wb25l
bnQpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVz
KE9iamVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0
eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5
TmFtZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lz
U2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAn
cHJvdG90eXBlJywgJ3NlYWwnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVj
dCkgaXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdm
cmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMn
LCAnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lzRXh0ZW5zaWJs
ZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3By
ZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10KIFBBU1MgZ2V0U29ydGVkT3du
UHJvcGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBlKSBpcyBbJ19fZGVmaW5lR2V0dGVyX18nLCAn
X19kZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdldHRlcl9fJywgJ19fbG9va3VwU2V0dGVyX18n
LCAnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ2hhc093blByb3BlcnR5JywgJ2lzUHJvdG90
eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAndG9Mb2NhbGVTdHJpbmcnLCAndG9TdHJp
bmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRnVuY3Rpb24p
IGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJv
cGVydHlOYW1lcyhGdW5jdGlvbi5wcm90b3R5cGUpIGlzIFsnYXBwbHknLCAnYmluZCcsICdjYWxs
JywgJ2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICduYW1lJywgJ3RvU3RyaW5nJ10KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1l
cy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlO
YW1lcy5qcwppbmRleCBiNDI0YjA1ZTRkODNjMmE5YTZiYWUyYTlkMzRiMzQzZWU2MDk4MTE0Li5m
YmQ2NWRkM2FjOTdjZDhhN2QwZWRhYzQzOWZlZDdkNzgzZTAxMGQ1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVz
LmpzCkBAIC00OCw3ICs0OCw3IEBACiAgICAgImVuY29kZVVSSSI6ICJbJ2xlbmd0aCcsICduYW1l
J10iLAogICAgICJlbmNvZGVVUklDb21wb25lbnQiOiAiWydsZW5ndGgnLCAnbmFtZSddIiwKIC8v
IEJ1aWx0LWluIEVDTUEgb2JqZWN0cwotICAgICJPYmplY3QiOiAiWydjcmVhdGUnLCAnZGVmaW5l
UHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNF
eHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25h
bWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXSIsCisgICAgIk9i
amVjdCI6ICJbJ2NyZWF0ZScsICdkZWZpbmVQcm9wZXJ0aWVzJywgJ2RlZmluZVByb3BlcnR5Jywg
J2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCAnZ2V0T3duUHJvcGVydHlOYW1l
cycsICdnZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNp
YmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAn
cHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXSIsCiAgICAgIk9iamVjdC5w
cm90b3R5cGUiOiAiWydfX2RlZmluZUdldHRlcl9fJywgJ19fZGVmaW5lU2V0dGVyX18nLCAnX19s
b29rdXBHZXR0ZXJfXycsICdfX2xvb2t1cFNldHRlcl9fJywgJ19fcHJvdG9fXycsICdjb25zdHJ1
Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVt
ZXJhYmxlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXSIsCiAgICAg
IkZ1bmN0aW9uIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAogICAgICJGdW5j
dGlvbi5wcm90b3R5cGUiOiAiWydhcHBseScsICdiaW5kJywgJ2NhbGwnLCAnY29uc3RydWN0b3In
LCAnbGVuZ3RoJywgJ25hbWUnLCAndG9TdHJpbmcnXSIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247836</attachid>
            <date>2015-03-03 21:19:15 -0800</date>
            <delta_ts>2015-03-04 23:05:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150304141855.patch</filename>
            <type>text/plain</type>
            <size>259502</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwOTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZDJlYWY4OWMxZTZhNGQ2NDdjOTAwMGY3OTVjN2EyYmYxY2I4OTU3Li44MTFkMDExM2Q3NmY1MmE0
MThhNzYwNjQyNzZhZTEyMWVhMmExOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTUtMDMtMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGluL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIGBTdHJpbmdJbXBsKmAgcmVw
cmVzZW50cyB3aGV0aGVyIGl0J3MgcHJpdmF0ZSBvciBub3QuCisKKyAgICAgICAgVG8gcmVwcmVz
ZW50IGl0IGluIGBTdHJpbmdJbXBsYCwgd2UgaW50cm9kdWNlIGBTdHJpbmdLaW5kYCBpbnRvIGBT
dHJpbmdJbXBsYC4gVGhlcmUncyA0IGtpbmRzCisgICAgICAgIDEpIFN0cmluZ05vcm1hbCAobm90
IHByaXZhdGUsIG5vdCBhdG9taWMsIG5vdCB1bmlxdWUpLCAyKSBTdHJpbmdBdG9taWMgKG5vdCBw
cml2YXRlLCBhdG9taWMsIG5vdCB1bmlxdWUpLAorICAgICAgICAzKSBTdHJpbmdVbmlxdWUgKG5v
dCBwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpIGFuZCA0KSBTdHJpbmdVbmlxdWVQcml2YXRl
IChwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpLgorICAgICAgICBUaGV5IGFyZSBtdXR1YWxs
eSBleGNsdXNpdmUuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEpIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzLCAyKSBJbmNsdWRlL0V4Y2x1ZGUgU3ltYm9scyBhbmQgMykgSW5jbHVkZS9FeGNsdWRl
IEpTT2JqZWN0IHByb3BlcnR5IG5hbWVzLgorICAgICAgICBJbiB0aGUgYSBsb3Qgb2YgY29kZSwg
d2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBhIGxvdCBvZiBjYWxs
ZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1lQXJyYXlgIGRvZXNu
J3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25zZXJ2YXRpdmUgYXNz
dW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAgIEluIHRoZSBhIGxv
dCBvZiBwbGFjZSwgYElkZW50aWZpZXIoVk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAgY29u
c3RydWN0b3IgaXMgdXNlZC4KKyAgICAgICAgSG93ZXZlciwgaXQncyBhbWJpZ3VvdXMgYmVjYXVz
ZSBgU3RyaW5nSW1wbCpgIGhhcyAyIGRpZmZlcmVudCBtZWFuaW5ncy4KKyAgICAgICAgMSkgbm9y
bWFsIHN0cmluZywgaXQgaXMgcmVwbGFjYWJsZSB3aXRoIGBXVEZTdHJpbmdgIGFuZCAyKSBgdWlk
YCwgd2hpY2ggaG9sZHMgYGlzVW5pcXVlYCBpbmZvcm1hdGlvbiB0byByZXByZXNlbnQgU3ltYm9s
cy4KKyAgICAgICAgU28gd2UgZHJvcHBlZCBJZGVudGlmaWVyIGNvbnN0cnVjdG9ycyBmb3Igc3Ry
aW5ncyBhbmQgaW5zdGVhZCwgaW50cm9kdWNlZCAyIGZhY3RvcnkgZnVuY3Rpb25zLgorICAgICAg
ICArIGBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNKi9FeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
KWAuCisgICAgICAgICAgICBKdXN0IGNvbnN0cnVjdCBJZGVudGlmaWVyIGZyb20gc3RyaW5ncy4g
VGhlIHVuaXF1ZW5lc3Mgb2YgU3RyaW5nSW1wbCogaXMgbm90IGtlcHQuCisgICAgICAgICsgYElk
ZW50aWZpZXI6OmZyb21VaWQoVk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAuCisgICAgICAg
ICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIDIpIGB1aWRgLiBTbyB1bmlxdWVuZXNzIG9m
IGBTdHJpbmdJbXBsKmAgaXMga2VwdC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3Bw
OgorICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb24pOgorICAgICAgICAoSlNPYmplY3RDb3B5
UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAg
ICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5OYW1lcyk6CisgICAgICAg
ICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQpOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24pOgorICAgICAgICAq
IGRmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRlc2ly
ZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmdJZGVudEFuZExvYWRTdG9yYWdlKToKKworICAgICAgICBUbyBicmFuY2ggb24gdGhlIHN0cmlu
ZyBhdG9taWNpdHkgZWZmaWNpZW50bHksIHdlIG5lZWQgdG8gY2FyZWZ1bGx5IGNob29zZSBTdHJp
bmdLaW5kIGZvciBTdHJpbmdBdG9taWMuCisgICAgICAgIFdlIHNlbGVjdCBgMGAgZm9yIFN0cmlu
Z0F0b21pYy4gU28gd2UgY2FuIGNoZWNrIHRoZSBhdG9taWNpdHkgb2YgU3RyaW5nSW1wbCBieSBz
ZWVpbmcgd2hldGhlciBTdHJpbmdLaW5kIGlzIHplcm8uCisgICAgICAgIEl0IGVuYWJsZXMgeDg2
IGNvZGUgdG8gYnJhbmNoIHdpdGggYHRlc3RgIGluc3RydWN0aW9uIGVmZmljaWVudGx5LgorCisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6c3BlY3VsYXRlU3RyaW5nSWRlbnQpOgorCisgICAgICAgIEFzIG5vdGVk
IGluIGRmZyBzZWN0aW9uLCB3ZSBjYW4gY2hlY2sgdGhlIGF0b21pY2l0eSBvZiBTdHJpbmdJbXBs
IHdpdGggdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVu
Y3Rpb25EZXRhaWxzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6Y29uc3RydWN0SW50ZXJuYWxQcm9w
ZXJ0eSk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWFrTWFw
RW50cmllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dHJhY3RTb3VyY2VJbmZvcm1hdGlv
bkZyb21FeGNlcHRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKworICAg
ICAgICBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGV4cGxjaXRseSBjaGVjayBgaXNVbmlxdWUoKWAg
aW4gdGhlIGNhbGxlciBzaWRlLiBXZSBjYW4ganVzdCB1c2UgYElkZW50aWZpZXI6OmZyb21VaWRg
LgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgIChH
bG9iYWxPYmplY3Q6OmFkZENvbnN0cnVjdGFibGVGdW5jdGlvbik6CisgICAgICAgIChmdW5jdGlv
blJ1bik6CisgICAgICAgIChydW5XaXRoU2NyaXB0cyk6CisgICAgICAgICogbGxpbnQvTExJbnRE
YXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJz
ZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphZGRWYXIpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVC
aW5kaW5nUGF0dGVybik6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmg6CisgICAgICAg
IChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyQXJlbmE6Om1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VOdW1lcmljSWRlbnRpZmllcik6CisgICAgICAgICog
cnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6QXJyYXlJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1B1c2gpOgor
ICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NvcnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoK
KyAgICAgICAgKiBydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oOgorICAgICAgICAoSlNDOjpFbnVt
ZXJhdGlvbk1vZGU6OkVudW1lcmF0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9u
TW9kZTo6c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkVu
dW1lcmF0aW9uTW9kZTo6c2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6c2hvdWxkSW5jbHVkZVN5bWJvbHMpOgorICAgICAg
ICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OmNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OnNob3VsZEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6bW9kZVRoYXRTa2lwc0pTT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAg
ICAgKEpTQzo6aGFzRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBl
cnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKToKKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6
SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb20pOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SWRl
bnRpZmllcjo6SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQp
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXlCdWZmZXJWaWV3OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cnVudGltZUZsYWdzKToKKyAgICAgICAgKiBydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJv
bm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9K
U09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5k
TmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9t
aXNlQ29uc3RydWN0b3JGdW5jUmFjZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY0FsbCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aDoKKyAgICAgICAgKEpTQzo6c3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcik6CisgICAg
ICAgIChKU0M6OmdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b0lkZW50aWZpZXIpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBh
cnNlcjxDaGFyVHlwZT46OnRyeUpTT05QUGFyc2UpOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFy
c2VyPENoYXJUeXBlPjo6bWFrZUlkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3Vw
Lmg6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljUHJvcGVydGllcyk6CisgICAgICAgICogcnVu
dGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcEl0ZXJhdG9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpNYXRoT2JqZWN0
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6Ok51bWJlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9i
amVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3Ry
dWN0b3JLZXlzKToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChK
U0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Qcml2YXRlTmFtZS5oOgorICAgICAgICAoSlND
OjpQcml2YXRlTmFtZTo6UHJpdmF0ZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlO
YW1lLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6UHJvcGVydHlOYW1lKToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlOYW1lOjphc0luZGV4KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eTo6YWRkS25vd25VbmlxdWUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdF
eHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6
OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3Bw
OgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGZvckluKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5q
czogQWRkZWQuCisgICAgICAgICh0ZXN0U3ltYm9sKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
c3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNz
L3N5bWJvbC13aXRoLWpzb24uanM6IEFkZGVkLgorCiAyMDE1LTAzLTAzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBjb21wcmVz
c2lvbiBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IGM0YmVhNTgyZjIwMjE3MzNhNDg2YTlkNDM3NDNlMGM1NzAxNzNlNTMu
Ljk0ODg4MTE3MDA3OWQ4OTk4ODQ4NWNmYWY5YTMzZTUxNzZjYmMwZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDcgQEAKKzIwMTUtMDMtMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2Ug
U3RyaW5nS2luZCBpbnRvIGBTdHJpbmdJbXBsYC4gVGhlcmUncyA0IGtpbmRzCisgICAgICAgIDEp
IFN0cmluZ05vcm1hbCAobm90IHByaXZhdGUsIG5vdCBhdG9taWMsIG5vdCB1bmlxdWUpLCAyKSBT
dHJpbmdBdG9taWMgKG5vdCBwcml2YXRlLCBhdG9taWMsIG5vdCB1bmlxdWUpLAorICAgICAgICAz
KSBTdHJpbmdVbmlxdWUgKG5vdCBwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpIGFuZCA0KSBT
dHJpbmdVbmlxdWVQcml2YXRlIChwcml2YXRlLCBub3QgYXRvbWljLCB1bmlxdWUpLgorICAgICAg
ICBUaGV5IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisKKyAgICAgICAgU3RyaW5nVW5pcXVlUHJp
dmF0ZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGF0IHRoZSB0YXJnZXQgc3RyaW5nIGlzIHVzZWQg
Zm9yIGEgcHJpdmF0ZSAocHJpdmlsZWdlZCkgbmFtZS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6YWRkU2xvd0Nhc2Up
OgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmRTbG93Q2FzZSk6CisKKyAgICAgICAg
V2hlbiByZWdpc3RlcmluZyBhIHN0cmluZyBpbnRvIEF0b21pY1N0cmluZ1RhYmxlLCBpdCBzaG91
bGQgbm90IGJlIGFuIHVuaXF1ZSBzdHJpbmcgYmVjYXVzZSB1bmlxdWUgdHlwZXMgYW5kIGF0b21p
YyB0eXBlIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisgICAgICAgIFdoZW4gYW4gdW5pcXVlIHN0
cmluZyBjb21lcywgd2UgZXh0cmFjdCBhbiBvd25lciBzdHJpbmcgZnJvbSBhbiB1bmlxdWUgc3Ry
aW5nIGJ5IHVzaW5nIGBTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKWAu
IEl0IGFsd2F5cyBzdWNjZWVkcyBiZWNhdXNlIGFuIHVuaXF1ZSAobm9uIGVtcHR5KSBzdHJpbmcg
aXMgYWx3YXlzIEJ1ZmZlclN1YnN0cmluZyBhbmQgaGFzIGFuIG93bmVyIHN0cmluZy4KKyAgICAg
ICAgRW1wdHkgdW5pcXVlIChhbmQgdW5pcXVlIHByaXZhdGUpIHN0cmluZyBkb2Vzbid0IGhhdmUg
YW4gb3duZXIgc3RyaW5nLiBUaGlzIGNhc2UgaXMgZmlsdGVyZWQgYnkgYCFzdHJpbmcubGVuZ3Ro
KClgIGd1YXJkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAg
IChXVEY6OkF0b21pY1N0cmluZzo6YWRkKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjph
ZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZSk6CisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpTdHJp
bmdJbXBsKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVQcml2YXRlRW1wdHkpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNOb3RBdG9taWMpOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjptYXNrU3RyaW5nS2luZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0
cmluZ0tpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjppc1VuaXF1ZSk6CisgICAgICAg
IChXVEY6OlN0cmluZ0ltcGw6OmlzUHJpdmF0ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OmlzQXRvbWljKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c2V0SXNBdG9taWMpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNBdG9taWMpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNVbmlxdWUpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ1N0YXRpY3MuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpoYXNoQW5k
RmxhZ3NGb3JVbmlxdWUpOgorCiAyMDE1LTAzLTAzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBjb21wcmVzc2lvbiBjb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNmViODA0ZDY0ZjhmNTY4ZGE0OWI2YTM2MjhkOTEyOTE1NjJkYjhjNy4uZTdl
Zjg4NTJjNWJlNmE1ODczNmMxZTkzMjgyMDNlMWZiZThjZTA2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0NSBAQAorMjAxNS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEw
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nIGFuZCBJZGVudGlmaWVyOjpmcm9tVWlkLgorCisgICAgICAg
IFRlc3RzOiBqcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmh0bWwKKyAgICAgICAg
ICAgICAgIGpzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuaHRtbAorICAgICAgICAgICAgICAganMv
c3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5odG1sCisgICAgICAgICAgICAgICBqcy9zeW1ib2wtd2l0
aC1qc29uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlv
bmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNs
YXJhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRp
b246OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJh
Y2tEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxs
YmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SlNMaXN0ZW5lckZ1bmN0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEhhc2hBbGdvcml0aG0pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRKU0FycmF5RnJvbUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0U3RyaW5nRnJvbUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9vbGVhbkZyb21KU09O
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRvSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZEpTT05Gb3JSU0FDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEJvb2xUb0pTT04p
OgorICAgICAgICAoV2ViQ29yZTo6YWRkVXNhZ2VzVG9KU09OKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1
c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRl
ZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRMb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpYWxvZ0hhbmRsZXI6OnJldHVyblZhbHVlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRBY2NlbGVyYXRpb25Bcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
Um90YXRpb25SYXRlQXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQWNjZWxlcmF0
aW9uT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJvdGF0aW9uUmF0ZU9iamVjdCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRGljdGlvbmFyeTo6dHJ5R2V0UHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxIVE1MQWxsQ29sbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
RG9jdW1lbnQ6OmFsbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6c2V0QWxs
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0lEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJ
bWFnZURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0xhenlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50
TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05vZGVGaWx0ZXJDb25kaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVy
Q29uZGl0aW9uOjphY2NlcHROb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFJlc3Vs
dFNldFJvd0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTUUxSZXN1bHRTZXRS
b3dMaXN0OjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldEludGVybmFsU2xvdFRvT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dEludGVybmFsU2xvdEZyb21PYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OnJlbW92ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
U2VyaWFsaXplcjo6Q2xvbmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2Vy
aWFsaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJp
YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXpl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAg
KC1bV2ViU2NyaXB0T2JqZWN0IGNhbGxXZWJTY3JpcHRNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToK
KyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHNldFZhbHVlOmZvcktleTpdKToKKyAgICAgICAg
KC1bV2ViU2NyaXB0T2JqZWN0IHZhbHVlRm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRP
YmplY3QgcmVtb3ZlV2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3Qg
aGFzV2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxv
YXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9h
dDY0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93
blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJs
ZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZSk6CisgICAgICAgICogYnJpZGdlL05QX2pz
b2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fRW51bWVyYXRlKToKKyAgICAgICAgKiBicmlkZ2Uv
Yy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6aWRlbnRpZmllckZyb21O
UElkZW50aWZpZXIpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVl
KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1
bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBicmlkZ2UvdGVzdGJpbmRp
bmdzLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpFeHRlbnNpb25zTWFuYWdlcjo6bG9hZFRyaWdnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkV4dGVuc2lvbnNNYW5hZ2VyOjpsb2FkQWN0aW9uKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OmluamVj
dEludGVybmFsc09iamVjdCk6CisKIDIwMTUtMDMtMDMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb250ZW50IEZpbHRlcmluZ10gU2VwYXJhdGUgdW5ibG9jayBo
YW5kbGluZyBpbnRvIGl0cyBvd24gY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAyOTA2YjRhYjdk
MTdiMGFhZmRjZjZiOTUzZmU1NDE3ZDZhYTIwNzk5Li4yZWI3ZGY0MjRlYmE2NWNiY2E4N2RlN2Ux
Y2RmNzhjZTQ3MDRhOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUt
MDMtMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyBhbmQgSWRlbnRpZmllcjo6ZnJvbVVpZC4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tOgorICAgICAgICAoaWRlbnRpZmllckZyb21JZGVu
dGlmaWVyUmVwKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6ZW51bWVyYXRlKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1t
OgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKwog
MjAxNS0wMy0wMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
bnRlbnQgRmlsdGVyaW5nXSBTZXBhcmF0ZSB1bmJsb2NrIGhhbmRsaW5nIGludG8gaXRzIG93biBj
bGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDMxNmNjNzNjM2NjNjlkMzc5NjE4ZWY3MzYzN2U2MTM1ZGE5YTJm
ZWEuLjkwMDQ3MjhmODdlMjBiZGU4OTI0MGZmZTUxODI0OTllOWI0ZTI1MDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxNS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nIGFuZCBJZGVudGlmaWVyOjpmcm9tVWlkLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcCk6CisgICAgICAgIChXZWJLaXQ6Ok5Q
SlNPYmplY3Q6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDMtMDMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50IEZpbHRlcmluZ10gU2VwYXJhdGUgdW5ibG9j
ayBoYW5kbGluZyBpbnRvIGl0cyBvd24gY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggOTlhMDlkZmVhMTBj
MWNhMTNjMTU2Nzg3ZWIwN2FmODljYTQyNDYyMy4uZmUwMWQwNzUzM2NhZDUxMzE1MTVhN2Q5MGEz
Y2U0MzNlOTMzNmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUxNiw4ICs1MTYsMTAgQEAKICAgICAgICAg
ICAgIGZvciAoaXRlcmF0b3IgaXQgPSBzdGF0aWNWYWx1ZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgp
OwogICAgICAgICAgICAgICAgIFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdl
dCgpOwotICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnkt
PmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBuYW1lKSk7CisgICAgICAgICAgICAgICAgaWYg
KG5hbWUtPmlzUHJpdmF0ZSgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICBpZiAoZW50cnktPmdldFByb3BlcnR5ICYmICghKGVudHJ5LT5hdHRyaWJ1dGVz
ICYga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKCkpKQorICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIG5hbWUpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICAKQEAgLTUyNyw4ICs1MjksMTAgQEAKICAgICAgICAgICAgIGZvciAoaXRl
cmF0b3IgaXQgPSBzdGF0aWNGdW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewog
ICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwogICAgICAg
ICAgICAgICAgIFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdldCgpOwot
ICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkK
LSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBu
YW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKG5hbWUtPmlzUHJpdmF0ZSgpKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmli
dXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcygpKQorICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIG5hbWUpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
aW5kZXggMjM0ZDI0ODhmZjg5MGI4YmVlNjk3ZWY1NWFhNjgwMzgwYTE4MWE0Mi4uNTkwYTUzNzAx
Njk5NTJiMTI5ZjBhMzQ0NjRjZDRhNWU4ZWYzZWE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBKU09iamVjdFJlZiBKU09i
amVjdE1ha2VGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lLCB1bnNp
Z25lZCBwYQogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBzdGFydGluZ0xp
bmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwotICAgIElkZW50aWZp
ZXIgbmFtZUlEID0gbmFtZSA/IG5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPnZtKCkpIDogSWRlbnRp
ZmllcihleGVjLCAiYW5vbnltb3VzIik7CisgICAgSWRlbnRpZmllciBuYW1lSUQgPSBuYW1lID8g
bmFtZS0+aWRlbnRpZmllcigmZXhlYy0+dm0oKSkgOiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJhbm9ueW1vdXMiKTsKICAgICAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJDb3VudDsgaSsrKQpAQCAtNjk4
LDcgKzY5OCw3IEBAIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgSlNPYmplY3RDb3B5UHJvcGVydHlO
YW1lcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgICAgSlNPYmplY3QqIGpzT2Jq
ZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgcHJvcGVydHlO
YW1lcyA9IG5ldyBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5KHZtKTsKICAgICBQcm9wZXJ0eU5h
bWVBcnJheSBhcnJheSh2bSk7Ci0gICAganNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3Bl
cnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhqc09iamVj
dCwgZXhlYywgYXJyYXksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVz
LT5hcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAppbmRleCAyMmMxNjIzMGM3YzFkMzY5MTFjN2Q1
ODljZTUwZjA5NDI4N2ExZDllLi43ZjllZGI0MTM2ZTI3NDk5NzQ3ZDI5NmQyZjFhMmRjNDg5YjA0
NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKQEAgLTY5
LDkgKzcwLDkgQEAgSWRlbnRpZmllciBPcGFxdWVKU1N0cmluZzo6aWRlbnRpZmllcihWTSogdm0p
IGNvbnN0CiAgICAgICAgIHJldHVybiBJZGVudGlmaWVyKElkZW50aWZpZXI6OkVtcHR5SWRlbnRp
Zmllcik7CiAKICAgICBpZiAobV9zdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBJZGVu
dGlmaWVyKHZtLCBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpLCBtX3N0cmluZy5sZW5ndGgoKSk7Cisg
ICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBtX3N0cmluZy5jaGFyYWN0
ZXJzOCgpLCBtX3N0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gSWRlbnRpZmllcih2bSwg
bV9zdHJpbmcuY2hhcmFjdGVyczE2KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1cm4g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbV9zdHJpbmcuY2hhcmFjdGVyczE2KCksIG1fc3Ry
aW5nLmxlbmd0aCgpKTsKIH0KIAogY29uc3QgVUNoYXIqIE9wYXF1ZUpTU3RyaW5nOjpjaGFyYWN0
ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRG
dW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAKaW5kZXggMmRmNzg3NjQxMGU3OGNmOWZhYmYyNDE3ODZlNjAyNDJmZTRl
ZWUwOS4uZjNhMjIzOGViYTk4ZmMxMjgyN2I4MWRlZjJjODBjNjMxNGNlMDVlOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFw
cGVuZEFyZ3VtZW50KGJvb2wgYXJndW1lbnQpCiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4
ZWMpOwogCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChtX2V4ZWMsIElk
ZW50aWZpZXIobV9leGVjLCBtX25hbWUpKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gdGhpc09i
amVjdC0+Z2V0KG1fZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsIG1fbmFtZSkp
OwogICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGhhZEV4Y2VwdGlv
biA9IHRydWU7CiAgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggNzZh
N2IxMTFhOGQ4NzdhNjc5YjVjOGI4ZTg5NmUxYTdiMWI2YjhhYy4uNWEwNWJhODliOWU5MGNhOTQw
N2NhM2E4ZWFlNjIwNzQ3MjhhMTJlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBTY3JpcHRWYWx1
ZTo6aXNGdW5jdGlvbigpIGNvbnN0CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGluc3Bl
Y3Rvck9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIEpTT2JqZWN0
KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkg
cHJvcGVydHlOYW1lcyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIHNjcmlwdFN0YXRlLCBwcm9wZXJ0eU5hbWVz
LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykgewogICAg
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSA9IHByb3BlcnR5TmFtZXNbaV07CiAgICAg
ICAgICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdldChzY3JpcHRTdGF0ZSwg
bmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCmluZGV4IDYxMmQ2NDU1MjM4ZGZjNTIwY2JiYjNmMTFmY2FmYzcwZmVh
ZTE2MTcuLjMyZGY5M2MyMzRiYTEwYmZhODg0MjJlMjFmYzM1NmNiNjdhOTE3MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCkBAIC03NSw3ICs3NSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvCiAgICAgICAgIAog
ICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmlu
ZWRLZXl3b3JkLmltcGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSRUxFQVNF
X0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNVbmlxdWUoKSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGNsb3NlZFZhcmlhYmxlLT5pc1ByaXZhdGUoKSk7CiAgICAgfQogICAgIGJvZHktPm92ZXJy
aWRlTmFtZShuYW1lKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291
cmNlLCBib2R5LCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggOWI4ODk2Yjk2ODAxNDkxM2Y0NmIz
MmM0ODBlMDU3ODk2Mzc5ZGZhNC4uNDkzMDllZDYzMmQzNmI2M2EwYjg5MmVmYTc5ZmM4YjgwODZh
ZjRhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aApAQCAtMzEsMTIgKzMxLDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogICAgIAotI2RlZmluZSBJ
TklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZSh2bSwgI25hbWUpLCBtXyMj
bmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZShBU0NJSUxpdGVy
YWwoIlN5bWJvbC4iICNuYW1lKSkpKQotI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFt
ZSkgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMj
UHJpdmF0ZU5hbWU7OworI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBt
XyMjbmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpLCBtXyMjbmFtZSMjUHJp
dmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZShQcml2YXRlTmFtZTo6Q3Jl
YXRlUHJpdmF0ZSkpKQorI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3Qg
SWRlbnRpZmllciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJpdmF0ZU5h
bWU7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwK
ICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV8jI25hbWU7IH0gXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1ByaXZhdGVOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1ByaXZhdGVOYW1lOyB9CiAKKyNkZWZpbmUgSU5JVElB
TElTRV9CVUlMVElOX1NZTUJPTFMobmFtZSkgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUp
LCBtXyMjbmFtZSMjU3ltYm9sKElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoQVNDSUlM
aXRlcmFsKCJTeW1ib2wuIiAjbmFtZSkpKSkKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJP
TFMobmFtZSkgREVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbV8j
I25hbWUjI1N5bWJvbDsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUihu
YW1lKSBcCisgICAgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IobmFtZSkgXAor
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fIyNu
YW1lIyNTeW1ib2w7IH0KKwogI2RlZmluZSBJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VO
VFJZKG5hbWUpIG1fcHJpdmF0ZVRvUHVibGljTWFwLmFkZChtXyMjbmFtZSMjUHJpdmF0ZU5hbWUu
aW1wbCgpLCAmbV8jI25hbWUpOwogI2RlZmluZSBJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRF
X0VOVFJZKG5hbWUpIG1fcHVibGljVG9Qcml2YXRlTWFwLmFkZChtXyMjbmFtZS5pbXBsKCksICZt
XyMjbmFtZSMjUHJpdmF0ZU5hbWUpOwogICAgIApAQCAtNDgsMTEgKzU0LDE0IEBAIGNsYXNzIEJ1
aWx0aW5OYW1lcyB7CiAgICAgICAgIDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmll
cnMtPmVtcHR5SWRlbnRpZmllcikKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFN
RVMpCisgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05P
V05fU1lNQk9MKElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAgICAgSlND
X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJM
SUNfRU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAgICAgICAg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5J
VElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAg
ICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
SU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9Q
UklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QVUJM
SUNfVE9fUFJJVkFURV9FTlRSWSkKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjksMTMgQEAg
Y2xhc3MgQnVpbHRpbk5hbWVzIHsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxU
SU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklF
UlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09S
KQogCiBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CiAgICAgSlND
X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKICAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xB
UkVfQlVJTFRJTl9OQU1FUykKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MUykKICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBjb25zdCBJZGVudGlmaWVyKiwgSWRlbnRpZmll
clJlcEhhc2g+IEJ1aWx0aW5OYW1lc01hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wdWJsaWNU
b1ByaXZhdGVNYXA7CiAgICAgQnVpbHRpbk5hbWVzTWFwIG1fcHJpdmF0ZVRvUHVibGljTWFwOwpA
QCAtNzMsNyArODQsOSBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewogI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9OQU1FUwogI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUwogI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SCi0KKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5f
U1lNQk9MUworI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTCisjdW5kZWYgREVDTEFS
RV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUgogCiBpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVp
bHRpbk5hbWVzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmgKaW5kZXggOWE5ZGIwYmM3MGI5ZjEzNWY2NWRkMmQ3OTZkZTY1Mjg5
NmFlMGZiMS4uNTc4MGYwMGM3MjgxNGEzMTg1MGUxYzgyYTVhZGMyZTJlYjI4ODMxMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9m
aWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRp
b25Qcm9maWxlLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSB7CiAKICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydHlOYW1lQXJyYXkoJnZtKTsKLSAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1
cmUoKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5
LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1
cmUoKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5
LCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3lt
Ym9scyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9y
JiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnByb3BlcnR5
TmFtZVZlY3RvcigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFt
ZVZlY3Rvci5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHByb3Rv
dHlwZS0+Z2V0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCAwODE3OGU0MDU3M2YyNDI5NjM3YWM3MjMzN2ZiZDM5Y2JiYmE0NzRkLi4yZWVlMDQz
YzVlZTU4MGIyYmExMjg3MTFiYmZmOGY5NmM3MDkxNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
NDM4LDcgKzQzOCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoCiAg
ICAgVmVjdG9yPElkZW50aWZpZXIsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiB2YXJpYWJsZXM7
CiAgICAgdmFyaWFibGVzLnJlc2VydmVDYXBhY2l0eShudW1WYXJpYWJsZXMpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtVmFyaWFibGVzOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKHZh
clN0YWNrW2ldLmZpcnN0LmltcGwoKS0+aXNBdG9taWMoKSk7CisgICAgICAgIEFTU0VSVCh2YXJT
dGFja1tpXS5maXJzdC5pbXBsKCktPmlzQXRvbWljKCkgfHwgdmFyU3RhY2tbaV0uZmlyc3QuaW1w
bCgpLT5pc1VuaXF1ZSgpKTsKICAgICAgICAgdmFyaWFibGVzLmFwcGVuZCh2YXJTdGFja1tpXS5m
aXJzdCk7CiAgICAgfQogICAgIGNvZGVCbG9jay0+YWRvcHRWYXJpYWJsZXModmFyaWFibGVzKTsK
QEAgLTIzNDgsNyArMjM0OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BU
cnlBbmRFbWl0Q2F0Y2goVHJ5RGF0YSogdHJ5RGF0YSwgUmVnaXN0ZXJJRCoKIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRp
ZmllcihtX3ZtLCBtZXNzYWdlKSkpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKG1fdm0sIG1lc3NhZ2UpKSktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCh0cnVlKTsKIH0KIApAQCAtMjUxNSw3ICsyNTE1LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKQogICAgIGlmICghaXNTdHJpY3RNb2Rl
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0YXRpY19lcnJv
cik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5n
Q29uc3RhbnQoSWRlbnRpZmllcihtX3ZtLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpKSktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFu
dFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXI6OmZyb21TdHJpbmcobV92bSwgU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSkpLT5pbmRleCgpKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZmFsc2UpOwogfQogICAgIApAQCAtMjU0OSw3ICsyNTQ5LDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gbmV3TGFi
ZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVj
dCA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3RO
b2RlKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdU
ZW1wb3JhcnkoKSwgc3ViamVjdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0
ZU5hbWUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5l
d1RlbXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1i
b2wpOwogICAgIHsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCAwKTsKICAgICAg
ICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgc3ViamVjdC5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKaW5k
ZXggNjBhNDk0ZGRjZjRiMTUzODFhY2FmMGM1ODE4OTY0NjRlN2EyZTQzYi4uNjVjMzAxZGJlZTE2
ZDNmNzRiNTQyN2I3YTBmNjkyNDg4NDFjNGUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2
b2lkIERlc2lyZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKFZNJiB2bSwgQ29tbW9uRGF0YSogY29t
bW9uRGF0YSkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hZGRlZElkZW50aWZpZXJz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZ0ltcGwqIHJlcCA9IG1fYWRkZWRJZGVudGlm
aWVyc1tpXTsKICAgICAgICAgQVNTRVJUKHJlcC0+aGFzQXRMZWFzdE9uZVJlZigpKTsKLSAgICAg
ICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIoJnZtLCByZXAp
KTsKKyAgICAgICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6
OmZyb21VaWQoJnZtLCByZXApKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMWU2NGNhOTE1ZTg2MTdiZGRiODc5
YjBhNzMxMWQwMzEzMGFjN2NlYS4uNmNlNTdmZmE2NTY3MmQzMTIxNjI0ZWE0ZjliYjRmNmEwODgw
MzcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTQ3NDgsOSArNDc0OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nCiAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0b3JhZ2UpKTsK
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChzdHJpbmcpLCBlZGdlLCBtX2ppdC5icmFuY2hUZXN0MzIoCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZSwgU3RyaW5n
SW1wbDo6ZmxhZ3NPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJc0F0b21pYygpKSkpOworICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXNOb3RBdG9taWMoKSkpKTsK
ICAgICAKICAgICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5nSWRlbnQgfCB+
U3BlY1N0cmluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCmluZGV4IDJkNmRhZGNiY2YyZmI4NzMxZTg3YTI0Yjg4Njc2NTNkNjg2MTE5
MTguLjNlYTA0YWRkZTVjMGU3ODQ5MTk0NzhmZTY5OTYzZThlMWZjNWM4YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC02NDQyLDkg
KzY0NDIsOSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIHNwZWN1bGF0ZShCYWRU
eXBlLCBqc1ZhbHVlVmFsdWUoc3RyaW5nKSwgZWRnZS5ub2RlKCksIG1fb3V0LmlzTnVsbChzdHJp
bmdJbXBsKSk7CiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZFR5cGUsIGpzVmFs
dWVWYWx1ZShzdHJpbmcpLCBlZGdlLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0LnRlc3RJc1pl
cm8zMigKKyAgICAgICAgICAgIG1fb3V0LnRlc3ROb25aZXJvMzIoCiAgICAgICAgICAgICAgICAg
bV9vdXQubG9hZDMyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9oYXNoQW5kRmxhZ3Mp
LAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRv
bWljKCkpKSk7CisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpm
bGFnSXNOb3RBdG9taWMoKSkpKTsKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIoZWRnZSwg
U3BlY1N0cmluZ0lkZW50IHwgflNwZWNTdHJpbmcpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5j
cHAKaW5kZXggZDI5ZDM2ZjcxYjVjN2Q1ZGU1ZTY5MmQ4ZGUzMjA4ZTcwNzExY2ZiMi4uYjY3YTNi
YmQ0NTUyYTc2NDFiZDAzNzZiNzcyNmFkNDRhNGExMGFjZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAg
LTE4MywyMCArMTgzLDIwIEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9u
RGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBTdHJpbmcgc2NyaXB0SUQgPSBTdHJpbmc6
Om51bWJlcihzb3VyY2VDb2RlLT5wcm92aWRlcigpLT5hc0lEKCkpOwogICAgIEpTT2JqZWN0KiBs
b2NhdGlvbiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIGxvY2F0aW9uLT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAic2NyaXB0SWQiKSwganNTdHJpbmco
ZXhlYywgc2NyaXB0SUQpKTsKLSAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXIoZXhlYywgImxpbmVOdW1iZXIiKSwganNOdW1iZXIobGluZU51bWJlcikpOwotICAg
IGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29sdW1u
TnVtYmVyIiksIGpzTnVtYmVyKGNvbHVtbk51bWJlcikpOworICAgIGxvY2F0aW9uLT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2NyaXB0SWQiKSwg
anNTdHJpbmcoZXhlYywgc2NyaXB0SUQpKTsKKyAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpbmVOdW1iZXIiKSwganNOdW1i
ZXIobGluZU51bWJlcikpOworICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29sdW1uTnVtYmVyIiksIGpzTnVtYmVyKGNvbHVt
bk51bWJlcikpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhl
YywgImxvY2F0aW9uIiksIGxvY2F0aW9uKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb2NhdGlvbiIpLCBsb2NhdGlvbik7
CiAKICAgICBTdHJpbmcgbmFtZSA9IGZ1bmN0aW9uLT5uYW1lKGV4ZWMpOwogICAgIGlmICghbmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXIoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOworICAgICAgICByZXN1
bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJu
YW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKIAogICAgIFN0cmluZyBkaXNwbGF5TmFtZSA9
IGZ1bmN0aW9uLT5kaXNwbGF5TmFtZShleGVjKTsKICAgICBpZiAoIWRpc3BsYXlOYW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihl
eGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmcoZXhlYywgZGlzcGxheU5hbWUpKTsKKyAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmcoZXhlYywgZGlzcGxheU5hbWUpKTsKIAogICAg
IC8vIEZJWE1FOiBwcm92aWRlIGZ1bmN0aW9uIHNjb3BlIGRhdGEgaW4gInNjb3Blc1JhdyIgcHJv
cGVydHkgd2hlbiBKU0Mgc3VwcG9ydHMgaXQuCiAgICAgLy8gPGh0dHBzOi8vd2Via2l0Lm9yZy9i
Lzg3MTkyPiBbSlNDXSBleHBvc2UgZnVuY3Rpb24gKGNsb3N1cmUpIGlubmVyIGNvbnRleHQgdG8g
ZGVidWdnZXIKQEAgLTIwNyw4ICsyMDcsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjpmdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBleGVjKQogc3RhdGljIEpTT2JqZWN0KiBjb25z
dHJ1Y3RJbnRlcm5hbFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBuYW1l
LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKLSAgICByZXN1bHQtPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ2YWx1ZSIpLCB2YWx1ZSk7Cisg
ICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAibmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1lKSk7CisgICAgcmVzdWx0LT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSwgdmFs
dWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI3NCw4ICsyNzQsOCBAQCBKU1ZhbHVl
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWFrTWFwRW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIpOwog
ICAgIGZvciAoYXV0byBpdCA9IHdlYWtNYXAtPndlYWtNYXBEYXRhKCktPmJlZ2luKCk7IGl0ICE9
IHdlYWtNYXAtPndlYWtNYXBEYXRhKCktPmVuZCgpOyArK2l0KSB7CiAgICAgICAgIEpTT2JqZWN0
KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICBlbnRyeS0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImtleSIpLCBpdC0+a2V5KTsKLSAg
ICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ2YWx1
ZSIpLCBpdC0+dmFsdWUuZ2V0KCkpOworICAgICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleSIpLCBpdC0+a2V5KTsKKyAgICAg
ICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJ2YWx1ZSIpLCBpdC0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBhcnJheS0+cHV0RGlyZWN0
SW5kZXgoZXhlYywgZmV0Y2hlZCsrLCBlbnRyeSk7CiAgICAgICAgIGlmIChudW1iZXJUb0ZldGNo
ICYmIGZldGNoZWQgPj0gbnVtYmVyVG9GZXRjaCkKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAppbmRleCBiMDY5MDczZjgwODIwODBiZWVmY2ZhNzE0
MDUwNjY5ZjI1ZjE2NTU5Li4xMTQ4NGVkYTdjZThjOTAxY2NkNTZlZjFiNThmOTE4YWY0MGViOGU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2
b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImlzSFRNTEFs
bENvbGxlY3Rpb24iLCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1M
QWxsQ29sbGVjdGlvbiwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oIndl
YWtNYXBFbnRyaWVzIiwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtN
YXBFbnRyaWVzLCBEb250RW51bSwgMSk7CiAKLSAgICBJZGVudGlmaWVyIGV2YWx1YXRlSWRlbnRp
Zmllcigmdm0sICJldmFsdWF0ZSIpOworICAgIElkZW50aWZpZXIgZXZhbHVhdGVJZGVudGlmaWVy
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJldmFsdWF0ZSIpOwogICAgIEdldHRlclNl
dHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsK
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAwLCBldmFsdWF0ZUlkZW50aWZpZXIuc3RyaW5nKCksIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUpOwogICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIo
dm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5
cGUuY3BwCmluZGV4IDU4YmI2OGIwYTFmMzg4ZjIxY2FmOGI1ZjYyMmNhZDc3YjIwNzllMmQuLjQ4
MjgzODY1MjRkYzI2YWI0NmM4NDEzNTY4MzFjNzBkYzZlOWZmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENh
bGxGcmFtZVByb3RvdHlwZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKIAogI2RlZmluZSBKU0NfTkFU
SVZFX05PTl9JTkRFWF9BQ0NFU1NPUihqc05hbWUsIGNwcE5hbWUsIGF0dHJpYnV0ZXMpIFwKICAg
ICB7IFwKLSAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwganNOYW1lKTsgXAorICAg
ICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
anNOYW1lKTsgXAogICAgICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7IFwKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgaWRlbnRpZmllci5z
dHJpbmcoKSwgY3BwTmFtZSk7IFwKICAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvbik7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4IDI3ZGMwOTli
ZGI1OGIwNzQzYTNiYjZlMTVhMmQzMGQ1M2IwMWJjYjIuLmY5ZjZjMWM0OWFhYTYwNmEzNzMzNDhi
NmUyZDhmYzI3MGZjZGU4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtMTE5LDExICsxMTks
MTEgQEAgY2xhc3MgQ3JlYXRlU2NyaXB0Q2FsbFN0YWNrRnVuY3RvciB7CiBzdGF0aWMgdm9pZCBl
eHRyYWN0U291cmNlSW5mb3JtYXRpb25Gcm9tRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogZXhjZXB0aW9uT2JqZWN0LCBpbnQqIGxpbmVOdW1iZXIsIGludCogY29sdW1u
TnVtYmVyLCBTdHJpbmcqIHNvdXJjZVVSTCkKIHsKICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTE1MDg3PiBXZWIgSW5zcGVjdG9yOiBTaG91bGQgbm90IG5lZWQgdG8gZXZhbHVh
dGUgSmF2YVNjcmlwdCBoYW5kbGluZyBleGNlcHRpb25zCi0gICAgSlNWYWx1ZSBsaW5lVmFsdWUg
PSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJsaW5lIikpOworICAgIEpTVmFsdWUgbGluZVZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGluZSIpKTsK
ICAgICAqbGluZU51bWJlciA9IGxpbmVWYWx1ZSAmJiBsaW5lVmFsdWUuaXNOdW1iZXIoKSA/IGlu
dChsaW5lVmFsdWUudG9OdW1iZXIoZXhlYykpIDogMDsKLSAgICBKU1ZhbHVlIGNvbHVtblZhbHVl
ID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAiY29sdW1uIikpOworICAgIEpTVmFsdWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3Qt
PmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb2x1
bW4iKSk7CiAgICAgKmNvbHVtbk51bWJlciA9IGNvbHVtblZhbHVlICYmIGNvbHVtblZhbHVlLmlz
TnVtYmVyKCkgPyBpbnQoY29sdW1uVmFsdWUudG9OdW1iZXIoZXhlYykpIDogMDsKLSAgICBKU1Zh
bHVlIHNvdXJjZVVSTFZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcihleGVjLCAic291cmNlVVJMIikpOworICAgIEpTVmFsdWUgc291cmNlVVJM
VmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJzb3VyY2VVUkwiKSk7CiAgICAgKnNvdXJjZVVSTCA9IHNvdXJj
ZVVSTFZhbHVlICYmIHNvdXJjZVVSTFZhbHVlLmlzU3RyaW5nKCkgPyBzb3VyY2VVUkxWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykgOiBBU0NJSUxpdGVyYWwoInVuZGVmaW5lZCIpOwog
ICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0NjExNjdhZTY1NDEwZjQyNmQ3ZTg3ODQyMDc4ZTAy
MDA4YTcxNTU1Li5hZjYxNDFhOWQzZDkwZjFkOGM4OWI2ZDk3YzVhMWRmNzljOWVkZjNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTE1Myw3ICsx
NTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbwogICAgIAogICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSk7Ci0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlk
ZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKIH0KIApAQCAtMTYyLDcg
KzE2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1
aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICBJ
ZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSWRlbnRpZmllciBp
ZGVudCA9IHVpZC0+aXNVbmlxdWUoKSA/IElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUodWlk
KSkgOiBJZGVudGlmaWVyKHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKQEAgLTIw
Niw3ICsyMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSQogICAgIAogICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIGtleSk7CisgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNs
b3QoYmFzZSk7CiAgICAgYm9vbCByZXN1bHQgPSBhc09iamVjdChiYXNlKS0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICAKQEAgLTIzMCw3ICsyMzAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlU3R1YkluZm8qLCBKUwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIH0KIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIGtleSk7CisgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGtleSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZSktPmhhc1Byb3BlcnR5KGV4
ZWMsIGlkZW50KSkpOwogfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwog
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHRy
dWUsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpLnB1dChleGVjLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSksIHNsb3QpOwogfQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YkluZm8qCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlk
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsK
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBm
YWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTdHViSW4KICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1
aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQp
OwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSks
IHRydWUsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBhc09iamVj
dChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlk
ZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yNzcsNyAr
Mjc3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJp
Y3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAg
ICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJ
ZENvbnRleHQoKSk7CiAgICAgYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSkt
PnB1dERpcmVjdChleGVjLT52bSgpLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSksIHNsb3QpOwogfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAg
ICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+
YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVMKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElk
ZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dQogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5
cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVy
IGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7
CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBA
IC0zODMsNyArMzgzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJp
Y3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHUKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
ICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTQw
NCw3ICs0MDQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmlj
dEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZQogICAgIFZNKiB2bSA9ICZleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAg
IAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtNDI1LDcg
KzQyNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0g
ICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAgICAgCiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtNDQ2LDcg
KzQ0Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3Ry
aWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RyCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0g
ICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0xMzkxLDEwICsx
MzkxLDkgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRBcmd1bWVu
dHNMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl8KICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgLy8gSGVyZSB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhl
IGFyZ3VtZXJudHMgd2VyZSBjcmVhdGVkLiBCZWNhdXNlIG90aGVyd2lzZSB0aGUgSklUIGNvZGUg
d291bGQKICAgICAvLyBoYXZlIG5vdCBtYWRlIHRoaXMgY2FsbC4KLSAgICBJZGVudGlmaWVyIGlk
ZW50KCZ2bSwgImxlbmd0aCIpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZXhlYy0+dW5jaGVj
a2VkUihhcmd1bWVudHNSZWdpc3RlcikuanNWYWx1ZSgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWx1ZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4
ZWMsIGlkZW50LCBzbG90KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUu
Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIHNsb3QpKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAppbmRleCAwYmMwZDdmMmVlMDQ3YWUyZWU1MWUwMjVjY2Q3MGQ4OGIz
MTQ0ZDZmLi43NmEzYTgwYjE2NGVjZDI3ZDdlZWY5ZTc0YjUzNWIyNjQ0ZGU5OTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcApAQCAtNjE4LDExICs2MTgsMTEgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRFbGVt
ZW50IiwgZnVuY3Rpb25HZXRFbGVtZW50LCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJz
ZXRFbGVtZW50Um9vdCIsIGZ1bmN0aW9uU2V0RWxlbWVudFJvb3QsIDIpOwogICAgICAgICAKLSAg
ICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXIoJnZtLCAi
REZHVHJ1ZSIpLCAwLCBmdW5jdGlvbkZhbHNlMSwgREZHVHJ1ZUludHJpbnNpYywgRG9udEVudW0g
fCBKU0M6OkZ1bmN0aW9uKTsKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRo
aXMsIElkZW50aWZpZXIoJnZtLCAiT1NSRXhpdCIpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDEsIE9T
UkV4aXRJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgImlzRmluYWxUaWVy
IiksIDAsIGZ1bmN0aW9uRmFsc2UyLCBJc0ZpbmFsVGllckludHJpbnNpYywgRG9udEVudW0gfCBK
U0M6OkZ1bmN0aW9uKTsKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMs
IElkZW50aWZpZXIoJnZtLCAicHJlZGljdEludDMyIiksIDAsIGZ1bmN0aW9uVW5kZWZpbmVkMiwg
U2V0SW50MzJIZWFwUHJlZGljdGlvbkludHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9u
KTsKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXIo
JnZtLCAiZmlhdEludDUyIiksIDAsIGZ1bmN0aW9uSWRlbnRpdHksIEZpYXRJbnQ1MkludHJpbnNp
YywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9uKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiREZHVHJ1ZSIpLCAw
LCBmdW5jdGlvbkZhbHNlMSwgREZHVHJ1ZUludHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0
aW9uKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiT1NSRXhpdCIpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDEsIE9T
UkV4aXRJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
ImlzRmluYWxUaWVyIiksIDAsIGZ1bmN0aW9uRmFsc2UyLCBJc0ZpbmFsVGllckludHJpbnNpYywg
RG9udEVudW0gfCBKU0M6OkZ1bmN0aW9uKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicHJlZGljdEludDMyIiks
IDAsIGZ1bmN0aW9uVW5kZWZpbmVkMiwgU2V0SW50MzJIZWFwUHJlZGljdGlvbkludHJpbnNpYywg
RG9udEVudW0gfCBKU0M6OkZ1bmN0aW9uKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZmlhdEludDUyIiksIDAs
IGZ1bmN0aW9uSWRlbnRpdHksIEZpYXRJbnQ1MkludHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1
bmN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZWZmZWN0ZnVsNDIi
LCBmdW5jdGlvbkVmZmVjdGZ1bDQyLCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJtYWtl
TWFzcXVlcmFkZXIiLCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRlciwgMCk7CkBAIC02NDQsMjAgKzY0
NCwyMCBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAg
ICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsRXhlYygpLCAw
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kp
CiAgICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsRXhlYygpLCBpLCBqc1N0
cmluZyhnbG9iYWxFeGVjKCksIGFyZ3VtZW50c1tpXSkpOwotICAgICAgICBwdXREaXJlY3Qodm0s
IElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICAgICAg
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbEV4ZWMoKSwgImFyZ3Vt
ZW50cyIpLCBhcnJheSk7CiAgICAgICAgIAotICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAiY29uc29sZSIpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbEV4ZWMoKSwgImNvbnNvbGUi
KSwganNVbmRlZmluZWQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGRGdW5jdGlvbihWTSYgdm0s
IGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1
bWVudHMpCiAgICAgewotICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBuYW1lKTsK
KyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sIG5hbWUpOwogICAgICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlv
bikpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFkZENvbnN0cnVjdGFibGVGdW5jdGlvbihWTSYg
dm0sIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBh
cmd1bWVudHMpCiAgICAgewotICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBuYW1l
KTsKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sIG5hbWUpOwogICAgICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CiAgICAgfQogfTsKQEAgLTg4OSw3ICs4ODks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgp
OyArK2kpCiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBnbG9iYWxP
YmplY3QtPnB1dERpcmVjdCgKLSAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcihnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAgICAgIGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
ICJhcmd1bWVudHMiKSwgYXJyYXkpOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb247CiAgICAgU3Rv
cFdhdGNoIHN0b3BXYXRjaDsKQEAgLTEyNzAsNyArMTI3MCw3IEBAIHN0YXRpYyBib29sIHJ1bldp
dGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0
PiYgc2NyCiAgICAgICAgICAgICBwcmludGYoIkVuZDogJXNcbiIsIHJldHVyblZhbHVlLnRvU3Ry
aW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlv
bikgewogICAgICAgICAgICAgcHJpbnRmKCJFeGNlcHRpb246ICVzXG4iLCBldmFsdWF0aW9uRXhj
ZXB0aW9uLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgSWRlbnRp
ZmllciBzdGFja0lEKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKKyAgICAg
ICAgICAgIElkZW50aWZpZXIgc3RhY2tJRCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksICJzdGFjayIpOwogICAgICAgICAgICAgSlNWYWx1ZSBzdGFj
a1ZhbHVlID0gZXZhbHVhdGlvbkV4Y2VwdGlvbi5nZXQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIHN0YWNrSUQpOwogICAgICAgICAgICAgaWYgKCFzdGFja1ZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCiAgICAgICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgc3RhY2tWYWx1ZS50b1N0cmlu
ZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKaW5kZXggYWIwMTUwMWIxMjkxN2Q5ZWU4MGVkMzE1MjNmOTI1OGRjNDQyZGEyZS4u
ZWRmZDY3MDFkYzBmM2Q1OTFjYjM3OGQzOTk4Y2I3ZDQyZjkwNGM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIERh
dGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PGlu
dCoqPigmdGVzdFZlY3RvcilbMF0gPT0gdGVzdFZlY3Rvci5iZWdpbigpKTsKICNlbmRpZgogCi0g
ICAgQVNTRVJUKFN0cmluZ0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVmZmVyID09IDMyKTsKKyAgICBB
U1NFUlQoU3RyaW5nSW1wbDo6c19oYXNoRmxhZzhCaXRCdWZmZXIgPT0gOCk7CiB9CiAjaWYgQ09N
UElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDcx
YTNlZmU3Njg5ZGY5ZGY1ZTg3OWU2M2U4MjQ3YWM4MDQ4Mzk1Ny4uYTkxZTQ2NzkwNmI1YWZmZmE0
N2RmN2NlZTdiNWU1MmM2ZmMyM2U1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTc2LDcgKzE3Niw3IEBAIGNvbnN0
IEZ1bmN0aW9uQ29kZSA9IDIKIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0CiAKICMgU3RyaW5nIGZsYWdzLgotY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9
IDMyCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gOAogCiAjIENvcGllZCBmcm9tIFByb3Bl
cnR5T2Zmc2V0LmgKIGNvbnN0IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ID0gMTAwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGZhNjQ5NTFhOWRmMmI2YjY0NTA1
ZmExZWEzN2ExMDA0YjlhOGQ5OTYuLjdlOTFkMzcyYzJmN2EwMzk2NjU4Mjk4OGJkNTlhNTk4MGYy
YmI4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC01
NjYsNyArNTY2LDcgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgewogICAgICAgICBpZiAobV92
bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNB
cmd1bWVudHMoKTsKLSAgICAgICAgQVNTRVJUKGlkZW50LT5pbXBsKCktPmlzQXRvbWljKCkpOwor
ICAgICAgICBBU1NFUlQoaWRlbnQtPmltcGwoKS0+aXNBdG9taWMoKSB8fCBpZGVudC0+aW1wbCgp
LT5pc1VuaXF1ZSgpKTsKICAgICAgICAgbV9zY29wZS5tX3ZhckRlY2xhcmF0aW9ucy5hcHBlbmQo
c3RkOjptYWtlX3BhaXIoKmlkZW50LCBhdHRycykpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDYzMThmZDYzNmJlYjNlN2I5MWQyOGY2NDk2YWVk
OWFmN2JkODcxOGMuLjRmNWIxMjU2ODhjOTM2ZTM1NzQ1ZDk1MjYwNDZlMjg0MGJjMTAzOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4NiwxMCArMjg2LDEw
IEBACiAgICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKICAgICAgICAgc2NvcGUt
PmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7Ci0gICAgICAgICAgICBpZiAoc2NvcGUtPmhh
c0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAg
ICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXI6OmZyb21V
aWQobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJ
ZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICBpZiAoc2NvcGUt
Pmhhc0RlY2xhcmVkUGFyYW1ldGVyKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgdmFyaWFibGUu
Z2V0KCkpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKHZh
cmlhYmxlID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpCkBAIC01MTgs
NyArNTE4LDcgQEAKICAgICBBU1NFUlQoIW5hbWUuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW5h
bWUuaXNOdWxsKCkpOwogICAgIAotICAgIEFTU0VSVChuYW1lLmltcGwoKS0+aXNBdG9taWMoKSk7
CisgICAgQVNTRVJUKG5hbWUuaW1wbCgpLT5pc0F0b21pYygpIHx8IG5hbWUuaW1wbCgpLT5pc1Vu
aXF1ZSgpKTsKICAgICBpZiAoZGVwdGgpIHsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1
Y3RUb1ZhcmlhYmxlcykKICAgICAgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZh
cmlhYmxlKCZuYW1lKSwgIkNhbm5vdCBkZWNvbnN0cnVjdCB0byBhIHZhcmlhYmxlIG5hbWVkICci
LCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCA0MjdiODRjZGE1MzIzMWE1NDcwNmY0Y2VmZWMz
ZDgxZDc4YjUwZGRiLi40MGVjZTUzYTBiNjQ0YzA4MjA3OWMyMmRmMGY5NDNiYzI1ZGJkYTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC03MywyMCAr
NzMsMjAgQEAKICAgICAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gdm0tPnBy
b3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcjsKICAgICAgICAgaWYgKGNoYXJhY3RlcnNbMF0g
Pj0gTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJz
LmFwcGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgICAg
IG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3Rl
cnMsIGxlbmd0aCkpOwogICAgICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICAgICAgaWYgKElk
ZW50aWZpZXIqIGlkZW50ID0gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dKQogICAg
ICAgICAgICAgICAgIHJldHVybiAqaWRlbnQ7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFw
cGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1f
aWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMs
IGxlbmd0aCkpOwogICAgICAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1d
ID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmll
cnMubGFzdCgpOwogICAgICAgICB9CiAgICAgICAgIElkZW50aWZpZXIqIGlkZW50ID0gbV9yZWNl
bnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKICAgICAgICAgaWYgKGlkZW50ICYmIElkZW50
aWZpZXI6OmVxdWFsKGlkZW50LT5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAg
ICAgICByZXR1cm4gKmlkZW50OwotICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlm
aWVyKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgbV9pZGVudGlmaWVycy5hcHBl
bmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAg
ICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSAmbV9pZGVudGlmaWVycy5s
YXN0KCk7CiAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICB9CkBAIC0x
MDIsNyArMTAyLDcgQEAKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAgICAgICBp
ZiAoSWRlbnRpZmllciogaWRlbnQgPSBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0p
CiAgICAgICAgICAgICAgICAgcmV0dXJuICppZGVudDsKLSAgICAgICAgICAgIG1faWRlbnRpZmll
cnMuYXBwZW5kKElkZW50aWZpZXIodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOworICAgICAgICAg
ICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgY2hhcmFj
dGVycywgbGVuZ3RoKSk7CiAgICAgICAgICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVy
c1swXV0gPSAmbV9pZGVudGlmaWVycy5sYXN0KCk7CiAgICAgICAgICAgICByZXR1cm4gbV9pZGVu
dGlmaWVycy5sYXN0KCk7CiAgICAgICAgIH0KQEAgLTExNiw3ICsxMTYsNyBAQAogICAgIAogICAg
IGlubGluZSBjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VOdW1lcmljSWRl
bnRpZmllcihWTSogdm0sIGRvdWJsZSBudW1iZXIpCiAgICAgewotICAgICAgICBtX2lkZW50aWZp
ZXJzLmFwcGVuZChJZGVudGlmaWVyKHZtLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlw
dChudW1iZXIpKSk7CisgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG51bWJlcikpKTsK
ICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOTg1NDhkMmE0MWQ4NmI3
N2U1ZDU3YmY0N2ZjY2Y5NjBmODJmYThiOS4uZmQ5MDNlNTRkMTgwZmRiY2MyYmM4NWJjMzQ4NzJh
MzUyZjhiYjM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
Y3BwCkBAIC0xODAsMTAgKzE4MCwxMCBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogCiAgICAg
aWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSkgeworICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKSB7
CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIHRoaXNP
YmplY3QtPkpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9y
UHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgICAg
ICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNUSU9OKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5p
dGVyYXRvclN5bWJvbCwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAg
ICAgIGlmIChKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0x
OTgsNyArMTk4LDcgQEAgdm9pZCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkp
KTsKICAgICB9Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkp
IHsKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKICAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSk7CiAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBkNzljYzUyZTA5MmJjNmU5MGI0MWJi
ZTc5OThjMmFiNzA3YWEzZDJjLi5jNjkwNGZhNTA1YWI2YTU2Y2RmMzE1MDE3OGViNGM1NDI3NWZl
YjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJ
dGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgQXJn
dW1lbnRzSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iCiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnBy
b3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBhcmd1bWVudHNJ
dGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5j
cHAKaW5kZXggYzg4MDBlM2NkY2E2MjUyZWFiOThmZDAyMTE4NjFlMWQwZGJlYzExMi4uYmQzNTU1
YzQ0MjA5YmQ3NWExMzhmNWYyMzhjYjk2NzVjNmQyNmMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgdm9pZCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBBU1NFUlQoaW5oZXJp
dHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAot
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRl
TmFtZSwgYXJyYXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUsIERvbnRFbnVtLCAwKTsKKyAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcnJh
eUl0ZXJhdG9yUHJvdG90eXBlSXRlcmF0ZSwgRG9udEVudW0sIDApOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5SXRlcmF0b3JQcm90b3R5cGVJdGVyYXRlKENhbGxGcmFt
ZSogY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCmluZGV4IDNmZDAzNGExYzMyODQ2MWE0NjVjZTY2MmMwOThkMjNkZTFiNDg3
NGQuLmM0YTcwZDg5MzE1ZWE5OWMzZmUzOTBjNzRmMjA2MGEwY2MxZDg5ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzOCw3
ICsxMzgsNyBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRk
UHJvdG90eXBlKHRoaXMpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAw
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sLCBhcnJheVByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwogfQogCiBib29sIEFycmF5
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBA
IC01MzAsNyArNTMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1B1c2goRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFi
bGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsZW5ndGggKyBuLCBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChuKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZShleGVjLCBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihuKSkudG9XVEZTdHJpbmcoZXhlYykpOworICAgICAgICAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIEpTVmFsdWUo
c3RhdGljX2Nhc3Q8aW50NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50
b1dURlN0cmluZyhleGVjKSk7CiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5w
dXQodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChu
KSwgc2xvdCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpA
QCAtNzM1LDcgKzczNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBuYW1lQXJyYXko
ZXhlYyk7Ci0gICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5
TmFtZXModGhpc09iaiwgZXhlYywgbmFtZUFycmF5LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1l
cyh0aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggNTZkZjM0
NTAyODdmZjk5OWEzOGZjZjRjYjcxNTBlODYxYTU2NDNlOC4uMGIyOGQ1Yzg3OTY2NmNiMTUzYjM4
YjM4N2VmN2YxMDdjNWJlODBiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjIsMjUgKzIyLDI4IEBACiAjaW5jbHVk
ZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2lu
Y2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNp
bmNsdWRlICJQcml2YXRlTmFtZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBJTklU
SUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5J
VElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCisjZGVmaW5l
IElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgI25hbWUpKQorI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1l
IyNLZXl3b3JkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSkKICNkZWZpbmUgSU5J
VElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0aW5O
YW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkKKyNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wobmFt
ZSkgLCBuYW1lIyNTeW1ib2wobV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQogCiBDb21t
b25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50
aWZpZXIoKQogICAgICwgZW1wdHlJZGVudGlmaWVyKElkZW50aWZpZXI6OkVtcHR5SWRlbnRpZmll
cikKLSAgICAsIHVuZGVyc2NvcmVQcm90byh2bSwgIl9fcHJvdG9fXyIpCi0gICAgLCB0aGlzSWRl
bnRpZmllcih2bSwgInRoaXMiKQotICAgICwgdXNlU3RyaWN0SWRlbnRpZmllcih2bSwgInVzZSBz
dHJpY3QiKQorICAgICwgdW5kZXJzY29yZVByb3RvKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJfX3Byb3RvX18iKSkKKyAgICAsIHRoaXNJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJ0aGlzIikpCisgICAgLCB1c2VTdHJpY3RJZGVudGlmaWVyKElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1c2Ugc3RyaWN0IikpCiAgICAgLCBtX2J1aWx0aW5OYW1lcyhuZXcgQnVp
bHRpbk5hbWVzKHZtLCB0aGlzKSkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZ
V09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNI
X1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05f
UFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRF
X05BTUUpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9X
Tl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGYxMTE3NzNmMTA1NTc0
OTgxZTk2ODc3YzQ3OTNlNGU5NWFkYjU4NTguLmRhZTkxMDFkZjA5ZWRlNjI4NThhZmRjZDhkZGJl
ZGE1NzMxZGM2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMjM0LDcgKzIzNCw2IEBACiAgICAgbWFjcm8odW5zY29wYWJs
ZSkKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJU
WV9OQU1FKG1hY3JvKSBcCi0gICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hf
V0VMTF9LTk9XTl9TWU1CT0wobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvck5leHQpIFwKICAg
ICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8ocmVqZWN0KSBcCkBAIC0yODksNyArMjg4LDEx
IEBACiAjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1F
X0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOwogICAgICAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBK
U0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKLSAgICAg
ICAgCisKKyNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05f
U1lNQk9MX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1N5bWJvbDsKKyAgICAg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wo
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkK
KyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xf
R0xPQkFMCisKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29u
c3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCmluZGV4IDRkYmFmN2I0MTdkYzcwOGZiYzZjNzI1
MDlmMTlmNTQ0ZjAxYjk2YmQuLmVkYTJjYjE0YjU1OTQ3MzA2ZjMzMDQ0NGI4OWM0MGUyYzc4NGMw
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9u
TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9k
ZS5oCkBAIC0yOCw2MyArMjgsNTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gRW51bWVy
YXRpb25Nb2RlIHsKLSAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLAotICAgIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3QsCi0gICAgSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcywKLSAgICBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0Ci19
OworY2xhc3MgRW51bWVyYXRpb25Nb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19mbGFnSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyA9IDF1IDw8IDA7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ1NraXBKU09iamVjdCA9IDF1IDw8IDE7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0luY2x1ZGVTeW1ib2xzID0gMXUgPDwgMjsKKworICAg
IGVudW0gRW51bWVyYXRpb25Nb2RlUmVwcmVzZW50YXRpb25UYWcgOiB1bnNpZ25lZCB7CisgICAg
ICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMgPSAwLAorICAgICAgICBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMgPSBzX2ZsYWdJbmNsdWRlU3ltYm9scywKKyAg
ICAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyA9IHNfZmxhZ0luY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMsCisgICAgICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3lt
Ym9scyA9IHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRpZXMgfCBzX2ZsYWdJbmNsdWRlU3lt
Ym9scywKKyAgICB9OworCisgICAgRW51bWVyYXRpb25Nb2RlKEVudW1lcmF0aW9uTW9kZVJlcHJl
c2VudGF0aW9uVGFnIHRhZykKKyAgICAgICAgOiBtX2ZsYWdzKHRhZykKKyAgICB7CisgICAgfQog
Ci1pbmxpbmUgYm9vbCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKEVudW1lcmF0aW9u
TW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllczoKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lw
SlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBib29sIHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzOwogICAgIH0KLX0KIAotaW5saW5lIGJvb2wgc2hvdWxkRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUp
IHsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgY2FzZSBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBzaG91bGRJbmNs
dWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAh
KG1fZmxhZ3MgJiBzX2ZsYWdTa2lwSlNPYmplY3QpOwogICAgIH0KLX0KIAotaW5saW5lIGJvb2wg
c2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkK
LXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXM6Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6
Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBzaG91bGRJbmNsdWRlU3ltYm9scygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9mbGFncyAmIHNfZmxhZ0luY2x1ZGVTeW1ib2xzOwog
ICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19CiAK
LWlubGluZSBFbnVtZXJhdGlvbk1vZGUgbW9kZVRoYXRTa2lwc0pTT2JqZWN0KEVudW1lcmF0aW9u
TW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllczoKLSAgICAgICAgcmV0dXJuIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNB
bmRTa2lwSlNPYmplY3Q7Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAg
ICAgICByZXR1cm4gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDsKLSAg
ICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgY2Fz
ZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1
cm4gbW9kZTsKKyAgICBzdGF0aWMgRW51bWVyYXRpb25Nb2RlIGNyZWF0ZVRoYXRTa2lwc0pTT2Jq
ZWN0KEVudW1lcmF0aW9uTW9kZSBtb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVudW1lcmF0
aW9uTW9kZShtb2RlLm1fZmxhZ3MgfCBzX2ZsYWdTa2lwSlNPYmplY3QpOwogICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbW9kZTsKLX0KKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBFbnVtZXJhdGlvbk1vZGUodW5zaWduZWQgZmxhZ3MpCisgICAgICAgIDogbV9m
bGFncyhmbGFncykKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9mbGFnczsKK307CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5j
cHAKaW5kZXggOTMwYjZmYWY2YmMxZmM2NWRlOWU2MWExZmM3ZTYyYTllNWZjNjgwZS4uMzYxNTZh
MWUwNTE2ODFmNWNlYjU2MTgyYjZlNGViOTQyOWI4ZjUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTM3LDE3ICsxMzcsMTcgQEAgSlNPYmplY3QqIGFkZEVy
cm9ySW5mbyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwg
Y29uc3QgU28KICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCA9IHNvdXJjZS5wcm92aWRlcigp
LT51cmwoKTsKIAogICAgIGlmIChsaW5lICE9IC0xKQotICAgICAgICBlcnJvci0+cHV0RGlyZWN0
KCp2bSwgSWRlbnRpZmllcih2bSwgbGluZVByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGxpbmUpLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCp2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbGluZVByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGxpbmUp
LCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQot
ICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCp2bSwgSWRlbnRpZmllcih2bSwgc291cmNlVVJMUHJv
cGVydHlOYW1lKSwganNTdHJpbmcodm0sIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSk7CisgICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpLCBqc1N0cmluZyh2bSwgc291cmNlVVJMKSwgUmVh
ZE9ubHkgfCBEb250RGVsZXRlKTsKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKIAogYm9vbCBoYXNF
cnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZXJyb3IpCiB7Ci0gICAgcmV0dXJu
IGVycm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGxpbmVQcm9wZXJ0eU5h
bWUpKQotICAgICAgICB8fCBlcnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVj
LCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gZXJyb3ItPmhhc1Byb3BlcnR5
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbGluZVByb3BlcnR5TmFtZSkpCisg
ICAgICAgIHx8IGVycm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSkpOwogfQogCiBKU09iamVjdCogdGhyb3dUeXBl
RXJyb3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCAxMDVhYWVmN2YwOWFhZTE1MmI4NWYzMjA4
YjE0YmJmOTBhMWY1YWMzLi4yMjIxY2ZhZDgzMWJiZGVhYzZjMTgxZDE2MjBlN2MzMGU4ZjVlNzBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcApAQCAtODIsNyArODIsNyBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiBKU09iamVjdCogY3JlYXRlVW5kZWZp
bmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
KQogewogICAgIAotICAgIGlmIChpZGVudC5pbXBsKCktPmlzVW5pcXVlKCkpIHsKKyAgICBpZiAo
aWRlbnQuaW1wbCgpLT5pc1ByaXZhdGUoKSkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtl
U3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCAwMTMyZDBlNzUyOGVhMzYzYjhjMzEz
NmVjZTViMDA4YzUzOWEzOGVmLi4wODc1MDliNjYwNDc3ZmQyMjljZDNmMGUzOGVmNTkxNGI5MTNm
MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0z
OCwyMyArMzgsNiBAQCBjbGFzcyBJZGVudGlmaWVyIHsKICAgICBlbnVtIEVtcHR5SWRlbnRpZmll
ckZsYWcgeyBFbXB0eUlkZW50aWZpZXIgfTsKICAgICBJZGVudGlmaWVyKEVtcHR5SWRlbnRpZmll
ckZsYWcpIDogbV9zdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkgeyBBU1NFUlQobV9zdHJpbmcu
aW1wbCgpLT5pc0F0b21pYygpKTsgfQogCi0gICAgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3Ry
aW5nIGxpdGVyYWxzLgotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KLSAg
ICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlcnNDb3VudF0pIDogbV9zdHJpbmcoYWRkKGV4ZWMsIGNoYXJhY3RlcnMpKSB7IEFTU0VS
VChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQg
Y2hhcmFjdGVyc0NvdW50PgotICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBjaGFyICgmY2hh
cmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhhZGQodm0sIGNoYXJhY3RlcnMp
KSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0KLSAgICBJZGVudGlm
aWVyKEV4ZWNTdGF0ZSosIEF0b21pY1N0cmluZ0ltcGwqKTsKLSAgICBJZGVudGlmaWVyKEV4ZWNT
dGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBl
eGVjLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRkKGV4ZWMsIHJlcCkpIHsgQVNTRVJU
KG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChleGVjLCBzLmltcGwoKSkp
IHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVy
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogcykgOiBJZGVudGlmaWVyKGV4ZWMsIEF0b21p
Y1N0cmluZyhzKSkgeyB9Ci0KLSAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgTENoYXIqIHMs
IGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0
cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0
IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBB
U1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoVk0q
IHZtLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRkKHZtLCByZXApKSB7IEFTU0VSVCht
X3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIGNv
bnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQodm0sIHMuaW1wbCgpKSkgeyBBU1NFUlQobV9z
dHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmco
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIEF0b21pY1N0cmluZ0ltcGwqIGltcGwo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4obV9zdHJpbmcu
aW1wbCgpKTsgfQogCkBAIC02MywxMiArNDYsMzIgQEAgY2xhc3MgSWRlbnRpZmllciB7CiAgICAg
Q1N0cmluZyBhc2NpaSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmFzY2lpKCk7IH0KICAgICBD
U3RyaW5nIHV0ZjgoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy51dGY4KCk7IH0KIAotICAgIHN0
YXRpYyBJZGVudGlmaWVyIGZyb20oY29uc3QgUHJpdmF0ZU5hbWUmIG5hbWUpCi0gICAgewotICAg
ICAgICBJZGVudGlmaWVyIHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fc3RyaW5nID0gbmFtZS51
aWQoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAgLy8gVGhlcmUncyAyIGZ1
bmN0aW9ucyB0byBjb25zdHJ1Y3QgSWRlbnRpZmllciBmcm9tIHN0cmluZywgKDEpIGZyb21TdHJp
bmcgYW5kICgyKSBmcm9tVWlkLgorICAgIC8vIFRoZXkgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZ3Mg
aW4ga2VlcGluZyBvciBkaXNjYXJkaW5nIHVuaXF1ZW5lc3Mgb2Ygc3RyaW5ncy4KKyAgICAvLyAo
MSk6IGZyb21TdHJpbmcKKyAgICAvLyBKdXN0IGNvbnN0cnVjdCBJZGVudGlmaWVyIGZyb20gc3Ry
aW5nLiBTdHJpbmcgaGVsZCBieSBJZGVudGlmaWVyIGlzIGFsd2F5cyBhdG9taXplZC4KKyAgICAv
LyBVbmlxdWVuZXNzIG9mIFN0cmluZ0ltcGwqLCB3aGljaCByZXByZXNlbnRzIHRoYXQgdGhlIHN0
cmluZyBpcyBpbnRlZGVkIHRvIGJlIHVzZWQgZm9yIEVTNiBTeW1ib2xzLCBpcyBkaXNjYXJkZWQu
CisgICAgLy8gU28gYSBjb25zdHJ1Y3RlZCBJZGVudGlmaWVyIG5ldmVyIHJlcHJlc2VudHMgYSBz
eW1ib2wuCisgICAgLy8gKDIpOiBmcm9tVWlkCisgICAgLy8gZnJvbVVpZCBrZWVwcyB1bmlxdWVu
ZXNzIG9mIHByb3ZpZGVkIFN0cmluZ0ltcGwqIHdoaWxlIGZyb21TdHJpbmcgZGlzY2FyZHMgaXQu
CisgICAgLy8gVXNlIGZyb21VaWQgd2hlbiBjb25zdHJ1Y3RpbmcgSWRlbnRpZmllciBmcm9tIFN0
cmluZ0ltcGwqIHdoaWNoIG1heSByZXByZXNlbnQgc3ltYm9scy4KKworICAgIC8vIE9ubHkgdG8g
YmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFy
YWN0ZXJzQ291bnQ+CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0
IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKTsKKyAgICB0ZW1wbGF0ZTx1bnNp
Z25lZCBjaGFyYWN0ZXJzQ291bnQ+CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhF
eGVjU3RhdGUqLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSk7Cisg
ICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IExDaGFyKiwgaW50IGxl
bmd0aCk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IFVDaGFy
KiwgaW50IGxlbmd0aCk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNv
bnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRl
KiwgQXRvbWljU3RyaW5nSW1wbCopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmco
RXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIElkZW50aWZpZXIg
ZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSWRlbnRp
ZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKKworICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21VaWQoVk0qLCBTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBJZGVu
dGlmaWVyIGZyb21VaWQoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tVWlkKGNvbnN0IFByaXZhdGVOYW1lJik7CiAKICAgICBzdGF0aWMgSWRl
bnRpZmllciBjcmVhdGVMQ2hhckZyb21VQ2hhcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQg
bGVuZ3RoKSB7IHJldHVybiBJZGVudGlmaWVyKHZtLCBhZGQ4KHZtLCBzLCBsZW5ndGgpKTsgfQog
CkBAIC0xMDUsNiArMTA4LDIwIEBAIGNsYXNzIElkZW50aWZpZXIgewogcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zdHJpbmc7CiAKKyAgICAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0
ZXJhbHMuCisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgorICAgIElkZW50
aWZpZXIoVk0qIHZtLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkg
OiBtX3N0cmluZyhhZGQodm0sIGNoYXJhY3RlcnMpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCkt
PmlzQXRvbWljKCkpOyB9CisKKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgTENoYXIqIHMs
IGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0
cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CisgICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0
IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBB
U1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorICAgIElkZW50aWZpZXIoRXhl
Y1N0YXRlKiwgQXRvbWljU3RyaW5nSW1wbCopOworICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwg
Y29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKSA6IG1fc3RyaW5nKGFkZCh2bSwgc3RyaW5nLmltcGwoKSkpIHsgQVNTRVJUKG1f
c3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgU3Ry
aW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZCh2bSwgcmVwKSkgeyBBU1NFUlQobV9zdHJpbmcu
aW1wbCgpLT5pc0F0b21pYygpKTsgfQorCisgICAgZW51bSBVbmlxdWVJZGVudGlmaWVyRmxhZyB7
IFVuaXF1ZUlkZW50aWZpZXIgfTsKKyAgICBJZGVudGlmaWVyKFVuaXF1ZUlkZW50aWZpZXJGbGFn
LCBTdHJpbmdJbXBsKiB1aWQpIDogbV9zdHJpbmcodWlkKSB7IEFTU0VSVChtX3N0cmluZy5pbXBs
KCktPmlzVW5pcXVlKCkpOyB9CisKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiAg
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDMyX3QgdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhj
b25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sJiBvayk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5o
CmluZGV4IDc0NzJkODQ3ZDc1YjMwM2U2NDU0ZjA2ZDY5ZWQ2ZmM1ZWU2OTIzYWMuLmQ0MmZkYzZi
ZmJlMDEyN2I1NDYzOTk4OWJmODNmMDI2ZjZkMGYzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaApAQCAtMzcsNyArMzcsNyBAQCBp
bmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEF0b21pY1N0cmlu
Z0ltcGwqIHN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3Ry
aW5nVGFibGUoZXhlYyk7CiAgICAgaWYgKHN0cmluZykKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghc3RyaW5nLT5sZW5ndGgoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdU
YWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJl
YWQhIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwg
c3RyaW5nLT5pc1VuaXF1ZSgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxl
KHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEi
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogI2VuZGlmCkBAIC00OSw3ICs0OSw3
IEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0
b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgQXRvbWljU3RyaW5nOjpp
c0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nLmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBj
b21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghc3RyaW5nLmxlbmd0aCgpIHx8IHN0cmluZy5pbXBsKCktPmlzVW5pcXVlKCkgfHwgQXRvbWlj
U3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nLmltcGwoKSksICJUaGUgYXRvbWlj
IHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOwogI2VuZGlmCkBAIC03MCw2ICs3MCw3MCBAQCBpbmxpbmUgSWRlbnRpZmll
cjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5n
KQogICAgIHJldHVybiAqQXRvbWljU3RyaW5nOjphZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcigq
dm0sIHIpOwogfQogCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tVWlkKFZNKiB2
bSwgU3RyaW5nSW1wbCogdWlkKQoreworICAgIGlmICghdWlkIHx8ICF1aWQtPmlzVW5pcXVlKCkp
CisgICAgICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCB1aWQpOworICAgIHJldHVybiBJZGVudGlm
aWVyKFVuaXF1ZUlkZW50aWZpZXIsIHVpZCk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50
aWZpZXI6OmZyb21VaWQoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiB1aWQpCit7CisgICAg
cmV0dXJuIGZyb21VaWQoJmV4ZWMtPnZtKCksIHVpZCk7Cit9CisKK2lubGluZSBJZGVudGlmaWVy
IElkZW50aWZpZXI6OmZyb21VaWQoY29uc3QgUHJpdmF0ZU5hbWUmIG5hbWUpCit7CisgICAgcmV0
dXJuIElkZW50aWZpZXIoVW5pcXVlSWRlbnRpZmllciwgbmFtZS51aWQoKSk7Cit9CisKK3RlbXBs
YXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVy
c0NvdW50XSkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycyk7Cit9CisK
K3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KK2lubGluZSBJZGVudGlmaWVyIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyICgmY2hhcmFj
dGVycylbY2hhcmFjdGVyc0NvdW50XSkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcigmZXhlYy0+
dm0oKSwgY2hhcmFjdGVycyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoVk0qIHZtLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1
cm4gSWRlbnRpZmllcih2bSwgcywgbGVuZ3RoKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKQor
eworICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBzLCBsZW5ndGgpOworfQorCitpbmxpbmUgSWRl
bnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzdHJp
bmcpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN0cmluZy5pbXBsKCkpOworfQorCitp
bmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIoJmV4ZWMtPnZt
KCksIHN0cmluZy5pbXBsKCkpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgQXRvbWljU3RyaW5nSW1wbCogYXRvbWljU3RyaW5n
KQoreworICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIGF0b21pY1N0cmluZyk7Cit9CisKK2lu
bGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBdG9taWNTdHJpbmcmIGF0b21pY1N0cmluZykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmll
cihleGVjLCBhdG9taWNTdHJpbmcpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogcykKK3sKKyAgICByZXR1
cm4gSWRlbnRpZmllcihleGVjLCBBdG9taWNTdHJpbmcocykpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIElkZW50aWZpZXJJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggMjBkNDlkYjhiYTJlMmM1ODU1MDY2NzQ5ZWY5
ZGY1MTU1NDE1NzY4MS4uYzFiMDRhNmUyMmVkMjhhMmY5M2QyMzBkNTYzYzMwOGU2MjZlMTJkMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTIyNiw3ICsy
MjYsNyBAQCB2b2lkIEpTQXJyYXk6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogewogICAgIEpTQXJyYXkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpOwogCiAgICAgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKaW5kZXggYzFjYWQxMDVj
N2UwZDVhZDdlZmQyOTZhM2JlZjA2OTZjOTVmNjAwNy4uNWI2NmM0NGYzZTgxODQyNTAwOGI2MGFl
ZDQyNjEzYWJjN2UxOGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEpTQXJyYXlCdWZmZXI6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKIHsKICAgICBKU0FycmF5QnVmZmVyKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXIqPihvYmplY3QpOwogICAgIAotICAgIGlmIChz
aG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoKTsKICAgICAKICAgICBCYXNlOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4
IGNiNWM4YTJmMDM5MzQzYzVhMjQwNTBiMDkwODA4ZGVkMjVlMTA5MGIuLmFkYTY3M2JlNzc0OTdk
MDY2MmZjZWNjNzdiMGI4NGJkYzI2ZGE2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2
b2lkIEpTQXJyYXlCdWZmZXJWaWV3OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoCiAgICAg
SlNBcnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcq
PihvYmplY3QpOwogICAgIAogICAgIC8vIGxlbmd0aC9ieXRlT2Zmc2V0L2J5dGVMZW5ndGggYXJl
IERvbnRFbnVtLCBhdCBsZWFzdCBpbiBGaXJlZm94LgotICAgIGlmIChzaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuYnl0ZU9mZnNldCk7CiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Ynl0ZUxlbmd0aCk7CiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVm
ZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCmluZGV4IGRlZDhj
ODU4MGIwYWMzNWQ0ZDk3NzE2YTAwYWRmMDgwZGNiNmUyZWUuLjMyYWNhZDUyMGQ1YjQwM2JkMTQ3
MjFiYWJmZTY5ZjQyNDJlNThlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
YWxsZWUuaApAQCAtMTAxLDcgKzEwMSw3IEBAIGNsYXNzIEpTQ2FsbGVlIDogcHVibGljIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUgPSBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTFiNjZmMTViMzY2MDczNTYyMzY5MjA1
NzdlODFhNzY4ZDFkNTViLi41YmVjODU4OTk5MTU2MmE4ZTI0ZDgwMjY3OGRiMGExMmU3NjZhYjlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAt
MzY5LDcgKzM2OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rpb246
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24q
PihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSAmJiBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKCF0
aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIG1vZGUuc2hvdWxkSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYmUwYmRjNzg0MmY5NzMzYzc2YjA2NDQzYmRhMzY2MTQx
OGVhNTk5Ny4uMzRlZDQwOGI1ZDFiMDgxZmZiNGI0YzlhYWY4NjljNWZhNDlkNDZiMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTM4LDcgKzEzOCw3
IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHkpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlID0gRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAK
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5k
ZXggNmQwZDIxZmE2MWYzOTg5ZjlkOWI0MTk5ZGFhODg4ZTlmNjY0NGVjYS4uYTk5OGVlODg1MjFl
ZjY3MzlhMjIxMTU2N2QzNzgzMmFlMzQ4NTA1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKQEAgLTQxNSw3ICs0MTUsNyBAQAogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAg
ICAKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBp
ZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIGFycmF5
LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKICAgICAKICAgICBCYXNlOjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDZiYTkyMmY3NTAxMzE5ODNjNWVjMTE5ZDg3OTM3MjcyNDMwNzk2YTAuLjFlZjI1NDE1MDVl
YWEwNjFjZjRmM2M4ZmY0Yzc0NmVmOTM1NzIzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICAvLyBDb25zdHJ1Y3RvcnMK
ICAgICAKLSAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVj
dENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9i
amVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5j
dGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQo
KSk7CkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0p
CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCB0eXBlZEFycmF5SW5kZXggPSBOVU1CRVJfT0ZfVFlQ
RURfQVJSQVlfVFlQRVM7IHR5cGVkQXJyYXlJbmRleC0tOykgewogICAgICAgICBtX3R5cGVkQXJy
YXlzW3R5cGVkQXJyYXlJbmRleF0ucHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHR5cGVkQXJyYXlDb25zdHJ1Y3Rv
cnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwotICAgICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcihleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5
cGVkQXJyYXlJbmRleF0tPm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVk
QXJyYXlJbmRleF0sIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdHlwZWRBcnJheUNvbnN0cnVjdG9y
c1t0eXBlZEFycmF5SW5kZXhdLT5uYW1lKGV4ZWMpKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0
eXBlZEFycmF5SW5kZXhdLCBEb250RW51bSk7CiAgICAgfQogICAgIAogICAgIEpTRnVuY3Rpb24q
IGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5
TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwpA
QCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
IENvbnNvbGVQcm90b3R5cGUqIGNvbnNvbGVQcm90b3R5cGUgPSBDb25zb2xlUHJvdG90eXBlOjpj
cmVhdGUodm0sIHRoaXMsIENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NvbnNvbGVTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0NvbnNvbGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgY29uc29sZVBy
b3RvdHlwZSkpOwogICAgIEpTQ29uc29sZSogY29uc29sZU9iamVjdCA9IEpTQ29uc29sZTo6Y3Jl
YXRlKHZtLCBtX2NvbnNvbGVTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKGV4ZWMsICJjb25zb2xlIiksIGNvbnNvbGVPYmplY3Qs
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiY29uc29sZSIpLCBjb25zb2xlT2JqZWN0LCBEb250RW51bSk7
CiAKICAgICByZXNldFByb3RvdHlwZSh2bSwgcHJvdG90eXBlKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNDFhYWY5NjNkN2Q0
YzcxYjhhNzY5ZmQwNDExNmUwYTljNTk5M2E5YS4uYWY4ZGU4Y2I4MDZmNGI5YzRhN2NhMmE3ODdm
YzQ2NzRiZGIxZjM0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC0zMDUsNiArMzA1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBib29sIGhhc0RlYnVnZ2Vy
KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQogICAgIGJvb2wgaGFzUHJvZmlsZXIoKSBj
b25zdCB7IHJldHVybiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1Byb2ZpbGlu
Zyh0aGlzKTsgfQorICAgIGNvbnN0IFJ1bnRpbWVGbGFncyYgcnVudGltZUZsYWdzKCkgY29uc3Qg
eyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGV4cGxpY2l0IEpTR2xvYmFsT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggODQwMzdhMzQ1Zjk5
ZTg1MDBiZjZkMDU2YTUxODQ5ZGMxOWI1NmZhMC4uYmRmYzM0NTBiMDA1ZGRkNjYxMWIxN2FhZDJj
MWVkOWNjZTFkMDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAtMTE0LDExICsxMTQsMTUgQEAgdm9pZCBK
U0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGEKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhp
c09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7
CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0
LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgIGlmIChpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0gJiYgIXNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgICAgICAgICBpZiAoaXQtPnZh
bHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtICYmICFtb2RlLnNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGlmICghdGhpc09iamVjdC0+aXNWYWxpZChpdC0+dmFsdWUpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBp
dC0+a2V5LmdldCgpKSk7CisgICAgICAgICAgICBpZiAoaXQtPmtleS5nZXQoKS0+aXNQcml2YXRl
KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIW1vZGUuc2hv
dWxkSW5jbHVkZVN5bWJvbHMoKSAmJiBpdC0+a2V5LmdldCgpLT5pc1VuaXF1ZSgpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
Zmllcjo6ZnJvbVVpZChleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgLy8gU2tpcCB0aGUgSlNFbnZpcm9ubWVudFJlY29yZCBpbXBsZW1lbnRhdGlvbiBvZiBnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPTk9iamVjdC5jcHAKaW5kZXggYmRiODIxY2RmNTY0ODBkNjhkYzFjNGRhMmVkMDU2Y2I1NTgx
ZTFhOS4uYzg5OGEzNDI4NTk1YjZkMTE5MzJjMGVhOGUwZDliODBmMWJhMzVhYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTQ5MCw3ICs0OTAs
NyBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdp
ZmllciYgc3RyaW5naWZpZXIsIFN0cmluZ0J1aQogICAgICAgICAgICAgICAgIG1fcHJvcGVydHlO
YW1lcyA9IHN0cmluZ2lmaWVyLm1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMuZGF0YSgpOwog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgb2Jq
ZWN0UHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICAgICAgICAgICAgICBtX29iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQoKSwgZXhlYywgb2JqZWN0
UHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAg
ICAgbV9vYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMobV9vYmplY3Qu
Z2V0KCksIGV4ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0g
b2JqZWN0UHJvcGVydHlOYW1lcy5yZWxlYXNlRGF0YSgpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgbV9zaXplID0gbV9wcm9wZXJ0eU5hbWVzLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5zaXpl
KCk7CkBAIC03MDcsNyArNzA3LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxr
KEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5wdXNoKG9i
amVjdCk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAg
ICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0g
ICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51bWVy
YXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAgICAgICAgICBGQUxMVEhST1VH
SDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBkYjJh
NzIyY2JhODg1YzgwODZkZWI3OTBjMmMyODU3Mzc0ZjZmNzk5Li5lZDEzZWEwYThiZTNiMzUyOWFi
MjZkODQzMTYyYzMwNDNjZWY0OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFz
c1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5i
ZWdpbigpOyBpdGVyICE9IHRhYmxlLT5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAo
KCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMobW9kZSkpICYmICEoKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1
bmN0aW9uKSAmJiBkaWRSZWlmeSkpCi0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
SWRlbnRpZmllcigmdm0sIGl0ZXIua2V5KCkpKTsKKyAgICAgICAgICAgIGlmICgoIShpdGVyLT5h
dHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKCkpICYmICEoKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAm
JiBkaWRSZWlmeSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sIGl0ZXIua2V5KCkpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAg
LTE1MTgsNyArMTUxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBCiAKIHZvaWQgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUp
CiB7Ci0gICAgaWYgKCFzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKG1vZGUpKSB7
CisgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSkgewog
ICAgICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGdldCBub24taW5kZXhlZCBwcm9wZXJ0aWVzIGZy
b20gYW55IHN1YmNsYXNzZXMgb2YgSlNPYmplY3QgdGhhdCBoYXZlIHRoZW0uCiAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogICAgICAgICByZXR1cm47CkBA
IC0xNTcyLDcgKzE1NzIsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBt
YXAtPmVuZCgpOwogICAgICAgICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkgfHwgIShpdC0+
dmFsdWUuYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKKyAgICAgICAgICAgICAgICBpZiAobW9kZS5z
aG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkgfHwgIShpdC0+dmFsdWUuYXR0cmlidXRl
cyAmIERvbnRFbnVtKSkKICAgICAgICAgICAgICAgICAgICAga2V5cy51bmNoZWNrZWRBcHBlbmQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0LT5rZXkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIApAQCAtMTU5NCw3ICsxNTk0LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHIKIHsKICAg
ICBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoZXhlYywgb2JqZWN0LT5jbGFzc0luZm8oKSwgcHJvcGVy
dHlOYW1lcywgbW9kZSwgb2JqZWN0LT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpOwogCi0gICAg
aWYgKCFzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKG1vZGUpKQorICAgIGlmICgh
bW9kZS5zaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTY3OSw3ICsxNjc5LDcgQEAg
dm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChhdXRv
IGl0ZXIgPSBoYXNoVGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQoKTsgKytp
dGVyKSB7CiAgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVu
Y3Rpb24pCi0gICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSwgaXRlci52YWx1ZSgpLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwg
aXRlci5rZXkoKSksIHNsb3QpOworICAgICAgICAgICAgICAgIHNldFVwU3RhdGljRnVuY3Rpb25T
bG90KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGl0ZXIudmFsdWUoKSwgdGhpcywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGl0ZXIua2V5KCkpLCBzbG90KTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMjgwMCw3ICsyODAwLDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0U3RydWN0dXJl
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKIHZv
aWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlVGhhdFNraXBzSlNPYmplY3QobW9kZSkpOworICAgIG9iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlOjpjcmVhdGVUaGF0U2tpcHNKU09iamVjdChtb2RlKSk7CiAKICAg
ICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggM2Y1ZTI1ZDE1YjAzZTYw
ZDU3OGM4MzRjM2ZkNTA5Mjc2OGFkYTBkNC4uNzg2Nzc1YTBkYzQ5YzEyMzA3ZGFmNDUyMjE2YWI3
ODM0ZTFhYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBA
IC0xNTU0LDcgKzE1NTQsNyBAQCBpbmxpbmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKIAogQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVudGlm
aWVyKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcigm
dm0sIG5hbWUpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFtZSk7
CiB9CiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBtYWtlSWRlbnRpZmllcihWTSYsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjFhMmU1NjJmOWFiZjQwMmFiNjM4
ZGMwOWM2ZWZjMzgwZDFjNWI0ZC4uMmE1MTY5NzIxMWM2ZDhhM2JlNGU0ZTc4MmUyOWFkYzJhNWVj
OTA0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMjUxLDcgKzI1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0ganNDYXN0PEpTUHJvbWlzZURlZmVy
cmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0aGUg
cmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRlcmFibGUpLgotICAgIEpTVmFsdWUgaXRl
cmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvclByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJs
ZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1
cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApAQCAtMzY3LDcgKzM2Nyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jQWxsKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBqc0Nhc3Q8SlNQ
cm9taXNlRGVmZXJyZWQqPihkZWZlcnJlZFZhbHVlKTsKIAogICAgIC8vIDQuIExldCAnaXRlcmF0
b3InIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBHZXRJdGVyYXRvcihpdGVyYWJsZSkuCi0gICAg
SlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlv
biA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGFicnVwdFJlamVjdGlvbihleGVjLCBkZWZlcnJlZCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5o
CmluZGV4IGVlMThhYmY2ZWIzZjMyY2ZjMDEyOTFlYjE0NDc0MGVmNzhhOTZhMWMuLjBiOWU3Mzlm
NWE3MDM5NjlhNTQwNjNlZjA5M2Q1NzUzYjgwMjMyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCkBAIC0x
MTMsNyArMTEzLDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogc3RydWN0dXJl
UHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMKICAgICAgICAgcmV0dXJuIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtKTsKIAogICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRT
dHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0U3RydWN0
dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogCiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKiBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUodm0s
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lcyk7CiAgICAgaWYgKHN0cnVjdHVyZS0+Y2FuQ2FjaGVT
dHJ1Y3R1cmVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpCkBAIC0xNDIsOSArMTQyLDkgQEAgaW5s
aW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZ2VuZXJpY1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IoRXhlY1N0YXRlKiBleGVjLAogICAgIC8vIHRoZSBuZXcgZ2VuZXJpYyBQcm9wZXJ0eU5hbWVB
cnJheSBhbmQgZmFpbGluZyBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGVtLgogICAg
IFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlID0gc3RydWN0dXJlRW51bWVyYXRvci0+Y2FjaGVk
U3RydWN0dXJlKHZtKTsKICAgICBpZiAoc3RydWN0dXJlID09IGNhY2hlZFN0cnVjdHVyZSAmJiBz
dHJ1Y3R1cmUtPmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5KCkgJiYgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGxlbmd0aCkgPT0gYmFzZS0+Z2V0QXJyYXlMZW5ndGgoKSkKLSAgICAgICAgYmFzZS0+
bWV0aG9kVGFibGUodm0pLT5nZXRHZW5lcmljUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYmFzZS0+bWV0
aG9kVGFibGUodm0pLT5nZXRHZW5lcmljUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAg
IGVsc2UKLSAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKGJh
c2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAg
ICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKICAgICAKICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAwNTc1NDQ3NmZk
MTU0YWQ1NjNhODkwMjQ0ZGVkYzJmOTZmM2UyZDEzLi4zOGFmOWRkNGFlYWRjN2FkMmI2NjQxZTUz
MjViNTNkNGM0MmJkYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmlu
ZyhWTSogdm0sIFN0cmluZyYmIHMpCiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBKU1N0cmlu
Zzo6dG9JZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICByZXR1cm4gSWRl
bnRpZmllcihleGVjLCB0b0F0b21pY1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgdG9BdG9taWNTdHJpbmcoZXhlYykpOwogfQogCiBBTFdBWVNf
SU5MSU5FIEF0b21pY1N0cmluZyBKU1N0cmluZzo6dG9BdG9taWNTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBiOGZiMjI4MmFmYWU4N2VjYzQxMTAyNDVjZTliYjg3
M2U5NTBmMGZmLi5lMDRjMTRlNjllZTRiODgyYTE0NmJkNmQzNjExMGIxN2E3YWMyMzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmNwcApAQCAtNjEsMTAgKzYxLDEyIEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0CiAgICAg
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCkt
Pm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNP
YmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRh
YmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4o
bG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNV
bmlxdWUoKSkKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1ByaXZhdGUoKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1
dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2Rl
KSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0
LT5rZXkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlmICghbW9kZS5zaG91bGRJbmNsdWRlU3ltYm9s
cygpICYmIGl0LT5rZXktPmlzVW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8
IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQorICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaXQtPmtleS5nZXQo
KSkpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCBmNmY1ZmUxNzNjNzA0ZWRlMGY2NTNiNjgz
OGUwOTgwNmNhNDQyZWI3Li5kNDU0NGE0ZjZmMjZjYWE4YzM4NDVkYWYwZmNhZmU3MzIzMjhiZGNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cApAQCAtNTcsMTcgKzU3LDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNl
KGNvbnN0IENoYXJUeXBlJiBjKQogICAgIGRvIHsKICAgICAgICAgVmVjdG9yPEpTT05QUGF0aEVu
dHJ5PiBwYXRoOwogICAgICAgICAvLyBVbmd1YXJkZWQgbmV4dCB0byBzdGFydCBvZmYgdGhlIGxl
eGVyCi0gICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwg
bV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQg
LSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKKyAgICAgICAgSWRlbnRpZmllciBuYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRU
b2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVu
dFRva2VuKCkuc3RhcnQpOwogICAgICAgICBKU09OUFBhdGhFbnRyeSBlbnRyeTsKICAgICAgICAg
aWYgKG5hbWUgPT0gbV9leGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPnZhcktleXdvcmQpIHsKICAg
ICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tJZGVudGlmaWVyKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05QUGF0
aEVudHJ5VHlwZURlY2xhcmU7Ci0gICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJ
ZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7
CisgICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIu
Y3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAg
ICAgICAgICBwYXRoLmFwcGVuZChlbnRyeSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBlbnRyeS5tX3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVEb3Q7Ci0gICAgICAgICAgICBlbnRy
eS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3Vy
cmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5j
dXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRv
a2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50
VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICBwYXRoLmFwcGVuZChlbnRyeSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1fZXhlYy0+dm0oKS5rZXl3b3Jkcy0+aXNLZXl3b3JkKGVudHJ5Lm1f
cGF0aEVudHJ5TmFtZSkpCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pT
T05XaGl0ZVNwYWNlKGNvbnN0IENoYXJUeXBlJiBjKQogICAgICAgICAgICAgICAgIGVudHJ5Lm1f
dHlwZSA9IEpTT05QUGF0aEVudHJ5VHlwZURvdDsKICAgICAgICAgICAgICAgICBpZiAobV9sZXhl
ci5uZXh0KCkgIT0gVG9rSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgICAgIGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElkZW50aWZpZXIo
Jm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJy
ZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKKyAgICAgICAg
ICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZt
X2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVu
dFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFRva0xQYXJlbjog
ewpAQCAtMTM1LDE3ICsxMzUsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGlzSlNPTldoaXRlU3Bh
Y2UoY29uc3QgQ2hhclR5cGUmIGMpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBt
X2V4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyOwogICAgIGlmIChjaGFy
YWN0ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikKLSAgICAgICAgcmV0dXJuIElk
ZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgcmV0
dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVu
Z3RoKTsKIAogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICBpZiAoIW1fc2hvcnRJZGVu
dGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBtX3No
b3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07Ci0gICAgICAgIG1fc2hvcnRJZGVudGlmaWVy
c1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywg
bGVuZ3RoKTsKKyAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwog
ICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwogICAgIH0K
ICAgICBpZiAoIW1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkgJiYg
SWRlbnRpZmllcjo6ZXF1YWwobV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pbXBs
KCksIGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBtX3JlY2VudElkZW50aWZp
ZXJzW2NoYXJhY3RlcnNbMF1dOwotICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1sw
XV0gPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAg
bV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICByZXR1cm4gbV9yZWNl
bnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKIH0KIApAQCAtMTU1LDE3ICsxNTUsMTcgQEAg
c3RhdGljIGlubGluZSBib29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5cGUmIGMpCiAg
ICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBtX2V4ZWMtPnZtKCkucHJvcGVydHlOYW1l
cy0+ZW1wdHlJZGVudGlmaWVyOwogICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1DYWNo
YWJsZUNoYXJhY3RlcikKLSAgICAgICAgcmV0dXJuIElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwg
Y2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIAogICAgIGlmIChsZW5ndGgg
PT0gMSkgewogICAgICAgICBpZiAoIW1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5p
c051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVy
c1swXV07Ci0gICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50
aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgbV9zaG9y
dElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9l
eGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbV9zaG9ydElk
ZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwogICAgIH0KICAgICBpZiAoIW1fcmVjZW50SWRlbnRp
ZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkgJiYgSWRlbnRpZmllcjo6ZXF1YWwobV9yZWNl
bnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0aCkp
CiAgICAgICAgIHJldHVybiBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwotICAg
IG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4ZWMt
PnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFy
YWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFj
dGVycywgbGVuZ3RoKTsKICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJz
WzBdXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiN2Vj
YmIxOTBhMDRiNTA5ZDkwNDEwZmZjNGNjMzJkZDAzOTQ4MGZhLi5hOGEzMzY3ZjUzZmE2YzUxOGI5
ZGExZTVkZTc3ZjQ5MDBlOWNmYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuaApAQCAtMjkzLDcgKzI5Myw3IEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydGll
cyhWTSYgdm0sIGNvbnN0IEhhc2hUYWJsZVZhbHVlICgmdmFsdWVzKVtudW1iZXJPCiAgICAgICAg
IGlmICghdmFsdWUubV9rZXkpCiAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAg
CiAKLSAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUoJnZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4odmFsdWUubV9rZXkpLCBzdHJsZW4odmFsdWUubV9rZXkpKTsKKyAgICAg
ICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlLm1fa2V5KSwgc3RybGVuKHZhbHVl
Lm1fa2V5KSk7CiAgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKSB7CiAg
ICAgICAgICAgICB0aGlzT2JqLnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai5n
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5idWlsdGluR2VuZXJhdG9yKCkodm0p
LCB2YWx1ZS5hdHRyaWJ1dGVzKCkpOwogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAK
aW5kZXggYjIyMGI5ODc1ODg1YzQyZjljZTYzOGYzMjIyNDc5MmMzMjc2MTAxNy4uMDM1NjRmODg4
MTFmM2U3ZmFiZmIwYWRhYjliYmM5YWNhMWZiYWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCB2b2lkIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIE1h
cEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgTWFwSXRlcmF0
b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBNYXBJdGVy
YXRvclByb3RvdHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IDU0ODIyMjc2OTQwMGI3
MTg1MmFmN2RiOGI3NWVmNTA3NTQ0ZWRkNGYuLmY4NDM2N2FlODBiNzI2Mzc1MDVlZGMxNTYzZDhi
Mjg4OGM1OGM5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJv
dG90eXBlLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgbWFwUHJvdG9GdW5jS2V5cywgRG9u
dEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dmFs
dWVzLCBtYXBQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIG1hcFByb3RvRnVuY0VudHJpZXMsIERv
bnRFbnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yUHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKKyAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBt
YXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7CiAKICAgICBHZXR0ZXJTZXR0ZXIqIGFj
Y2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
MCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZS5zdHJpbmcoKSwgbWFwUHJvdG9GdW5jU2l6ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDI4ZmY1
YzhkOTI3OWVlNTllNWIxMWU3NTFiOTliNTRiMmY2ZjAzOTQuLjUxNTZlZDJlZmQ1ZjAwNDEyZmMy
NzA0NjcwYWQ4ZGFiM2ZiMjc4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhPYmplY3QuY3BwCkBAIC04Nyw0OSArODcsNDkgQEAgdm9pZCBNYXRoT2JqZWN0OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKIAot
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkUiKSwg
anNOdW1iZXIoZXhwKDEuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0g
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE4yIiks
IGpzTnVtYmVyKGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwot
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkxOMTAi
KSwganNOdW1iZXIobG9nKDEwLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkxP
RzJFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwg
UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
KCZ2bSwgIkxPRzEwRSIpLCBqc051bWJlcigwLjQzNDI5NDQ4MTkwMzI1MTgpLCBEb250RGVsZXRl
IHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXIoJnZtLCAiUEkiKSwganNOdW1iZXIocGlEb3VibGUpLCBEb250RGVsZXRl
IHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXIoJnZtLCAiU1FSVDFfMiIpLCBqc051bWJlcihzcXJ0KDAuNSkpLCBEb250
RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiU1FSVDIiKSwganNOdW1iZXIoc3FydCgyLjApKSwg
RG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotCi0gICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2
bSwgImFicyIpLCAxLCBtYXRoUHJvdG9GdW5jQWJzLCBBYnNJbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhY29zIiksIDEsIG1hdGhQcm90b0Z1
bmNBQ29zLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyKCZ2bSwgImFzaW4iKSwgMSwgbWF0aFByb3RvRnVuY0FTaW4sIE5vSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXRhbiIpLCAxLCBtYXRo
UHJvdG9GdW5jQVRhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcigmdm0sICJhY29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvc2gsIE5vSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXNpbmgi
KSwgMSwgbWF0aFByb3RvRnVuY0FTaW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImF0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNBVGFu
aCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigm
dm0sICJhdGFuMiIpLCAyLCBtYXRoUHJvdG9GdW5jQVRhbjIsIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiY2JydCIpLCAxLCBtYXRoUHJv
dG9GdW5jQ2JydCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcigmdm0sICJjZWlsIiksIDEsIG1hdGhQcm90b0Z1bmNDZWlsLCBDZWlsSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiY29zIiksIDEs
IG1hdGhQcm90b0Z1bmNDb3MsIENvc0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0g
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyKCZ2bSwgImNvc2giKSwgMSwgbWF0aFByb3RvRnVuY0Nvc2gsIE5vSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiZXhw
IiksIDEsIG1hdGhQcm90b0Z1bmNFeHAsIEV4cEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImV4cG0xIiksIDEsIG1hdGhQcm90b0Z1bmNFeHBt
MSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigm
dm0sICJmbG9vciIpLCAxLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiZnJvdW5kIiksIDEsIG1h
dGhQcm90b0Z1bmNGcm91bmQsIEZSb3VuZEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImh5cG90IiksIDIsIG1hdGhQcm90b0Z1bmNIeXBvdCwg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0s
ICJsb2ciKSwgMSwgbWF0aFByb3RvRnVuY0xvZywgTG9nSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibG9nMTAiKSwgMSwgbWF0aFByb3RvRnVu
Y0xvZzEwLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyKCZ2bSwgImxvZzFwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxcCwgTm9JbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJsb2cyIiksIDEsIG1h
dGhQcm90b0Z1bmNMb2cyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyKCZ2bSwgIm1heCIpLCAyLCBtYXRoUHJvdG9GdW5jTWF4LCBNYXhJbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJtaW4iKSwg
MiwgbWF0aFByb3RvRnVuY01pbiwgTWluSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
LSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXIoJnZtLCAicG93IiksIDIsIG1hdGhQcm90b0Z1bmNQb3csIFBvd0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInJh
bmRvbSIpLCAwLCBtYXRoUHJvdG9GdW5jUmFuZG9tLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInJvdW5kIiksIDEsIG1hdGhQcm90b0Z1
bmNSb3VuZCwgUm91bmRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcigmdm0sICJzaWduIiksIDEsIG1hdGhQcm90b0Z1bmNTaWduLCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNpbiIpLCAxLCBt
YXRoUHJvdG9GdW5jU2luLCBTaW5JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcigmdm0sICJzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNTaW5oLCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNxcnQi
KSwgMSwgbWF0aFByb3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJ0YW4iKSwgMSwgbWF0aFByb3RvRnVuY1Rhbiwg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0s
ICJ0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNUYW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRydW5jIiksIDEsIG1hdGhQcm90b0Z1
bmNUcnVuYywgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcigmdm0sICJpbXVsIiksIDEsIG1hdGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJFIiksIGpzTnVtYmVyKGV4cCgxLjApKSwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxOMiIpLCBqc051bWJlcihs
b2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJMTjEw
IiksIGpzTnVtYmVyKGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJMT0cyRSIpLCBqc051bWJlcigxLjAgLyBsb2coMi4wKSksIERvbnREZWxldGUg
fCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJMT0cxMEUiKSwganNOdW1iZXIoMC40MzQy
OTQ0ODE5MDMyNTE4KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
IlBJIiksIGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9u
bHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgIlNRUlQxXzIiKSwganNOdW1iZXIoc3FydCgwLjUpKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlNRUlQyIiksIGpzTnVtYmVyKHNxcnQoMi4w
KSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKworICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJhYnMiKSwgMSwgbWF0aFByb3RvRnVuY0FicywgQWJzSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiYWNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvcywgTm9JbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhc2luIiks
IDEsIG1hdGhQcm90b0Z1bmNBU2luLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImF0YW4iKSwgMSwgbWF0aFByb3Rv
RnVuY0FUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYWNvc2giKSwgMSwgbWF0aFByb3RvRnVuY0FDb3NoLCBO
b0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgImFzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNBU2luaCwgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJhdGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYXRhbjIiKSwg
MiwgbWF0aFByb3RvRnVuY0FUYW4yLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNicnQiKSwgMSwgbWF0aFByb3Rv
RnVuY0NicnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY2VpbCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2VpbCwgQ2Vp
bEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgImNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQ29zLCBDb3NJbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJj
b3NoIiksIDEsIG1hdGhQcm90b0Z1bmNDb3NoLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4cCIpLCAxLCBtYXRo
UHJvdG9GdW5jRXhwLCBFeHBJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJleHBtMSIpLCAxLCBtYXRoUHJvdG9GdW5jRXhw
bTEsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiZmxvb3IiKSwgMSwgbWF0aFByb3RvRnVuY0Zsb29yLCBGbG9vcklu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgImZyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jRnJvdW5kLCBGUm91bmRJbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJoeXBvdCIpLCAyLCBtYXRoUHJvdG9GdW5jSHlwb3QsIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibG9nIiks
IDEsIG1hdGhQcm90b0Z1bmNMb2csIExvZ0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImxvZzEwIiksIDEsIG1hdGhQcm90
b0Z1bmNMb2cxMCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb2cxcCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMXAs
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAibG9nMiIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMiwgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJtYXgiKSwgMiwgbWF0aFByb3RvRnVuY01heCwgTWF4SW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibWluIiksIDIsIG1h
dGhQcm90b0Z1bmNNaW4sIE1pbkludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBvdyIpLCAyLCBtYXRoUHJvdG9GdW5jUG93
LCBQb3dJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJyYW5kb20iKSwgMCwgbWF0aFByb3RvRnVuY1JhbmRvbSwgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jUm91bmQsIFJvdW5kSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
c2lnbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2lnbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzaW4iKSwgMSwgbWF0
aFByb3RvRnVuY1NpbiwgU2luSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAic2luaCIpLCAxLCBtYXRoUHJvdG9GdW5jU2lu
aCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJzcXJ0IiksIDEsIG1hdGhQcm90b0Z1bmNTcXJ0LCBTcXJ0SW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAidGFuIiksIDEsIG1hdGhQcm90b0Z1bmNUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidGFuaCIpLCAx
LCBtYXRoUHJvdG9GdW5jVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0cnVuYyIpLCAxLCBtYXRoUHJvdG9G
dW5jVHJ1bmMsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW11bCIpLCAxLCBtYXRoUHJvdG9GdW5jSU11bCwgSU11
bEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVj
dG9yLmNwcAppbmRleCAzY2ZlOTQxMTZmYTA2MWJjYjVhMjEyNzE2NWE0ZDAxNDg0MTcyZjVkLi45
NWE4ZGNhOTA4ZmE1YjdmZWExNTkxMjk1MTA5MTcyNDNhYjdjMDJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCkBAIC01OSwy
MSArNTksMjEgQEAgdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKICAgICAvLyBuby4gb2YgYXJndW1l
bnRzIGZvciBjb25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVt
IHwgRG9udERlbGV0ZSk7CiAKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcigmdm0sICJFUFNJTE9OIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6ZXBzaWxvbigpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk1B
WF9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJNSU5fVkFMVUUiKSwganNEb3VibGVOdW1iZXIoNUUt
MzI0KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk1BWF9TQUZFX0lOVEVHRVIiKSwg
anNEb3VibGVOdW1iZXIoOTAwNzE5OTI1NDc0MDk5MS4wKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyKCZ2bSwgIk1JTl9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIoLTkwMDcxOTkyNTQ3
NDA5OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJORUdBVElWRV9JTkZJTklU
WSIpLCBqc0RvdWJsZU51bWJlcigtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIlBPU0lUSVZFX0lORklOSVRZIiks
IGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSks
IERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJOYU4iKSwganNOYU4oKSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotCi0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRl
bnRpZmllcigmdm0sICJpc0Zpbml0ZSIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0Zpbml0
ZSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2Jq
ZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNJbnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVjdG9y
RnVuY0lzSW50ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlw
ZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNOYU4iKSwgMSwgbnVtYmVyQ29u
c3RydWN0b3JGdW5jSXNOYU4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgImlzU2FmZUludGVnZXIiKSwg
MSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZlSW50ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZt
LCAicGFyc2VGbG9hdCIpLCAxLCBnbG9iYWxGdW5jUGFyc2VGbG9hdCwgTm9JbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIo
JnZtLCAicGFyc2VJbnQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNlSW50LCBOb0ludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiRVBTSUxPTiIpLCBqc0RvdWJsZU51bWJlcihzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSksIERvbnREZWxldGUgfCBEb250RW51
bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJNQVhfVkFMVUUiKSwganNEb3VibGVOdW1iZXIoMS43OTc2
OTMxMzQ4NjIzMTU3RSszMDgpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiTUlOX1ZBTFVFIiksIGpzRG91YmxlTnVtYmVyKDVFLTMyNCksIERvbnREZWxldGUgfCBE
b250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNQVhfU0FGRV9JTlRFR0VSIiksIGpzRG91Ymxl
TnVtYmVyKDkwMDcxOTkyNTQ3NDA5OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRP
bmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJNSU5fU0FGRV9JTlRFR0VSIiksIGpzRG91YmxlTnVtYmVyKC05MDA3MTk5
MjU0NzQwOTkxLjApLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
TkVHQVRJVkVfSU5GSU5JVFkiKSwganNEb3VibGVOdW1iZXIoLXN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJQT1NJVElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFk
T25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAiTmFOIiksIGpzTmFOKCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJl
YWRPbmx5KTsKKworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiaXNGaW5pdGUiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNGaW5pdGUsIE5v
SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzSW50ZWdlciIpLCAxLCBudW1iZXJDb25z
dHJ1Y3RvckZ1bmNJc0ludGVnZXIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQ
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlz
TmFOIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzTmFOLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJpc1NhZmVJbnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lz
U2FmZUludGVnZXIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBhcnNlRmxvYXQi
KSwgMSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBu
dW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgInBhcnNlSW50IiksIDEsIGdsb2JhbEZ1bmNQYXJzZUludCwgTm9JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOwogfQogCiAvLyBFQ01BIDE1LjcuMQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwMmU1NzUy
ODllMTZjZGMxNmEwYmJhMzQ5Nzg1ZjJlMjdlZjE3ZGQuLmJmYjVmNjQ3YmNiZDdmOWYyYTlhNjg1
ODE0YzAyYTEzYTg2MzRkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAogI2luY2x1ZGUg
IlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAj
aW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
R2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSopOwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5TmFtZXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKik7CiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVy
dHkoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKQEAgLTg0LDEzICs4NiwxNiBAQAog
ewogfQogCi12b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE9i
amVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQordm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmpl
Y3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSwgSWRlbnRpZmllcigmdm0sICJPYmplY3QiKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIG9iamVjdFByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7
CiAgICAgLy8gRUNNQSAxNS4yLjMuMQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNv
bnN0cnVjdG9yCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVs
ZXRlKTsKKworICAgIGlmIChnbG9iYWxPYmplY3QtPnJ1bnRpbWVGbGFncygpLmlzU3ltYm9sRW5h
YmxlZCgpKQorICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJnZXRPd25Qcm9wZXJ0eVN5bWJv
bHMiLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scywgRG9udEVudW0sIDEp
OwogfQogCiBib29sIE9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QgJnNsb3QpCkBAIC0yMDYsNyArMjExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRl
KiBleGUKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2Jq
ZWN0LiIpKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBh
c09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVy
dGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJn
dW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhh
c09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9u
TW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0g
cHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0
aWVzOyBpKyspCkBAIC0yMTUsMTIgKzIyMCwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQog
fQogCiAvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlz
IG5vdCBhbiBvYmplY3QuIikpKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4
ZWMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBl
eGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXNBbmRJbmNsdWRlU3ltYm9scyk7CisgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOworICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5z
aXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsK
KyAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnRpZXNbaV0uaW1wbCgpOwor
ICAgICAgICBpZiAoaW1wbC0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIG5hbWVzLT5wdXNoKGV4
ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGltcGwpKTsKKyAgICB9CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShuYW1lcyk7Cit9CisKKy8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0
aW9uIGNhY2hlLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cktleXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQga2V5cyBvZiBhIHZhbHVlIHRoYXQgaXMg
bm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
Yyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4
ZWMsIHByb3BlcnRpZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0
KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3Bl
cnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBF
bnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkq
IGtleXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9w
ZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1Qcm9wZXJ0aWVzOyBpKyspCkBAIC0zMzEsNyArMzUzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhl
YykKIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvcGVydGllcykKIHsKICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0
aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Cisg
ICAgYXNPYmplY3QocHJvcGVydGllcyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9s
cyk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsKICAg
ICBWZWN0b3I8UHJvcGVydHlEZXNjcmlwdG9yPiBkZXNjcmlwdG9yczsKICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBtYXJrQnVmZmVyOwpAQCAtMzk4LDcgKzQyMCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0
aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGll
cywgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5
bWJvbHMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9w
ZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAg
ICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blBy
b3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDM1LDcgKzQ1Nyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhl
Y1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5h
bWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAg
b2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBA
IC00ODMsNyArNTA1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5h
bWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIFByb3BlcnR5
TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZv
ciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUg
dGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0
aG9kIG9mIE8gd2l0aCBQLgpAQCAtNTEzLDcgKzUzNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAg
ICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGll
cywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMs
IEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1i
b2xzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVy
dGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBp
dGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAg
IC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9w
ZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCmluZGV4IDEyNTI3ODFhNWU4OTAw
NjllYTdkOTAxMzBmZjMxZWU5ZTkwZDM4ZDUuLmJiMDY3YjE1NTVmZTA5ODYxYmVhNDJkMTkyYWE5
NmFmMzdjMzAyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuaApAQCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNzIE9iamVjdENvbnN0cnVj
dG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50
ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3RhdGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQ
cm90b3R5cGUpCisgICAgc3RhdGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqZWN0
UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCiAgICAgewogICAgICAgICBPYmplY3RDb25zdHJ1
Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmplY3RDb25z
dHJ1Y3Rvcj4odm0uaGVhcCkpIE9iamVjdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwotICAg
ICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIG9iamVjdFByb3RvdHlwZSk7Cisg
ICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBvYmpl
Y3RQcm90b3R5cGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQogCkBAIC01
MCw3ICs1MCw3IEBAIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVu
Y3Rpb24gewogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBPYmplY3RQcm90b3R5cGUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBPYmplY3RQcm90b3R5cGUqKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1
bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4IDIxNDE2NDQ2NjQ1YzdmZmYwM2Y3YzgyZDE3
ODczOWFkNTYwOGJmNjQuLjU3MzZhNDA5NDM0ZmIwYjU3YTM5ZDZmYzg4NjAwMzU5Mjc2NzM3NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAtMzUs
MTkgKzM1LDI1IEBAIGNsYXNzIFByaXZhdGVOYW1lIHsKICAgICBQcml2YXRlTmFtZSgpCiAgICAg
ICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZUVtcHR5KCkpCiAgICAgewotICAg
ICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAgICB9Ci0gICAgUHJpdmF0ZU5hbWUo
Y29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKLSAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6
Y3JlYXRlVW5pcXVlKGRlc2NyaXB0aW9uLmltcGwoKSkpCisKKyAgICBlbnVtIENyZWF0ZVByaXZh
dGVUYWcgeyBDcmVhdGVQcml2YXRlIH07CisgICAgUHJpdmF0ZU5hbWUoQ3JlYXRlUHJpdmF0ZVRh
ZykKKyAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlUHJpdmF0ZUVtcHR5
KCkpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAgICB9CisK
ICAgICBleHBsaWNpdCBQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpCiAgICAgICAgIDogbV9p
bXBsKHVpZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAg
IH0KIAorICAgIGV4cGxpY2l0IFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
CisgICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5p
bXBsKCkpKQorICAgIHsKKyAgICB9CisKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4obV9pbXBsLmdldCgpKTsg
fQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1lJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gdWlkKCkgPT0gb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKaW5kZXggMzA3NGM3MmUxMDcwMTMzYjk3YjAzYjFkZmY0
YTQzZGUxMzJmYzBhNi4uMDk0YmQyNWNlZjU5N2YxYWQyZjlhNDVjY2ZlYjExMjAyNjMyYWEyNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTgx
LDcgKzgxLDcgQEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKICAgICBQcm9wZXJ0eU5hbWUoQXRvbWlj
U3RyaW5nSW1wbCogcHJvcGVydHlOYW1lKQogICAgICAgICA6IG1faW1wbChwcm9wZXJ0eU5hbWUp
CiAgICAgewotICAgICAgICBBU1NFUlQoIW1faW1wbCB8fCBtX2ltcGwtPmlzQXRvbWljKCkpOwor
ICAgICAgICBBU1NFUlQoIW1faW1wbCB8fCBtX2ltcGwtPmlzQXRvbWljKCkgfHwgbV9pbXBsLT5p
c1VuaXF1ZSgpKTsKICAgICB9CiAKICAgICBQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQpAQCAtOTQsNyArOTQsNiBAQCBjbGFzcyBQcm9wZXJ0eU5hbWUgewogICAg
IHsKICAgICAgICAgQVNTRVJUKG1faW1wbCk7CiAgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5p
cXVlKCkpOwotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc0F0b21pYygpKTsKICAgICB9CiAKICAg
ICBBdG9taWNTdHJpbmdJbXBsKiB1aWQoKSBjb25zdApAQCAtMTA0LDE0ICsxMDMsMTQgQEAgY2xh
c3MgUHJvcGVydHlOYW1lIHsKIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIHB1YmxpY05hbWUoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+aXNVbmlxdWUoKSA/IG51bGxwdHIg
OiBtX2ltcGw7CisgICAgICAgIHJldHVybiAoIW1faW1wbCB8fCBtX2ltcGwtPmlzVW5pcXVlKCkp
ID8gbnVsbHB0ciA6IG1faW1wbDsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qg
Tm90QW5JbmRleCA9IFVJTlRfTUFYOwogCiAgICAgdWludDMyX3QgYXNJbmRleCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gbV9pbXBsID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDog
Tm90QW5JbmRleDsKKyAgICAgICAgcmV0dXJuIChtX2ltcGwgJiYgIW1faW1wbC0+aXNVbmlxdWUo
KSkgPyB0b1VJbnQzMkZyb21TdHJpbmdJbXBsKG1faW1wbCkgOiBOb3RBbkluZGV4OwogICAgIH0K
ICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAppbmRleCA0
NDc1Yjg5OGE5NzQ5NzdjZTY4ZTQ3NTlkY2FkMDZiZDZhMDQ4MzczLi4zMTc2ZWJlZWMwMzMyNjkz
MzU0NmU0NTVhZDIyYTAyOTNjM2E3MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAKIHZv
aWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogewotICAg
IEFTU0VSVCghaWRlbnRpZmllciB8fCBpZGVudGlmaWVyID09IFN0cmluZ0ltcGw6OmVtcHR5KCkg
fHwgaWRlbnRpZmllci0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUKCFpZGVudGlmaWVyIHx8ICgh
aWRlbnRpZmllci0+aXNQcml2YXRlKCkgJiYgaWRlbnRpZmllciA9PSBTdHJpbmdJbXBsOjplbXB0
eSgpIHx8IGlkZW50aWZpZXItPmlzQXRvbWljKCkgfHwgaWRlbnRpZmllci0+aXNVbmlxdWUoKSkp
OwogICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgIHVpbnQzMl90IGluZGV4ID0g
UHJvcGVydHlOYW1lKElkZW50aWZpZXIobV92bSwgaWRlbnRpZmllcikpLmFzSW5kZXgoKTsKKyAg
ICAgICAgdWludDMyX3QgaW5kZXggPSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCht
X3ZtLCBpZGVudGlmaWVyKSkuYXNJbmRleCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGluZGV4
LCBpbmRleCA9PSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXggfHwgaW5kZXggPj0gbV9wcmV2aW91
c2x5RW51bWVyYXRlZExlbmd0aCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRleCA5OTRmMDljOTA1NDAxMWU0MWIy
MzM4ZjlkMDUwNGIyZDQ5YmZmMzlhLi44OWZjYmRlY2Y3ZTgxY2UyMzVkNGIxMDNlNTk0NjljOTgx
MWE3YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TmFtZUFycmF5LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXkgewog
ICAgIHZvaWQgYWRkS25vd25VbmlxdWUoU3RyaW5nSW1wbCogaWRlbnRpZmllcikKICAgICB7CiAg
ICAgICAgIG1fc2V0LT5hZGQoaWRlbnRpZmllcik7Ci0gICAgICAgIG1fZGF0YS0+cHJvcGVydHlO
YW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXIobV92bSwgaWRlbnRpZmllcikpOworICAgICAg
ICBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlk
KG1fdm0sIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltd
KHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAppbmRleCA0NWU4MGY1Y2RjMTVhNTZmMmM2NjJiNTM0YjVkMmRkZGI1YmZlOTkyLi5lZTFk
OGIzZmM2OWY5NDNiOTRhNTI1OWNmN2MxODZjYWM2MzczZjc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC05MSw3ICs5
MSw3IEBACiAKIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
UmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiUmVnRXhwIikuc3RyaW5nKCkpOworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCByZWdFeHBQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05h
bWUpOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKIAogICAgIC8vIEVDTUEgMTUuMTAu
NS4xIFJlZ0V4cC5wcm90b3R5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuY3BwCmluZGV4IDRkOWQwYjI3ZTRkMGM4YzkxZjlmZWI0NWExZDU0ZTU5NWQz
M2Q1MTkuLjU0OWEzYTJmOWE3NGMzYTFhOWRjNzAwMTA0MTJmYTQ3OWQ5MWE4NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtMTA1LDIx
ICsxMDUsMjEgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHIKIAogdm9pZCBSZWdFeHBPYmplY3Q6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkK
KyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpOwogICAg
IEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sYXN0SW5kZXgpOwogICAgIEJhc2U6OmdldFByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6Omdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQog
ewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlm
IChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFzZTo6
Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJh
dG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJh
dG9yUHJvdG90eXBlLmNwcAppbmRleCA1NzNhY2ZhNWNkNzY0YjA5ZWU3NTQzYjM0N2I0OWE1MTEx
ZTcwNTM3Li44ZWE2MTA0OGQ3NDk3ZWFjMDVjOTExMWJjMTI2ODNiNmNmODI0OWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5
cGUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NF
UlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0
aGlzKTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JQcml2YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVt
LCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwog
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJp
dmF0ZU5hbWUsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5k
ZXggZjg4ZWE3Y2Y5ODY4ZjY2OGI4YzJlODg4MTVmZjY1Y2YzOTkyN2I0OS4uNDk5NmRhMGVhNTMx
M2ZkMmU2MWU3MWE2ZWY0MzgzNTFmYWEzYmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2V0UHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCBzZXRQ
cm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT52YWx1ZXMsIHNldFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwog
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgc2V0UHJv
dG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgc2V0UHJvdG9GdW5jS2V5cywgRG9u
dEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKIAogICAgIEdldHRl
clNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
KTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLnN0cmluZygpLCBzZXRQcm90b0Z1
bmNTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
Y3BwCmluZGV4IDUwMDFiY2M0ZTFiN2UzNzkzZWQyNmUxNDIwYTgwYTYwNDY4ZTEzYzYuLmFiMzk0
OWUwN2UzM2UxYTE5Zjc1MzU5ZjI5OTgxYTIxNDlhZjBiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZv
aWQgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAgaW50IHNpemUgPSB0aGlzT2JqZWN0LT5pbnRlcm5h
bFZhbHVlKCktPmxlbmd0aCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQog
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKLSAg
ICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9k
ZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIHJldHVybiBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmlu
ZGV4IGM3NjkwNTEzZDdhYTcwM2I3ZmIyM2QxNWMzZjIwN2E1YzBlYjFkMjcuLjlmN2MyZGVkNTBi
MzkyZmY5YzVlZGE1ZWJhZGRmMGMxY2M5M2U3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtOTQ3LDcgKzk0NywxMSBAQCB2b2lkIFN0cnVjdHVy
ZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydAogICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHByb3BlcnR5VGFi
bGUoKS0+ZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gcHJv
cGVydHlUYWJsZSgpLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIEFT
U0VSVChoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIHx8ICEoaXRlci0+YXR0cmlidXRlcyAm
IERvbnRFbnVtKSk7Ci0gICAgICAgIGlmICghaXRlci0+a2V5LT5pc1VuaXF1ZSgpICYmICghKGl0
ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcyhtb2RlKSkpIHsKKyAgICAgICAgaWYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVt
KSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgeworICAgICAgICAg
ICAgaWYgKGl0ZXItPmtleS0+aXNQcml2YXRlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBpZiAoIW1vZGUuc2hvdWxkSW5jbHVkZVN5bWJvbHMoKSAmJiBpdGVyLT5r
ZXktPmlzVW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBp
ZiAoa25vd25VbmlxdWUpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGRLbm93blVu
aXF1ZShpdGVyLT5rZXkpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCmluZGV4IDk5Y2U2ODYyNzRm
ZDc3MzkyOGRkZDU5ZmYxZjljYWY0ZWViZTIxMWUuLmFhOTRmYTMxZjFhMDk1YmUzODg0YzQxNzgw
MjQ0YjcxODhiMzAyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKIH0KIAogI2RlZmluZSBJ
TklUSUFMSVpFX1dFTExfS05PV05fU1lNQk9MUyhuYW1lKSBcCi0gICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAjbmFtZSksIFN5bWJvbDo6Y3JlYXRlKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZS5pbXBsKCkpLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAjbmFtZSksIFN5bWJvbDo6Y3JlYXRlKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNTeW1ib2wuaW1wbCgpKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOwogCiB2b2lkIFN5bWJvbENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSogcHJvdG90eXBlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDBmNzM1NDBmNDM1OTZhNzI0NmUyOTQyNDJiZTA1MmEx
ZDQ1NjZkZjguLmMxYjNlODFkN2MzNzUyMTA1MzRmYWE1MGE0NWYyZmZjMDk1OGFiMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY1NiwxMCArNjU2LDEwIEBAIEpTVmFs
dWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikKICAg
ICAgICAgdW5zaWduZWQgbGluZTsKICAgICAgICAgdW5zaWduZWQgY29sdW1uOwogICAgICAgICBz
dGFja0ZyYW1lLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7Ci0gICAgICAgIGV4
Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyKHRoaXMsICJsaW5lIiksIGpzTnVt
YmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwotICAgICAgICBleGNlcHRpb24tPnB1
dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcih0aGlzLCAiY29sdW1uIiksIGpzTnVtYmVyKGNvbHVt
biksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0
KCp0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHRoaXMsICJsaW5lIiksIGpzTnVtYmVyKGxp
bmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBleGNlcHRpb24tPnB1dERpcmVj
dCgqdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh0aGlzLCAiY29sdW1uIiksIGpzTnVtYmVy
KGNvbHVtbiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgICAgIGlmICghc3RhY2tGcmFt
ZS5zb3VyY2VVUkwuaXNFbXB0eSgpKQotICAgICAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3Qo
KnRoaXMsIElkZW50aWZpZXIodGhpcywgInNvdXJjZVVSTCIpLCBqc1N0cmluZyh0aGlzLCBzdGFj
a0ZyYW1lLnNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgICAgICBl
eGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh0aGlzLCAi
c291cmNlVVJMIiksIGpzU3RyaW5nKHRoaXMsIHN0YWNrRnJhbWUuc291cmNlVVJMKSwgUmVhZE9u
bHkgfCBEb250RGVsZXRlKTsKICAgICB9CiAgICAgaWYgKGV4Y2VwdGlvbi0+aXNFcnJvckluc3Rh
bmNlKCkgJiYgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvbiktPmFwcGVuZFNv
dXJjZVRvTWVzc2FnZSgpKSB7CiAgICAgICAgIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVi
bG9ja0Z1bmN0b3IgZnVuY3RvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHkt
c3ltYm9scy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGU5M2Q4YjI0NzlkZTkyYWQ5NjBlNzViNDJlNzkxZmQ5
MjVmMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzCkBAIC0wLDAgKzEsMzUgQEAK
Ky8vIFRoaXMgdGVzdHMgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scy4KKwordmFyIGdsb2Jh
bCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpKTsKKworLy8gcHJpdmF0ZSBuYW1lcyBmb3Ig
cHJpdmlsZWdlZCBjb2RlIHNob3VsZCBub3QgYmUgZXhwb3NlZC4KK2lmIChPYmplY3QuZ2V0T3du
UHJvcGVydHlTeW1ib2xzKGdsb2JhbCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJFcnJvcjog
YmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGdsb2JhbCkubGVuZ3Ro
OworCit2YXIgb2JqZWN0ID0ge307Cit2YXIgc3ltYm9sID0gU3ltYm9sKCJDb2NvYSIpOworb2Jq
ZWN0W3N5bWJvbF0gPSAiQ2FwcHVjY2lubyI7CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiAr
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggIT09IDEpCisgICAgdGhyb3cgIkVy
cm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5s
ZW5ndGg7CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdICE9PSBz
eW1ib2wpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIFN0cmluZyhPYmplY3QuZ2V0
T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0pOworCitmdW5jdGlvbiBmb3JJbihvYmopIHsK
KyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICAvLyBTeW1ib2wgc2hvdWxkIG5vdCBiZSBlbnVtZXJh
dGVkLgorICAgIGZvciAodmFyIGtleSBpbiBvYmopIGFycmF5LnB1c2goa2V5KTsKKyAgICByZXR1
cm4gYXJyYXk7Cit9CisKK2lmIChmb3JJbihvYmplY3QpLmxlbmd0aCAhPT0gMCkKKyAgICB0aHJv
dyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgZm9ySW4ob2JqZWN0KS5sZW5ndGg7CitpZiAoT2JqZWN0
LmtleXMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUg
IiArIE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoOworCitkZWxldGUgb2JqZWN0W3N5bWJvbF07
CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KS5sZW5ndGggIT09IDApCisg
ICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0
KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmFjM2VjMDVmODA2ZTM3MjU3NzM2MjQ4MjYxOTgxNTIzMGI2YjNkYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3lt
Ym9sLWRlZmluZS1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDMzIEBACisvLyBUaGlzIHRlc3RzIE9i
amVjdC5jcmVhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgT2JqZWN0LmRlZmluZVByb3BlcnRp
ZXMgd29yayB3aXRoIFN5bWJvbC4KKworZnVuY3Rpb24gdGVzdFN5bWJvbChvYmplY3QpIHsKKyAg
ICBpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IG9iamVjdCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsKKyAgICBp
ZiAob2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJvbC5pdGVyYXRvcikpCisgICAgICAg
IHRocm93ICJFcnJvcjogU3ltYm9sLml0ZXJhdG9yIGlzIGRlZmluZWQgYXMgZW51bWVyYWJsZSI7
CisgICAgaWYgKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAhPT0gJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFs
c2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUiOmZhbHNlfScpCisgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2NyaXB0b3IgIiArIEpTT04uc3RyaW5naWZ5KE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKTsK
KyAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCAhPT0g
MSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scyhvYmplY3QpLmxlbmd0aDsKKyAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyhvYmplY3QpWzBdICE9PSBTeW1ib2wuaXRlcmF0b3IpCisgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmpl
Y3QpWzBdKTsKK30KKwordmFyIG9iamVjdCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LnByb3RvdHlw
ZSwgeworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7CisgICAgICAgIHZhbHVlOiA0MgorICAgIH0K
K30pOwordGVzdFN5bWJvbChvYmplY3QpOworCit2YXIgb2JqZWN0ID0gT2JqZWN0LmRlZmluZVBy
b3BlcnRpZXMoe30sIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogeworICAgICAgICB2YWx1ZTog
NDIKKyAgICB9Cit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsKKwordmFyIG9iamVjdCA9IE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh7fSwgU3ltYm9sLml0ZXJhdG9yLCB7CisgICAgdmFsdWU6IDQyCit9
KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZjUwN2NkOWVlNTNjNTFiMmMyMTljNzI4YzRkM2M1NWVkZDc3YzVjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtc2VhbC1hbmQt
ZnJlZXplLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vIFRoaXMgdGVzdHMgT2JqZWN0LnNlYWwgYW5k
IE9iamVjdC5mcmVlemUgYWZmZWN0IG9uIFN5bWJvbCBwcm9wZXJ0aWVzLgorCit2YXIgb2JqZWN0
ID0geworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiA0MgorfTsKKworaWYgKCFvYmplY3QuaGFzT3du
UHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICB0aHJvdyAiRXJyb3I6IG9iamVjdCBkb2Vz
bid0IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsKK2lmIChKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgIT09ICd7InZh
bHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUiOnRydWUsImNvbmZpZ3VyYWJsZSI6
dHJ1ZX0nKQorICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2NyaXB0b3IgIiArIEpT
T04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1i
b2wuaXRlcmF0b3IpKTsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCku
bGVuZ3RoICE9PSAxKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0
T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMob2JqZWN0KVswXSAhPT0gU3ltYm9sLml0ZXJhdG9yKQorICAgIHRocm93ICJF
cnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhv
YmplY3QpWzBdKTsKKworT2JqZWN0LnNlYWwob2JqZWN0KTsKK2lmICghb2JqZWN0Lmhhc093blBy
b3BlcnR5KFN5bWJvbC5pdGVyYXRvcikpCisgICAgdGhyb3cgIkVycm9yOiBvYmplY3QgZG9lc24n
dCBoYXZlIFN5bWJvbC5pdGVyYXRvciI7CitpZiAoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpICE9PSAneyJ2YWx1
ZSI6NDIsIndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOmZh
bHNlfScpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcHJvcGVydHkgZGVzY3JpcHRvciAiICsgSlNP
Ti5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJv
bC5pdGVyYXRvcikpOworCitPYmplY3QuZnJlZXplKG9iamVjdCk7CitpZiAoIW9iamVjdC5oYXNP
d25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpKQorICAgIHRocm93ICJFcnJvcjogb2JqZWN0IGRv
ZXNuJ3QgaGF2ZSBTeW1ib2wuaXRlcmF0b3IiOworaWYgKEpTT04uc3RyaW5naWZ5KE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAhPT0gJ3si
dmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOnRydWUsImNvbmZpZ3VyYWJs
ZSI6ZmFsc2V9JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBwcm9wZXJ0eSBkZXNjcmlwdG9yICIg
KyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwg
U3ltYm9sLml0ZXJhdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwM2Q1ZDVhMTFkNDgy
YWFmNjAzOGNjMGE0N2Y5NzE5YzVkOWY5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXdpdGgtanNvbi5qcwpAQCAtMCwwICsxLDE0
IEBACisvLyBUaGlzIHRlc3RzIEpTT04gY29ycmVjdGx5IGJlaGF2ZXMgd2l0aCBTeW1ib2wuCisK
K2lmIChKU09OLnN0cmluZ2lmeShTeW1ib2woJ0NvY29hJykpICE9PSB1bmRlZmluZWQpCisgICAg
dGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIEpTT04uc3RyaW5naWZ5KFN5bWJvbCgnQ29jb2En
KSk7CisKK3ZhciBvYmplY3QgPSB7fTsKK3ZhciBzeW1ib2wgPSBTeW1ib2woIkNvY29hIik7Citv
YmplY3Rbc3ltYm9sXSA9IDQyOworb2JqZWN0WydDYXBwdWNjaW5vJ10gPSA0MjsKK2lmIChKU09O
LnN0cmluZ2lmeShvYmplY3QpICE9PSAneyJDYXBwdWNjaW5vIjo0Mn0nKQorICAgIHRocm93ICJF
cnJvcjogYmFkIHZhbHVlICIgKyBKU09OLnN0cmluZ2lmeShvYmplY3QpOworCitpZiAoSlNPTi5z
dHJpbmdpZnkob2JqZWN0LCBbIFN5bWJvbCgnQ29jb2EnKSBdKSAhPT0gInt9IikKKyAgICB0aHJv
dyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBbIFN5bWJvbCgn
Q29jb2EnKSBdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCAwNjI5MGMy
NGU0NzNkM2U5NjViNDUwNDAwMGE2M2EyYTcyMDA4ZjVjLi45ZjEzMGVkY2YyOGNiZjJmNWYwYTEw
NTg3MTcwMTYxYjQxMjEwZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBA
IC00MDMsNiArNDAzLDkgQEAgc3RydWN0IENoYXJCdWZmZXJGcm9tTGl0ZXJhbERhdGFUcmFuc2xh
dG9yIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICpTdHJpbmdJ
bXBsOjplbXB0eSgpOwogCisgICAgaWYgKHN0cmluZy5pc1VuaXF1ZSgpKQorICAgICAgICByZXR1
cm4gYWRkKHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKSk7CisKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZyBzaG91bGQg
bm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBhdG9taWMuIik7
CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CkBAIC00MjEsNiArNDI0LDkg
QEAgc3RydWN0IENoYXJCdWZmZXJGcm9tTGl0ZXJhbERhdGFUcmFuc2xhdG9yIHsKICAgICBpZiAo
IXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICpTdHJpbmdJbXBsOjplbXB0eSgpOwog
CisgICAgaWYgKHN0cmluZy5pc1VuaXF1ZSgpKQorICAgICAgICByZXR1cm4gYWRkKHN0cmluZ1Rh
YmxlLCBzdHJpbmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luVW5pcXVlKCkpOworCiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJpbmcgc2hvdWxkIG5v
dCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkgYXRvbWljLiIpOwog
CiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwpAQCAtNTAzLDYgKzUwOSwxMiBA
QCBBdG9taWNTdHJpbmdJbXBsKiBBdG9taWNTdHJpbmc6OmZpbmRTbG93Q2FzZShTdHJpbmdJbXBs
JiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCks
ICJBdG9taWNTdHJpbmdJbXBscyBzaG91bGQgcmV0dXJuIGZyb20gdGhlIGZhc3QgY2FzZS4iKTsK
IAorICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
QXRvbWljU3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOworCisgICAgaWYgKHN0cmlu
Zy5pc1VuaXF1ZSgpKQorICAgICAgICByZXR1cm4gZmluZCgmc3RyaW5nLmV4dHJhY3RGb2xkZWRT
dHJpbmdJblVuaXF1ZSgpKTsKKwogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsK
ICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgYXRvbWljU3RyaW5nVGFibGUgPSBzdHJpbmdUYWJs
ZSgpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBhdG9taWNTdHJpbmdUYWJsZS5maW5kKCZzdHJpbmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggYmFlOWQzNjJkMjc1MWU1YTczY2Uw
YjFiN2UyYTQxMWIwMTgzN2YzMy4uNjA5Y2Y3MzFkMjdiZmMwNjc4ZDZjNjk4M2M0Y2IwOGI2YTIy
OTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCkBAIC0xODMsMTEgKzE4Myw5IEBA
IGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+
IGFkZChTdHJpbmdJbXBsKiBzdHJpbmcpCiAgICAgewotICAgICAgICBpZiAoIXN0cmluZyB8fCBz
dHJpbmctPmlzQXRvbWljKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0
cmluZyB8fCAhc3RyaW5nLT5sZW5ndGgoKSB8fCBzdHJpbmctPmlzVW5pcXVlKCkgfHwgaXNJbkF0
b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFu
IG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAgICByZXR1
cm4gc3RyaW5nOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhZGRTbG93Q2FzZSgqc3RyaW5n
KTsKKyAgICAgICAgcmV0dXJuIGFkZCgqc3RyaW5nKTsKICAgICB9CiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkRnJvbUxpdGVyYWxEYXRhKGNvbnN0
IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAjaWYgVVNFKENGKQpAQCAtMTk3
LDExICsxOTUsOSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFN0cmluZ1RhYmxlUHJvdmlkZXI+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZFdpdGhTdHJpbmdUYWJsZVByb3ZpZGVyKFN0cmluZ1RhYmxlUHJvdmlkZXIm
IHN0cmluZ1RhYmxlUHJvdmlkZXIsIFN0cmluZ0ltcGwqIHN0cmluZykKICAgICB7Ci0gICAgICAg
IGlmICghc3RyaW5nIHx8IHN0cmluZy0+aXNBdG9taWMoKSkgewotICAgICAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghc3RyaW5nIHx8ICFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNV
bmlxdWUoKSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3Ry
aW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBpZiAoIXN0cmluZykK
ICAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFk
ZFNsb3dDYXNlKCpzdHJpbmdUYWJsZVByb3ZpZGVyLmF0b21pY1N0cmluZ1RhYmxlKCksICpzdHJp
bmcpOworICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmdUYWJsZVByb3ZpZGVyLmF0b21pY1N0cmlu
Z1RhYmxlKCksICpzdHJpbmcpOwogICAgIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTIx
Myw3ICsyMDksMjUgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAgICBBdG9taWNTdHJpbmcoQVND
SUlMaXRlcmFsKTsKIAogICAgIFN0cmluZyBtX3N0cmluZzsKLSAgICAKKworICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCYgc3RyaW5nKQorICAg
IHsKKyAgICAgICAgaWYgKHN0cmluZy5pc0F0b21pYygpKSB7CisgICAgICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgaXNJbkF0b21pY1N0cmluZ1RhYmxlKCZz
dHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7
CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nOworICAgICAgICB9CisgICAgICAgIHJldHVybiBh
ZGRTbG93Q2FzZShzdHJpbmcpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBhZGQoQXRvbWljU3RyaW5nVGFibGUmIHN0cmluZ1RhYmxlLCBTdHJpbmdJ
bXBsJiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoc3RyaW5nLmlzQXRvbWljKCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBpc0luQXRv
bWljU3RyaW5nVGFibGUoJnN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFu
IG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZ1RhYmxlLCBzdHJpbmcpOworICAgIH0K
KwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZFNs
b3dDYXNlKFN0cmluZ0ltcGwmKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShBdG9taWNTdHJpbmdUYWJsZSYsIFN0cmluZ0ltcGwm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggYzI0OWY0ZDdmZmQ1ZGFiZWUx
NjQwNjRhNjIxOTI0ZGNmMzQ1N2RjOC4uMjcyZWM5YTk5ZDk4ZTFkZDY5NjczNWJlMDY2YTRmMTk4
ZjIwMWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0yOTIsNyArMjkyLDgg
QEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiAgICAg
aWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBjcmVhdGVVbmlxdWVFbXB0eSgpOwogICAgIFJl
ZjxTdHJpbmdJbXBsPiBzdHJpbmcgPSBjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbChyZXAsIDAs
IGxlbmd0aCk7Ci0gICAgc3RyaW5nLT5tX2hhc2hBbmRGbGFncyA9IGhhc2hBbmRGbGFnc0ZvclVu
aXF1ZShzdHJpbmctPm1faGFzaEFuZEZsYWdzKTsKKyAgICBBU1NFUlQoIXN0cmluZy0+aXNBdG9t
aWMoKSk7CisgICAgc3RyaW5nLT5tX2hhc2hBbmRGbGFncyA9IGhhc2hBbmRGbGFnc0ZvclVuaXF1
ZShzdHJpbmctPm1faGFzaEFuZEZsYWdzLCBmYWxzZSk7CiAgICAgcmV0dXJuIHN0cmluZzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAyNjZiOTdlNGM4ODY2N2JmMTQ2MGU3Yjkx
YmIwNTFjNGJhNTM4OTdiLi44Y2VlODUwYmNlZTY2N2Y0ODRjNmZmZmNkNmQ3MGFmNWM5ZjFiMWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMTQxLDYgKzE0MSwyNSBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKICAgICAgICAgQnVmZmVyU3Vic3RyaW5nLAogICAgIH07CiAKKyAgICAvLyBU
aGUgYm90dG9tIDYgYml0cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3MuCisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNfZmxhZ0NvdW50ID0gNjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19m
bGFnTWFzayA9ICgxdSA8PCBzX2ZsYWdDb3VudCkgLSAxOworICAgIENPTVBJTEVfQVNTRVJUKHNf
ZmxhZ0NvdW50IDw9IFN0cmluZ0hhc2hlcjo6ZmxhZ0NvdW50LCBTdHJpbmdIYXNoZXJfcmVzZXJ2
ZXNfZW5vdWdoX2JpdHNfZm9yX1N0cmluZ0ltcGxfZmxhZ3MpOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2ZsYWdTdHJpbmdLaW5kQ291bnQgPSA0OworCisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNVbmlxdWUgPSAxdSA8PCAoc19mbGFnU3RyaW5n
S2luZENvdW50ICsgMSk7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaE1hc2tTdHJp
bmdLaW5kID0gKDF1IDw8IHNfZmxhZ1N0cmluZ0tpbmRDb3VudCkgfCBzX2hhc2hGbGFnU3RyaW5n
S2luZElzVW5pcXVlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnOEJpdEJ1
ZmZlciA9IDF1IDw8IDM7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdEaWRS
ZXBvcnRDb3N0ID0gMXUgPDwgMjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoTWFz
a0J1ZmZlck93bmVyc2hpcCA9ICgxdSA8PCAwKSB8ICgxdSA8PCAxKTsKKworICAgIGVudW0gU3Ry
aW5nS2luZCB7CisgICAgICAgIFN0cmluZ0F0b21pYyA9IDB1IDw8IHNfZmxhZ1N0cmluZ0tpbmRD
b3VudCwKKyAgICAgICAgU3RyaW5nTm9ybWFsID0gMXUgPDwgc19mbGFnU3RyaW5nS2luZENvdW50
LAorICAgICAgICBTdHJpbmdVbmlxdWUgPSAydSA8PCBzX2ZsYWdTdHJpbmdLaW5kQ291bnQsCisg
ICAgICAgIFN0cmluZ1VuaXF1ZVByaXZhdGUgPSAzdSA8PCBzX2ZsYWdTdHJpbmdLaW5kQ291bnQs
CisgICAgfTsKKwogICAgIC8vIFVzZWQgdG8gY29uc3RydWN0IHN0YXRpYyBzdHJpbmdzLCB3aGlj
aCBoYXZlIGFuIHNwZWNpYWwgcmVmQ291bnQgdGhhdCBjYW4gbmV2ZXIgaGl0IHplcm8uCiAgICAg
Ly8gVGhpcyBtZWFucyB0aGF0IHRoZSBzdGF0aWMgc3RyaW5nIHdpbGwgbmV2ZXIgYmUgZGVzdHJv
eWVkLCB3aGljaCBpcyBpbXBvcnRhbnQgYmVjYXVzZQogICAgIC8vIHN0YXRpYyBzdHJpbmdzIHdp
bGwgYmUgc2hhcmVkIGFjcm9zcyB0aHJlYWRzICYgcmVmLWNvdW50ZWQgaW4gYSBub24tdGhyZWFk
c2FmZSBtYW5uZXIuCkBAIC0xNTAsNyArMTY5LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAg
ICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nKQogICAgICAgICAs
IG1fbGVuZ3RoKDApCiAgICAgICAgICwgbV9kYXRhOChyZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oJm1fbGVuZ3RoKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJp
dEJ1ZmZlciB8IHNfaGFzaEZsYWdJc0F0b21pYyB8IEJ1ZmZlck93bmVkKQorICAgICAgICAsIG1f
aGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nQXRvbWljIHwgQnVmZmVy
T3duZWQpCiAgICAgewogICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaGFzaCBpcyBjb21wdXRl
ZCBzbyB0aGF0IEF0b21pY1N0cmluZ0hhc2ggY2FuIGNhbGwgZXhpc3RpbmdIYXNoKCkKICAgICAg
ICAgLy8gd2l0aCBpbXB1bml0eS4gVGhlIGVtcHR5IHN0cmluZyBpcyBzcGVjaWFsIGJlY2F1c2Ug
aXQgaXMgbmV2ZXIgZW50ZXJlZCBpbnRvCkBAIC0xNjcsNyArMTg2LDcgQEAgY2xhc3MgU3RyaW5n
SW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAg
ICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KHRhaWxQb2ludGVyPExDaGFy
PigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVm
ZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTE4MCw3ICsxOTksNyBA
QCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNy
ZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KHRh
aWxQb2ludGVyPFVDaGFyPigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlckludGVy
bmFsKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVy
bmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKICAgICAgICAgQVNTRVJUKG1f
bGVuZ3RoKTsKQEAgLTE5Myw3ICsyMTIsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAg
OiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVu
Z3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycy5sZWFrUHRyKCkpCi0gICAgICAgICwg
bV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJPd25lZCkKKyAgICAg
ICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8
IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwogICAgICAgICBB
U1NFUlQobV9sZW5ndGgpOwpAQCAtMjA2LDcgKzIyNSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewog
ICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xl
bmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKLSAgICAgICAgLCBt
X2hhc2hBbmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhT
dHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2Rh
dGExNik7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0yMTgsNyArMjM3LDcgQEAgY2xh
c3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50
KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3Rl
cnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZm
ZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZl
ciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fZGF0YTgpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjMxLDcgKzI1MCw3IEBA
IGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3Jl
bWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hh
cmFjdGVycy5sZWFrUHRyKCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVyT3duZWQp
CisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQpCiAg
ICAgewogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgp
OwpAQCAtMjQ0LDcgKzI2Myw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVm
Q291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAg
ICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNf
aGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyU3Vic3RyaW5nKQorICAgICAgICAsIG1faGFzaEFu
ZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vic3Ry
aW5nKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzOEJpdCgpKTsKICAgICAgICAgQVNTRVJUKG1f
ZGF0YTgpOwpAQCAtMjYxLDcgKzI4MCw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6
IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRG
bGFncyhCdWZmZXJTdWJzdHJpbmcpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9y
bWFsIHwgQnVmZmVyU3Vic3RyaW5nKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpczhCaXQoKSk7
CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CkBAIC0yNzMsMTQgKzI5MiwxNCBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKICAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVu
Z3RoLCB0cnVlKTsKICAgICB9CiAKLSAgICBlbnVtIENyZWF0ZUVtcHR5VW5pcXVlVGFnIHsgQ3Jl
YXRlRW1wdHlVbmlxdWUgfTsKLSAgICBTdHJpbmdJbXBsKENyZWF0ZUVtcHR5VW5pcXVlVGFnKQor
ICAgIGVudW0gQ3JlYXRlVW5pcXVlRW1wdHlUYWcgeyBDcmVhdGVVbmlxdWVFbXB0eSB9OworICAg
IFN0cmluZ0ltcGwoQ3JlYXRlVW5pcXVlRW1wdHlUYWcsIGJvb2wgaXNQcml2YXRlKQogICAgICAg
ICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aCgw
KQogICAgICAgICAvLyBXZSBleHBlY3QgbV9sZW5ndGggdG8gYmUgaW5pdGlhbGl6ZWQgdG8gMCBh
cyB3ZSB1c2UgaXQKICAgICAgICAgLy8gdG8gcmVwcmVzZW50IGEgbnVsbCB0ZXJtaW5hdGVkIGJ1
ZmZlci4KICAgICAgICAgLCBtX2RhdGE4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigm
bV9sZW5ndGgpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclVuaXF1
ZShzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKSkKKyAgICAgICAgLCBtX2hh
c2hBbmRGbGFncyhoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBC
dWZmZXJJbnRlcm5hbCwgaXNQcml2YXRlKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4
KTsKIApAQCAtMzgwLDcgKzM5OSwxMiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlxdWVFbXB0eSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZUVtcHR5VW5p
cXVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlVW5p
cXVlRW1wdHksIGZhbHNlKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVVuaXF1ZVByaXZhdGVFbXB0eSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZVVuaXF1ZUVtcHR5LCB0cnVlKSk7
CiAgICAgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlVW5pcXVlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwKTsKQEAgLTM5Myw4ICs0
MTcsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnc09m
ZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2hhc2hBbmRGbGFn
cyk7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzOEJpdCgpIHsgcmV0dXJuIHNfaGFzaEZs
YWc4Qml0QnVmZmVyOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc0F0b21pYygpIHsgcmV0
dXJuIHNfaGFzaEZsYWdJc0F0b21pYzsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNVbmlx
dWUoKSB7IHJldHVybiBzX2hhc2hGbGFnSXNVbmlxdWU7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQg
ZmxhZ0lzTm90QXRvbWljKCkgeyByZXR1cm4gc19oYXNoTWFza1N0cmluZ0tpbmQ7IH0KKyAgICBz
dGF0aWMgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7IHJldHVybiBzX2hhc2hNYXNrU3RyaW5n
S2luZDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+CkBAIC00NTQsMTcgKzQ3OCwyMCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIAotICAgIGJvb2wg
aXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdJc1Vu
aXF1ZTsgfQorICAgIFN0cmluZ0tpbmQgc3RyaW5nS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFN0cmluZ0tpbmQ+KG1faGFzaEFuZEZsYWdzICYgc19oYXNoTWFza1N0cmluZ0tpbmQp
OyB9CisKKyAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nS2luZCgpICYg
c19oYXNoRmxhZ1N0cmluZ0tpbmRJc1VuaXF1ZTsgfQorICAgIGJvb2wgaXNQcml2YXRlKCkgY29u
c3QgeyByZXR1cm4gc3RyaW5nS2luZCgpID09IFN0cmluZ1VuaXF1ZVByaXZhdGU7IH0KKyAgICBi
b29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nS2luZCgpID09IFN0cmluZ0F0b21p
YzsgfQogCi0gICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdz
ICYgc19oYXNoRmxhZ0lzQXRvbWljOyB9CiAgICAgdm9pZCBzZXRJc0F0b21pYyhib29sIGlzQXRv
bWljKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1N0YXRpYygpKTsKICAgICAgICAgQVNTRVJU
KCFpc1VuaXF1ZSgpKTsKICAgICAgICAgaWYgKGlzQXRvbWljKQotICAgICAgICAgICAgbV9oYXNo
QW5kRmxhZ3MgfD0gc19oYXNoRmxhZ0lzQXRvbWljOworICAgICAgICAgICAgbV9oYXNoQW5kRmxh
Z3MgPSAobV9oYXNoQW5kRmxhZ3MgJiAofnNfaGFzaE1hc2tTdHJpbmdLaW5kKSkgfCBTdHJpbmdB
dG9taWM7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzICY9IH5zX2hh
c2hGbGFnSXNBdG9taWM7CisgICAgICAgICAgICBtX2hhc2hBbmRGbGFncyA9IChtX2hhc2hBbmRG
bGFncyAmICh+c19oYXNoTWFza1N0cmluZ0tpbmQpKSB8IFN0cmluZ05vcm1hbDsKICAgICB9CiAK
ICNpZiBTVFJJTkdfU1RBVFMKQEAgLTcwNiw2ICs3MzMsMTYgQEAgY2xhc3MgU3RyaW5nSW1wbCB7
CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIGNvbnN0IFVDaGFyIGxhdGluMUNh
c2VGb2xkVGFibGVbMjU2XTsKIAorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmdJbXBs
JiBleHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxl
bmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKGlzVW5pcXVlKCkpOworICAgICAgICBBU1NFUlQoYnVm
ZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsKKyAgICAgICAgQVNTRVJUKHN1YnN0
cmluZ0J1ZmZlcigpKTsKKyAgICAgICAgQVNTRVJUKCFzdWJzdHJpbmdCdWZmZXIoKS0+aXNVbmlx
dWUoKSk7CisgICAgICAgIHJldHVybiAqc3Vic3RyaW5nQnVmZmVyKCk7CisgICAgfQorCiBwcml2
YXRlOgogICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29uc3QKICAgICB7CkBAIC03NzIsMjMgKzgw
OSwxMiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5
cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZUludGVybmFsKFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4sIHVuc2lnbmVkLCBDaGFyVHlwZSomKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlSW50ZXJuYWwoY29uc3Qg
Q2hhclR5cGUqLCB1bnNpZ25lZCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElO
RSB1bnNpZ25lZCBoYXNoU2xvd0Nhc2UoKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHVuc2lnbmVkIGhhc2hBbmRGbGFnc0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncyk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1bnNpZ25lZCBoYXNoQW5kRmxhZ3NGb3JVbmlx
dWUodW5zaWduZWQgZmxhZ3MsIGJvb2wgaXNQcml2YXRlKTsKIAogICAgIC8vIFRoZSBib3R0b20g
Yml0IGluIHRoZSByZWYgY291bnQgaW5kaWNhdGVzIGEgc3RhdGljIChpbW1vcnRhbCkgc3RyaW5n
LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5n
ID0gMHgxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3JlZkNvdW50SW5jcmVtZW50ID0g
MHgyOyAvLyBUaGlzIGFsbG93cyB1cyB0byByZWYgLyBkZXJlZiB3aXRob3V0IGRpc3R1cmJpbmcg
dGhlIHN0YXRpYyBzdHJpbmcgZmxhZy4KIAotICAgIC8vIFRoZSBib3R0b20gNyBiaXRzIGluIHRo
ZSBoYXNoIGFyZSBmbGFncy4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnQ291bnQg
PSA3OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdNYXNrID0gKDF1IDw8IHNfZmxh
Z0NvdW50KSAtIDE7Ci0gICAgQ09NUElMRV9BU1NFUlQoc19mbGFnQ291bnQgPD0gU3RyaW5nSGFz
aGVyOjpmbGFnQ291bnQsIFN0cmluZ0hhc2hlcl9yZXNlcnZlc19lbm91Z2hfYml0c19mb3JfU3Ry
aW5nSW1wbF9mbGFncyk7Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0lz
VW5pcXVlID0gMXUgPDwgNjsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZzhC
aXRCdWZmZXIgPSAxdSA8PCA1OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFn
SXNBdG9taWMgPSAxdSA8PCA0OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFn
RGlkUmVwb3J0Q29zdCA9IDF1IDw8IDM7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFz
aE1hc2tCdWZmZXJPd25lcnNoaXAgPSAxdSB8ICgxdSA8PCAxKTsKLQogI2lmIFNUUklOR19TVEFU
UwogICAgIFdURl9FWFBPUlREQVRBIHN0YXRpYyBTdHJpbmdTdGF0cyBtX3N0cmluZ1N0YXRzOwog
I2VuZGlmCkBAIC04MDMsNyArODI5LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICAgICAg
Ly8gVGhlc2UgdmFsdWVzIG1pbWljIENvbnN0cnVjdEZyb21MaXRlcmFsLgogICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsUmVmQ291bnQgPSBzX3JlZkNvdW50SW5jcmVtZW50
OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsRmxhZ3MgPSBzX2hhc2hG
bGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsOworICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19pbml0aWFsRmxhZ3MgPSBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1h
bCB8IEJ1ZmZlckludGVybmFsOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNo
U2hpZnQgPSBzX2ZsYWdDb3VudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0
aWNzLmNwcAppbmRleCA2NWJiNjcyMWQ3NDNmYTEwNDFjMjkyYjYwZjRkMDMyOTI4M2Q4ZTUxLi4w
N2Q4ZGYyNWYzYjI4ZjBkNzYzMWNiYWQyMGJmYTM0MmQzMzI4ZWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nU3RhdGljcy5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBTdHJpbmdJbXBsKiBTdHJp
bmdJbXBsOjplbXB0eSgpCiAvLyBrZXlzIG1lYW5zIHRoYXQgd2UgZG9uJ3QgbmVlZCB0aGVtIHRv
IG1hdGNoIGFueSBvdGhlciBzdHJpbmcgKGluIGZhY3QsCiAvLyB0aGF0J3MgZXhhY3RseSB0aGUg
b3Bvc2l0ZSBvZiB3aGF0IHdlIHdhbnQhKSwgYW5kIHRoZSBub3JtYWwgaGFzaCB3b3VsZAogLy8g
bGVhZCB0byBsb3RzIG9mIGNvbmZsaWN0cy4KLXVuc2lnbmVkIFN0cmluZ0ltcGw6Omhhc2hBbmRG
bGFnc0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncykKK3Vuc2lnbmVkIFN0cmluZ0ltcGw6Omhhc2hB
bmRGbGFnc0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncywgYm9vbCBpc1ByaXZhdGUpCiB7CiAgICAg
c3RhdGljIHVuc2lnbmVkIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSA9IDA7CiAgICAgc19u
ZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlICs9IDEgPDwgc19mbGFnQ291bnQ7CiAgICAgc19uZXh0
SGFzaEFuZEZsYWdzRm9yVW5pcXVlIHw9IDEgPDwgMzE7Ci0gICAgdW5zaWduZWQgZmxhZ3NGb3JV
bmlxdWUgPSAoZmxhZ3MgJiBzX2ZsYWdNYXNrKSB8IHNfaGFzaEZsYWdJc0F0b21pYyB8IHNfaGFz
aEZsYWdJc1VuaXF1ZTsKKyAgICB1bnNpZ25lZCBmbGFnc0ZvclVuaXF1ZSA9ICgoZmxhZ3MgJiBz
X2ZsYWdNYXNrKSAmICh+c19oYXNoTWFza1N0cmluZ0tpbmQpKSB8IChpc1ByaXZhdGUgPyBTdHJp
bmdVbmlxdWVQcml2YXRlIDogU3RyaW5nVW5pcXVlKTsKICAgICByZXR1cm4gc19uZXh0SGFzaEFu
ZEZsYWdzRm9yVW5pcXVlIHwgZmxhZ3NGb3JVbmlxdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5tbQppbmRleCAxODNjNDc5MDU3N2IwNGI4MjRhNTYwMzU0N2JmYjA0YjVjNzE2NGRmLi43M2E0
NDgzMTI5NGUzNmMzNDE5YzY3YjI5N2U2NzJjNmVjNzVkMzViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgpCiAgICAgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOwogICAgIAotICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVudEZ1bmN0aW9u
ID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVQ
bHVnaW5SZXBsYWNlbWVudCIpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5jdGlv
biA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7CiAgICAgaWYgKHJlcGxhY2VtZW50RnVu
Y3Rpb24uaXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKQEAgLTE4Niw3
ICsxODYsNyBAQCBib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFj
ZW1lbnQoU2hhZG93Um9vdCogcm9vdCkKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OwogICAgIAogICAgIC8vIExvb2t1cCB0aGUgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IiBmdW5j
dGlvbi4KLSAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9iamVj
dC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1l
bnQiKSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmpl
Y3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0ZVBs
dWdpblJlcGxhY2VtZW50IikpOwogICAgIGlmIChyZXBsYWNlbWVudEZ1bmN0aW9uLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBKU0M6OkpTT2JqZWN0KiBy
ZXBsYWNlbWVudE9iamVjdCA9IHJlcGxhY2VtZW50RnVuY3Rpb24udG9PYmplY3QoZXhlYyk7CkBA
IC0yMDgsNyArMjA4LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFs
bFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgfQogCiAgICAgLy8gR2V0IHRoZSA8
dmlkZW8+IGNyZWF0ZWQgdG8gcmVwbGFjZSB0aGUgcGx1Zy1pbi4KLSAgICBKU0M6OkpTVmFsdWUg
dmFsdWUgPSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJ2aWRl
byIpKTsKKyAgICBKU0M6OkpTVmFsdWUgdmFsdWUgPSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2aWRlbyIpKTsKICAgICBpZiAoIWV4ZWMt
PmhhZEV4Y2VwdGlvbigpICYmICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICBt
X21lZGlhRWxlbWVudCA9IEpTSFRNTFZpZGVvRWxlbWVudDo6dG9XcmFwcGVkKHZhbHVlKTsKIApA
QCAtMjE5LDcgKzIxOSw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6Omluc3Rh
bGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290KQogICAgIH0KIAogICAgIC8vIEdldCB0aGUg
c2NyaXB0aW5nIGludGVyZmFjZS4KLSAgICB2YWx1ZSA9IHJlcGxhY2VtZW50LmdldChleGVjLCBK
U0M6OklkZW50aWZpZXIoZXhlYywgInNjcmlwdE9iamVjdCIpKTsKKyAgICB2YWx1ZSA9IHJlcGxh
Y2VtZW50LmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNjcmlw
dE9iamVjdCIpKTsKICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpICYmICF2YWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICBtX3NjcmlwdE9iamVjdCA9IHZhbHVlLnRvT2JqZWN0
KGV4ZWMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9u
YXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCmluZGV4
IGRmNGRjNzg2MmQyZGFhYTlmMmI2NzZkMWVkMzE3MmEyZjNlYWZkMjkuLjRjZDA4MzhmMzY0MjUz
ODNlOGMxODg4MjY2ZjgyMTIxYTAwZTc1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RpY3Rpb25hcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3du
UHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgbWFwKSBj
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpOwogCiAgICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytp
dCkgewogICAgICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwogICAgICAgICBp
ZiAoc3RyaW5nS2V5LmlzRW1wdHkoKSkKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBEaWN0aW9uYXJ5
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBuYW1lcykgY29uc3QKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAKICAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJv
cGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5hbWVzLmVuZCgpOyArK2l0KSB7CiAg
ICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5nKCk7CiAgICAgICAgIGlmICghc3Ry
aW5nS2V5LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggYmI1MDE4YzE3OTkyZDYwZDJlZjI0YmZlZDY4MTBi
MjI0NzE3MjcxNi4uNmY4MDY2MTRlYTRiMGNiNDE2YTUzZjI3MjkyZDljZWQ5NWNmNjkyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGJvb2wgZ2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBvYmplY3QsIGNvbnN0IFN0cmluZyYga2V5UGF0aEVsZW1lbnQsIEoKICAgICB9CiAgICAg
aWYgKCFvYmplY3QuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEo
KSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
ZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKCFhc09i
amVjdChvYmplY3QpLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudGlmaWVyKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IGFzT2JqZWN0KG9iamVjdCktPmdldChleGVjLCBpZGVu
dGlmaWVyKTsKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGJvb2wgc2V0KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVtZW50LAogewogICAg
IGlmICghY2FuU2V0KG9iamVjdCwga2V5UGF0aEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZleGVjLT52bSgpLCBrZXlQYXRoRWxlbWVu
dC51dGY4KCkuZGF0YSgpKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZleGVjLT52bSgpLCBrZXlQYXRoRWxlbWVudC51dGY4KCkuZGF0YSgpKTsK
ICAgICBhc09iamVjdChvYmplY3QpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnRpZmllciwg
anNWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA4
OTZiOTljZTkxYjcyYzZjZmU4MDJiMTdjYmQwNzBmMjQ1ZDRhNDdkLi5jZjhjNmJhZTc1ZTRhN2Q1
ZDkzYjc3NGM1YjY0NTc0ZjRkYWFhMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTQwMCw3
ICs0MDAsNyBAQCB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQogCiAgICAgICAgIHByb3BlcnR5SWRl
bnRpZmllcnMgPSBuZXcgSWRlbnRpZmllcltudW1DU1NQcm9wZXJ0aWVzXTsKICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCi0gICAgICAgICAgICBwcm9w
ZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcihleGVjLCBqc1Byb3BlcnR5TmFtZXNbaV0u
aW1wbCgpKTsKKyAgICAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnNbaV0gPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsIGpzUHJvcGVydHlOYW1lc1tpXSk7CiAgICAgfQogCiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKaW5kZXggZTFkNzI1ZjhjNmQxMTEzNDEy
MTVlMTBiZGQ3YWI2NzI3ZTc0ZWFkNC4uNDUxZGFjNjIzMTNiMjMzYWRmNjVkOGY3MGJhYjMxYzM4
MzY1OTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxs
YmFjayhKU1ZhbHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJndW1lbnRCdWZmZXImCiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBjYWxsYmFjaygpLT5tZXRob2RU
YWJsZSgpLT5nZXRDYWxsRGF0YShjYWxsYmFjaygpLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBmdW5jdGlvbiA9IGNhbGxiYWNrKCktPmdl
dChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICAgICAgZnVuY3Rp
b24gPSBjYWxsYmFjaygpLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
aGFuZGxlRXZlbnQiKSk7CiAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24s
IGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKaW5kZXggZGE1MmNlYzJj
ZmRjYzc2YTFjZDQwZDJlNDVhZTA5NTY0NjVlMWY3Ni4uOGQyZDAyMDY0ZTU3ZWFhNDc4MTgwYmI4
ZTQ1YmQzMDA0ZThmMzE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcApAQCAtODksOCArODksOCBAQCBz
dGF0aWMgSlNBcnJheSogZ2V0SlNMaXN0ZW5lckZ1bmN0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIERv
Y3VtZW50KiBkb2N1bWVudCwgY29ucwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
SlNPYmplY3QqIGxpc3RlbmVyRW50cnkgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAg
ICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhl
YywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsKLSAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInVzZUNhcHR1cmUiKSwganNCb29sZWFu
KGxpc3RlbmVySW5mby5ldmVudExpc3RlbmVyVmVjdG9yW2ldLnVzZUNhcHR1cmUpKTsKKyAgICAg
ICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsKKyAgICAgICAgbGlzdGVuZXJFbnRy
eS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInVz
ZUNhcHR1cmUiKSwganNCb29sZWFuKGxpc3RlbmVySW5mby5ldmVudExpc3RlbmVyVmVjdG9yW2ld
LnVzZUNhcHR1cmUpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBvdXRw
dXRJbmRleCsrLCBKU1ZhbHVlKGxpc3RlbmVyRW50cnkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTExOCw3ICsxMTgsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0Ojpn
ZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmICghbGlzdGVuZXJz
LT5sZW5ndGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBBdG9taWNTdHJpbmcg
ZXZlbnRUeXBlID0gbGlzdGVuZXJzQXJyYXlbaV0uZXZlbnRUeXBlOwotICAgICAgICByZXN1bHQt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIGV2ZW50VHlwZS5pbXBsKCkp
LCBKU1ZhbHVlKGxpc3RlbmVycykpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV2ZW50VHlwZS5pbXBsKCkpLCBKU1Zh
bHVlKGxpc3RlbmVycykpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNw
cAppbmRleCAwODEwYmM4MWU5YTA1ZWVhZGVlZjRmMGU2Njk5NGQyMWI5MzUzYWE3Li5hOWYzNzI2
NTcwZTI4OTRhYmE2MWU4NWNjMDlmMDljMTQ4YjE4Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAKQEAgLTU2
LDIxICs1NiwyMSBAQAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBj
aGFyKiBrZXksIHVuc2lnbmVkIHZhbHVlKQogewogICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsK
LSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIG1fZGljdGlv
bmFyeS0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc051bWJlcih2YWx1ZSkpOwogfQogCiB2
b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7Ci0gICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERp
cmVjdCh2bSwgaWRlbnRpZmllciwganNTdHJpbmcobV9leGVjLCB2YWx1ZSkpOwogfQogCiB2b2lk
IEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiB7CiAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwotICAg
IElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlm
aWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAgUmVmUHRyPFVpbnQ4
QXJyYXk+IGFycmF5VmlldyA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwg
YXJyYXlWaWV3LT53cmFwKG1fZXhlYywgdm0uZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChj
b25zdCBjaGFyKiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmUKIHZvaWQgSlNDcnlw
dG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhcioga2V5LCBjb25zdCBDcnlwdG9BbGdv
cml0aG1EZXNjcmlwdGlvbkJ1aWxkZXImIG5lc3RlZEJ1aWxkZXIpCiB7CiAgICAgVk0mIHZtID0g
bV9leGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CisgICAg
SWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7
CiAgICAgY29uc3QgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyJiBqc0J1aWxkZXIgPSBzdGF0aWNf
Y2FzdDxjb25zdCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXImPihuZXN0ZWRCdWlsZGVyKTsKICAg
ICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNCdWlsZGVyLnJlc3Vs
dCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
QWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCmluZGV4IDY0ZDU2ZDk3MGE3NGU1ZGMxYWVhYTM4
NTk1YjU2YmQxZTYzNDZmZTIuLjRhZTZhZTUwNjI0NmUzOWZiZmNjNTJkMzcwYzA2NmY4OWNlMDNj
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3Jp
dGhtRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlw
dG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcApAQCAtODksNyArODksNyBAQCBib29sIEpTQ3J5cHRv
QWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdQogCiBzdGF0aWMgSlNWYWx1ZSBnZXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyKGV4ZWMsIG5hbWUpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3Qob2Jq
ZWN0KTsKIAogICAgIGlmIChvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudGlmaWVy
LCBzbG90KSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgYm9vbCBnZXRIYXNoQWxnb3JpdGht
KEpTRGljdGlvbmFyeSYgZGljdGlvbmFyeSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcgogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IGRpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGRpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmplY3QoKTsKIAotICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllcihleGVjLCAiaGFzaCIpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhc2giKTsKICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChvYmplY3QpOwogCiAgICAgSlNWYWx1ZSBoYXNoID0gZ2V0UHJvcGVydHkoZXhlYywgb2Jq
ZWN0LCAiaGFzaCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
cnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKaW5kZXggYTg5MTdkNzVkYTRkODQ2MDQ0
YWYxYWUyOWUxYTljZTQxZDVmMzMxOS4uMWUxYTUyNmYyNjEzOTQ2Yzc4NzIyZWM5MDAxZTc0ZWFm
ZDNlNTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9L
ZXlTZXJpYWxpemF0aW9uSldLLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCkBAIC01Miw3ICs1Miw3IEBACiAKIHN0YXRp
YyBib29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29u
LCBjb25zdCBjaGFyKiBrZXksIEpTQXJyYXkqJiByZXN1bHQpCiB7Ci0gICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24p
OwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRpZmllciwgc2xv
dCkpCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBib29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksCiAKIHN0YXRpYyBi
b29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNv
bnN0IGNoYXIqIGtleSwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgSWRlbnRpZmllciBpZGVudGlm
aWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24pOwogCiAg
ICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRpZmllciwgc2xvdCkpCkBA
IC05Myw3ICs5Myw3IEBAIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwKIAogc3RhdGljIGJvb2wgZ2V0
Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNo
YXIqIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVj
LCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChqc29uKTsKIAogICAgIGlmICgh
anNvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpAQCAtNTAxLDcg
KzUwMSw3IEBAIGJvb2wgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlTaXplSXNWYWxp
ZChzaXplX3Qgc2l6ZUluQml0cykgY29uc3QKIHN0YXRpYyB2b2lkIGFkZFRvSlNPTihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50
aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIGpzb24tPnB1dERpcmVjdCh2bSwgaWRlbnRpZmll
ciwganNTdHJpbmcoZXhlYywgdmFsdWUpKTsKIH0KIApAQCAtNTQyLDEzICs1NDIsMTMgQEAgc3Rh
dGljIHZvaWQgYnVpbGRKU09ORm9yUlNBQ29tcG9uZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQ3J5cHRvS2V5RGF0YVIKICAgICAgICAgYWRkVG9KU09OKGV4ZWMsIGpzUHJpbWVJbmZv
LCAidCIsIGJhc2U2NFVSTEVuY29kZShkYXRhLm90aGVyUHJpbWVJbmZvcygpW2ldLmZhY3RvckNS
VENvZWZmaWNpZW50KSk7CiAgICAgICAgIG90aC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwganNQ
cmltZUluZm8pOwogICAgIH0KLSAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJvdGgiKSwgb3RoKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJvdGgiKSwgb3RoKTsKIH0KIAogc3Rh
dGljIHZvaWQgYWRkQm9vbFRvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBj
b25zdCBjaGFyKiBrZXksIGJvb2wgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIGpzb24tPnB1
dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNCb29sZWFuKHZhbHVlKSk7CiB9CiAKQEAgLTY3NSw3
ICs2NzUsNyBAQCBzdGF0aWMgdm9pZCBhZGRVc2FnZXNUb0pTT04oRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCoganNvbiwgQ3J5cHRvS2V5VXNhZ2UgdXNhZwogICAgIGlmICh1c2FnZXMgJiBDcnlw
dG9LZXlVc2FnZURlcml2ZUJpdHMpCiAgICAgICAgIGtleU9wcy0+cHV0RGlyZWN0SW5kZXgoZXhl
YywgaW5kZXgrKywganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZGVyaXZl
Qml0cyIpKSk7CiAKLSAgICBqc29uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihl
eGVjLCAia2V5X29wcyIpLCBrZXlPcHMpOworICAgIGpzb24tPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJrZXlfb3BzIiksIGtleU9wcyk7CiB9CiAK
IFN0cmluZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnNlcmlhbGl6ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IENyeXB0b0tleSYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IDc4MzY2ODE5MDJm
YzNiMjQwYmFhMGU1ZWE4ZTY2ZjRkMWIwZDJmNmQuLjU0ZWIzMzExNjNkZTY4Yzk2N2ExYjRjM2Mx
OWU2NWJmNWQ0YzQ5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgU3RyaW5nIEpT
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBw
cmVmaXgpCiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwogICAgICAgICAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9jdXN0b21SZXNvbHZlci0+
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxvb2t1cE5hbWVzcGFjZVVSSSIpKTsKKyAgICBK
U1ZhbHVlIGZ1bmN0aW9uID0gbV9jdXN0b21SZXNvbHZlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgImxvb2t1cE5hbWVzcGFjZVVSSSIpKTsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBj
YWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCmluZGV4
IDNhZmFhZTIzNDA3NzQ5YWM3YTlmMjcyMGYzZjg5N2YwYmU1N2NkZTcuLjUyNTk4Y2VjMjQ3NWYx
NmFiY2Q5MTgxN2EwYzgzNjFiZjVjZmMwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9p
ZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3AKICAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPmdldE5hbWVzKG5h
bWVzKTsKICAgICBzaXplX3QgbGVuZ3RoID0gbmFtZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXIoZXhlYywgbmFtZXNbaV0pKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBuYW1lc1tpXSkpOwogCiAgICAgQmFzZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRl
eCA0OGY4MTg0NTIyNzY4MjBhYWFlMWZhNDgzY2Y0N2U0ODQxNjBiNzUyLi4yNzFlODJmNGViY2Vj
YzA0NmM0Nzk1N2JiN2Y5ODA2NDA5YjNlZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgYm9vbCBK
U0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6
OkV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRG9uJ3Qg
YWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29yIHByb3BlcnRpZXMuCi0gICAg
aWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9wZXJ0eU5hbWUgPT0g
SWRlbnRpZmllcihleGVjLCAibG9jYXRpb24iKSkKKyAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJsb2NhdGlvbiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
QmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBKU0RPTVdp
bmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlm
IChGcmFtZSogYWN0aXZlRnJhbWUgPSBhY3RpdmVET01XaW5kb3coZXhlYykuZnJhbWUoKSkgewog
ICAgICAgICBpZiAoYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkudXNlc0Rhc2hib2FyZEJhY2t3YXJk
Q29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewog
ICAgICAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyhleGVjLCBpbXBsKCkpKQotICAgICAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAg
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvY2F0
aW9uIiksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg
LTUyNiw3ICs1MjYsNyBAQCBpbmxpbmUgdm9pZCBEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVk
KERPTVdpbmRvdyYgZGlhbG9nKQogICAgIC8vICAgICAgICB3b3JsZCBpZiBkaWFsb2dBcmd1bWVu
dHMgY29tZXMgZnJvbSBhbiBpc29sYXRlZCB3b3JsZC4KICAgICBKU0RPTVdpbmRvdyogZ2xvYmFs
T2JqZWN0ID0gdG9KU0RPTVdpbmRvdyhtX2ZyYW1lLmdldCgpLCBub3JtYWxXb3JsZChtX2V4ZWMt
PnZtKCkpKTsKICAgICBpZiAoSlNWYWx1ZSBkaWFsb2dBcmd1bWVudHMgPSBtX2V4ZWMtPmFyZ3Vt
ZW50KDEpKQotICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPnZtKCksIElk
ZW50aWZpZXIobV9leGVjLCAiZGlhbG9nQXJndW1lbnRzIiksIGRpYWxvZ0FyZ3VtZW50cyk7Cisg
ICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KG1fZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhtX2V4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9nQXJndW1lbnRzKTsK
IH0KIAogaW5saW5lIEpTVmFsdWUgRGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdWUoKSBjb25zdApA
QCAtNTM0LDcgKzUzNCw3IEBAIGlubGluZSBKU1ZhbHVlIERpYWxvZ0hhbmRsZXI6OnJldHVyblZh
bHVlKCkgY29uc3QKICAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTVdpbmRv
dyhtX2ZyYW1lLmdldCgpLCBub3JtYWxXb3JsZChtX2V4ZWMtPnZtKCkpKTsKICAgICBpZiAoIWds
b2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyKG1fZXhlYywgInJldHVyblZhbHVlIik7CisgICAgSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsICJyZXR1cm5WYWx1ZSIpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKCFKU0dsb2JhbE9i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgbV9leGVjLCBpZGVudGlmaWVy
LCBzbG90KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCmlu
ZGV4IGZjYTdjN2VkNmFkNWQ4NzNlMDdhMjAyNzM3MWU3NjhmNmUzMmJiMzcuLmVjYmIzM2VlZjg3
OGM1ZTVmMWUwM2M5ZjhiNzY2MDNlMmNiMjIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCkBAIC00OCw3
ICs0OCw3IEBACiAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMg
eWllbGQgYW4gb2JqZWN0LgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS50b09iamVjdChl
eGVjKTsKIAotICAgIEpTVmFsdWUgeFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmll
cihleGVjLCAieCIpKTsKKyAgICBKU1ZhbHVlIHhWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIngiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVYID0gIXhWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtNTYsNyArNTYsNyBAQAogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlIHlWYWx1ZSA9
IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInkiKSk7CisgICAgSlNWYWx1ZSB5
VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ5
IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgYm9vbCBjYW5Qcm92aWRlWSA9ICF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTY0
LDcgKzY0LDcgQEAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgSlNWYWx1ZSB6VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVy
KGV4ZWMsICJ6IikpOworICAgIEpTVmFsdWUgelZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieiIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZVogPSAhelZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC04Niw3ICs4Niw3IEBACiAgICAgLy8gR2l2ZW4gdGhl
IGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQgYW4gb2JqZWN0LgogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKIAotICAgIEpTVmFsdWUgYWxwaGFW
YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImFscGhhIikpOworICAg
IEpTVmFsdWUgYWxwaGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgImFscGhhIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlQWxwaGEgPSAhYWxwaGFWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtOTQsNyArOTQsNyBAQAogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlIGJldGFWYWx1ZSA9
IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImJldGEiKSk7CisgICAgSlNWYWx1
ZSBiZXRhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJiZXRhIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlQmV0YSA9ICFiZXRhVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlIGdhbW1hVmFsdWUgPSBvYmplY3Qt
PmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJnYW1tYSIpKTsKKyAgICBKU1ZhbHVlIGdhbW1h
VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJn
YW1tYSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hID0gIWdhbW1hVmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKTsKQEAgLTExOSwxOCArMTE5LDE4IEBACiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZUFjY2Vs
ZXJhdGlvbk9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24qIGFjY2Vs
ZXJhdGlvbiwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVgoKSA/IGpz
TnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ5IiksIGFjY2VsZXJhdGlvbi0+Y2Fu
UHJvdmlkZVkoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eSgpKSA6IGpzTnVsbCgpKTsKLSAg
ICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ6IiksIGFj
Y2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVooKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eigpKSA6
IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVgoKSA/IGpz
TnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ5IiksIGFjY2Vs
ZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eSgpKSA6IGpz
TnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVooKSA/IGpzTnVt
YmVyKGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsKICAgICByZXR1cm4gb2JqZWN0Owog
fQogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVJvdGF0aW9uUmF0ZU9iamVjdChjb25zdCBEZXZp
Y2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJvdGF0aW9uUmF0ZSwgRXhlY1N0YXRlKiBleGVj
KQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsK
LSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJhbHBo
YSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgpID8ganNOdW1iZXIocm90YXRpb25S
YXRlLT5hbHBoYSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVC
ZXRhKCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpzTnVsbCgpKTsKLSAg
ICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJnYW1tYSIp
LCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgpID8ganNOdW1iZXIocm90YXRpb25SYXRl
LT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbHBoYSIpLCByb3RhdGlvblJhdGUtPmNh
blByb3ZpZGVBbHBoYSgpID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5hbHBoYSgpKSA6IGpzTnVs
bCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVCZXRhKCkgID8g
anNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJnYW1t
YSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgpID8ganNOdW1iZXIocm90YXRpb25S
YXRlLT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCAyMGQ4ZjgzY2Qw
ZTQ5YWE2YTA0YzNmNjdiYzhkMjVlZTIzYmY5OGYwLi5lOTg0OTA5ZTc2YjI1OTQwZGE5ZWVjZDBk
OTY1OTllMGU4ZjZmNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKIEpTRGljdGlvbmFyeTo6R2V0UHJvcGVydHlSZXN1
bHQgSlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUmIGZpbmFsUmVzdWx0KSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwot
ICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihtX2V4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsIHByb3Bl
cnR5TmFtZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QobV9pbml0aWFsaXplck9iamVjdC5nZXQo
KSk7CiAKICAgICBpZiAoIW1faW5pdGlhbGl6ZXJPYmplY3QuZ2V0KCktPmdldFByb3BlcnR5U2xv
dChtX2V4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggYTJjZjI2OGRkNjY0ZjY2YWI4ZmM2YTdkMDY0
YmQyYzBkMDdjMWY4OC4uNWZmZDNjNjM1YWExNTMyNGYyNjZjZGIwZjg2YzFlMDc3MzMzMzdiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBA
IC0xMDMsNyArMTAzLDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAg
ICAvLyBJZiBqc0Z1bmN0aW9uIGlzIG5vdCBhY3R1YWxseSBhIGZ1bmN0aW9uLCBzZWUgaWYgaXQg
aW1wbGVtZW50cyB0aGUgRXZlbnRMaXN0ZW5lciBpbnRlcmZhY2UgYW5kIHVzZSB0aGF0CiAgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBoYW5kbGVFdmVudEZ1bmN0
aW9uID0ganNGdW5jdGlvbi0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2ZW50
IikpOworICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0KGV4ZWMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhbmRsZUV2ZW50IikpOwogICAgICAgICBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENv
bGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggODEyMjUwN2I0ZmJjNjhlMTIzZjY3MmZhMzEwODhh
NTJjYTcwZTk2NS4uM2ViYTQyMWJjNzM0MTc3M2FjOGY2YWE2YjEyMWVhY2QxZTgyYTdiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVj
dGlvbkN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0NvbGxlY3Rpb24tPmds
b2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLml0ZW0oaW5kZXgpKSk7CiAKICAgICAgICAgLy8gU3Vw
cG9ydCBmb3IgZG9jdW1lbnQuaW1hZ2VzKCc8bmFtZT4nKSBldGMuCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUobmFtZWRJdGVtcyhleGVjLCBqc0NvbGxlY3Rpb24sIElkZW50aWZpZXIo
ZXhlYywgc3RyaW5nKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5hbWVkSXRl
bXMoZXhlYywganNDb2xsZWN0aW9uLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHN0cmlu
ZykpKTsKICAgICB9CiAKICAgICAvLyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0LCBpcyB0aGUgaW5k
ZXggb2YgdGhlIGl0ZW0gd2Ugd2FudApAQCAtMTA2LDEyICsxMDYsMTIgQEAgSlNWYWx1ZSBKU0hU
TUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBpbmRl
eCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CiAgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6
Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGlt
cGwoKS5pdGVtKGluZGV4KSk7Ci0gICAgcmV0dXJuIG5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRl
bnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpKTsKKyAgICByZXR1cm4gbmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSkpOwogfQogCiBKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbShFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoZXhlYywgdGhpcywg
SWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSkpOwogICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5lZCgpID8ganNOdWxs
KCkgOiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDNhZDlhNDcyOTAzNGNkZDA3NzY5ZjdjZTYwYzdk
ZWYyYjFjOTA5NTIuLjZkMzljNDU5ZDdkMjU1NTRhOTdkZTRkYjcyNGQzMTY1YzI5MzNkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6
bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogSlNWYWx1
ZSBKU0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICAvLyBJ
ZiAiYWxsIiBoYXMgYmVlbiBvdmVyd3JpdHRlbiwgcmV0dXJuIHRoZSBvdmVyd3JpdHRlbiB2YWx1
ZQotICAgIEpTVmFsdWUgdiA9IGdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJhbGwiKSk7CisgICAgSlNWYWx1ZSB2ID0gZ2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgImFsbCIpKTsKICAgICBpZiAodikKICAgICAgICAgcmV0dXJu
IHY7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjphbGwoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogdm9pZCBKU0hUTUxEb2N1bWVudDo6c2V0QWxsKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyBBZGQgImFsbCIgdG8gdGhlIHByb3Bl
cnR5IG1hcC4KLSAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiYWxs
IiksIHZhbHVlKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAiYWxsIiksIHZhbHVlKTsKIH0KIAogc3RhdGljIERvY3VtZW50KiBmaW5kQ2Fs
bGluZ0RvY3VtZW50KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0Niw3ICsxNDYsNyBAQCBKU1ZhbHVl
IEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGltcGwoKS5mcmFtZSgpKSB7CiAgICAgICAgICAgICBKU0RPTVdpbmRvd1NoZWxs
KiB3cmFwcGVyID0gdG9KU0RPTVdpbmRvd1NoZWxsKGZyYW1lLCBjdXJyZW50V29ybGQoZXhlYykp
OwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpIHsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlIGZ1
bmN0aW9uID0gd3JhcHBlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIm9wZW4iKSk7Cisg
ICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHdyYXBwZXItPmdldChleGVjLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJvcGVuIikpOwogICAgICAgICAgICAgICAgIENhbGxE
YXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gOjpnZXRD
YWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICAgICAgICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4
IDI4NjdkNjBmMmEwMjYyN2YwN2NkMDBhMzQwZTU5Yzc4MTEyNGQ5ODMuLjI4NDg5NzEyYTdmNmNj
YzQ5OTA3YTZhZmIzMTVkYzVmZDdjOGNkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjCiAKIEpTVmFs
dWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlm
aWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRh
dGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJh
c2VDdXN0b20uY3BwCmluZGV4IGU2YTE0MGY1NDU4NDliOGFhNjQ5NDdlMGQ2NjdmODgzNmY0Yzlh
ZWEuLmEyNWRjYTk5MThjM2FlMmVlNzZhMTgwNWEyMGQwYjEwYmRhZjE5ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCkBAIC02
MCw3ICs2MCw3IEBAIEpTVmFsdWUgSlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoRXhl
Y1N0YXRlKiBleGVjKQogICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBib29sIGF1dG9JbmNy
ZW1lbnQgPSBmYWxzZTsKICAgICBpZiAoIW9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7Ci0gICAgICAgIEpTVmFsdWUga2V5UGF0aFZhbHVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsICJrZXlQYXRoIikpOworICAgICAgICBKU1ZhbHVlIGtleVBhdGhW
YWx1ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAia2V5UGF0aCIpKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTcwLDcgKzcwLDcgQEAgSlNWYWx1ZSBK
U0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRv
SW5jcmVtZW50ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhdXRv
SW5jcmVtZW50IikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgYXV0b0luY3JlbWVudCA9IG9w
dGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYXV0b0lu
Y3JlbWVudCIpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAK
aW5kZXggMDQwNDRkMzVkMzk1OWM1ZjE4Y2YyYmQ1YjM1NTNiYTgyZDgzNWVlYy4uODUwN2U0OTRh
Mzc2ZGI3OTllNTZmYmVlOGJkMWNjNmQ5ZDE2NzgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKQEAgLTY3LDExICs2
NywxMSBAQCBKU1ZhbHVlIEpTSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBib29sIHVuaXF1ZSA9IGZhbHNlOwogICAgIGJvb2wgbXVsdGlFbnRyeSA9IGZh
bHNlOwogICAgIGlmICghb3B0aW9uc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAg
ICAgdW5pcXVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ1bmlx
dWUiKSkudG9Cb29sZWFuKGV4ZWMpOworICAgICAgICB1bmlxdWUgPSBvcHRpb25zVmFsdWUuZ2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInVuaXF1ZSIpKS50b0Jvb2xlYW4o
ZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgICAgIG11bHRpRW50cnkgPSBvcHRpb25zVmFsdWUu
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIm11bHRpRW50cnkiKSkudG9Cb29sZWFuKGV4ZWMp
OworICAgICAgICBtdWx0aUVudHJ5ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJtdWx0aUVudHJ5IikpLnRvQm9vbGVhbihleGVjKTsKICAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bWFnZURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURh
dGFDdXN0b20uY3BwCmluZGV4IDVhYWU1YWU5NjdhZDkzYTI3Zjg4ZDM2ZDcwZTk3OGRlOWNlYjQw
MTAuLjRhMWZjNjFiZjllZDcwMDZkNzliYzNhMmUyZjVlYzZjYTYyYjI0Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhKiBpbWFnZUQKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CiAgICAgCiAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIElt
YWdlRGF0YSwgaW1hZ2VEYXRhKTsKLSAgICBJZGVudGlmaWVyIGRhdGFOYW1lKGV4ZWMsICJkYXRh
Iik7CisgICAgSWRlbnRpZmllciBkYXRhTmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgImRhdGEiKTsKICAgICB3cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZGF0YU5hbWUs
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbWFnZURhdGEtPmRhdGEoKSksIERvbnREZWxldGUg
fCBSZWFkT25seSk7CiAgICAgZXhlYy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1h
Z2VEYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApp
bmRleCBkODZhNDgwYjBjMzgwNmJkZTY3ZTlkYjRhNjY3NDI4MjY2OWFmZjY2Li44NTUwZWI0NTNm
OTNmY2FhYmIzMTM2MDRhYzU0MmZjN2I3NTQ2NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
CkBAIC04NiwxMiArODYsMTIgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1z
KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIENvbnRleHRNZW4KIHsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIEpTT2Jq
ZWN0KiBpdGVtID0gYXNPYmplY3QoYXJyYXktPmdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAg
SlNWYWx1ZSBsYWJlbCA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJsYWJlbCIp
KTsKLSAgICAgICAgSlNWYWx1ZSB0eXBlID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgInR5cGUiKSk7Ci0gICAgICAgIEpTVmFsdWUgaWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRp
ZmllcihleGVjLCAiaWQiKSk7Ci0gICAgICAgIEpTVmFsdWUgZW5hYmxlZCA9IGl0ZW0tPmdldChl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsICJlbmFibGVkIikpOwotICAgICAgICBKU1ZhbHVlIGNoZWNr
ZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiY2hlY2tlZCIpKTsKLSAgICAg
ICAgSlNWYWx1ZSBzdWJJdGVtcyA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJz
dWJJdGVtcyIpKTsKKyAgICAgICAgSlNWYWx1ZSBsYWJlbCA9IGl0ZW0tPmdldChleGVjLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsYWJlbCIpKTsKKyAgICAgICAgSlNWYWx1ZSB0eXBl
ID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInR5cGUiKSk7
CisgICAgICAgIEpTVmFsdWUgaWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAiaWQiKSk7CisgICAgICAgIEpTVmFsdWUgZW5hYmxlZCA9IGl0ZW0tPmdldChl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJlbmFibGVkIikpOworICAgICAgICBK
U1ZhbHVlIGNoZWNrZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiY2hlY2tlZCIpKTsKKyAgICAgICAgSlNWYWx1ZSBzdWJJdGVtcyA9IGl0ZW0tPmdldChl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzdWJJdGVtcyIpKTsKICAgICAgICAg
aWYgKCF0eXBlLmlzU3RyaW5nKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCA2
ZGRlNTEwYzQzMjU1MjZjZDI3OTc5YjgyMmI3MTI0NjEyNzUzYmQ0Li5jMzFhZGFmNzcxNjJiODJh
ODlkN2I0M2Q3NTdkZWZjMjU5NzQzMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEpTT2Jq
ZWN0KiBKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBleGVjCiAgICAgYXJncy5hcHBlbmQoanNOb250cml2aWFsU3RyaW5nKGV4
ZWMsIG1fZXZlbnRQYXJhbWV0ZXJOYW1lKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRo
Q2FjaGUoZXhlYywgbV9jb2RlKSk7CiAKLSAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IGNvbnN0
cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgYXJncywgSWRlbnRpZmllcihleGVjLCBtX2Z1bmN0aW9uTmFtZSksIG1f
c291cmNlVVJMLCBtX3Bvc2l0aW9uKTsgLy8gRklYTUU6IGlzIGdsb2JhbEV4ZWMgb2s/CisgICAg
SlNPYmplY3QqIGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJs
ZWRDaGVjayhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgbV9mdW5jdGlvbk5hbWUpLCBtX3NvdXJjZVVSTCwgbV9wb3Np
dGlvbik7IC8vIEZJWE1FOiBpcyBnbG9iYWxFeGVjIG9rPwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkgewogICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgICAg
ICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKaW5kZXggNzE3MjZiYmYxYjFlYjY3MWUx
YTZiNGVkNDgyYzYxZTJiNThhYmNhMy4uN2I0MTE5YTVhNWQwYjcyODlmM2UxMzY4ZDkxMGQ3NmE3
OThkOGI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmls
dGVyQ29uZGl0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVG
aWx0ZXJDb25kaXRpb24uY3BwCkBAIC01Miw3ICs1Miw3IEBAIHNob3J0IEpTTm9kZUZpbHRlckNv
bmRpdGlvbjo6YWNjZXB0Tm9kZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgTm9kZSogZmlsdGVyTm9k
ZSkKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKGZpbHRlciwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5v
bmUpIHsKLSAgICAgICAgZmlsdGVyID0gZmlsdGVyLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMs
ICJhY2NlcHROb2RlIikpOworICAgICAgICBmaWx0ZXIgPSBmaWx0ZXIuZ2V0KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFjY2VwdE5vZGUiKSk7CiAgICAgICAgIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEoZmlsdGVyLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOb2RlRmlsdGVyIG9iamVjdCBkb2VzIG5vdCBo
YXZlIGFuIGFjY2VwdE5vZGUgZnVuY3Rpb24iKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAppbmRleCAz
YzkyYmViMTM0ZWQwNjMzMWIzOWY2MWYzNjllNGQ4OGRjMzMzZGEzLi44YzllYjhmOWMxOWY5MGEw
MGEzNmRmNTM1Zjk5M2JhYzdhMTNlYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKQEAgLTc0LDcg
Kzc0LDcgQEAgSlNWYWx1ZSBKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0oRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0g
ICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgbV9p
bXBsLT5jb2x1bW5OYW1lcygpW2ldKSwganNWYWx1ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCBtX2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pLCBqc1ZhbHVlLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOwogICAgIH0KIAogICAgIHJldHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCA5NDJjNGRmYjZlN2U2
OGY4OWEwY2Y3OWQ1NDVlMzE5MTQ2YmMyNzM3Li5kNjQ2MDNlMWI4ZDI1ZWRmNWQxZjI5YzVmNzAz
NzIxYjZiY2EzMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFn
ZUN1c3RvbS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKU1N0b3JhZ2U6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5tX2ltcGwtPmtleShpLCBlYykpKTsKKyAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0aGlz
T2JqZWN0LT5tX2ltcGwtPmtleShpLCBlYykpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1KU1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0
cmVhbUpTU291cmNlLmNwcAppbmRleCBiODFhYWNkNTAwOGI1NzQ0ODJkOWVjMTYzYTdhMzcwYWVk
N2NkN2Q3Li42MGZjNTQ1YTVjYTNkYjE1ODVmNDc2ZWE1MGMzNjc1N2IwZjVjMzQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNl
LmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIHNldEludGVybmFsU2xvdFRvT2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBvYmplY3RWYWx1ZSwgUHJpdmF0ZU5hbWUmCiB7CiAgICAgSlNP
YmplY3QqIG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogICAgIFB1dFByb3Bl
cnR5U2xvdCBwcm9wZXJ0eVNsb3Qob2JqZWN0VmFsdWUpOwotICAgIG9iamVjdC0+cHV0KG9iamVj
dCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShuYW1lKSwgdmFsdWUsIHByb3BlcnR5U2xvdCk7Cisg
ICAgb2JqZWN0LT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKG5hbWUpLCB2
YWx1ZSwgcHJvcGVydHlTbG90KTsKIH0KIAogSlNWYWx1ZSBnZXRJbnRlcm5hbFNsb3RGcm9tT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvYmplY3RWYWx1ZSwgUHJpdmF0ZU5hbWUmIG5h
bWUpCkBAIC01NSw3ICs1NSw3IEBAIEpTVmFsdWUgZ2V0SW50ZXJuYWxTbG90RnJvbU9iamVjdChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2JqZWN0VmFsdWUsIFByaXZhdGVOCiAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogICAgIFByb3BlcnR5U2xv
dCBwcm9wZXJ0eVNsb3Qob2JqZWN0VmFsdWUpOwogCi0gICAgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb20obmFtZSk7CisgICAgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQobmFtZSk7CiAgICAgaWYgKCFvYmplY3QtPmdldE93
blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgcHJvcGVydHlTbG90KSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICByZXR1cm4gcHJvcGVydHlTbG90LmdldFZh
bHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYjQ5MzFkZDU2YTc2ZWIzMjRiYTZmM2Rl
OTUxNjQ3MzRlODBlNDliLi4wM2Q0NDc2NTg5Nzk3OGMwMDRhZDkzMWFjMTY0MGQzMTY4MGUzYTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVj
dC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QmIHZhbHVlKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlw
dFN0YXRlKTsKLSAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wdXREaXJl
Y3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB2YWx1
ZS5qc09iamVjdCgpKTsKKyAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5w
dXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0
U3RhdGUsIG5hbWUpLCB2YWx1ZS5qc09iamVjdCgpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0
aW9uKHNjcmlwdFN0YXRlKTsKIH0KIApAQCAtNjEsMTQgKzYxLDE0IEBAIGJvb2wgU2NyaXB0R2xv
YmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBu
YW1lLCBJbnNwCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogICAgIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBnbG9iYWxPYmplY3Qt
PnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFt
ZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKKyAgICBnbG9iYWxP
YmplY3QtPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFs
dWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0KIAogYm9v
bCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgdmFsdWUpCiB7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIEpTVmFsdWUganNWYWx1ZSA9IHNj
cmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdldChzY3JpcHRTdGF0ZSwgSWRlbnRp
ZmllcihzY3JpcHRTdGF0ZSwgbmFtZSkpOworICAgIEpTVmFsdWUganNWYWx1ZSA9IHNjcmlwdFN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdldChzY3JpcHRTdGF0ZSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFtZSkpOwogICAgIGlmICghanNWYWx1ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2Jq
ZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBE
ZXByCiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6cmVtb3ZlKEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3Jp
cHRTdGF0ZSk7Ci0gICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bWV0aG9k
VGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgc2NyaXB0U3RhdGUsIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpKTsKKyAgICBzY3Jp
cHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9w
ZXJ0eShzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzY3JpcHRTdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFtZSkpOwogICAgIHJldHVybiBoYW5k
bGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBkY2E1NjAzZjljMzk5
NjE4MzM4YWY3ZTBkYjMxYWRmMTBjYjZiNmY5Li5iMWM1MjgwN2I5MDNmYWU2Y2YyZDU4ZTEwZjBi
YjQwMDA3OWQzMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTUyMSw3ICs1MjEsNyBAQCBjbGFzcyBDbG9uZVNl
cmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICA6IENsb25lQmFzZShleGVjKQogICAgICAg
ICAsIG1fYnVmZmVyKG91dCkKICAgICAgICAgLCBtX2Jsb2JVUkxzKGJsb2JVUkxzKQotICAgICAg
ICAsIG1fZW1wdHlJZGVudGlmaWVyKGV4ZWMsIGVtcHR5U3RyaW5nKCkpCisgICAgICAgICwgbV9l
bXB0eUlkZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBlbXB0eVN0cmluZygp
KSkKICAgICB7CiAgICAgICAgIHdyaXRlKEN1cnJlbnRWZXJzaW9uKTsKICAgICAgICAgZmlsbFRy
YW5zZmVyTWFwKG1lc3NhZ2VQb3J0cywgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cyk7CkBAIC0x
MDE0LDcgKzEwMTQsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAg
ICAgICBpZiAoc3RyLmlzTnVsbCgpKQogICAgICAgICAgICAgd3JpdGUobV9lbXB0eUlkZW50aWZp
ZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB3cml0ZShJZGVudGlmaWVyKG1fZXhlYywg
c3RyKSk7CisgICAgICAgICAgICB3cml0ZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywg
c3RyKSk7CiAgICAgfQogCiAgICAgdm9pZCB3cml0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHZl
Y3RvcikKQEAgLTEyNDgsNyArMTI0OCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25l
U2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIGxl
bmd0aFN0YWNrLnJlbW92ZUxhc3QoKTsKIAogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0
YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAg
ICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJh
eSwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVu
dW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBAIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4p
CiAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3QpOwogICAg
ICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3Bl
cnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAgICAgICAg
ICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluT2JqZWN0
LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRp
b25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsK
QEAgLTEzODEsNyArMTM4MSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFs
aXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihvYmplY3QpIHx8IGpzRHluYW1pY0Nhc3Q8SlNN
YXAqPihvYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQo
UHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVy
dHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9w
ZXJ0aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKQEAgLTI0NjAs
MTEgKzI0NjAsMTEgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOjpk
ZXNlcmlhbGl6ZSgpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHRl
cm1pbmFsID0gcmVhZFRlcm1pbmFsKCkpIHsKLSAgICAgICAgICAgICAgICBwdXRQcm9wZXJ0eShv
dXRwdXRPYmplY3RTdGFjay5sYXN0KCksIElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJpbmct
PnN0cmluZygpKSwgdGVybWluYWwpOworICAgICAgICAgICAgICAgIHB1dFByb3BlcnR5KG91dHB1
dE9iamVjdFN0YWNrLmxhc3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsIGNhY2hl
ZFN0cmluZy0+c3RyaW5nKCkpLCB0ZXJtaW5hbCk7CiAgICAgICAgICAgICAgICAgZ290byBvYmpl
Y3RTdGFydFZpc2l0TWVtYmVyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3RhdGVTdGFj
ay5hcHBlbmQoT2JqZWN0RW5kVmlzaXRNZW1iZXIpOwotICAgICAgICAgICAgcHJvcGVydHlOYW1l
U3RhY2suYXBwZW5kKElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0cmluZygpKSk7
CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVTdGFjay5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhtX2V4ZWMsIGNhY2hlZFN0cmluZy0+c3RyaW5nKCkpKTsKICAgICAgICAgICAgIGdvdG8g
c3RhdGVVbmtub3duOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgT2JqZWN0RW5kVmlzaXRNZW1i
ZXI6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0
T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3Qu
bW0KaW5kZXggYjMxZTNlYjY5NTNiYmI0OWMxNmRhYWQ5YjE2MGNhMWMwMDBhMjY2YS4uYzhjNmE4
OTNjZTkyMzVhNzk1OTgyZTI3MTNlODIzZTEwNTVjNTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTMzMCw3ICszMzAsNyBAQCAt
IChpZCljYWxsV2ViU2NyaXB0TWV0aG9kOihOU1N0cmluZyAqKW5hbWUgd2l0aEFyZ3VtZW50czoo
TlNBcnJheSAqKWFyZ3MKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBBU1NFUlQo
IWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiA9IFtz
ZWxmIF9pbXBdLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJpbmcobmFtZSkpKTsKKyAg
ICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKG5hbWUpKSk7CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERh
dGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCkBAIC0zODQsNyArMzg0LDcg
QEAgLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQogICAg
IEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU0M6Ompz
RHluYW1pY0Nhc3Q8SlNPYmplY3QqPihbc2VsZiBfaW1wXSk7CiAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3Qob2JqZWN0KTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChvYmplY3QsIGV4
ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1
ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9iamVjdF0pLCBzbG90
KTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChvYmplY3QsIGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1
ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9iamVjdF0pLCBzbG90
KTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRp
b25Ub0NvbnNvbGUoZXhlYyk7CkBAIC00MDcsNyArNDA3LDcgQEAgLSAoaWQpdmFsdWVGb3JLZXk6
KE5TU3RyaW5nICopa2V5CiAgICAgICAgIC8vIGxlYXZpbmcgdGhlIGxvY2sgcGVybWFuZW50bHkg
aGVsZAogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgCi0gICAgICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgU3RyaW5nKGtleSkpKTsKKyAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IFtzZWxm
IF9pbXBdLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmcoa2V5
KSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAg
ICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CkBAIC00MzMsNyArNDMzLDcgQEAg
LSAodm9pZClyZW1vdmVXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgQVNTRVJUKCFl
eGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAg
ICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0s
IGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpKTsKKyAgICBbc2VsZiBfaW1wXS0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKIAogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CkBAIC00
NTAsNyArNDUwLDcgQEAgLSAoQk9PTCloYXNXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopa2V5CiAg
ICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKLSAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9pbXBdLT5oYXNQcm9wZXJ0eShleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CisgICAgQk9PTCByZXN1bHQgPSBbc2Vs
ZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBT
dHJpbmcoa2V5KSkpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAg
IGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZmZjZmQ5NjdiMWFkNWY5ZTA5
NTlhMWQxNDYzMDAxZTNkZWNhOWFhNi4uMzc1NTI0MzY2OTYwZjhlMDQ1NjFiM2I1MDhlYjJmNTcw
N2JjMmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTk3MiwxNiArOTcyLDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
CiAgICAgIyBDdXN0b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2lu
ZG93CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlND
OjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRH
ZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1l
cmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwor
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5
TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRp
b25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
O1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0
U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1l
cmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0RW51bWVyYWJsZUxlbmd0
aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwogICAgICAgICAkc3RydWN0
dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsKICAgICB9CiAK
ICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9IHx8
ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9k
ZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYs
IEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpO1xuIik7CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOyAgICAgICAKICAgICB9CiAKQEAgLTE5OTUsNyAr
MTk5NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkg
JGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJHNpZ25hdHVy
ZSk7CiAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkc2lnbmF0dXJlLT5uYW1lOwogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghJHtlbmFibGVfZnVuY3Rpb259
KCkpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSgmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwi
JG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZW1vdmVEaXJlY3Qodm0sIHByb3BlcnR5TmFtZSk7XG4i
KTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwpAQCAtMjYwMywxMCArMjYwMywxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25z
dHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb25kaXRpb25hbCJ9KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvclxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMs
IFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdFxuIik7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBcIiRuYW1lXCIpLCB2
YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbFR5cGUmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7XG4iKTsKQEAgLTI3MTYsNyArMjcxNiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5n
dGgoKTsgaSA8IGNvdW50OyArK2kpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpO1xuIik7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKaW5kZXggMWQ1
OTE4OWI0NzIwNTExNzE3OWM2MzlhNjA1YjMwODZlZGRiZjZlZi4uZDI0YTJlYTcwNmFlMmQ5NDQy
YjcwNzVmOTVlMjg4MzM2NTYyMDYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCkBAIC0yNDEsNyAr
MjQxLDcgQEAgdm9pZCBKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHN0YXRpY19jYXN0PEZsb2F0NjRBcnJheSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgp
OyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywg
aSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNGbG9hdDY0
QXJyYXk6OmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKaW5kZXggZmYzODhjYTAxNzYwYzEyYjk1NzUwMzlm
ZWM3NjQzMjkzZmU4NGUzNC4uMTNlMTU3N2UzNmNkNjFiZGQxYmMxODcwNmIzNjAyMDhhYzM4MmU4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRmxvYXQ2NEFycmF5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSlNGbG9hdDY0QXJy
YXkgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9k
ZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9u
TW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBGbG9hdDY0QXJyYXkqIGltcGwoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwCmluZGV4IDVhMjE0ZDA3ZGQxMDYwZjllZGVhZDVjOWNiMmJlNzlkODk5YjdhOTQuLmUw
YWE2ZDA5MzMwNmE3MGY2NjY5MDlmNjBlMTk2NzNiY2M2MDJiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXQ6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQCiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBp
IDwgY291bnQ7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpKSk7Ci0gICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogSlNWYWx1ZSBK
U1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAppbmRleCBiZjFjZTY3ZTJmZTNjZGNi
OTdlMjAzODdmNWIwZTllNTA4OWYyNDdmLi40MDhjYjhmMmZmNzkzZTMxZDFjNmUzNDI5MTI1ZDNk
MWZhNTQ1YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFz
cyBXRUJDT1JFX0VYUE9SVCBKU1Rlc3RFdmVudFRhcmdldCA6IHB1YmxpYyBKU0RPTVdyYXBwZXIg
ewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5
JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgSlNDOjpTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDg3YjJkMWIyM2I4YmMyNTk1
MmRjNzExOTcwOGU5OTFmYTgwYWIwOTUuLjczNWE2N2FlMWJiNTE5MmVmNDk3ZjM4YWFkMzhlNjRm
ZDQwMzk1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xODc5LDcgKzE4NzksNyBAQCB2b2lkIHNldEpTVGVz
dE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdAogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGNh
c3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJUZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CisgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIlRlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nIiksIHZhbHVlKTsKIH0KIAogCkBAIC0yNjcyLDcgKzI2NzIsNyBAQCB2b2lk
IHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBiYXNlT2JqZQogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
cgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJjb25kaXRpb25hbEF0dHI0IiksIHZhbHVlKTsKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29uZGl0aW9uYWxBdHRy
NCIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjY4Nyw3ICsyNjg3LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogYmFzZU9iamUKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAg
ICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29u
ZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CisgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbmRpdGlvbmFsQXR0cjUiKSwg
dmFsdWUpOwogfQogCiAjZW5kaWYKQEAgLTI3MDIsNyArMjcwMiw3IEBAIHZvaWQgc2V0SlNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGJhc2VPYmplCiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgY2Fz
dGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImNvbmRpdGlv
bmFsQXR0cjYiKSwgdmFsdWUpOworICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb25kaXRpb25hbEF0dHI2IiksIHZhbHVl
KTsKIH0KIAogI2VuZGlmCkBAIC0yODQwLDcgKzI4NDAsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJl
cGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3Qs
IEVuYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IG9iamVjdAotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7CisgICAgY2FzdGVkVGhpcy0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInJlcGxh
Y2VhYmxlQXR0cmlidXRlIiksIHZhbHVlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pz
b2JqZWN0LmNwcAppbmRleCA5MDAxMDEzOGFiNDZjZTdkOTc1M2NiZmYyOTVlNTNjZGZhY2QwYjVh
Li4wOTA1ZGUxOTdlNTU2MTI4ZDUyMjVhNjVkNDEyM2U2OGQ5NjJmODU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBib29sIF9OUE5fRW51
bWVyYXRlKE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXIsIHVpbnQz
Ml90KiBjb3VudAogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKIAotICAgICAgICBvYmotPmltcC0+
bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmotPmltcCwgZXhlYywgcHJvcGVydHlO
YW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIG9iai0+aW1wLT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+aW1wLCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICB1
bnNpZ25lZCBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByb3BlcnR5TmFtZXMuc2l6ZSgp
KTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBjYWxsIE5QTl9NZW1BbGxv
YyBidXQgdGhhdCdzIGluIFdlYktpdAogICAgICAgICBOUElkZW50aWZpZXIqIGlkZW50aWZpZXJz
ID0gc3RhdGljX2Nhc3Q8TlBJZGVudGlmaWVyKj4obWFsbG9jKHNpemVvZihOUElkZW50aWZpZXIp
ICogc2l6ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKaW5kZXggNzc0ZmRm
YzNmNGVmOTUzZWZkN2JkNmZkOTY3NmY2NDg3ZTg5OTA3Ni4uZGY5MDlkY2U1ZWFkOTM4NThlMDIz
MDljZDgyZGM1YTczMjM5NWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2Mv
Y191dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3Bw
CkBAIC0xNDQsNyArMTQ0LDcgQEAgU3RyaW5nIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoY29uc3Qg
TlBTdHJpbmcqIHN0cmluZykKIAogSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmll
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE5QVVRGOCogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRl
bnRpZmllcihleGVjLCBjb252ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwg
LTEpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBjb252ZXJ0VVRG
OFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEpKTsKIH0KIAogfSB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggY2QzNGU1ZjEyMDJkN2Yz
YWRiZGMxODMwOTg3ZWY4NmJhZGU2Y2MxMy4uNTc4OTE1ODkzOWEyYWY3YjkyZmFiOTBhZjg0YWFi
ZTk1YWVmN2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiBKU1ZhbHVlIE9iamNG
YWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAgICBjb25zdCBPYmpj
RmFsbGJhY2tPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wKj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5n
ZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0
LT5tX2l0ZW0pKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9m
VW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0aGlzT2Jq
ZWN0LT5tX2l0ZW0pKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVh
bihFeGVjU3RhdGUgKikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNw
cAppbmRleCAwMjIyMTkwNWM0MGU2ZWRmZWQ1Nzk5OWViMjM1ZjU4OTFhN2EyZTA4Li5jNzEzZmZh
NGUyMzI5M2M2NmNjNjVjYjI5OTNkYTNhOTJlZWRhODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgUnVudGltZUFycmF5Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVyCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKIAotICAgIGlmIChz
aG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKICAgICBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKaW5kZXggOTU3MzBjNDNkNzQwOTg1N2IxYmZk
MjkyOTUxYzU1ZGIwZGNjNWRmNS4uYmFmMjQ3ZDJkYjZjZTdlN2VlMTEzYTIxMGI4N2NjMzNhNzI2
YTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKQEAgLTM4MCw3ICsz
ODAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgIAogICAgICAg
ICBNeU9iamVjdCAqbXlPYmplY3QgPSAoTXlPYmplY3QgKilOUE5fQ3JlYXRlT2JqZWN0IChteUZ1
bmN0aW9uUHRycyk7CiAgICAgICAgIAotICAgICAgICBnbG9iYWwucHV0KGV4ZWMsIElkZW50aWZp
ZXIoIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNl
OjpDTGFuZ3VhZ2UsICh2b2lkICopbXlPYmplY3QpKTsKKyAgICAgICAgZ2xvYmFsLnB1dChleGVj
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6
Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6Q0xhbmd1YWdlLCAodm9pZCAqKW15T2JqZWN0
KSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykgewog
ICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJn
dltpXSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2
KQogICAgICAgICAgICAgICAgICAgICBjaGFyKiBtc2cgPSBleFZhbC50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykuYXNjaWkoKTsKICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubyA9IC0x
OwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhWYWwudHlwZSgpID09IE9iamVjdFR5cGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwgPSBPYmplY3Q6OmR5bmFtaWND
YXN0KGV4VmFsKS5nZXQoZXhlYyxJZGVudGlmaWVyKCJsaW5lIikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhWYWwpLmdldChl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGxpbmVWYWwudHlwZSgpID09IE51bWJlclR5cGUpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGxpbmVWYWwudG9OdW1iZXIoZXhlYykpOwog
ICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
dGVzdGJpbmRpbmdzLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQpp
bmRleCBiZmFjZjIxMDc0YTFlZTg1NzIyMzZlNWFhYWMxMmM1ZDllNGMyNzcwLi4zNTMyYjBhNjg5
YWJjZDZkMmQ3ZTEzNWIxN2IwYWM2ODU1NGUzNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0
YmluZGluZ3MubW0KQEAgLTI0OCw3ICsyNDgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpCiAgICAgICAgIAogICAgICAgICBNeUZpcnN0SW50ZXJmYWNlICpteUludGVyZmFjZSA9
IFtbTXlGaXJzdEludGVyZmFjZSBhbGxvY10gaW5pdF07CiAgICAgICAgIAotICAgICAgICBnbG9i
YWwucHV0KGV4ZWMsIElkZW50aWZpZXIoIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVS
dW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2UsICh2b2lkICopbXlJbnRl
cmZhY2UpKTsKKyAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0
YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlKSk7CiAgICAgICAg
IAogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICAgICAg
Y29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJndltpXSk7CkBAIC0y
NjIsNyArMjYyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAg
ICAgICAgICAgICBjaGFyICptc2cgPSBleFZhbC50b1N0cmluZyhleGVjKS5hc2NpaSgpOwogICAg
ICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChleFZhbC50eXBlKCkgPT0gT2JqZWN0VHlwZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhWYWwpLmdldChleGVjLElkZW50
aWZpZXIoImxpbmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBsaW5lVmFsID0g
T2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgImxpbmUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVZhbC50
eXBlKCkgPT0gTnVtYmVyVHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8g
PSBpbnQobGluZVZhbC50b051bWJlcihleGVjKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc01hbmFnZXIuY3BwCmluZGV4IGEyMTE1ZmJkZTI1YzVmMmZhOTg3YTcwZDAyZGU1
ZmY3ZWIzMWIyY2UuLjJiNDMyNmQxNTdmODYzMmMxNmI2ZDdhMjA0ZDNiYzA1YTFmMTk4MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBACiAKIHN0YXRpYyBi
b29sIGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIFRy
aWdnZXImIHRyaWdnZXIpCiB7Ci0gICAgSlNWYWx1ZSB0cmlnZ2VyT2JqZWN0ID0gcnVsZU9iamVj
dC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ0cmlnZ2VyIikpOworICAgIEpTVmFsdWUg
dHJpZ2dlck9iamVjdCA9IHJ1bGVPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZleGVjLCAidHJpZ2dlciIpKTsKICAgICBpZiAoIXRyaWdnZXJPYmplY3QgfHwgZXhlYy5o
YWRFeGNlcHRpb24oKSB8fCAhdHJpZ2dlck9iamVjdC5pc09iamVjdCgpKSB7CiAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiSW52YWxpZCB0cmlnZ2VyIG9iamVjdC4iKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIEpTVmFsdWUgdXJsRmlsdGVyT2JqZWN0ID0gdHJpZ2dlck9iamVj
dC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ1cmwtZmlsdGVyIikpOworICAgIEpTVmFs
dWUgdXJsRmlsdGVyT2JqZWN0ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJmV4ZWMsICJ1cmwtZmlsdGVyIikpOwogICAgIGlmICghdXJsRmlsdGVyT2Jq
ZWN0IHx8IGV4ZWMuaGFkRXhjZXB0aW9uKCkgfHwgIXVybEZpbHRlck9iamVjdC5pc1N0cmluZygp
KSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxpZCB1cmwtZmlsdGVyIG9iamVjdC4iKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgYm9vbCBsb2Fk
VHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2JqZWN0LCBUcmlnZ2VyJiB0
cmlnZ2VyKQogICAgIH0KICAgICB0cmlnZ2VyLnVybEZpbHRlciA9IHVybEZpbHRlcjsKIAotICAg
IEpTVmFsdWUgdXJsRmlsdGVyQ2FzZU9iamVjdCA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJ
ZGVudGlmaWVyKCZleGVjLCAidXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZSIpKTsKKyAgICBK
U1ZhbHVlIHVybEZpbHRlckNhc2VPYmplY3QgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgInVybC1maWx0ZXItaXMtY2FzZS1zZW5zaXRpdmUi
KSk7CiAgICAgaWYgKHVybEZpbHRlckNhc2VPYmplY3QgJiYgIWV4ZWMuaGFkRXhjZXB0aW9uKCkg
JiYgdXJsRmlsdGVyQ2FzZU9iamVjdC5pc0Jvb2xlYW4oKSkKICAgICAgICAgdHJpZ2dlci51cmxG
aWx0ZXJJc0Nhc2VTZW5zaXRpdmUgPSB1cmxGaWx0ZXJDYXNlT2JqZWN0LnRvQm9vbGVhbigmZXhl
Yyk7CiAKQEAgLTc4LDEzICs3OCwxMyBAQCBzdGF0aWMgYm9vbCBsb2FkVHJpZ2dlcihFeGVjU3Rh
dGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2JqZWN0LCBUcmlnZ2VyJiB0cmlnZ2VyKQogCiBzdGF0
aWMgYm9vbCBsb2FkQWN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3Qs
IEFjdGlvbiYgYWN0aW9uKQogewotICAgIEpTVmFsdWUgYWN0aW9uT2JqZWN0ID0gcnVsZU9iamVj
dC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJhY3Rpb24iKSk7CisgICAgSlNWYWx1ZSBh
Y3Rpb25PYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZygmZXhlYywgImFjdGlvbiIpKTsKICAgICBpZiAoIWFjdGlvbk9iamVjdCB8fCBleGVjLmhhZEV4
Y2VwdGlvbigpIHx8ICFhY3Rpb25PYmplY3QuaXNPYmplY3QoKSkgewogICAgICAgICBXVEZMb2dB
bHdheXMoIkludmFsaWQgYWN0aW9uIG9iamVjdC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIEpTVmFsdWUgdHlwZU9iamVjdCA9IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMs
IElkZW50aWZpZXIoJmV4ZWMsICJ0eXBlIikpOworICAgIEpTVmFsdWUgdHlwZU9iamVjdCA9IGFj
dGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ0eXBl
IikpOwogICAgIGlmICghdHlwZU9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICF0eXBl
T2JqZWN0LmlzU3RyaW5nKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIHVybC1m
aWx0ZXIgb2JqZWN0LiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OSw3ICs5OSw3IEBA
IHN0YXRpYyBib29sIGxvYWRBY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9i
amVjdCwgQWN0aW9uJiBhY3Rpb24pCiAgICAgZWxzZSBpZiAoYWN0aW9uVHlwZSA9PSAiYmxvY2st
Y29va2llcyIpCiAgICAgICAgIGFjdGlvbiA9IEFjdGlvblR5cGU6OkJsb2NrQ29va2llczsKICAg
ICBlbHNlIGlmIChhY3Rpb25UeXBlID09ICJjc3MtZGlzcGxheS1ub25lIikgewotICAgICAgICBK
U1ZhbHVlIHNlbGVjdG9yID0gYWN0aW9uT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigmZXhl
YywgInNlbGVjdG9yIikpOworICAgICAgICBKU1ZhbHVlIHNlbGVjdG9yID0gYWN0aW9uT2JqZWN0
LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgInNlbGVjdG9yIikpOwog
ICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IGV4ZWMuaGFkRXhjZXB0aW9uKCkgfHwgIXNlbGVjdG9y
LmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiY3NzLWRpc3BsYXktbm9u
ZSBhY3Rpb24gdHlwZSByZXF1aXJlcyBhIHNlbGVjdG9yIik7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA1MTEy
Y2YyZWNjMzFlNjk1MDAzZTM5ZDRlY2VkYjQ5MDg2YzRhZjUzLi4wMjcxYmVkM2JlMGRhYmY3MmE4
ZjdhYjU0YjRiZTI5YmY5NGFlNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTM3MDEsNyArMzcwMSw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udHJv
bGxlckpTVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0JiBnCiAg
ICAgaWYgKCFtZWRpYUpTV3JhcHBlck9iamVjdCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxs
KCk7CiAgICAgCi0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xzSG9zdCgmZXhlYy52bSgpLCAi
Y29udHJvbHNIb3N0Iik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xzSG9zdCA9IEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy52bSgpLCAiY29udHJvbHNIb3N0Iik7CiAgICAg
SlNDOjpKU1ZhbHVlIGNvbnRyb2xzSG9zdEpTV3JhcHBlciA9IG1lZGlhSlNXcmFwcGVyT2JqZWN0
LT5nZXQoJmV4ZWMsIGNvbnRyb2xzSG9zdCk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwpAQCAtMzcxMCw3ICszNzEwLDcgQEAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywg
SlNET01HbG9iYWxPYmplY3QmIGcKICAgICBpZiAoIWNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVj
dCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAKLSAgICBKU0M6OklkZW50aWZpZXIg
Y29udHJvbGxlcklEKCZleGVjLnZtKCksICJjb250cm9sbGVyIik7CisgICAgSlNDOjpJZGVudGlm
aWVyIGNvbnRyb2xsZXJJRCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy52bSgp
LCAiY29udHJvbGxlciIpOwogICAgIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNXcmFwcGVyID0g
Y29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0LT5nZXQoJmV4ZWMsIGNvbnRyb2xsZXJJRCk7CiAg
ICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgp
OwpAQCAtMzc1Miw3ICszNzUyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0
aW9uQ29udGFpbmVyKCkKICAgICAvLyAgICAgTm9uZQogICAgIC8vIFJldHVybiB2YWx1ZToKICAg
ICAvLyAgICAgTm9uZQotICAgIEpTQzo6SlNWYWx1ZSBtZXRob2RWYWx1ZSA9IGNvbnRyb2xsZXJP
YmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgInVwZGF0ZUNhcHRpb25Db250
YWluZXIiKSk7CisgICAgSlNDOjpKU1ZhbHVlIG1ldGhvZFZhbHVlID0gY29udHJvbGxlck9iamVj
dC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidXBkYXRlQ2Fw
dGlvbkNvbnRhaW5lciIpKTsKICAgICBKU0M6OkpTT2JqZWN0KiBtZXRob2RPYmplY3QgPSBKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+KG1ldGhvZFZhbHVlKTsKICAgICBpZiAoIW1l
dGhvZE9iamVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNTg3OCw3ICs1ODc4LDcgQEAgYm9vbCBI
VE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlv
blZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJj
cmVhdGVDb250cm9scyIpKTsKKyAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2Jh
bE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3Jl
YXRlQ29udHJvbHMiKSk7CiAgICAgaWYgKGZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbigpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNTkwMSw3ICs1OTAxLDcgQEAgc3RhdGljIHZvaWQgc2V0
UGFnZVNjYWxlRmFjdG9yUHJvcGVydHkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1
ZSBjb250cm8KIHsKICAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3QoY29udHJv
bGxlclZhbHVlKTsKICAgICBKU0M6OkpTT2JqZWN0KiBjb250cm9sbGVyT2JqZWN0ID0gY29udHJv
bGxlclZhbHVlLnRvT2JqZWN0KGV4ZWMpOwotICAgIGNvbnRyb2xsZXJPYmplY3QtPm1ldGhvZFRh
YmxlKCktPnB1dChjb250cm9sbGVyT2JqZWN0LCBleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywg
InBhZ2VTY2FsZUZhY3RvciIpLCBKU0M6OmpzTnVtYmVyKHBhZ2VTY2FsZUZhY3RvciksIHByb3Bl
cnR5U2xvdCk7CisgICAgY29udHJvbGxlck9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGNvbnRy
b2xsZXJPYmplY3QsIGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAicGFn
ZVNjYWxlRmFjdG9yIiksIEpTQzo6anNOdW1iZXIocGFnZVNjYWxlRmFjdG9yKSwgcHJvcGVydHlT
bG90KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqIHJvb3QpCkBAIC01OTMwLDcgKzU5MzAsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKICAg
ICAvLyBSZXR1cm4gdmFsdWU6CiAgICAgLy8gICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBjcmVhdGVk
IG1lZGlhIGNvbnRyb2xsZXIgaW5zdGFuY2UuCiAKLSAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb25W
YWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3Jl
YXRlQ29udHJvbHMiKSk7CisgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxP
YmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0
ZUNvbnRyb2xzIikpOwogICAgIGlmIChmdW5jdGlvblZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNTk1OCw3ICs1OTU4LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKICAg
ICAvLyBDb25uZWN0IHRoZSBNZWRpYSwgTWVkaWFDb250cm9sbGVySG9zdCwgYW5kIENvbnRyb2xs
ZXIgc28gdGhlIEdDIGtub3dzIGFib3V0IHRoZWlyIHJlbGF0aW9uc2hpcAogICAgIEpTQzo6SlNP
YmplY3QqIG1lZGlhSlNXcmFwcGVyT2JqZWN0ID0gbWVkaWFKU1dyYXBwZXIudG9PYmplY3QoZXhl
Yyk7Ci0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xzSG9zdCgmZXhlYy0+dm0oKSwgImNvbnRy
b2xzSG9zdCIpOworICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sc0hvc3QgPSBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksICJjb250cm9sc0hvc3QiKTsKICAgICAKICAg
ICBBU1NFUlQoIW1lZGlhSlNXcmFwcGVyT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBjb250cm9s
c0hvc3QpKTsKIApAQCAtNTk2OCw3ICs1OTY4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgaWYgKCFtZWRp
YUNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IEpTQzo6SWRlbnRpZmllciBjb250cm9sbGVyKCZleGVjLT52bSgpLCAiY29udHJvbGxlciIpOwor
ICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sbGVyID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZleGVjLT52bSgpLCAiY29udHJvbGxlciIpOwogCiAgICAgQVNTRVJUKCFjb250cm9sbGVy
T2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBjb250cm9sbGVyKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGIwZjE2ZTdiNDY3MDdm
MGJkMjg4MmE4ZGVjYTk3ZDZhOTNmY2FmNjYuLmE2ZDJiZjQ1Yjc2Mzk1Nzc1NmI4ODY3ZjkwNGNh
ZDdhOGQ1NmU1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogICAgIGFyZ0xp
c3QuYXBwZW5kKEpTQzo6anNCb29sZWFuKCFtX3NuYXBzaG90SW1hZ2UpKTsKIAogICAgIC8vIEl0
IGlzIGV4cGVjdGVkIHRoZSBKUyBmaWxlIHByb3ZpZGVzIGEgY3JlYXRlT3ZlcmxheShzaGFkb3dS
b290LCB0aXRsZSwgc3VidGl0bGUpIGZ1bmN0aW9uLgotICAgIEpTQzo6SlNPYmplY3QqIG92ZXJs
YXkgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgImNyZWF0
ZU92ZXJsYXkiKSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNDOjpKU09iamVjdCogb3ZlcmxheSA9
IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAiY3JlYXRlT3ZlcmxheSIpKS50b09iamVjdChleGVjKTsKICAgICBKU0M6OkNhbGxEYXRhIGNh
bGxEYXRhOwogICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBvdmVybGF5LT5tZXRob2RUYWJs
ZSgpLT5nZXRDYWxsRGF0YShvdmVybGF5LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09
IEpTQzo6Q2FsbFR5cGVOb25lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9q
cy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJD
b3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IDAyZTNmNDllZjdjODFmZjhhNzA0MzE4NGI2NDBjMDU4
ZTZmNmQ2OTcuLmI1MmQxZTYyYTU2NmI5OTZkY2Q5MmFjOTRkNGEzMGYyNDZiYmM4ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgdm9pZCBpbmplY3RJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNv
bnRleHQpCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChpczxEb2N1bWVudD4oKnNjcmlwdENvbnRleHQpKQot
ICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsIEludGVybmFsczo6aW50ZXJuYWxzSWQpLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW50
ZXJuYWxzOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdENvbnRleHQpKSkpOworICAg
ICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsIEludGVybmFsczo6aW50ZXJuYWxzSWQpLCB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgSW50ZXJuYWxzOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdENvbnRleHQp
KSkpOwogfQogCiB2b2lkIHJlc2V0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRleCA5Y2Q2NTVjOWY3MTA1MzVhOWRmMmFmNDU3ZDcw
NDQ2YTZkOWI2ZTY3Li4zNDQxZTRmYjEzNzhkOTM4NzU2NDU2ZWI5NTlkNWRmZDExZjhiYjE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtNjI3LDcgKzYyNyw3IEBAIHN0YXRpYyBJZGVudGlm
aWVyIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChJZGVudGlmaWVyUmVwKiBpZGVudGlmaWVy
KQogICAgIEFTU0VSVChpZGVudGlmaWVyLT5pc1N0cmluZygpKTsKICAgCiAgICAgY29uc3QgY2hh
ciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5nKCk7ICAgIAotICAgIHJldHVybiBJZGVudGlmaWVy
KCZKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFjayhzdHIsIHN0cmxlbihzdHIpKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZh
bGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKTsKIH0KIAoga2Vybl9yZXR1cm5fdCBXS1BDSW52b2tl
KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklELCB1aW50MzJfdCByZXF1
ZXN0SUQsIHVpbnQzMl90IG9iamVjdElELCB1aW50NjRfdCBzZXJ2ZXJJZGVudGlmaWVyLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IGNhZGU5ZTFlOWZkZjdiNmY2NDEwODVkYjQ3
MDNhYjg0MzM4NTNhNmQuLjNiOThmZDRlODczZDAwZjE3OGZhOTQ4OTU5ZmE0ODFlYjgxMWZkNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTEyMzEsNyArMTIzMSw3IEBAIGJv
b2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUodWludDMyX3Qgb2JqZWN0
SUQsIGRhdGFfdCYgcmVzdWx0RGF0CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgCiAg
ICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5Kj4gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkr
KykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJ
bnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0KaW5kZXggMGRmMGRlYzBjMjQ3OGYwZmIxZmU4OGM2NDg5MzBiMmFhODJmMGYwMi4uNzUx
YjE2YWRjYjAzZWE5ZTNjOTYxMzkwY2FjNGVhODQzYmEwZGQwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC0zMjEsNyArMzIx
LDcgQEAgdm9pZCBQcm94eUluc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lQXJyYXkmIG5hbWVBcnIKIAogICAgICAgICBpZiAoaWRlbnRpZmllci0+
aXNTdHJpbmcoKSkgewogICAgICAgICAgICAgY29uc3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+
c3RyaW5nKCk7Ci0gICAgICAgICAgICBuYW1lQXJyYXkuYWRkKElkZW50aWZpZXIoJkpTRE9NV2lu
ZG93Ojpjb21tb25WTSgpLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwg
c3RybGVuKHN0cikpKSk7CisgICAgICAgICAgICBuYW1lQXJyYXkuYWRkKElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBTdHJpbmc6OmZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgbmFtZUFycmF5LmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZpZXItPm51
bWJlcigpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IDFjZWQyOTNlYjhjY2M3N2Qz
NzA5YjliZDM5ODA4Y2MzOTgxMjczNzcuLmZkYmU4MWE4ZTBiZTk3Njk0OTlhYzliMmQzZTBmYTMx
ZGJiNTU4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEpT
TlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eQogICAgICAgICAgICAgY29uc3QgY2hhciogc3RyaW5nID0gaWRlbnRp
ZmllclJlcC0+c3RyaW5nKCk7CiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gc3RybGVuKHN0cmlu
Zyk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyKGV4
ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5ndGgpLmlt
cGwoKSk7CisgICAgICAgICAgICBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKSk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZy
b20oZXhlYywgaWRlbnRpZmllclJlcC0+bnVtYmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5k
ZXggMGQxNjY3NGU1YzE1ZjQ3MTcxODU0M2QyNWNhNGYzMTA5YzA1MmQyMi4uYTY1Yzg5MzNmY2Uw
Y2I4MGJkMDk2Yzc2NDc2OGMwMmMxMDhmYzA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtODcs
NyArODcsNyBAQCBzdGF0aWMgSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAo
RXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyUmVwKiBpZAogICAgIGNvbnN0IGNoYXIqIHN0cmlu
ZyA9IGlkZW50aWZpZXJSZXAtPnN0cmluZygpOwogICAgIGludCBsZW5ndGggPSBzdHJsZW4oc3Ry
aW5nKTsKIAotICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRo
TGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5ndGgpLmltcGwoKSk7CisgICAgcmV0dXJuIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhzdHJpbmcsIGxlbmd0aCkpOwogfQogCiBib29sIE5QSlNPYmplY3Q6Omhhc01ldGhvZChOUElk
ZW50aWZpZXIgbWV0aG9kTmFtZSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIE5QSlNPYmplY3Q6
OmVudW1lcmF0ZShOUElkZW50aWZpZXIqKiBpZGVudGlmaWVycywgdWludDMyX3QqIGlkZW50aWZp
ZXJDb3VudAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCiAgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRQcm9wZXJ0eU5hbWVzKG1fanNPYmplY3QuZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVjdC5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgIE5Q
SWRlbnRpZmllciogbmFtZUlkZW50aWZpZXJzID0gbnBuTWVtTmV3QXJyYXk8TlBJZGVudGlmaWVy
Pihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZDViODRmZDllMWVhM2JlMjQyM2Y5
ZThiYjhhYzEwMGZiMThlN2U4Li5jYTRjMWVhMDViYTI3NmNiNDI3MWZiYmYzOGQ4YWJmZGJiOTkz
ZjM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDMtMDMgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0
T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGpzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanM6
CisKIDIwMTUtMDMtMDMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW01hY10gVHJhY2sgbG9jYWxpemVkIG5hbWUgZm9sbG93cyBsb2NhbGUgaW5zdGVhZCBv
ZiBwcmltYXJ5IGxhbmd1YWdlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0
T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0
T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKaW5kZXggZmZjNjkzMDA1MGI2YmRhNjJjNTNi
NTA2MTIyNzVkNDg5ODMxYWQ4NS4uNjhiNzVlNWEyNzZlM2E5MGU5Mjk3YjVkZTg0YjE1MmYzNjRh
ZGUxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0
eU5hbWVzLWV4cGVjdGVkLnR4dApAQCAtNDAsNyArNDAsNyBAQCBQQVNTIGdldFNvcnRlZE93blBy
b3BlcnR5TmFtZXMoZGVjb2RlVVJJKSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0U29y
dGVkT3duUHJvcGVydHlOYW1lcyhkZWNvZGVVUklDb21wb25lbnQpIGlzIFsnbGVuZ3RoJywgJ25h
bWUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKGVuY29kZVVSSSkgaXMgWydsZW5n
dGgnLCAnbmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZW5jb2RlVVJJQ29t
cG9uZW50KSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KLVBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlO
YW1lcyhPYmplY3QpIGlzIFsnY3JlYXRlJywgJ2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJv
cGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9w
ZXJ0eU5hbWVzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbics
ICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25z
JywgJ3Byb3RvdHlwZScsICdzZWFsJ10KK1BBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhP
YmplY3QpIGlzIFsnY3JlYXRlJywgJ2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHkn
LCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5h
bWVzJywgJ2dldE93blByb3BlcnR5U3ltYm9scycsICdnZXRQcm90b3R5cGVPZicsICdpc0V4dGVu
c2libGUnLCAnaXNGcm96ZW4nLCAnaXNTZWFsZWQnLCAna2V5cycsICdsZW5ndGgnLCAnbmFtZScs
ICdwcmV2ZW50RXh0ZW5zaW9ucycsICdwcm90b3R5cGUnLCAnc2VhbCddCiBQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlwZSkgaXMgWydfX2RlZmluZUdldHRlcl9f
JywgJ19fZGVmaW5lU2V0dGVyX18nLCAnX19sb29rdXBHZXR0ZXJfXycsICdfX2xvb2t1cFNldHRl
cl9fJywgJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1By
b3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3Rv
U3RyaW5nJywgJ3ZhbHVlT2YnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0
aW9uKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93
blByb3BlcnR5TmFtZXMoRnVuY3Rpb24ucHJvdG90eXBlKSBpcyBbJ2FwcGx5JywgJ2JpbmQnLCAn
Y2FsbCcsICdjb25zdHJ1Y3RvcicsICdsZW5ndGgnLCAnbmFtZScsICd0b1N0cmluZyddCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5
TmFtZXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3Bl
cnR5TmFtZXMuanMKaW5kZXggYjQyNGIwNWU0ZDgzYzJhOWE2YmFlMmE5ZDM0YjM0M2VlNjA5ODEx
NC4uZmJkNjVkZDNhYzk3Y2Q4YTdkMGVkYWM0MzlmZWQ3ZDc4M2UwMTBkNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpz
CisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlO
YW1lcy5qcwpAQCAtNDgsNyArNDgsNyBAQAogICAgICJlbmNvZGVVUkkiOiAiWydsZW5ndGgnLCAn
bmFtZSddIiwKICAgICAiZW5jb2RlVVJJQ29tcG9uZW50IjogIlsnbGVuZ3RoJywgJ25hbWUnXSIs
CiAvLyBCdWlsdC1pbiBFQ01BIG9iamVjdHMKLSAgICAiT2JqZWN0IjogIlsnY3JlYXRlJywgJ2Rl
ZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3Bl
cnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgJ2dldFByb3RvdHlwZU9mJywg
J2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcs
ICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10iLAorICAg
ICJPYmplY3QiOiAiWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0
eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5
TmFtZXMnLCAnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lzRXh0
ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1l
JywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10iLAogICAgICJPYmpl
Y3QucHJvdG90eXBlIjogIlsnX19kZWZpbmVHZXR0ZXJfXycsICdfX2RlZmluZVNldHRlcl9fJywg
J19fbG9va3VwR2V0dGVyX18nLCAnX19sb29rdXBTZXR0ZXJfXycsICdfX3Byb3RvX18nLCAnY29u
c3RydWN0b3InLCAnaGFzT3duUHJvcGVydHknLCAnaXNQcm90b3R5cGVPZicsICdwcm9wZXJ0eUlz
RW51bWVyYWJsZScsICd0b0xvY2FsZVN0cmluZycsICd0b1N0cmluZycsICd2YWx1ZU9mJ10iLAog
ICAgICJGdW5jdGlvbiI6ICJbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddIiwKICAgICAi
RnVuY3Rpb24ucHJvdG90eXBlIjogIlsnYXBwbHknLCAnYmluZCcsICdjYWxsJywgJ2NvbnN0cnVj
dG9yJywgJ2xlbmd0aCcsICduYW1lJywgJ3RvU3RyaW5nJ10iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247933</attachid>
            <date>2015-03-04 23:05:08 -0800</date>
            <delta_ts>2015-03-09 12:07:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150305160448.patch</filename>
            <type>text/plain</type>
            <size>254395</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
Y2ZiOGM3MjczM2ZkYWNjZTExNmEzMDMwNWZlMGU1NzllYzkwZmEzLi45NGY5YmYxM2QxNzFlOTQx
MjQ2OWQ0OTEyZjhlYjk5OWE1YjRkNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMzYgQEAKIDIwMTUtMDMtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGlucy9gLCB0aGV5IHNob3VsZCBub3QgYmUgZXhwb3NlZC4KKyAgICAgICAgVG8g
ZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIHRoZSB1c3VhbCBzeW1ib2xzLCBjaGVja2luZyB0aGUgdGFy
Z2V0IGBTdHJpbmdJbXBsKmAgaXMgYSBub3QgcHJpdmF0ZSBuYW1lCisgICAgICAgIGJlZm9yZSBh
ZGRpbmcgaXQgaW50byBQcm9wZXJ0eU5hbWVBcnJheS4KKworICAgICAgICBUbyBjaGVjayB0aGUg
dGFyZ2V0IGBTdHJpbmdJbXBsKmAgaXMgYSBwcml2YXRlIG5hbWUsIHdlIGxldmVyYWdlIHByaXZh
dGVUb1B1YmxpYyBtYXAgaW4gYEJ1aWx0aW5OYW1lc2AKKyAgICAgICAgc2luY2UgYWxsIHByaXZh
dGUgc3ltYm9scyBhcmUgaGVsZCBpbiB0aGlzIG1hcC4KKworICAgICAgICBUbyBjbGVhbiB1cCBg
U3RyaW5nSW1wbGAsIHdlIGludHJvZHVjZSBgU3RyaW5nS2luZGAgaW50byBgU3RyaW5nSW1wbGAu
IFRoZXJlJ3MgMyBraW5kcworICAgICAgICAxLiBTdHJpbmdOb3JtYWwgKG5vbi1hdG9taWMsIG5v
bi11bmlxdWUpCisgICAgICAgIDIuIFN0cmluZ0F0b21pYyAoYXRvbWljLCBub24tdW5pcXVlKQor
ICAgICAgICAzLiBTdHJpbmdVbmlxdWUgKG5vbi1hdG9taWMsIHVuaXF1ZSkKKyAgICAgICAgVGhl
eSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBBbmQgKGF0b21pYywgdW5pcXVlKSBjYXNlIHNob3Vs
ZCBub3QgZXhpc3QuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEuIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzCisgICAgICAgIDIuIEluY2x1ZGUvRXhjbHVkZSBTeW1ib2xzCisgICAgICAgIDMuIElu
Y2x1ZGUvRXhjbHVkZSBKU09iamVjdCBwcm9wZXJ0eSBuYW1lcworICAgICAgICBJbiB0aGUgYSBs
b3Qgb2YgY29kZSwgd2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBh
IGxvdCBvZiBjYWxsZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1l
QXJyYXlgIGRvZXNuJ3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25z
ZXJ2YXRpdmUgYXNzdW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAg
IEluIHRoZSBhIGxvdCBvZiBwbGFjZXMsIGBJZGVudGlmaWVyKFZNKi9FeGVjU3RhdGUqLCBTdHJp
bmdJbXBsKilgIGNvbnN0cnVjdG9yIGlzIHVzZWQuCisgICAgICAgIEhvd2V2ZXIsIGl0J3MgYW1i
aWd1b3VzIGJlY2F1c2UgYFN0cmluZ0ltcGwqYCBoYXMgMiBkaWZmZXJlbnQgbWVhbmluZ3MuCisg
ICAgICAgIDEpIG5vcm1hbCBzdHJpbmcsIGl0IGlzIHJlcGxhY2FibGUgd2l0aCBgV1RGU3RyaW5n
YCBhbmQgMikgYHVpZGAsIHdoaWNoIGhvbGRzIGBpc1VuaXF1ZWAgaW5mb3JtYXRpb24gdG8gcmVw
cmVzZW50IFN5bWJvbHMuCisgICAgICAgIFNvIHdlIGRyb3BwZWQgSWRlbnRpZmllciBjb25zdHJ1
Y3RvcnMgZm9yIHN0cmluZ3MgYW5kIGluc3RlYWQsIGludHJvZHVjZWQgMiBmYWN0b3J5IGZ1bmN0
aW9ucy4KKyAgICAgICAgKyBgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSovRXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJilgLgorICAgICAgICAgICAgSnVzdCBjb25zdHJ1Y3QgSWRlbnRpZmllciBm
cm9tIHN0cmluZ3MuIFRoZSB1bmlxdWVuZXNzIG9mIFN0cmluZ0ltcGwqIGlzIG5vdCBrZXB0Lgor
ICAgICAgICArIGBJZGVudGlmaWVyOjpmcm9tVWlkKFZNKi9FeGVjU3RhdGUqLCBTdHJpbmdJbXBs
KilgLgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGZvciAyKSBgdWlkYC4gU28g
dW5pcXVlbmVzcyBvZiBgU3RyaW5nSW1wbCpgIGlzIGtlcHQuCisKKyAgICAgICAgKiBBUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL0pT
T2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmlu
Zy5jcHA6CisgICAgICAgIChPcGFxdWVKU1N0cmluZzo6aWRlbnRpZmllcik6CisgICAgICAgICog
YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0VmFsdWUu
Y3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6anNUb0luc3BlY3RvclZhbHVlKToKKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlu
cy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpCdWlsdGluTmFt
ZXMpOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OmlzUHJpdmF0ZU5hbWUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAg
KiBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNp
cmVkSWRlbnRpZmllcnM6OnJlYWxseUFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhv
c3Q6OmZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChJbnNwZWN0b3I6OmNvbnN0cnVjdEludGVy
bmFsUHJvcGVydHkpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6
d2Vha01hcEVudHJpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNj
cmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpleHRyYWN0U291cmNlSW5m
b3JtYXRpb25Gcm9tRXhjZXB0aW9uKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6
CisKKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBleHBsY2l0bHkgY2hlY2sgYGlzVW5p
cXVlKClgIGluIHRoZSBjYWxsZXIgc2lkZS4gV2UgY2FuIGp1c3QgdXNlIGBJZGVudGlmaWVyOjpm
cm9tVWlkYC4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24pOgorICAg
ICAgICAoR2xvYmFsT2JqZWN0OjphZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24pOgorICAgICAgICAo
ZnVuY3Rpb25SdW4pOgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgorICAgICAgICAqIGxsaW50
L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0
aW9ucyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAg
ICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YWRkVmFy
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgor
ICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAg
KEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKToKKyAg
ICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlTnVtZXJpY0lkZW50aWZpZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQ
dXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmll
cnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6
OmlzUHJpdmF0ZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoK
KyAgICAgICAgKiBydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oOgorICAgICAgICAoSlNDOjpFbnVt
ZXJhdGlvbk1vZGU6OkVudW1lcmF0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9u
TW9kZTo6c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkVu
dW1lcmF0aW9uTW9kZTo6c2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6c2hvdWxkSW5jbHVkZVN5bWJvbHMpOgorICAgICAg
ICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OmNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OnNob3VsZEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6bW9kZVRoYXRTa2lwc0pTT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAg
ICAgKEpTQzo6aGFzRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBl
cnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKToKKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6
SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb20pOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SWRl
bnRpZmllcjo6SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQp
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXlCdWZmZXJWaWV3OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cnVudGltZUZsYWdzKToKKyAgICAgICAgKiBydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJv
bm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9K
U09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5k
TmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9t
aXNlQ29uc3RydWN0b3JGdW5jUmFjZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY0FsbCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aDoKKyAgICAgICAgKEpTQzo6c3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcik6CisgICAg
ICAgIChKU0M6OmdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b0lkZW50aWZpZXIpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBh
cnNlcjxDaGFyVHlwZT46OnRyeUpTT05QUGFyc2UpOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFy
c2VyPENoYXJUeXBlPjo6bWFrZUlkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3Vw
Lmg6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljUHJvcGVydGllcyk6CisgICAgICAgICogcnVu
dGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcEl0ZXJhdG9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpNYXRoT2JqZWN0
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6Ok51bWJlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9i
amVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3Ry
dWN0b3JLZXlzKToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChK
U0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Qcml2YXRlTmFtZS5oOgorICAgICAgICAoSlND
OjpQcml2YXRlTmFtZTo6UHJpdmF0ZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlO
YW1lLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6UHJvcGVydHlOYW1lKToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlOYW1lOjphc0luZGV4KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eTo6YWRkS25vd25VbmlxdWUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdF
eHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6
OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3Bw
OgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGZvckluKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5q
czogQWRkZWQuCisgICAgICAgICh0ZXN0U3ltYm9sKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
c3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNz
L3N5bWJvbC13aXRoLWpzb24uanM6IEFkZGVkLgorCisyMDE1LTAzLTA0ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIEhpZGUgUHJvbWlzZSB3aXRoIHJ1
bnRpbWUgZmxhZ3MgdW5kZXIgQ29jb2EgSlNDb250ZXh0IEFQSQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxOTY1CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYzRiZWE1ODJmMjAy
MTczM2E0ODZhOWQ0Mzc0M2UwYzU3MDE3M2U1My4uM2Y1NGU2NDU3ZDBkMjI1N2M2Yzc4MWY2YmMz
ZGQ5NGIzMjExZTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxNS0wMy0wNCAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBTdHJpbmdLaW5kIGludG8gYFN0cmluZ0ltcGxg
LiBUaGVyZSdzIDMga2luZHMKKyAgICAgICAgMS4gU3RyaW5nTm9ybWFsIChub24tYXRvbWljLCBu
b24tdW5pcXVlKQorICAgICAgICAyLiBTdHJpbmdBdG9taWMgKGF0b21pYywgbm9uLXVuaXF1ZSkK
KyAgICAgICAgMy4gU3RyaW5nVW5pcXVlIChub24tYXRvbWljLCB1bmlxdWUpCisgICAgICAgIFRo
ZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5jcHA6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UpOgorICAg
ICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmRTbG93Q2FzZSk6CisKKyAgICAgICAgV2hlbiBy
ZWdpc3RlcmluZyBhIHN0cmluZyBpbnRvIEF0b21pY1N0cmluZ1RhYmxlLCBpdCBzaG91bGQgbm90
IGJlIGFuIHVuaXF1ZSBzdHJpbmcgYmVjYXVzZSB1bmlxdWUgdHlwZXMgYW5kIGF0b21pYyB0eXBl
IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisgICAgICAgIFdoZW4gYW4gdW5pcXVlIHN0cmluZyBj
b21lcywgd2UgZXh0cmFjdCBhbiBvd25lciBzdHJpbmcgZnJvbSBhbiB1bmlxdWUgc3RyaW5nIGJ5
IHVzaW5nIGBTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKWAuIEl0IGFs
d2F5cyBzdWNjZWVkcyBiZWNhdXNlIGFuIHVuaXF1ZSAobm9uIGVtcHR5KSBzdHJpbmcgaXMgYWx3
YXlzIEJ1ZmZlclN1YnN0cmluZyBhbmQgaGFzIGFuIG93bmVyIHN0cmluZy4KKyAgICAgICAgRW1w
dHkgdW5pcXVlIHN0cmluZyBkb2Vzbid0IGhhdmUgYW4gb3duZXIgc3RyaW5nLiBUaGlzIGNhc2Ug
aXMgZmlsdGVyZWQgYnkgYCFzdHJpbmcubGVuZ3RoKClgIGd1YXJkLgorCisgICAgICAgICogd3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6YWRkKToK
KyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcik6
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmlu
Z0ltcGw6OmNyZWF0ZVVuaXF1ZSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgor
ICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpm
bGFnSXNBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNVbmlxdWUpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjptYXNrU3RyaW5nS2luZCk6CisgICAgICAgIChXVEY6
OlN0cmluZ0ltcGw6OnN0cmluZ0tpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjppc1Vu
aXF1ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzQXRvbWljKToKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6c2V0SXNBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpl
eHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1N0
YXRpY3MuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlx
dWUpOgorCiAyMDE1LTAzLTAzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBjb21wcmVzc2lvbiBjb2RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjRiYmY3MjcxYTYzNGVmOTgyODhmNmI3MWE4YjFhNmZhZmQzZTE5YS4uNjlmZDcwNWVmNzFjNDg0
NGJjY2IxOTM5OWM4NjQyMTljOTk4N2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MiBAQAor
MjAxNS0wMy0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nIGFuZCBJZGVudGlmaWVyOjpmcm9tVWlkLgorCisgICAgICAgIFRlc3RzOiBqcy9v
YmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5
bWJvbC1kZWZpbmUtcHJvcGVydHkuaHRtbAorICAgICAgICAgICAgICAganMvc3ltYm9sLXNlYWwt
YW5kLWZyZWV6ZS5odG1sCisgICAgICAgICAgICAgICBqcy9zeW1ib2wtd2l0aC1qc29uLmh0bWwK
KworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVS
ZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3du
UHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0SlNMaXN0ZW5lckZ1bmN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlND
cnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEhhc2hBbGdvcml0aG0pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRKU0FycmF5RnJvbUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U3RyaW5nRnJv
bUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9vbGVhbkZyb21KU09OKToKKyAgICAgICAg
KFdlYkNvcmU6OmFkZFRvSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEpTT05Gb3JSU0FD
b21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEJvb2xUb0pTT04pOgorICAgICAgICAo
V2ViQ29yZTo6YWRkVXNhZ2VzVG9KU09OKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNS
ZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ01hcEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmluZ01hcDo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlZmluZU93blByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpYWxvZ0hhbmRsZXI6OnJldHVyblZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRB
Y2NlbGVyYXRpb25Bcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkUm90YXRpb25SYXRl
QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQWNjZWxlcmF0aW9uT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJvdGF0aW9uUmF0ZU9iamVjdCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGljdGlv
bmFyeTo6dHJ5R2V0UHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhbGxIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OmFs
bCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6c2V0QWxsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9w
dWxhdGVDb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVu
dExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6Omlu
aXRpYWxpemVKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJD
b25kaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyQ29uZGl0aW9uOjph
Y2NlcHROb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVt
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEludGVybmFsU2xvdFRvT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEludGVybmFsU2xv
dEZyb21PYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRHbG9iYWxPYmplY3Q6OnJlbW92ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6
Q2xvbmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6d3Jp
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0
T2JqZWN0IGNhbGxXZWJTY3JpcHRNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKC1b
V2ViU2NyaXB0T2JqZWN0IHNldFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0
T2JqZWN0IHZhbHVlRm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgcmVtb3Zl
V2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgaGFzV2ViU2NyaXB0
S2V5Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0
dHI0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyNUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjZDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpS
ZXBsYWNlYWJsZUF0dHJpYnV0ZSk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoK
KyAgICAgICAgKF9OUE5fRW51bWVyYXRlKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX3V0aWxpdHku
Y3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6aWRlbnRpZmllckZyb21OUElkZW50aWZpZXIp
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHA6
CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBicmlkZ2UvdGVzdGJpbmRpbmdzLm1tOgorICAg
ICAgICAobWFpbik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAgICAg
ICogdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZVRl
c3RTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNPYmplY3QpOgorCiAyMDE1LTAzLTA0ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENsYXJpZnkgUmVuZGVy
RWxlbWVudDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlOTRi
ZjBhZjljZGZhYTExMDJmOWViYzZkMWI3OThlYjE1ZjZjZjFkLi5mYWZiNmM4MWVkOTgxYTE5Y2Vi
N2JlYmY0ZTcwNzdkMDdkNGViMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAK
IDIwMTUtMDMtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAg
ICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyBhbmQgSWRlbnRpZmllcjo6ZnJvbVVpZC4KKworICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tOgorICAgICAgICAoaWRlbnRpZmllckZy
b21JZGVudGlmaWVyUmVwKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6ZW51bWVyYXRlKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3Rh
bmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVz
KToKKworMjAxNS0wMy0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KwogICAgICAgICBIaWRlIFByb21pc2Ugd2l0aCBydW50aW1lIGZsYWdzIHVuZGVyIENvY29hIEpT
Q29udGV4dCBBUEkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MTk2NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2FiYjliZGY3NTQwNjkwMGRiN2UxMGVjZDhhYmI3
NGRmOTFkZmI5OC4uZTQ0OTQwNWQ2NGQ3MWYyNzg3M2ZiNzQ1ODdmZTkzZmIzZjlmYzYzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE1LTAzLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIElkZW50aWZpZXI6OmZyb21TdHJpbmcgYW5kIElkZW50aWZpZXI6OmZyb21V
aWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6aWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKToKKyAgICAgICAgKFdl
YktpdDo6TlBKU09iamVjdDo6ZW51bWVyYXRlKToKKworMjAxNS0wMy0wNCAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBIaWRlIFByb21pc2Ugd2l0aCBy
dW50aW1lIGZsYWdzIHVuZGVyIENvY29hIEpTQ29udGV4dCBBUEkKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTk2NQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDhj
YmYwZmY0OTAyMjJhMzY5MDUzYmY3MWY2M2Q2ZDQ0ZWUyNWUzYjMuLmI0MTZjYjc5NjNlNDQzY2Y0
YzYzMmJkOWYzNGFjNWFkY2E2NmE3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC01MTgsOCArNTE4LDE1IEBA
CiAgICAgICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gc3RhdGljVmFsdWVzLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0gaXQt
PmtleS5nZXQoKTsKICAgICAgICAgICAgICAgICBTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IGl0
LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZW50cnktPmdldFByb3BlcnR5ICYm
ICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkgfHwg
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpCi0gICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgbmFtZSkpOworICAgICAgICAg
ICAgICAgIGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUtPmlzVW5pcXVl
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbW9kZS5zaG91bGRJbmNsdWRlU3lt
Ym9scygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKG5h
bWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXI6OmZyb21VaWQoZXhlYywgbmFtZSkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTUyOSw4ICs1MzYsMTUgQEAKICAgICAgICAgICAg
IGZvciAoaXRlcmF0b3IgaXQgPSBzdGF0aWNGdW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgp
OwogICAgICAgICAgICAgICAgIFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVl
LmdldCgpOwotICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyhtb2RlKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cihleGVjLCBuYW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMg
JiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS0+aXNVbmlx
dWUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVT
eW1ib2xzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJpdmF0ZU5hbWUo
bmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
Zmllcjo6ZnJvbVVpZChleGVjLCBuYW1lKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAppbmRleCAyMzRkMjQ4OGZmODkwYjhiZWU2OTdlZjU1YWE2ODAzODBhMTgxYTQyLi41
OTBhNTM3MDE2OTk1MmIxMjlmMGEzNDQ2NGNkNGE1ZThlZjNlYTQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5h
bWUsIHVuc2lnbmVkIHBhCiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIHN0
YXJ0aW5nTGluZU51bWJlciA9IHN0ZDo6bWF4KDEsIHN0YXJ0aW5nTGluZU51bWJlcik7Ci0gICAg
SWRlbnRpZmllciBuYW1lSUQgPSBuYW1lID8gbmFtZS0+aWRlbnRpZmllcigmZXhlYy0+dm0oKSkg
OiBJZGVudGlmaWVyKGV4ZWMsICJhbm9ueW1vdXMiKTsKKyAgICBJZGVudGlmaWVyIG5hbWVJRCA9
IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVjLT52bSgpKSA6IElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgImFub255bW91cyIpOwogICAgIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3M7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlckNvdW50OyBpKysp
CkBAIC02OTgsNyArNjk4LDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQ
cm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICAgICBKU09iamVj
dCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBw
cm9wZXJ0eU5hbWVzID0gbmV3IE9wYXF1ZUpTUHJvcGVydHlOYW1lQXJyYXkodm0pOwogICAgIFBy
b3BlcnR5TmFtZUFycmF5IGFycmF5KHZtKTsKLSAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0UHJvcGVydHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVz
KGpzT2JqZWN0LCBleGVjLCBhcnJheSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKIAogICAgIHNpemVfdCBzaXplID0gYXJyYXkuc2l6ZSgpOwogICAgIHByb3Bl
cnR5TmFtZXMtPmFycmF5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCmluZGV4IDIyYzE2MjMwYzdjMWQz
NjkxMWM3ZDU4OWNlNTBmMDk0Mjg3YTFkOWUuLjdmOWVkYjQxMzZlMjc0OTk3NDdkMjk2ZDJmMWEy
ZGM0ODliMDQ0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVl
SlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJp
bmcuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNs
dWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4K
IApAQCAtNjksOSArNzAsOSBAQCBJZGVudGlmaWVyIE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVy
KFZNKiB2bSkgY29uc3QKICAgICAgICAgcmV0dXJuIElkZW50aWZpZXIoSWRlbnRpZmllcjo6RW1w
dHlJZGVudGlmaWVyKTsKIAogICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0
dXJuIElkZW50aWZpZXIodm0sIG1fc3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0
aCgpKTsKKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIG1fc3RyaW5n
LmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBJZGVudGlm
aWVyKHZtLCBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAg
IHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBtX3N0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgbV9zdHJpbmcubGVuZ3RoKCkpOwogfQogCiBjb25zdCBVQ2hhciogT3BhcXVlSlNTdHJpbmc6
OmNoYXJhY3RlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCAyZGY3ODc2NDEwZTc4Y2Y5ZmFiZjI0MTc4NmU2
MDI0MmZlNGVlZTA5Li5mM2EyMjM4ZWJhOThmYzEyODI3YjgxZGVmMmM4MGM2MzE0Y2UwNWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFu
ZGxlcjo6YXBwZW5kQXJndW1lbnQoYm9vbCBhcmd1bWVudCkKIAogICAgIEpTTG9ja0hvbGRlciBs
b2NrKG1fZXhlYyk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gdGhpc09iamVjdC0+Z2V0KG1f
ZXhlYywgSWRlbnRpZmllcihtX2V4ZWMsIG1fbmFtZSkpOworICAgIEpTVmFsdWUgZnVuY3Rpb24g
PSB0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywg
bV9uYW1lKSk7CiAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaGFk
RXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApp
bmRleCA3NmE3YjExMWE4ZDg3N2E2NzliNWM4YjhlODk2ZTFhN2IxYjZiOGFjLi41YTA1YmE4OWI5
ZTkwY2E5NDA3Y2EzYThlYWU2MjA3NDcyOGExMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIFNj
cmlwdFZhbHVlOjppc0Z1bmN0aW9uKCkgY29uc3QKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVj
dD4gaW5zcGVjdG9yT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgICAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0eU5hbWVzKHNjcmlwdFN0YXRlKTsKLSAgICAgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3Bl
cnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsr
KSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tp
XTsKICAgICAgICAgICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNjcmlw
dFN0YXRlLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggNjEyZDY0NTUyMzhkZmM1MjBjYmJiM2YxMWZj
YWZjNzBmZWFlMTYxNy4uZDRkNDQ0ZmYwYjQ3ODVjZGJkMjQ5ZDk1MTE5NTI3MGQ0ODJmY2NkMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKQEAgLTcxLDExICs3MSwxMSBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTbwog
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOwogICAgIGZvciAoY29uc3QgYXV0byYgY2xvc2VkVmFy
aWFibGUgOiBwcm9ncmFtLT5jbG9zZWRWYXJpYWJsZXMoKSkgewogICAgICAgICBpZiAoY2xvc2Vk
VmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQotICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYg
KGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5p
bXBsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xv
c2VkVmFyaWFibGUtPmlzVW5pcXVlKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZtLnBy
b3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoY2xvc2VkVmFyaWFibGUuZ2V0KCkpKTsKICAgICB9
CiAgICAgYm9keS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKCZtX3ZtLCBzb3VyY2UsIGJvZHksIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA5Yjg4
OTZiOTY4MDE0OTEzZjQ2YjMyYzQ4MGUwNTc4OTYzNzlkZmE0Li5kN2Q5M2RhMmNhMTY2YTM5NGQ0
MWUxMDI3MTI4ZDkzY2NkMGM2MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0zMSwxMiArMzEsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAgICAgCi0jZGVmaW5lIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1l
KHZtLCAjbmFtZSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZh
dGVOYW1lKEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLiIgI25hbWUpKSkpCi0jZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9OQU1FUyhuYW1lKSBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVu
dGlmaWVyIG1fIyNuYW1lIyNQcml2YXRlTmFtZTs7CisjZGVmaW5lIElOSVRJQUxJU0VfQlVJTFRJ
Tl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1l
KSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1l
KCkpKQorI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSWRlbnRpZmll
ciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7CiAjZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwKICAgICBjb25z
dCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7
IH0gXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1ByaXZhdGVOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV8jI25hbWUjI1ByaXZhdGVOYW1lOyB9CiAKKyNkZWZpbmUgSU5JVElBTElTRV9CVUlM
VElOX1NZTUJPTFMobmFtZSkgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUpLCBtXyMjbmFt
ZSMjU3ltYm9sKElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoQVNDSUlMaXRlcmFsKCJT
eW1ib2wuIiAjbmFtZSkpKSkKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTFMobmFtZSkg
REVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbV8jI25hbWUjI1N5
bWJvbDsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUihuYW1lKSBcCisg
ICAgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IobmFtZSkgXAorICAgIGNvbnN0
IElkZW50aWZpZXImIG5hbWUjI1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTeW1i
b2w7IH0KKwogI2RlZmluZSBJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKG5hbWUp
IG1fcHJpdmF0ZVRvUHVibGljTWFwLmFkZChtXyMjbmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpLCAm
bV8jI25hbWUpOwogI2RlZmluZSBJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKG5h
bWUpIG1fcHVibGljVG9Qcml2YXRlTWFwLmFkZChtXyMjbmFtZS5pbXBsKCksICZtXyMjbmFtZSMj
UHJpdmF0ZU5hbWUpOwogICAgIApAQCAtNDgsMjMgKzU0LDMwIEBAIGNsYXNzIEJ1aWx0aW5OYW1l
cyB7CiAgICAgICAgIDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmllcnMtPmVtcHR5
SWRlbnRpZmllcikKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElO
SVRJQUxJU0VfQlVJTFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAg
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9M
KElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAgICAgSlNDX0ZPUkVBQ0hf
QlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkp
CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9Q
UklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAgICAgICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElT
RV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJ
VkFURV9FTlRSWSkKICAgICB9CiAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCog
dWlkKSBjb25zdDsKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNv
bnN0OwogICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImKSBjb25zdDsKICAgICBjb25zdCBJZGVudGlmaWVyJiBnZXRQdWJsaWNOYW1lKGNvbnN0IElk
ZW50aWZpZXImKSBjb25zdDsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9O
X05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5f
SURFTlRJRklFUl9BQ0NFU1NPUikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SKQog
CiBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CiAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKICAgICBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVf
QlVJTFRJTl9OQU1FUykKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9X
RUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MUykKICAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBjb25zdCBJZGVudGlmaWVyKiwgSWRlbnRpZmllclJl
cEhhc2g+IEJ1aWx0aW5OYW1lc01hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wdWJsaWNUb1By
aXZhdGVNYXA7CiAgICAgQnVpbHRpbk5hbWVzTWFwIG1fcHJpdmF0ZVRvUHVibGljTWFwOwpAQCAt
NzMsNyArODYsMTkgQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsKICN1bmRlZiBERUNMQVJFX0JVSUxU
SU5fTkFNRVMKICN1bmRlZiBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMKICN1bmRlZiBERUNMQVJF
X0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUgorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TWU1C
T0xTCisjdW5kZWYgSU5JVElBTElTRV9CVUlMVElOX1NZTUJPTFMKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU1lNQk9MX0FDQ0VTU09SCisKK2lubGluZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2
YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZVRv
UHVibGljTWFwLmZpbmQodWlkKSAhPSBtX3ByaXZhdGVUb1B1YmxpY01hcC5lbmQoKTsKK30KIAor
aW5saW5lIGJvb2wgQnVpbHRpbk5hbWVzOjppc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KSBjb25zdAoreworICAgIHJldHVybiBpc1ByaXZhdGVOYW1lKGlkZW50LmltcGwoKSk7
Cit9CiAKIGlubGluZSBjb25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVO
YW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogewpAQCAtOTEsNyArMTE2LDcgQEAg
aW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpIGMKICAgICByZXR1cm4gbV9lbXB0eUlkZW50aWZpZXI7CiB9
CiAKLSAgICAKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKaW5kZXggOWE5ZGIwYmM3MGI5
ZjEzNWY2NWRkMmQ3OTZkZTY1Mjg5NmFlMGZiMS4uNTc4MGYwMGM3MjgxNGEzMTg1MGUxYzgyYTVh
ZGMyZTJlYjI4ODMxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFz
cyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSB7CiAKICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsK
ICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lQXJyYXkoJnZtKTsKLSAgICAg
ICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUo
dm0sIHByb3BlcnR5TmFtZUFycmF5LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAg
ICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUo
dm0sIHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0
YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVB
cnJheS5kYXRhKCktPnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHByb3BlcnR5TmFtZVZlY3Rvci5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IHByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWVWZWN0
b3JbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAwODE3OGU0MDU3M2YyNDI5NjM3YWM3MjMzN2Zi
ZDM5Y2JiYmE0NzRkLi4yZWVlMDQzYzVlZTU4MGIyYmExMjg3MTFiYmZmOGY5NmM3MDkxNzAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtNDM4LDcgKzQzOCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjphZGRWYXIoCiAgICAgVmVjdG9yPElkZW50aWZpZXIsIDAsIFVuc2FmZVZlY3Rv
ck92ZXJmbG93PiB2YXJpYWJsZXM7CiAgICAgdmFyaWFibGVzLnJlc2VydmVDYXBhY2l0eShudW1W
YXJpYWJsZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtVmFyaWFibGVzOyArK2kp
IHsKLSAgICAgICAgQVNTRVJUKHZhclN0YWNrW2ldLmZpcnN0LmltcGwoKS0+aXNBdG9taWMoKSk7
CisgICAgICAgIEFTU0VSVCh2YXJTdGFja1tpXS5maXJzdC5pbXBsKCktPmlzQXRvbWljKCkgfHwg
dmFyU3RhY2tbaV0uZmlyc3QuaW1wbCgpLT5pc1VuaXF1ZSgpKTsKICAgICAgICAgdmFyaWFibGVz
LmFwcGVuZCh2YXJTdGFja1tpXS5maXJzdCk7CiAgICAgfQogICAgIGNvZGVCbG9jay0+YWRvcHRW
YXJpYWJsZXModmFyaWFibGVzKTsKQEAgLTIzNDgsNyArMjM0OCw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjpwb3BUcnlBbmRFbWl0Q2F0Y2goVHJ5RGF0YSogdHJ5RGF0YSwgUmVn
aXN0ZXJJRCoKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9y
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0YXRp
Y19lcnJvcik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRk
U3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcihtX3ZtLCBtZXNzYWdlKSkpLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJpbmdDb25zdGFu
dChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0sIG1lc3NhZ2UpKSktPmluZGV4KCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCh0cnVlKTsKIH0KIApAQCAtMjUxNSw3ICsyNTE1LDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKQog
ICAgIGlmICghaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBlbWl0T3Bjb2Rl
KG9wX3Rocm93X3N0YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENv
bnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcihtX3ZtLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXI6
OmZyb21TdHJpbmcobV92bSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSkp
LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmFsc2UpOwogfQogICAgIApA
QCAtMjU0OSw3ICsyNTQ5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0
aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICBMYWJlbFNj
b3BlUHRyIHNjb3BlID0gbmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc3ViamVjdCA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1
YmplY3QuZ2V0KCksIHN1YmplY3ROb2RlKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0
b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgc3ViamVjdC5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVy
YXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0
eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIHsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBh
cmdzKCp0aGlzLCAwKTsKICAgICAgICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgc3Vi
amVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRJZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2ly
ZWRJZGVudGlmaWVycy5jcHAKaW5kZXggNjBhNDk0ZGRjZjRiMTUzODFhY2FmMGM1ODE4OTY0NjRl
N2EyZTQzYi4uNjVjMzAxZGJlZTE2ZDNmNzRiNTQyN2I3YTBmNjkyNDg4NDFjNGUzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNw
cApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIERlc2lyZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKFZN
JiB2bSwgQ29tbW9uRGF0YSogY29tbW9uRGF0YSkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9hZGRlZElkZW50aWZpZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZ0ltcGwq
IHJlcCA9IG1fYWRkZWRJZGVudGlmaWVyc1tpXTsKICAgICAgICAgQVNTRVJUKHJlcC0+aGFzQXRM
ZWFzdE9uZVJlZigpKTsKLSAgICAgICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5k
KElkZW50aWZpZXIoJnZtLCByZXApKTsKKyAgICAgICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmll
cnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCByZXApKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdC5jcHAKaW5kZXggODNiMjA0ZjM2MzVkNTBkMTZkN2FiYWViYTVhMGE1ZTY0YjNmNjg3
ZC4uNTY0M2ZmYjQ3NGRlZWIwNDI4MzcyYzYwYTNjNmY0OTc2NTA5NjdiYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9z
dC5jcHAKQEAgLTE4MywyMCArMTgzLDIwIEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6
OmZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBTdHJpbmcgc2NyaXB0SUQg
PSBTdHJpbmc6Om51bWJlcihzb3VyY2VDb2RlLT5wcm92aWRlcigpLT5hc0lEKCkpOwogICAgIEpT
T2JqZWN0KiBsb2NhdGlvbiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIGxvY2F0
aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAic2NyaXB0SWQiKSwg
anNTdHJpbmcoZXhlYywgc2NyaXB0SUQpKTsKLSAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgImxpbmVOdW1iZXIiKSwganNOdW1iZXIobGluZU51bWJl
cikpOwotICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAiY29sdW1uTnVtYmVyIiksIGpzTnVtYmVyKGNvbHVtbk51bWJlcikpOworICAgIGxvY2F0aW9u
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2Ny
aXB0SWQiKSwganNTdHJpbmcoZXhlYywgc2NyaXB0SUQpKTsKKyAgICBsb2NhdGlvbi0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpbmVOdW1iZXIi
KSwganNOdW1iZXIobGluZU51bWJlcikpOworICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29sdW1uTnVtYmVyIiksIGpzTnVt
YmVyKGNvbHVtbk51bWJlcikpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXIoZXhlYywgImxvY2F0aW9uIiksIGxvY2F0aW9uKTsKKyAgICByZXN1bHQtPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb2NhdGlvbiIpLCBs
b2NhdGlvbik7CiAKICAgICBTdHJpbmcgbmFtZSA9IGZ1bmN0aW9uLT5uYW1lKGV4ZWMpOwogICAg
IGlmICghbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXIoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOworICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKIAogICAgIFN0cmluZyBkaXNw
bGF5TmFtZSA9IGZ1bmN0aW9uLT5kaXNwbGF5TmFtZShleGVjKTsKICAgICBpZiAoIWRpc3BsYXlO
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcihleGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmcoZXhlYywgZGlzcGxheU5hbWUp
KTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmcoZXhlYywgZGlzcGxheU5hbWUp
KTsKIAogICAgIC8vIEZJWE1FOiBwcm92aWRlIGZ1bmN0aW9uIHNjb3BlIGRhdGEgaW4gInNjb3Bl
c1JhdyIgcHJvcGVydHkgd2hlbiBKU0Mgc3VwcG9ydHMgaXQuCiAgICAgLy8gPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzg3MTkyPiBbSlNDXSBleHBvc2UgZnVuY3Rpb24gKGNsb3N1cmUpIGlubmVyIGNv
bnRleHQgdG8gZGVidWdnZXIKQEAgLTIwNyw4ICsyMDcsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBleGVjKQogc3RhdGljIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBuYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKLSAgICBy
ZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ2YWx1ZSIpLCB2
YWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAibmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1lKSk7CisgICAgcmVzdWx0
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFs
dWUiKSwgdmFsdWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI4Nyw4ICsyODcsOCBA
QCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWFrTWFwRW50cmllcyhFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51
bGxwdHIpOwogICAgIGZvciAoYXV0byBpdCA9IHdlYWtNYXAtPndlYWtNYXBEYXRhKCktPmJlZ2lu
KCk7IGl0ICE9IHdlYWtNYXAtPndlYWtNYXBEYXRhKCktPmVuZCgpOyArK2l0KSB7CiAgICAgICAg
IEpTT2JqZWN0KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICBl
bnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImtleSIpLCBpdC0+
a2V5KTsKLSAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJ2YWx1ZSIpLCBpdC0+dmFsdWUuZ2V0KCkpOworICAgICAgICBlbnRyeS0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleSIpLCBpdC0+a2V5
KTsKKyAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJ2YWx1ZSIpLCBpdC0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBhcnJheS0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgZmV0Y2hlZCsrLCBlbnRyeSk7CiAgICAgICAgIGlmIChudW1i
ZXJUb0ZldGNoICYmIGZldGNoZWQgPj0gbnVtYmVyVG9GZXRjaCkKICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAppbmRleCAyZjg1N2ZmMDdjMzRiMjY4
ZTA3YzQ0NmMyNDFlNWFhOGY2MTQzMmEyLi40YmQxZjEwNTJmZWJhOTBiNjkzNmZiOGY1OTgyNDY2
ZWJjNDM4YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcApAQCAtNjQsNyAr
NjQsNyBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
IndlYWtNYXBTaXplIiwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtN
YXBTaXplLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigid2Vha01hcEVu
dHJpZXMiLCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJp
ZXMsIERvbnRFbnVtLCAxKTsKIAotICAgIElkZW50aWZpZXIgZXZhbHVhdGVJZGVudGlmaWVyKCZ2
bSwgImV2YWx1YXRlIik7CisgICAgSWRlbnRpZmllciBldmFsdWF0ZUlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV2YWx1YXRlIik7CiAgICAgR2V0dGVyU2V0dGVyKiBh
Y2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IDAsIGV2YWx1YXRlSWRlbnRpZmllci5zdHJpbmcoKSwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVBdHRyaWJ1dGVFdmFsdWF0ZSk7CiAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAK
aW5kZXggNThiYjY4YjBhMWYzODhmMjFjYWY4YjVmNjIyY2FkNzdiMjA3OWUyZC4uNDgyODM4NjUy
NGRjMjZhYjQ2Yzg0MTM1NjgzMWM3MGRjNmU5ZmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmNwcApAQCAtNjMsNyArNjMsNyBAQAogCiAjZGVmaW5lIEpTQ19OQVRJVkVfTk9O
X0lOREVYX0FDQ0VTU09SKGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRlcykgXAogICAgIHsgXAot
ICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBqc05hbWUpOyBcCisgICAgICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBqc05hbWUp
OyBcCiAgICAgICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0KTsgXAogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCBpZGVudGlmaWVyLnN0cmluZygp
LCBjcHBOYW1lKTsgXAogICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uKTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggMjdkYzA5OWJkYjU4YjA3
NDNhM2JiNmUxNWEyZDMwZDUzYjAxYmNiMi4uZjlmNmMxYzQ5YWFhNjA2YTM3MzM0OGI2ZTJkOGZj
MjcwZmNkZThiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xMTksMTEgKzExOSwxMSBAQCBj
bGFzcyBDcmVhdGVTY3JpcHRDYWxsU3RhY2tGdW5jdG9yIHsKIHN0YXRpYyB2b2lkIGV4dHJhY3RT
b3VyY2VJbmZvcm1hdGlvbkZyb21FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBleGNlcHRpb25PYmplY3QsIGludCogbGluZU51bWJlciwgaW50KiBjb2x1bW5OdW1iZXIs
IFN0cmluZyogc291cmNlVVJMKQogewogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcv
Yi8xMTUwODc+IFdlYiBJbnNwZWN0b3I6IFNob3VsZCBub3QgbmVlZCB0byBldmFsdWF0ZSBKYXZh
U2NyaXB0IGhhbmRsaW5nIGV4Y2VwdGlvbnMKLSAgICBKU1ZhbHVlIGxpbmVWYWx1ZSA9IGV4Y2Vw
dGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImxpbmUi
KSk7CisgICAgSlNWYWx1ZSBsaW5lVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwogICAgICps
aW5lTnVtYmVyID0gbGluZVZhbHVlICYmIGxpbmVWYWx1ZS5pc051bWJlcigpID8gaW50KGxpbmVW
YWx1ZS50b051bWJlcihleGVjKSkgOiAwOwotICAgIEpTVmFsdWUgY29sdW1uVmFsdWUgPSBleGNl
cHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1
bW4iKSk7CisgICAgSlNWYWx1ZSBjb2x1bW5WYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbHVtbiIpKTsK
ICAgICAqY29sdW1uTnVtYmVyID0gY29sdW1uVmFsdWUgJiYgY29sdW1uVmFsdWUuaXNOdW1iZXIo
KSA/IGludChjb2x1bW5WYWx1ZS50b051bWJlcihleGVjKSkgOiAwOwotICAgIEpTVmFsdWUgc291
cmNlVVJMVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJzb3VyY2VVUkwiKSk7CisgICAgSlNWYWx1ZSBzb3VyY2VVUkxWYWx1ZSA9
IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgInNvdXJjZVVSTCIpKTsKICAgICAqc291cmNlVVJMID0gc291cmNlVVJMVmFs
dWUgJiYgc291cmNlVVJMVmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSA6IEFTQ0lJTGl0ZXJhbCgidW5kZWZpbmVkIik7CiAgICAgZXhl
Yy0+Y2xlYXJFeGNlcHRpb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCmluZGV4IDQ2MTE2N2FlNjU0MTBmNDI2ZDdlODc4NDIwNzhlMDIwMDhhNzE1
NTUuLmFmNjE0MWE5ZDNkOTBmMWQ4Yzg5YjZkOTdjNWExZGY3OWM5ZWRmM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvCiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsK
LSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOwogfQogCkBAIC0xNjIsNyArMTYyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIElkZW50aWZp
ZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0xNzksNyArMTc5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICBJZGVudGlmaWVyIGlkZW50ID0g
dWlkLT5pc1VuaXF1ZSgpID8gSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSh1aWQpKSA6IElk
ZW50aWZpZXIodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIHVpZCk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwpAQCAtMjA2LDcgKzIw
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJCiAgICAgCiAgICAgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwog
Ci0gICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0g
SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
KTsKICAgICBib29sIHJlc3VsdCA9IGFzT2JqZWN0KGJhc2UpLT5nZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaWRlbnQsIHNsb3QpOwogICAgIApAQCAtMjMwLDcgKzIzMCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEpTCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgfQogCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKKyAgICBJZGVudGlmaWVy
IGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwga2V5KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNlKS0+aGFzUHJvcGVydHkoZXhlYywgaWRl
bnQpKSk7CiB9CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRQog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAg
SWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhl
Yy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KSwgc2xvdCk7CiB9CkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyoK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGZhbHNlLCBl
eGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpLCBzbG90KTsKIH0KQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Cisg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwg
ZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGFzT2JqZWN0KEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI3Nyw3ICsyNzcsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50
aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKSwgZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4
dCgpKTsKICAgICBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xv
dCk7CiB9CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWRTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWIKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50
aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
OwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpA
QCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGly
ZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlk
ZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0z
NTksNyArMzU5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RO
b25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnUKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAg
ICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTM4Myw3
ICszODMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxk
TGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAot
ICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtNDA0LDcgKzQw
NCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRM
aXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAg
SWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00MjUsNyArNDI1LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExp
c3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3QKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVu
dGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00NDYsNyArNDQ2LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWls
ZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVu
dGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTEzOTEsMTAgKzEzOTEsOSBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEFyZ3VtZW50c0xlbmd0
aChFeGVjU3RhdGUqIGV4ZWMsIGludDMyXwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKICAgICAvLyBIZXJlIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGUgYXJndW1l
cm50cyB3ZXJlIGNyZWF0ZWQuIEJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBKSVQgY29kZSB3b3VsZAog
ICAgIC8vIGhhdmUgbm90IG1hZGUgdGhpcyBjYWxsLgotICAgIElkZW50aWZpZXIgaWRlbnQoJnZt
LCAibGVuZ3RoIik7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBleGVjLT51bmNoZWNrZWRSKGFy
Z3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRl
bnQsIHNsb3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwgc2xvdCkpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCmluZGV4IDBiYzBkN2YyZWUwNDdhZTJlZTUxZTAyNWNjZDcwZDg4YjMxNDRkNmYu
Ljc2YTNhODBiMTY0ZWNkMjdkN2VlZjllNzRiNTM1YjI2NDRkZTk5MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCkBAIC02MTgsMTEgKzYxOCwxMSBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNHbG9iYWxPYmplY3QgewogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImdldEVsZW1lbnQiLCBm
dW5jdGlvbkdldEVsZW1lbnQsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldEVsZW1l
bnRSb290IiwgZnVuY3Rpb25TZXRFbGVtZW50Um9vdCwgMik7CiAgICAgICAgIAotICAgICAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJERkdUcnVl
IiksIDAsIGZ1bmN0aW9uRmFsc2UxLCBERkdUcnVlSW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6
RnVuY3Rpb24pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRl
bnRpZmllcigmdm0sICJPU1JFeGl0IiksIDAsIGZ1bmN0aW9uVW5kZWZpbmVkMSwgT1NSRXhpdElu
dHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9uKTsKLSAgICAgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXIoJnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwg
ZnVuY3Rpb25GYWxzZTIsIElzRmluYWxUaWVySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVu
Y3Rpb24pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRp
Zmllcigmdm0sICJwcmVkaWN0SW50MzIiKSwgMCwgZnVuY3Rpb25VbmRlZmluZWQyLCBTZXRJbnQz
MkhlYXBQcmVkaWN0aW9uSW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAg
ICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJm
aWF0SW50NTIiKSwgMCwgZnVuY3Rpb25JZGVudGl0eSwgRmlhdEludDUySW50cmluc2ljLCBEb250
RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2
bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJERkdUcnVlIiksIDAsIGZ1bmN0
aW9uRmFsc2UxLCBERkdUcnVlSW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwor
ICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJPU1JFeGl0IiksIDAsIGZ1bmN0aW9uVW5kZWZpbmVkMSwgT1NSRXhpdElu
dHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9uKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNGaW5h
bFRpZXIiKSwgMCwgZnVuY3Rpb25GYWxzZTIsIElzRmluYWxUaWVySW50cmluc2ljLCBEb250RW51
bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwg
dGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwcmVkaWN0SW50MzIiKSwgMCwgZnVu
Y3Rpb25VbmRlZmluZWQyLCBTZXRJbnQzMkhlYXBQcmVkaWN0aW9uSW50cmluc2ljLCBEb250RW51
bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwg
dGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJmaWF0SW50NTIiKSwgMCwgZnVuY3Rp
b25JZGVudGl0eSwgRmlhdEludDUySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24p
OwogICAgICAgICAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJlZmZlY3RmdWw0MiIsIGZ1bmN0
aW9uRWZmZWN0ZnVsNDIsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm1ha2VNYXNxdWVy
YWRlciIsIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyLCAwKTsKQEAgLTY0NCwyMCArNjQ0LDIwIEBA
IGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIEpT
QXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCksIDApOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKICAgICAg
ICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxFeGVjKCksIGksIGpzU3RyaW5nKGds
b2JhbEV4ZWMoKSwgYXJndW1lbnRzW2ldKSk7Ci0gICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRp
ZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOworICAgICAgICBwdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiks
IGFycmF5KTsKICAgICAgICAgCi0gICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcihnbG9i
YWxFeGVjKCksICJjb25zb2xlIiksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBwdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsRXhlYygpLCAiY29uc29sZSIpLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICB9CiAKICAgICB2b2lkIGFkZEZ1bmN0aW9uKFZNJiB2bSwgY29uc3Qg
Y2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cykK
ICAgICB7Ci0gICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIG5hbWUpOworICAgICAg
ICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFt
ZSk7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKFZNJiB2bSwgY29u
c3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50
cykKICAgICB7Ci0gICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIG5hbWUpOworICAg
ICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
bmFtZSk7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgZnVuY3Rpb24pKTsKICAgICB9CiB9OwpAQCAtODg5LDcgKzg4OSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKiBleGVjKQog
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkK
ICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIGdsb2JhbE9iamVjdC0+
cHV0RGlyZWN0KAotICAgICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICAgICAgZXhlYy0+dm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3Vt
ZW50cyIpLCBhcnJheSk7CiAKICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKICAgICBTdG9wV2F0Y2gg
c3RvcFdhdGNoOwpAQCAtMTI3MCw3ICsxMjcwLDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlw
dHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IK
ICAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAg
ICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24u
dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHN0
YWNrSUQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJzdGFjayIpOworICAgICAgICAgICAg
SWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7CiAgICAgICAgICAgICBKU1ZhbHVlIHN0YWNrVmFsdWUg
PSBldmFsdWF0aW9uRXhjZXB0aW9uLmdldChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc3Rh
Y2tJRCk7CiAgICAgICAgICAgICBpZiAoIXN0YWNrVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
ICAgICAgICAgICAgICAgICBwcmludGYoIiVzXG4iLCBzdGFja1ZhbHVlLnRvU3RyaW5nKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkp
LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAppbmRleCBhYjAxNTAxYjEyOTE3ZDllZTgwZWQzMTUyM2Y5MjU4ZGM0NDJkYTJlLi5lZGZkNjcw
MWRjMGYzZDU5MWNiMzc4ZDM5OThjYjdkNDJmOTA0YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgRGF0YTo6cGVy
Zm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8aW50Kio+KCZ0
ZXN0VmVjdG9yKVswXSA9PSB0ZXN0VmVjdG9yLmJlZ2luKCkpOwogI2VuZGlmCiAKLSAgICBBU1NF
UlQoU3RyaW5nSW1wbDo6c19oYXNoRmxhZzhCaXRCdWZmZXIgPT0gMzIpOworICAgIEFTU0VSVChT
dHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9PSA4KTsKIH0KICNpZiBDT01QSUxFUihD
TEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBkNzFhM2VmZTc2
ODlkZjlkZjVlODc5ZTYzZTgyNDdhYzgwNDgzOTU3Li5hOTFlNDY3OTA2YjVhZmZmYTQ3ZGY3Y2Vl
N2I1ZTUyYzZmYzIzZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNzYsNyArMTc2LDcgQEAgY29uc3QgRnVuY3Rp
b25Db2RlID0gMgogY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZz
ZXQKIAogIyBTdHJpbmcgZmxhZ3MuCi1jb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gMzIKK2Nv
bnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA4CiAKICMgQ29waWVkIGZyb20gUHJvcGVydHlPZmZz
ZXQuaAogY29uc3QgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSAxMDAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggZmE2NDk1MWE5ZGYyYjZiNjQ1MDVmYTFlYTM3
YTEwMDRiOWE4ZDk5Ni4uN2U5MWQzNzJjMmY3YTAzOTY2NTgyOTg4YmQ1OWE1OTgwZjJiYjg1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTU2Niw3ICs1
NjYsNyBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICB7CiAgICAgICAgIGlmIChtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50KQogICAgICAgICAgICAgdXNlc0FyZ3VtZW50
cygpOwotICAgICAgICBBU1NFUlQoaWRlbnQtPmltcGwoKS0+aXNBdG9taWMoKSk7CisgICAgICAg
IEFTU0VSVChpZGVudC0+aW1wbCgpLT5pc0F0b21pYygpIHx8IGlkZW50LT5pbXBsKCktPmlzVW5p
cXVlKCkpOwogICAgICAgICBtX3Njb3BlLm1fdmFyRGVjbGFyYXRpb25zLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcigqaWRlbnQsIGF0dHJzKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggNjMxOGZkNjM2YmViM2U3YjkxZDI4ZjY0OTZhZWQ5YWY3YmQ4
NzE4Yy4uNGY1YjEyNTY4OGM5MzZlMzU3NDVkOTUyNjA0NmUyODQwYmMxMDM4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjg2LDEwICsyODYsMTAgQEAKICAg
ICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOwogICAgICAgICBzY29wZS0+Z2V0VXNl
ZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJp
YWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKLSAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFy
ZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAg
ICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3Zt
LCB2YXJpYWJsZS5nZXQoKSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1ldGVyKElkZW50aWZp
ZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVj
bGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5nZXQoKSkp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAodmFyaWFibGUg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKQEAgLTUxOCw3ICs1MTgs
NyBAQAogICAgIEFTU0VSVCghbmFtZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbmFtZS5pc051
bGwoKSk7CiAgICAgCi0gICAgQVNTRVJUKG5hbWUuaW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICBB
U1NFUlQobmFtZS5pbXBsKCktPmlzQXRvbWljKCkgfHwgbmFtZS5pbXBsKCktPmlzVW5pcXVlKCkp
OwogICAgIGlmIChkZXB0aCkgewogICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvVmFy
aWFibGVzKQogICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJlVmFyaWFibGUo
Jm5hbWUpLCAiQ2Fubm90IGRlY29uc3RydWN0IHRvIGEgdmFyaWFibGUgbmFtZWQgJyIsIG5hbWUu
aW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJBcmVuYS5oCmluZGV4IDQyN2I4NGNkYTUzMjMxYTU0NzA2ZjRjZWZlYzNkODFkNzhi
NTBkZGIuLjQwZWNlNTNhMGI2NDRjMDgyMDc5YzIyZGYwZjk0M2JjMjVkYmRhMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTczLDIwICs3MywyMCBA
QAogICAgICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiB2bS0+cHJvcGVydHlO
YW1lcy0+ZW1wdHlJZGVudGlmaWVyOwogICAgICAgICBpZiAoY2hhcmFjdGVyc1swXSA+PSBNYXhp
bXVtQ2FjaGFibGVDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5k
KElkZW50aWZpZXIodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOworICAgICAgICAgICAgbV9pZGVu
dGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycywgbGVu
Z3RoKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAgICAgICBpZiAoSWRlbnRpZmll
ciogaWRlbnQgPSBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0pCiAgICAgICAgICAg
ICAgICAgcmV0dXJuICppZGVudDsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElk
ZW50aWZpZXIodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOworICAgICAgICAgICAgbV9pZGVudGlm
aWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycywgbGVuZ3Ro
KSk7CiAgICAgICAgICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSAmbV9p
ZGVudGlmaWVycy5sYXN0KCk7CiAgICAgICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0
KCk7CiAgICAgICAgIH0KICAgICAgICAgSWRlbnRpZmllciogaWRlbnQgPSBtX3JlY2VudElkZW50
aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwogICAgICAgICBpZiAoaWRlbnQgJiYgSWRlbnRpZmllcjo6
ZXF1YWwoaWRlbnQtPmltcGwoKSwgY2hhcmFjdGVycywgbGVuZ3RoKSkKICAgICAgICAgICAgIHJl
dHVybiAqaWRlbnQ7Ci0gICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIodm0s
IGNoYXJhY3RlcnMsIGxlbmd0aCkpOworICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgbV9y
ZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9ICZtX2lkZW50aWZpZXJzLmxhc3QoKTsK
ICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgIH0KQEAgLTEwMiw3ICsx
MDIsNyBAQAogICAgICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgIGlmIChJZGVu
dGlmaWVyKiBpZGVudCA9IG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gKmlkZW50OwotICAgICAgICAgICAgbV9pZGVudGlmaWVycy5hcHBl
bmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAgICAgICAgICBtX2lk
ZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBjaGFyYWN0ZXJzLCBs
ZW5ndGgpKTsKICAgICAgICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9
ICZtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJz
Lmxhc3QoKTsKICAgICAgICAgfQpAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgCiAgICAgaW5saW5l
IGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVy
KFZNKiB2bSwgZG91YmxlIG51bWJlcikKICAgICB7Ci0gICAgICAgIG1faWRlbnRpZmllcnMuYXBw
ZW5kKElkZW50aWZpZXIodm0sIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG51bWJl
cikpKTsKKyAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSkpOwogICAgICAg
ICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAppbmRleCA5ODU0OGQyYTQxZDg2Yjc3ZTVkNTdi
ZjQ3ZmNjZjk2MGY4MmZhOGI5Li5mZDkwM2U1NGQxODBmZGJjYzJiYzg1YmMzNDg3MmEzNTJmOGJi
MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAg
LTE4MCwxMCArMTgwLDEwIEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAKICAgICBpZiAoSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1lKSB7CisgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpIHsKICAgICAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICAgICAgdGhpc09iamVjdC0+
SlNDX05BVElWRV9GVU5DVElPTihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRl
TmFtZSwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgICAgIHRoaXNP
YmplY3QtPkpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9y
U3ltYm9sLCBhcmd1bWVudHNGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICAgICAgaWYg
KEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE5OCw3ICsx
OTgsNyBAQCB2b2lkIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwogICAg
IH0KLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkgeworICAg
IGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewogICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlKTsKICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGQ3OWNjNTJlMDkyYmM2ZTkwYjQxYmJlNzk5OGMy
YWI3MDdhYTNkMmMuLmM2OTA0ZmE1MDVhYjZhNTZjZGYzMTUwMTc4ZWI0YzU0Mjc1ZmViM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBBcmd1bWVudHNJ
dGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2IKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBl
TWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRl
eCBjODgwMGUzY2RjYTYyNTJlYWI5OGZkMDIxMTg2MWUxZDBkYmVjMTEyLi5iZDM1NTVjNDQyMDli
ZDc1YTEzOGY1ZjIzOGNiOTY3NWM2ZDI2YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCB2b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIEFTU0VSVChpbmhlcml0cyhpbmZv
KCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlND
X05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBh
cnJheUl0ZXJhdG9yUHJvdG90eXBlSXRlcmF0ZSwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5SXRlcmF0
b3JQcm90b3R5cGVJdGVyYXRlLCBEb250RW51bSwgMCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAKaW5kZXggM2ZkMDM0YTFjMzI4NDYxYTQ2NWNlNjYyYzA5OGQyM2RlMWI0ODc0ZC4uYzRh
NzBkODkzMTVlYTk5YzNmZTM5MGM3NGYyMDYwYTBjYzFkODlkMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3
IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
QVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5
cGUodGhpcyk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvclByaXZhdGVOYW1lLCBhcnJheVByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFy
cmF5UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiB9CiAKIGJvb2wgQXJyYXlQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTUzMCw3
ICs1MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVz
aChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5w
dXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCArIG4sIGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KG4pLCB0cnVlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzT2JqKTsKLSAgICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKGV4
ZWMsIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KG4pKS50b1dURlN0cmluZyhleGVjKSk7CisgICAgICAgICAgICBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgSlNWYWx1ZShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obikpLnRvV1RGU3Ry
aW5nKGV4ZWMpKTsKICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlz
T2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCBzbG90
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC03MzUs
NyArNzM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Nv
cnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIAogICAgIFByb3BlcnR5TmFtZUFycmF5IG5hbWVBcnJheShleGVjKTsK
LSAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0
aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAg
IHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNP
YmosIGV4ZWMsIG5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCA1NmRmMzQ1MDI4N2Zm
OTk5YTM4ZmNmNGNiNzE1MGU4NjFhNTY0M2U4Li5hNmQxOTFlNjVkNTM3ZTllMzAxNWZiZGZmOTli
ZDkxNDkwMGIwZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yMiwyNSArMjIsMjggQEAKICNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAi
SWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUg
IlByaXZhdGVOYW1lLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0jZGVmaW5lIElOSVRJQUxJWkVf
UFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpF
X0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKHZtLCAjbmFtZSkKKyNkZWZpbmUgSU5JVElB
TElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAjbmFtZSkpCisjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdv
cmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQogI2RlZmluZSBJTklUSUFMSVpF
X1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5u
YW1lIyNQcml2YXRlTmFtZSgpKQorI2RlZmluZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5h
bWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMjU3ltYm9sKCkpCiAKIENvbW1vbklkZW50
aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigp
CiAgICAgLCBlbXB0eUlkZW50aWZpZXIoSWRlbnRpZmllcjo6RW1wdHlJZGVudGlmaWVyKQotICAg
ICwgdW5kZXJzY29yZVByb3RvKHZtLCAiX19wcm90b19fIikKLSAgICAsIHRoaXNJZGVudGlmaWVy
KHZtLCAidGhpcyIpCi0gICAgLCB1c2VTdHJpY3RJZGVudGlmaWVyKHZtLCAidXNlIHN0cmljdCIp
CisgICAgLCB1bmRlcnNjb3JlUHJvdG8oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fcHJv
dG9fXyIpKQorICAgICwgdGhpc0lkZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InRoaXMiKSkKKyAgICAsIHVzZVN0cmljdElkZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVzZSBzdHJpY3QiKSkKICAgICAsIG1fYnVpbHRpbk5hbWVzKG5ldyBCdWlsdGluTmFt
ZXModm0sIHRoaXMpKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElO
SVRJQUxJWkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRF
X0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BSSVZBVEVfTkFNRSkK
KyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJP
TChJTklUSUFMSVpFX1NZTUJPTCkKIHsKIH0KIApAQCAtNDgsNiArNTEsMTYgQEAKIHsKIH0KIAor
Ym9vbCBDb21tb25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5pc1ByaXZhdGVOYW1lKHVpZCk7Cit9
CisKK2Jvb2wgQ29tbW9uSWRlbnRpZmllcnM6OmlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5pc1ByaXZhdGVO
YW1lKGlkZW50KTsKK30KKwogY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6Omdl
dFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogewogICAgIHJldHVy
biBtX2J1aWx0aW5OYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoaWRlbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZjExMTc3M2Yx
MDU1NzQ5ODFlOTY4NzdjNDc5M2U0ZTk1YWRiNTg1OC4uOTc5MzcyMzc4N2VkMzNlNGI5YmI4MTZi
NmM3OTZjOTU4MTI0YmMxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMzQsNyArMjM0LDYgQEAKICAgICBtYWNybyh1bnNj
b3BhYmxlKQogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUobWFjcm8pIFwKLSAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9XRUxMX0tOT1dOX1NZTUJPTChtYWNybykgXAogICAgIG1hY3JvKGl0ZXJhdG9yTmV4dCkg
XAogICAgIG1hY3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhyZWplY3QpIFwKQEAgLTI4OSw3ICsy
ODgsMTMgQEAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZ
X05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7CiAg
ICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3Vu
ZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTAot
ICAgICAgICAKKworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9L
Tk9XTl9TWU1CT0xfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjU3ltYm9sOwor
ICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZ
TUJPTChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xP
QkFMKQorI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZ
TUJPTF9HTE9CQUwKKworICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCogdWlk
KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBj
b25zdDsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29uc3Qg
SWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCmluZGV4IDRkYmFmN2I0MTdkYzcwOGZiYzZjNzI1MDlm
MTlmNTQ0ZjAxYjk2YmQuLmVkYTJjYjE0YjU1OTQ3MzA2ZjMzMDQ0NGI4OWM0MGUyYzc4NGMwYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5o
CkBAIC0yOCw2MyArMjgsNTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gRW51bWVyYXRp
b25Nb2RlIHsKLSAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLAotICAgIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3QsCi0gICAgSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcywKLSAgICBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0Ci19Owor
Y2xhc3MgRW51bWVyYXRpb25Nb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc19mbGFnSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyA9IDF1IDw8IDA7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNfZmxhZ1NraXBKU09iamVjdCA9IDF1IDw8IDE7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0luY2x1ZGVTeW1ib2xzID0gMXUgPDwgMjsKKworICAgIGVu
dW0gRW51bWVyYXRpb25Nb2RlUmVwcmVzZW50YXRpb25UYWcgOiB1bnNpZ25lZCB7CisgICAgICAg
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMgPSAwLAorICAgICAgICBFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMgPSBzX2ZsYWdJbmNsdWRlU3ltYm9scywKKyAgICAg
ICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyA9IHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMsCisgICAgICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9s
cyA9IHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRpZXMgfCBzX2ZsYWdJbmNsdWRlU3ltYm9s
cywKKyAgICB9OworCisgICAgRW51bWVyYXRpb25Nb2RlKEVudW1lcmF0aW9uTW9kZVJlcHJlc2Vu
dGF0aW9uVGFnIHRhZykKKyAgICAgICAgOiBtX2ZsYWdzKHRhZykKKyAgICB7CisgICAgfQogCi1p
bmxpbmUgYm9vbCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllczoKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNP
YmplY3Q6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBib29sIHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzOwogICAgIH0KLX0KIAotaW5saW5lIGJvb2wgc2hvdWxkRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsK
LSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgY2FzZSBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBzaG91bGRJbmNsdWRl
SlNPYmplY3RQcm9wZXJ0eU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKG1f
ZmxhZ3MgJiBzX2ZsYWdTa2lwSlNPYmplY3QpOwogICAgIH0KLX0KIAotaW5saW5lIGJvb2wgc2hv
dWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsK
LSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXM6
Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0g
ICAgY2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBzaG91bGRJbmNsdWRlU3ltYm9scygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9mbGFncyAmIHNfZmxhZ0luY2x1ZGVTeW1ib2xzOwogICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19CiAKLWlu
bGluZSBFbnVtZXJhdGlvbk1vZGUgbW9kZVRoYXRTa2lwc0pTT2JqZWN0KEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllczoKLSAgICAgICAgcmV0dXJuIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRT
a2lwSlNPYmplY3Q7Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgICAg
ICByZXR1cm4gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDsKLSAgICBj
YXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgY2FzZSBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4g
bW9kZTsKKyAgICBzdGF0aWMgRW51bWVyYXRpb25Nb2RlIGNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0
KEVudW1lcmF0aW9uTW9kZSBtb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVudW1lcmF0aW9u
TW9kZShtb2RlLm1fZmxhZ3MgfCBzX2ZsYWdTa2lwSlNPYmplY3QpOwogICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbW9kZTsKLX0KKworcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBFbnVtZXJhdGlvbk1vZGUodW5zaWduZWQgZmxhZ3MpCisgICAgICAgIDogbV9mbGFn
cyhmbGFncykKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9mbGFnczsKK307CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAK
aW5kZXggOTMwYjZmYWY2YmMxZmM2NWRlOWU2MWExZmM3ZTYyYTllNWZjNjgwZS4uMzYxNTZhMWUw
NTE2ODFmNWNlYjU2MTgyYjZlNGViOTQyOWI4ZjUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yLmNwcApAQCAtMTM3LDE3ICsxMzcsMTcgQEAgSlNPYmplY3QqIGFkZEVycm9y
SW5mbyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29u
c3QgU28KICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCA9IHNvdXJjZS5wcm92aWRlcigpLT51
cmwoKTsKIAogICAgIGlmIChsaW5lICE9IC0xKQotICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCp2
bSwgSWRlbnRpZmllcih2bSwgbGluZVByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGxpbmUpLCBSZWFk
T25seSB8IERvbnREZWxldGUpOworICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCp2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgbGluZVByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGxpbmUpLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQotICAg
ICAgICBlcnJvci0+cHV0RGlyZWN0KCp2bSwgSWRlbnRpZmllcih2bSwgc291cmNlVVJMUHJvcGVy
dHlOYW1lKSwganNTdHJpbmcodm0sIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7
CisgICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpLCBqc1N0cmluZyh2bSwgc291cmNlVVJMKSwgUmVhZE9u
bHkgfCBEb250RGVsZXRlKTsKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKIAogYm9vbCBoYXNFcnJv
ckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZXJyb3IpCiB7Ci0gICAgcmV0dXJuIGVy
cm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGxpbmVQcm9wZXJ0eU5hbWUp
KQotICAgICAgICB8fCBlcnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBz
b3VyY2VVUkxQcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gZXJyb3ItPmhhc1Byb3BlcnR5KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbGluZVByb3BlcnR5TmFtZSkpCisgICAg
ICAgIHx8IGVycm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSkpOwogfQogCiBKU09iamVjdCogdGhyb3dUeXBlRXJy
b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCAxMDVhYWVmN2YwOWFhZTE1MmI4NWYzMjA4YjE0
YmJmOTBhMWY1YWMzLi4wMGMwNjA3ZThkMjhiZmY1YWY3MGY5MGM2NDcxOTA0MWRmNGM2MWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcApAQCAtODEsOCArODEsNyBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmlu
ZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CiB7Ci0gICAgCi0gICAgaWYgKGlkZW50LmltcGwoKS0+aXNVbmlxdWUoKSkgeworICAgIGlmIChp
ZGVudC5pbXBsKCktPmlzVW5pcXVlKCkgJiYgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJpdmF0
ZU5hbWUoaWRlbnQpKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0
IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJs
aWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOwogICAgICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNl
RXJyb3IoZXhlYywgbWVzc2FnZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCmluZGV4IDAxMzJkMGU3NTI4ZWEzNjNiOGMzMTM2ZWNlNWIwMDhjNTM5
YTM4ZWYuLjA4NzUwOWI2NjA0NzdmZDIyOWNkM2YwZTM4ZWY1OTE0YjkxM2YyM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTM4LDIzICszOCw2IEBA
IGNsYXNzIElkZW50aWZpZXIgewogICAgIGVudW0gRW1wdHlJZGVudGlmaWVyRmxhZyB7IEVtcHR5
SWRlbnRpZmllciB9OwogICAgIElkZW50aWZpZXIoRW1wdHlJZGVudGlmaWVyRmxhZykgOiBtX3N0
cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRv
bWljKCkpOyB9CiAKLSAgICAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMu
Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgotICAgIElkZW50aWZpZXIo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50
XSkgOiBtX3N0cmluZyhhZGQoZXhlYywgY2hhcmFjdGVycykpIHsgQVNTRVJUKG1fc3RyaW5nLmlt
cGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291
bnQ+Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFy
YWN0ZXJzQ291bnRdKSA6IG1fc3RyaW5nKGFkZCh2bSwgY2hhcmFjdGVycykpIHsgQVNTRVJUKG1f
c3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLQotICAgIElkZW50aWZpZXIoRXhlY1N0YXRl
KiwgQXRvbWljU3RyaW5nSW1wbCopOwotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgY29uc3Qg
QXRvbWljU3RyaW5nJik7Ci0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0lt
cGwqIHJlcCkgOiBtX3N0cmluZyhhZGQoZXhlYywgcmVwKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1w
bCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKGV4ZWMsIHMuaW1wbCgpKSkgeyBBU1NFUlQobV9z
dHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBjaGFyKiBzKSA6IElkZW50aWZpZXIoZXhlYywgQXRvbWljU3RyaW5nKHMpKSB7
IH0KLQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkg
OiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+
aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGlu
dCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmlu
Zy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIFN0cmluZ0lt
cGwqIHJlcCkgOiBtX3N0cmluZyhhZGQodm0sIHJlcCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwo
KS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBz
KSA6IG1fc3RyaW5nKGFkZCh2bSwgcy5pbXBsKCkpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCkt
PmlzQXRvbWljKCkpOyB9Ci0KICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nOyB9CiAgICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihtX3N0cmluZy5pbXBsKCkpOyB9CiAK
QEAgLTYzLDEyICs0NiwzMiBAQCBjbGFzcyBJZGVudGlmaWVyIHsKICAgICBDU3RyaW5nIGFzY2lp
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuYXNjaWkoKTsgfQogICAgIENTdHJpbmcgdXRmOCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnV0ZjgoKTsgfQogCi0gICAgc3RhdGljIElkZW50aWZp
ZXIgZnJvbShjb25zdCBQcml2YXRlTmFtZSYgbmFtZSkKLSAgICB7Ci0gICAgICAgIElkZW50aWZp
ZXIgcmVzdWx0OwotICAgICAgICByZXN1bHQubV9zdHJpbmcgPSBuYW1lLnVpZCgpOwotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0KKyAgICAvLyBUaGVyZSdzIDIgZnVuY3Rpb25zIHRvIGNv
bnN0cnVjdCBJZGVudGlmaWVyIGZyb20gc3RyaW5nLCAoMSkgZnJvbVN0cmluZyBhbmQgKDIpIGZy
b21VaWQuCisgICAgLy8gVGhleSBoYXZlIGRpZmZlcmVudCBtZWFuaW5ncyBpbiBrZWVwaW5nIG9y
IGRpc2NhcmRpbmcgdW5pcXVlbmVzcyBvZiBzdHJpbmdzLgorICAgIC8vICgxKTogZnJvbVN0cmlu
ZworICAgIC8vIEp1c3QgY29uc3RydWN0IElkZW50aWZpZXIgZnJvbSBzdHJpbmcuIFN0cmluZyBo
ZWxkIGJ5IElkZW50aWZpZXIgaXMgYWx3YXlzIGF0b21pemVkLgorICAgIC8vIFVuaXF1ZW5lc3Mg
b2YgU3RyaW5nSW1wbCosIHdoaWNoIHJlcHJlc2VudHMgdGhhdCB0aGUgc3RyaW5nIGlzIGludGVk
ZWQgdG8gYmUgdXNlZCBmb3IgRVM2IFN5bWJvbHMsIGlzIGRpc2NhcmRlZC4KKyAgICAvLyBTbyBh
IGNvbnN0cnVjdGVkIElkZW50aWZpZXIgbmV2ZXIgcmVwcmVzZW50cyBhIHN5bWJvbC4KKyAgICAv
LyAoMik6IGZyb21VaWQKKyAgICAvLyBmcm9tVWlkIGtlZXBzIHVuaXF1ZW5lc3Mgb2YgcHJvdmlk
ZWQgU3RyaW5nSW1wbCogd2hpbGUgZnJvbVN0cmluZyBkaXNjYXJkcyBpdC4KKyAgICAvLyBVc2Ug
ZnJvbVVpZCB3aGVuIGNvbnN0cnVjdGluZyBJZGVudGlmaWVyIGZyb20gU3RyaW5nSW1wbCogd2hp
Y2ggbWF5IHJlcHJlc2VudCBzeW1ib2xzLgorCisgICAgLy8gT25seSB0byBiZSB1c2VkIHdpdGgg
c3RyaW5nIGxpdGVyYWxzLgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4K
KyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgY2hhciAoJmNoYXJh
Y3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pOworICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3Rl
cnNDb3VudD4KKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKTsKKyAgICBzdGF0aWMgSWRl
bnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgTENoYXIqLCBpbnQgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgU3RyaW5nJik7
CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBBdG9taWNTdHJp
bmdJbXBsKik7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBj
b25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJp
bmcoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOworCisgICAgc3RhdGljIElkZW50aWZpZXIgZnJv
bVVpZChWTSosIFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVp
ZChFeGVjU3RhdGUqLCBTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b21VaWQoY29uc3QgUHJpdmF0ZU5hbWUmKTsKIAogICAgIHN0YXRpYyBJZGVudGlmaWVyIGNyZWF0
ZUxDaGFyRnJvbVVDaGFyKFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIHsgcmV0
dXJuIElkZW50aWZpZXIodm0sIGFkZDgodm0sIHMsIGxlbmd0aCkpOyB9CiAKQEAgLTEwNSw2ICsx
MDgsMjAgQEAgY2xhc3MgSWRlbnRpZmllciB7CiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N0cmlu
ZzsKIAorICAgIC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+CisgICAgSWRlbnRpZmllcihWTSogdm0s
IGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKSA6IG1fc3RyaW5nKGFk
ZCh2bSwgY2hhcmFjdGVycykpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7
IH0KKworICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkg
OiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+
aXNBdG9taWMoKSk7IH0KKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGlu
dCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmlu
Zy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CisgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqLCBBdG9t
aWNTdHJpbmdJbXBsKik7CisgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqLCBjb25zdCBBdG9taWNT
dHJpbmcmKTsKKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpIDog
bV9zdHJpbmcoYWRkKHZtLCBzdHJpbmcuaW1wbCgpKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgp
LT5pc0F0b21pYygpKTsgfQorICAgIElkZW50aWZpZXIoVk0qIHZtLCBTdHJpbmdJbXBsKiByZXAp
IDogbV9zdHJpbmcoYWRkKHZtLCByZXApKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRv
bWljKCkpOyB9CisKKyAgICBlbnVtIFVuaXF1ZUlkZW50aWZpZXJGbGFnIHsgVW5pcXVlSWRlbnRp
ZmllciB9OworICAgIElkZW50aWZpZXIoVW5pcXVlSWRlbnRpZmllckZsYWcsIFN0cmluZ0ltcGwq
IHVpZCkgOiBtX3N0cmluZyh1aWQpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNVbmlxdWUo
KSk7IH0KKwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KICAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMkZyb21DaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBl
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wmIG9rKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKaW5kZXggNzQ3MmQ4
NDdkNzViMzAzZTY0NTRmMDZkNjllZDZmYzVlZTY5MjNhYy4uZDQyZmRjNmJmYmUwMTI3YjU0NjM5
OTg5YmY4M2YwMjZmNmQwZjM2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0zNyw3ICszNyw3IEBAIGlubGluZSBJZGVudGlm
aWVyOjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgQXRvbWljU3RyaW5nSW1wbCogc3RyaW5n
KQogI2lmbmRlZiBOREVCVUcKICAgICBjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGVj
KTsKICAgICBpZiAoc3RyaW5nKQotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmct
Pmxlbmd0aCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyks
ICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLT5sZW5ndGgoKSB8fCBzdHJpbmctPmlzVW5p
cXVlKCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRo
ZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAjZW5kaWYKQEAgLTQ5LDcgKzQ5LDcgQEAgaW5saW5lIElk
ZW50aWZpZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcm
IHN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFi
bGUoZXhlYyk7CiAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJp
bmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4g
b3RoZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVu
Z3RoKCkgfHwgc3RyaW5nLmltcGwoKS0+aXNVbmlxdWUoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5B
dG9taWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVz
IGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAjZW5kaWYKQEAgLTcwLDYgKzcwLDcwIEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVy
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJu
ICpBdG9taWNTdHJpbmc6OmFkZFdpdGhTdHJpbmdUYWJsZVByb3ZpZGVyKCp2bSwgcik7CiB9CiAK
K2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21VaWQoVk0qIHZtLCBTdHJpbmdJbXBs
KiB1aWQpCit7CisgICAgaWYgKCF1aWQgfHwgIXVpZC0+aXNVbmlxdWUoKSkKKyAgICAgICAgcmV0
dXJuIElkZW50aWZpZXIodm0sIHVpZCk7CisgICAgcmV0dXJuIElkZW50aWZpZXIoVW5pcXVlSWRl
bnRpZmllciwgdWlkKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVVp
ZChFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICByZXR1cm4gZnJvbVVp
ZCgmZXhlYy0+dm0oKSwgdWlkKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6
ZnJvbVVpZChjb25zdCBQcml2YXRlTmFtZSYgbmFtZSkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmll
cihVbmlxdWVJZGVudGlmaWVyLCBuYW1lLnVpZCgpKTsKK30KKwordGVtcGxhdGU8dW5zaWduZWQg
Y2hhcmFjdGVyc0NvdW50PgoraW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhWTSogdm0sIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKQorewor
ICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJzKTsKK30KKwordGVtcGxhdGU8dW5z
aWduZWQgY2hhcmFjdGVyc0NvdW50PgoraW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0
ZXJzQ291bnRdKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKCZleGVjLT52bSgpLCBjaGFyYWN0
ZXJzKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSog
dm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBJZGVudGlmaWVy
KHZtLCBzLCBsZW5ndGgpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpCit7CisgICAgcmV0dXJu
IElkZW50aWZpZXIodm0sIHMsIGxlbmd0aCk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBy
ZXR1cm4gSWRlbnRpZmllcih2bSwgc3RyaW5nLmltcGwoKSk7Cit9CisKK2lubGluZSBJZGVudGlm
aWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHN0cmluZykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcigmZXhlYy0+dm0oKSwgc3RyaW5nLmlt
cGwoKSk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNTdHJpbmcpCit7CisgICAgcmV0
dXJuIElkZW50aWZpZXIoZXhlYywgYXRvbWljU3RyaW5nKTsKK30KKworaW5saW5lIElkZW50aWZp
ZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0
cmluZyYgYXRvbWljU3RyaW5nKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIGF0b21p
Y1N0cmluZyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKQoreworICAgIHJldHVybiBJZGVudGlmaWVy
KGV4ZWMsIEF0b21pY1N0cmluZyhzKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gSWRlbnRpZmllcklubGluZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAppbmRleCAyMGQ0OWRiOGJhMmUyYzU4NTUwNjY3NDllZjlkZjUxNTU0MTU3Njgx
Li5jMWIwNGE2ZTIyZWQyOGEyZjkzZDIzMGQ1NjNjMzA4ZTYyNmUxMmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQg
SlNBcnJheTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0FycmF5Kj4ob2JqZWN0KTsKIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
KSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCk7CiAKICAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCBjMWNhZDEwNWM3ZTBkNWFkN2VmZDI5
NmEzYmVmMDY5NmM5NWY2MDA3Li41YjY2YzQ0ZjNlODE4NDI1MDA4YjYwYWVkNDI2MTNhYmM3ZTE4
ZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSlNBcnJheUJ1ZmZlcjo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKAogewogICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNBcnJheUJ1ZmZlcio+KG9iamVjdCk7CiAgICAgCi0gICAgaWYgKHNob3VsZEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcygpKQogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygp
LmJ5dGVMZW5ndGgpOwogICAgIAogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggY2I1YzhhMmYwMzkz
NDNjNWEyNDA1MGIwOTA4MDhkZWQyNWUxMDkwYi4uYWRhNjczYmU3NzQ5N2QwNjYyZmNlY2M3N2Iw
Yjg0YmRjMjZkYTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgSlNBcnJheUJ1
ZmZlclZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKICAgICBKU0FycmF5QnVmZmVy
VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KG9iamVjdCk7CiAg
ICAgCiAgICAgLy8gbGVuZ3RoL2J5dGVPZmZzZXQvYnl0ZUxlbmd0aCBhcmUgRG9udEVudW0sIGF0
IGxlYXN0IGluIEZpcmVmb3guCi0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMobW9kZSkpIHsKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KCkpIHsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlT2Zmc2V0
KTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoKTsK
ICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKaW5kZXggZGVkOGM4NTgwYjBhYzM1ZDRk
OTc3MTZhMDBhZGYwODBkY2I2ZTJlZS4uMzJhY2FkNTIwZDViNDAzYmQxNDcyMWJhYmZlNjlmNDI0
MmU1OGVmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxs
ZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCkBAIC0x
MDEsNyArMTAxLDcgQEAgY2xhc3MgSlNDYWxsZWUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
KyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEVudW1lcmF0
aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCmluZGV4IDg1MWI2NmYxNWIzNjYwNzM1NjIzNjkyMDU3N2U4MWE3NjhkMWQ1
NWIuLjViZWM4NTg5OTkxNTYyYThlMjRkODAyNjc4ZGIwYTEyZTc2NmFiOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zNjksNyArMzY5LDcg
QEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAg
IEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0g
ICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIHNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKCkpIHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgLy8gTWFr
ZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAppbmRleCBiZTBiZGM3ODQyZjk3MzNjNzZiMDY0NDNiZGEzNjYxNDE4ZWE1OTk3Li4zNGVk
NDA4YjVkMWIwODFmZmI0YjRjOWFhZjg2OWM1ZmE0OWQ0NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xMzgsNyArMTM4LDcgQEAgY2xhc3MgSlNG
dW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUq
IGNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIGdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFbnVtZXJh
dGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIHN0YXRpYyBib29sIGRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIHN0YXRpYyB2
b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2ZDBkMjFmYTYx
ZjM5ODlmOWQ5YjQxOTlkYWE4ODhlOWY2NjQ0ZWNhLi5hOTk4ZWU4ODUyMWVmNjczOWEyMjExNTY3
ZDM3ODMyYWUzNDg1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNDE1LDcg
KzQxNSw3IEBACiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwogICAgIAotICAgIGlmIChz
aG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIAogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOGM0MzU3ZTI0
YTg0MmE0MGFlMjE0NjZmOTgyYzNhMGU2MzRjOGU1Yi4uYzkwNjczYjM2N2RlZjA1NjM1YTNmYjJm
N2EzMzc5YzY5YmIwNzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIC8vIENvbnN0cnVjdG9ycwogICAgIAotICAgIE9i
amVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAg
T2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KTsKICAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0
b3IpOwogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSk7CiAgICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpKTsKQEAgLTQwNyw3
ICs0MDcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIHR5cGVkQXJyYXlJbmRleCA9IE5VTUJFUl9PRl9UWVBFRF9BUlJBWV9UWVBF
UzsgdHlwZWRBcnJheUluZGV4LS07KSB7CiAgICAgICAgIG1fdHlwZWRBcnJheXNbdHlwZWRBcnJh
eUluZGV4XS5wcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5
SW5kZXhdLCBEb250RW51bSk7Ci0gICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyKGV4ZWMsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4
XS0+bmFtZShleGVjKSksIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwg
RG9udEVudW0pOworICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJ
bmRleF0tPm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRl
eF0sIERvbnRFbnVtKTsKICAgICB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogYnVpbHRpbkxvZyA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJ
ZGVudGlmaWVyLnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZyk7CkBAIC00NDAsNyArNDQw
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgQ29uc29sZVByb3Rv
dHlwZSogY29uc29sZVByb3RvdHlwZSA9IENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhp
cywgQ29uc29sZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY29uc29sZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpT
Q29uc29sZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBjb25zb2xlUHJvdG90eXBlKSk7CiAg
ICAgSlNDb25zb2xlKiBjb25zb2xlT2JqZWN0ID0gSlNDb25zb2xlOjpjcmVhdGUodm0sIG1fY29u
c29sZVN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IElkZW50aWZpZXIoZXhlYywgImNvbnNvbGUiKSwgY29uc29sZU9iamVjdCwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJjb25zb2xlIiksIGNvbnNvbGVPYmplY3QsIERvbnRFbnVtKTsKIAogICAgIHJlc2V0
UHJvdG90eXBlKHZtLCBwcm90b3R5cGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA1ZWI5ZWE2YmY2YWIyMzI4OWMyZWQ0ZDEx
MTU1ZDI2NGQ2NWZlMDc2Li5hY2IyYmY2YjAwN2UwMjBjYzFjYzE1Nzc4ZmY2NmVlYjc1MjMzNTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTMwNSw2ICszMDUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIGJvb2wgaGFzRGVidWdnZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RlYnVnZ2VyOyB9CiAgICAgYm9vbCBoYXNQcm9maWxlcigpIGNvbnN0IHsgcmV0dXJu
IGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUHJvZmlsaW5nKHRoaXMpOyB9Cisg
ICAgY29uc3QgUnVudGltZUZsYWdzJiBydW50aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3J1
bnRpbWVGbGFnczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZXhwbGlj
aXQgSlNHbG9iYWxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSogPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAppbmRleCA4NDAzN2EzNDVmOTllODUwMGJmNmQwNTZh
NTE4NDlkYzE5YjU2ZmEwLi4wODExYjA0MDEyYjI3MTNiMGU1M2QzMjNmMGFlMTg5NDIwZGNiNTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZp
cm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwCkBAIC0xMTQsMTEgKzExNCwxNyBAQCB2b2lkIEpTTGV4aWNhbEVudmly
b25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YQogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1i
b2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBl
bmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9y
IChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKGl0
LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSAmJiAhc2hvdWxkSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICAgICAgICAgIGlmIChpdC0+dmFsdWUuZ2V0QXR0cmli
dXRlcygpICYgRG9udEVudW0gJiYgIW1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCF0aGlzT2Jq
ZWN0LT5pc1ZhbGlkKGl0LT52YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkp
KTsKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1VuaXF1ZSgpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVTeW1ib2xzKCkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmIChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQ
cml2YXRlTmFtZShpdC0+a2V5LmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
Ojpmcm9tVWlkKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KICAgICAv
LyBTa2lwIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkIGltcGxlbWVudGF0aW9uIG9mIGdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09O
T2JqZWN0LmNwcAppbmRleCBiZGI4MjFjZGY1NjQ4MGQ2OGRjMWM0ZGEyZWQwNTZjYjU1ODFlMWE5
Li5jODk4YTM0Mjg1OTViNmQxMTkzMmMwZWE4ZTBkOWI4MGYxYmEzNWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNDkwLDcgKzQ5MCw3IEBA
IGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVy
JiBzdHJpbmdpZmllciwgU3RyaW5nQnVpCiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVz
ID0gc3RyaW5naWZpZXIubV9hcnJheVJlcGxhY2VyUHJvcGVydHlOYW1lcy5kYXRhKCk7CiAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBvYmplY3RQ
cm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9w
ZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBt
X29iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQo
KSwgZXhlYywgb2JqZWN0UHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMgPSBvYmpl
Y3RQcm9wZXJ0eU5hbWVzLnJlbGVhc2VEYXRhKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBtX3NpemUgPSBtX3Byb3BlcnR5TmFtZXMtPnByb3BlcnR5TmFtZVZlY3RvcigpLnNpemUoKTsK
QEAgLTcwNyw3ICs3MDcsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNW
YWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0
KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAg
ICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKyAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlv
bk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjoKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGRiMmE3MjJj
YmE4ODVjODA4NmRlYjc5MGMyYzI4NTczNzRmNmY3OTkuLmVkMTNlYTBhOGJlM2IzNTI5YWIyNmQ4
NDMxNjJjMzA0M2NlZjQ5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKQEAgLTc4LDggKzc4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2lu
KCk7IGl0ZXIgIT0gdGFibGUtPmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmICgoIShp
dGVyLT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyhtb2RlKSkgJiYgISgoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rp
b24pICYmIGRpZFJlaWZ5KSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVu
dGlmaWVyKCZ2bSwgaXRlci5rZXkoKSkpOworICAgICAgICAgICAgaWYgKCghKGl0ZXItPmF0dHJp
YnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkgJiYgISgoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pICYmIGRp
ZFJlaWZ5KSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgaXRlci5rZXkoKSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTUx
OCw3ICsxNTE4LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUEKIAogdm9pZCBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsK
LSAgICBpZiAoIXNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMobW9kZSkpIHsKKyAg
ICBpZiAoIW1vZGUuc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcygpKSB7CiAgICAg
ICAgIC8vIFdlIHN0aWxsIGhhdmUgdG8gZ2V0IG5vbi1pbmRleGVkIHByb3BlcnRpZXMgZnJvbSBh
bnkgc3ViY2xhc3NlcyBvZiBKU09iamVjdCB0aGF0IGhhdmUgdGhlbS4KICAgICAgICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1
NzIsNyArMTU3Miw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC0+
ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSB8fCAhKGl0LT52YWx1
ZS5hdHRyaWJ1dGVzICYgRG9udEVudW0pKQorICAgICAgICAgICAgICAgIGlmIChtb2RlLnNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSB8fCAhKGl0LT52YWx1ZS5hdHRyaWJ1dGVzICYg
RG9udEVudW0pKQogICAgICAgICAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaXQtPmtleSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CkBAIC0xNTk0LDcgKzE1OTQsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcgogewogICAgIGdl
dENsYXNzUHJvcGVydHlOYW1lcyhleGVjLCBvYmplY3QtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlLCBvYmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSk7CiAKLSAgICBpZiAo
IXNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMobW9kZSkpCisgICAgaWYgKCFtb2Rl
LnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNjc5LDcgKzE2NzksNyBAQCB2b2lk
IEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAgICAgICBmb3IgKGF1dG8gaXRl
ciA9IGhhc2hUYWJsZS0+YmVnaW4oKTsgaXRlciAhPSBoYXNoVGFibGUtPmVuZCgpOyArK2l0ZXIp
IHsKICAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlv
bikKLSAgICAgICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRXhlYygpLCBpdGVyLnZhbHVlKCksIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVy
LmtleSgpKSwgc2xvdCk7CisgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qo
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaXRlci52YWx1ZSgpLCB0aGlzLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgaXRlci5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0yODAwLDcgKzI4MDAsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRTdHJ1Y3R1cmVQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogdm9pZCBK
U09iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGVUaGF0U2tpcHNKU09iamVjdChtb2RlKSk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGU6OmNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpKTsKIAogICAgIGlm
IChvYmplY3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAzZjVlMjVkMTViMDNlNjBkNTc4
YzgzNGMzZmQ1MDkyNzY4YWRhMGQ0Li43ODY3NzVhMGRjNDljMTIzMDdkYWY0NTIyMTZhYjc4MzRl
MWFiODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE1
NTQsNyArMTU1NCw3IEBAIGlubGluZSBpbnQgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQogCiBBTFdBWVNfSU5MSU5FIElkZW50aWZpZXIgbWFrZUlkZW50aWZpZXIo
Vk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lKQogewotICAgIHJldHVybiBJZGVudGlmaWVyKCZ2bSwg
bmFtZSk7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBuYW1lKTsKIH0K
IAogQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCBmMWEyZTU2MmY5YWJmNDAyYWI2MzhkYzA5
YzZlZmMzODBkMWM1YjRkLi4yYTUxNjk3MjExYzZkOGEzYmU0ZTRlNzgyZTI5YWRjMmE1ZWM5MDQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSYWNlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBqc0Nhc3Q8SlNQcm9taXNlRGVmZXJyZWQq
PihkZWZlcnJlZFZhbHVlKTsKIAogICAgIC8vIDQuIExldCAnaXRlcmF0b3InIGJlIHRoZSByZXN1
bHQgb2YgY2FsbGluZyBHZXRJdGVyYXRvcihpdGVyYWJsZSkuCi0gICAgSlNWYWx1ZSBpdGVyYXRv
ckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
UHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdl
dChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFicnVwdFJl
amVjdGlvbihleGVjLCBkZWZlcnJlZCkpOwogCkBAIC0zNjcsNyArMzY3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNBbGwoRXhlY1N0YXRl
KiBleGVjKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IGpzQ2FzdDxKU1Byb21p
c2VEZWZlcnJlZCo+KGRlZmVycmVkVmFsdWUpOwogCiAgICAgLy8gNC4gTGV0ICdpdGVyYXRvcicg
YmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEdldEl0ZXJhdG9yKGl0ZXJhYmxlKS4KLSAgICBKU1Zh
bHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0g
aXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5k
ZXggZWUxOGFiZjZlYjNmMzJjZmMwMTI5MWViMTQ0NzQwZWY3OGE5NmExYy4uMGI5ZTczOWY1YTcw
Mzk2OWE1NDA2M2VmMDkzZDU3NTNiODAyMzI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKQEAgLTExMyw3
ICsxMTMsNyBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBzdHJ1Y3R1cmVQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICByZXR1cm4gSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUodm0pOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkg
cHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFN0cnVj
dHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRTdHJ1Y3R1cmVQ
cm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIGVudW1lcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSwgc3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWVzKTsKICAgICBpZiAoc3RydWN0dXJlLT5jYW5DYWNoZVN0cnVj
dHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSkKQEAgLTE0Miw5ICsxNDIsOSBAQCBpbmxpbmUg
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBnZW5lcmljUHJvcGVydHlOYW1lRW51bWVyYXRvcihF
eGVjU3RhdGUqIGV4ZWMsCiAgICAgLy8gdGhlIG5ldyBnZW5lcmljIFByb3BlcnR5TmFtZUFycmF5
IGFuZCBmYWlsaW5nIGJlY2F1c2Ugd2UndmUgYWxyZWFkeSB2aXNpdGVkIHRoZW0uCiAgICAgU3Ry
dWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVFbnVtZXJhdG9yLT5jYWNoZWRTdHJ1
Y3R1cmUodm0pOwogICAgIGlmIChzdHJ1Y3R1cmUgPT0gY2FjaGVkU3RydWN0dXJlICYmIHN0cnVj
dHVyZS0+Y2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHkoKSAmJiBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obGVuZ3RoKSA9PSBiYXNlLT5nZXRBcnJheUxlbmd0aCgpKQotICAgICAgICBiYXNlLT5tZXRo
b2RUYWJsZSh2bSktPmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBiYXNlLT5tZXRob2RU
YWJsZSh2bSktPmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZWxz
ZQotICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMoYmFzZSwg
ZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAg
IGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwog
ICAgIAogICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIHN0cnVjdHVyZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDA1NzU0NDc2ZmQxNTRh
ZDU2M2E4OTAyNDRkZWRjMmY5NmYzZTJkMTMuLjM4YWY5ZGQ0YWVhZGM3YWQyYjY2NDFlNTMyNWI1
M2Q0YzQyYmRhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApA
QCAtNDY3LDcgKzQ2Nyw3IEBAIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKFZN
KiB2bSwgU3RyaW5nJiYgcykKIAogQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpTU3RyaW5nOjp0
b0lkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIHJldHVybiBJZGVudGlm
aWVyKGV4ZWMsIHRvQXRvbWljU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCB0b0F0b21pY1N0cmluZyhleGVjKSk7CiB9CiAKIEFMV0FZU19JTkxJ
TkUgQXRvbWljU3RyaW5nIEpTU3RyaW5nOjp0b0F0b21pY1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuY3BwCmluZGV4IGI4ZmIyMjgyYWZhZTg3ZWNjNDExMDI0NWNlOWJiODczZTk1
MGYwZmYuLmUzM2M1YjYyNGE0MWY5ODJmZDYxM2IwMTUzNjMyZTQxMDBiMjEwZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
Y3BwCkBAIC02MSwxMCArNjEsMTUgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9s
b2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVj
dC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2Nr
ZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1VuaXF1
ZSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCEoaXQtPnZh
bHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKG1vZGUpKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVl
LmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1VuaXF1ZSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbW9kZS5zaG91bGRJbmNsdWRlU3ltYm9scygp
KQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAg
IGlmIChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRlTmFtZShpdC0+a2V5LmdldCgpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMs
IGl0LT5rZXkuZ2V0KCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5k
ZXggZjZmNWZlMTczYzcwNGVkZTBmNjUzYjY4MzhlMDk4MDZjYTQ0MmViNy4uZDQ1NDRhNGY2ZjI2
Y2FhOGMzODQ1ZGFmMGZjYWZlNzMyMzI4YmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTU3LDE3ICs1NywxNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaXNKU09OV2hpdGVTcGFjZShjb25zdCBDaGFyVHlwZSYgYykKICAgICBkbyB7
CiAgICAgICAgIFZlY3RvcjxKU09OUFBhdGhFbnRyeT4gcGF0aDsKICAgICAgICAgLy8gVW5ndWFy
ZGVkIG5leHQgdG8gc3RhcnQgb2ZmIHRoZSBsZXhlcgotICAgICAgICBJZGVudGlmaWVyIG5hbWUg
PSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQs
IG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFy
dCk7CisgICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1f
ZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50
VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKICAgICAgICAgSlNP
TlBQYXRoRW50cnkgZW50cnk7CiAgICAgICAgIGlmIChuYW1lID09IG1fZXhlYy0+dm0oKS5wcm9w
ZXJ0eU5hbWVzLT52YXJLZXl3b3JkKSB7CiAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkg
IT0gVG9rSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICBlbnRyeS5tX3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVEZWNsYXJlOwotICAgICAgICAg
ICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBtX2xl
eGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOworICAgICAgICAgICAgZW50cnkubV9wYXRoRW50
cnlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1
cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIu
Y3VycmVudFRva2VuKCkuc3RhcnQpOwogICAgICAgICAgICAgcGF0aC5hcHBlbmQoZW50cnkpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW50cnkubV90eXBlID0gSlNPTlBQYXRoRW50
cnlUeXBlRG90OwotICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmll
cigmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1
cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOworICAgICAg
ICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9l
eGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRU
b2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOwogICAgICAgICAgICAg
cGF0aC5hcHBlbmQoZW50cnkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2V4ZWMtPnZtKCku
a2V5d29yZHMtPmlzS2V5d29yZChlbnRyeS5tX3BhdGhFbnRyeU5hbWUpKQpAQCAtOTQsNyArOTQs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNKU09OV2hpdGVTcGFjZShjb25zdCBDaGFyVHlwZSYg
YykKICAgICAgICAgICAgICAgICBlbnRyeS5tX3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVEb3Q7
CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0lkZW50aWZpZXIpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBlbnRyeS5t
X3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVu
dFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJy
ZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRU
b2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVu
dFRva2VuKCkuc3RhcnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgY2FzZSBUb2tMUGFyZW46IHsKQEAgLTEzNSwxNyArMTM1LDE3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENoYXJUeXBlJiBjKQogICAgIGlm
ICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbV9leGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmVt
cHR5SWRlbnRpZmllcjsKICAgICBpZiAoY2hhcmFjdGVyc1swXSA+PSBNYXhpbXVtQ2FjaGFibGVD
aGFyYWN0ZXIpCi0gICAgICAgIHJldHVybiBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJh
Y3RlcnMsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZt
X2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAKICAgICBpZiAobGVuZ3RoID09IDEp
IHsKICAgICAgICAgaWYgKCFtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxs
KCkpCiAgICAgICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1d
OwotICAgICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVy
KCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgICAgIG1fc2hvcnRJZGVu
dGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+
dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIG1fc2hvcnRJZGVudGlm
aWVyc1tjaGFyYWN0ZXJzWzBdXTsKICAgICB9CiAgICAgaWYgKCFtX3JlY2VudElkZW50aWZpZXJz
W2NoYXJhY3RlcnNbMF1dLmlzTnVsbCgpICYmIElkZW50aWZpZXI6OmVxdWFsKG1fcmVjZW50SWRl
bnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaW1wbCgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKQogICAg
ICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKLSAgICBtX3Jl
Y2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgp
LCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVy
c1swXV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMs
IGxlbmd0aCk7CiAgICAgcmV0dXJuIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07
CiB9CiAKQEAgLTE1NSwxNyArMTU1LDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0
ZVNwYWNlKGNvbnN0IENoYXJUeXBlJiBjKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1
cm4gbV9leGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcjsKICAgICBpZiAo
Y2hhcmFjdGVyc1swXSA+PSBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXIpCi0gICAgICAgIHJldHVy
biBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgICAg
IHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMs
IGxlbmd0aCk7CiAKICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgaWYgKCFtX3Nob3J0
SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4g
bV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwotICAgICAgICBtX3Nob3J0SWRlbnRp
ZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3Rl
cnMsIGxlbmd0aCk7CisgICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3Ro
KTsKICAgICAgICAgcmV0dXJuIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKICAg
ICB9CiAgICAgaWYgKCFtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dLmlzTnVsbCgp
ICYmIElkZW50aWZpZXI6OmVxdWFsKG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0u
aW1wbCgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gbV9yZWNlbnRJZGVu
dGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKLSAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3Rl
cnNbMF1dID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwor
ICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgcmV0dXJuIG1f
cmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYjdlY2JiMTkwYTA0YjUwOWQ5MDQxMGZmYzRjYzMyZGQw
Mzk0ODBmYS4uYThhMzM2N2Y1M2ZhNmM1MThiOWRhMWU1ZGU3N2Y0OTAwZTljZmJkMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTI5Myw3ICsyOTMsNyBAQCBpbmxp
bmUgdm9pZCByZWlmeVN0YXRpY1Byb3BlcnRpZXMoVk0mIHZtLCBjb25zdCBIYXNoVGFibGVWYWx1
ZSAoJnZhbHVlcylbbnVtYmVyTwogICAgICAgICBpZiAoIXZhbHVlLm1fa2V5KQogICAgICAgICAg
ICAgY29udGludWU7ICAgICAgICAgICAgICAgIAogCi0gICAgICAgIElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlLm1fa2V5KSwg
c3RybGVuKHZhbHVlLm1fa2V5KSk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
Pih2YWx1ZS5tX2tleSksIHN0cmxlbih2YWx1ZS5tX2tleSkpOwogICAgICAgICBpZiAodmFsdWUu
YXR0cmlidXRlcygpICYgQnVpbHRpbikgewogICAgICAgICAgICAgdGhpc09iai5wdXREaXJlY3RC
dWlsdGluRnVuY3Rpb24odm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
dmFsdWUuYnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgdmFsdWUuYXR0cmlidXRlcygpKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGIyMjBiOTg3NTg4NWM0MmY5Y2U2Mzhm
MzIyMjQ3OTJjMzI3NjEwMTcuLjAzNTY0Zjg4ODExZjNlN2ZhYmZiMGFkYWI5YmJjOWFjYTFmYmFi
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9y
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVy
YXRvclByb3RvdHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBNYXBJdGVyYXRvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRk
UHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRv
ciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250
RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvck5leHRQcml2YXRlTmFtZSwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwgRG9udEVu
dW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcAppbmRleCA1NDgyMjI3Njk0MDBiNzE4NTJhZjdkYjhiNzVlZjUwNzU0NGVkZDRmLi5m
ODQzNjdhZTgwYjcyNjM3NTA1ZWRjMTU2M2Q4YjI4ODhjNThjOTU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmtleXMsIG1hcFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgbWFwUHJvdG9GdW5jVmFsdWVzLCBEb250
RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRy
aWVzLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBtYXBQcm90b0Z1
bmNFbnRyaWVzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0s
IDApOwogCiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3Ry
aW5nKCksIG1hcFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcAppbmRleCAyOGZmNWM4ZDkyNzllZTU5ZTViMTFlNzUxYjk5YjU0YjJm
NmYwMzk0Li41MTU2ZWQyZWZkNWYwMDQxMmZjMjcwNDY3MGFkOGRhYjNmYjI3ODg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcApAQCAtODcsNDkgKzg3
LDQ5IEBAIHZvaWQgTWF0aE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgSWRlbnRpZmllcigmdm0sICJFIiksIGpzTnVtYmVyKGV4cCgxLjApKSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBJZGVudGlmaWVyKCZ2bSwgIkxOMiIpLCBqc051bWJlcihsb2coMi4wKSksIERvbnREZWxl
dGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgSWRlbnRpZmllcigmdm0sICJMTjEwIiksIGpzTnVtYmVyKGxvZygxMC4wKSksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJMT0cyRSIpLCBqc051bWJlcigxLjAgLyBsb2coMi4w
KSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJMT0cxMEUiKSwganNOdW1iZXIoMC40
MzQyOTQ0ODE5MDMyNTE4KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIlBJIiksIGpz
TnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIlNRUlQxXzIi
KSwganNOdW1iZXIoc3FydCgwLjUpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIlNR
UlQyIiksIGpzTnVtYmVyKHNxcnQoMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRP
bmx5KTsKLQotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhYnMiKSwgMSwgbWF0aFByb3RvRnVuY0Fi
cywgQWJzSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIo
JnZtLCAiYWNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvcywgTm9JbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhc2luIiksIDEsIG1hdGhQcm90
b0Z1bmNBU2luLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgImF0YW4iKSwgMSwgbWF0aFByb3RvRnVuY0FUYW4sIE5vSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYWNvc2giKSwgMSwg
bWF0aFByb3RvRnVuY0FDb3NoLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0g
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyKCZ2bSwgImFzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNBU2luaCwgTm9J
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJh
dGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXRhbjIiKSwgMiwgbWF0aFByb3RvRnVu
Y0FUYW4yLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyKCZ2bSwgImNicnQiKSwgMSwgbWF0aFByb3RvRnVuY0NicnQsIE5vSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiY2VpbCIpLCAxLCBtYXRo
UHJvdG9GdW5jQ2VpbCwgQ2VpbEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyKCZ2bSwgImNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQ29zLCBDb3NJbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJjb3NoIiks
IDEsIG1hdGhQcm90b0Z1bmNDb3NoLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImV4cCIpLCAxLCBtYXRoUHJvdG9GdW5jRXhwLCBFeHBJ
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJl
eHBtMSIpLCAxLCBtYXRoUHJvdG9GdW5jRXhwbTEsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiZmxvb3IiKSwgMSwgbWF0aFByb3RvRnVu
Y0Zsb29yLCBGbG9vckludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgImZyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jRnJvdW5kLCBGUm91bmRJbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJoeXBv
dCIpLCAyLCBtYXRoUHJvdG9GdW5jSHlwb3QsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibG9nIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cs
IExvZ0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2
bSwgImxvZzEwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxMCwgTm9JbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJsb2cxcCIpLCAxLCBtYXRoUHJv
dG9GdW5jTG9nMXAsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXIoJnZtLCAibG9nMiIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMiwgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJtYXgiKSwgMiwg
bWF0aFByb3RvRnVuY01heCwgTWF4SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIoJnZtLCAibWluIiksIDIsIG1hdGhQcm90b0Z1bmNNaW4sIE1pbkludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInBvdyIp
LCAyLCBtYXRoUHJvdG9GdW5jUG93LCBQb3dJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJyYW5kb20iKSwgMCwgbWF0aFByb3RvRnVuY1JhbmRv
bSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigm
dm0sICJyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jUm91bmQsIFJvdW5kSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAic2lnbiIpLCAxLCBtYXRo
UHJvdG9GdW5jU2lnbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcigmdm0sICJzaW4iKSwgMSwgbWF0aFByb3RvRnVuY1NpbiwgU2luSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAic2luaCIpLCAx
LCBtYXRoUHJvdG9GdW5jU2luaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcigmdm0sICJzcXJ0IiksIDEsIG1hdGhQcm90b0Z1bmNTcXJ0LCBTcXJ0
SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAi
dGFuIiksIDEsIG1hdGhQcm90b0Z1bmNUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAidGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jVGFu
aCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigm
dm0sICJ0cnVuYyIpLCAxLCBtYXRoUHJvdG9GdW5jVHJ1bmMsIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiaW11bCIpLCAxLCBtYXRoUHJv
dG9GdW5jSU11bCwgSU11bEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
RSIpLCBqc051bWJlcihleHAoMS4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJMTjIiKSwganNOdW1iZXIobG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTE4xMCIpLCBqc051bWJlcihsb2coMTAuMCkpLCBEb250
RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTE9HMkUiKSwganNOdW1iZXIo
MS4wIC8gbG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiTE9HMTBFIiksIGpzTnVtYmVyKDAuNDM0Mjk0NDgxOTAzMjUxOCksIERvbnREZWxldGUgfCBE
b250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJQSSIpLCBqc051bWJlcihwaURvdWJsZSksIERv
bnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJTUVJUMV8yIiksIGpzTnVt
YmVyKHNxcnQoMC41KSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJTUVJUMiIpLCBqc051bWJlcihzcXJ0KDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBS
ZWFkT25seSk7CisKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYWJzIiksIDEs
IG1hdGhQcm90b0Z1bmNBYnMsIEFic0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Cisg
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFjb3MiKSwgMSwgbWF0aFByb3RvRnVu
Y0FDb3MsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiYXNpbiIpLCAxLCBtYXRoUHJvdG9GdW5jQVNpbiwgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJhdGFuIiksIDEsIG1hdGhQcm90b0Z1bmNBVGFuLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFjb3No
IiksIDEsIG1hdGhQcm90b0Z1bmNBQ29zaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhc2luaCIpLCAxLCBtYXRo
UHJvdG9GdW5jQVNpbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYXRhbmgiKSwgMSwgbWF0aFByb3RvRnVuY0FU
YW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImF0YW4yIiksIDIsIG1hdGhQcm90b0Z1bmNBVGFuMiwgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJjYnJ0IiksIDEsIG1hdGhQcm90b0Z1bmNDYnJ0LCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNlaWwi
KSwgMSwgbWF0aFByb3RvRnVuY0NlaWwsIENlaWxJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb3MiKSwgMSwgbWF0aFBy
b3RvRnVuY0NvcywgQ29zSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQ29zaCwg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJleHAiKSwgMSwgbWF0aFByb3RvRnVuY0V4cCwgRXhwSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
ZXhwbTEiKSwgMSwgbWF0aFByb3RvRnVuY0V4cG0xLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImZsb29yIiksIDEs
IG1hdGhQcm90b0Z1bmNGbG9vciwgRmxvb3JJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJmcm91bmQiKSwgMSwgbWF0aFBy
b3RvRnVuY0Zyb3VuZCwgRlJvdW5kSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaHlwb3QiKSwgMiwgbWF0aFByb3RvRnVu
Y0h5cG90LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImxvZyIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nLCBMb2dJbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJsb2cxMCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMTAsIE5vSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibG9n
MXAiKSwgMSwgbWF0aFByb3RvRnVuY0xvZzFwLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImxvZzIiKSwgMSwgbWF0
aFByb3RvRnVuY0xvZzIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibWF4IiksIDIsIG1hdGhQcm90b0Z1bmNNYXgs
IE1heEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgIm1pbiIpLCAyLCBtYXRoUHJvdG9GdW5jTWluLCBNaW5JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJwb3ciKSwgMiwgbWF0aFByb3RvRnVuY1BvdywgUG93SW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicmFuZG9tIiksIDAs
IG1hdGhQcm90b0Z1bmNSYW5kb20sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicm91bmQiKSwgMSwgbWF0aFByb3Rv
RnVuY1JvdW5kLCBSb3VuZEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInNpZ24iKSwgMSwgbWF0aFByb3RvRnVuY1NpZ24s
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAic2luIiksIDEsIG1hdGhQcm90b0Z1bmNTaW4sIFNpbkludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
InNpbmgiKSwgMSwgbWF0aFByb3RvRnVuY1NpbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAic3FydCIpLCAxLCBt
YXRoUHJvdG9GdW5jU3FydCwgU3FydEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Cisg
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRhbiIpLCAxLCBtYXRoUHJvdG9GdW5j
VGFuLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgInRhbmgiKSwgMSwgbWF0aFByb3RvRnVuY1RhbmgsIE5vSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAidHJ1bmMiKSwgMSwgbWF0aFByb3RvRnVuY1RydW5jLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImltdWwi
KSwgMSwgbWF0aFByb3RvRnVuY0lNdWwsIElNdWxJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggM2NmZTk0MTE2ZmEwNjFi
Y2I1YTIxMjcxNjVhNGQwMTQ4NDE3MmY1ZC4uOTVhOGRjYTkwOGZhNWI3ZmVhMTU5MTI5NTEwOTE3
MjQzYWI3YzAyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlckNvbnN0cnVjdG9yLmNwcApAQCAtNTksMjEgKzU5LDIxIEBAIHZvaWQgTnVtYmVyQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90
b3R5cGUpCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogCi0gICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiRVBTSUxPTiIpLCBqc0Rv
dWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJNQVhfVkFMVUUiKSwganNEb3VibGVOdW1iZXIoMS43
OTc2OTMxMzQ4NjIzMTU3RSszMDgpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTUlO
X1ZBTFVFIiksIGpzRG91YmxlTnVtYmVyKDVFLTMyNCksIERvbnREZWxldGUgfCBEb250RW51bSB8
IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cigmdm0sICJNQVhfU0FGRV9JTlRFR0VSIiksIGpzRG91YmxlTnVtYmVyKDkwMDcxOTkyNTQ3NDA5
OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJNSU5fU0FGRV9JTlRFR0VSIiks
IGpzRG91YmxlTnVtYmVyKC05MDA3MTk5MjU0NzQwOTkxLjApLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXIoJnZtLCAiTkVHQVRJVkVfSU5GSU5JVFkiKSwganNEb3VibGVOdW1iZXIoLXN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnREZWxldGUgfCBEb250RW51bSB8
IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cigmdm0sICJQT1NJVElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFk
T25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZt
LCAiTmFOIiksIGpzTmFOKCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLQot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNGaW5pdGUiKSwgMSwg
bnVtYmVyQ29uc3RydWN0b3JGdW5jSXNGaW5pdGUsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgImlzSW50
ZWdlciIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0ludGVnZXIsIE5vSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVy
KCZ2bSwgImlzTmFOIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzTmFOLCBOb0ludHJpbnNp
YywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRp
Zmllcigmdm0sICJpc1NhZmVJbnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2Fm
ZUludGVnZXIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmds
b2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgInBhcnNlRmxvYXQiKSwgMSwgZ2xvYmFsRnVu
Y1BhcnNlRmxvYXQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgInBhcnNlSW50IiksIDEsIGdsb2JhbEZ1
bmNQYXJzZUludCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkVQ
U0lMT04iKSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjplcHNp
bG9uKCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTUFYX1ZB
TFVFIiksIGpzRG91YmxlTnVtYmVyKDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk1JTl9WQUxVRSIpLCBqc0RvdWJsZU51
bWJlcig1RS0zMjQpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
TUFYX1NBRkVfSU5URUdFUiIpLCBqc0RvdWJsZU51bWJlcig5MDA3MTk5MjU0NzQwOTkxLjApLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTUlOX1NBRkVfSU5URUdF
UiIpLCBqc0RvdWJsZU51bWJlcigtOTAwNzE5OTI1NDc0MDk5MS4wKSwgRG9udERlbGV0ZSB8IERv
bnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk5FR0FUSVZFX0lORklOSVRZIiksIGpzRG91Ymxl
TnVtYmVyKC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiUE9TSVRJVkVfSU5GSU5JVFkiKSwg
anNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwg
RG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk5hTiIpLCBqc05hTigp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisKKyAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzRmluaXRlIiksIDEsIG51bWJl
ckNvbnN0cnVjdG9yRnVuY0lzRmluaXRlLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVt
YmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJpc0ludGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyLCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpc05hTiIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1
bmNJc05hTiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xv
YmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNTYWZlSW50ZWdlciIp
LCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyLCBOb0ludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJwYXJzZUZsb2F0IiksIDEsIGdsb2JhbEZ1bmNQYXJzZUZsb2F0LCBO
b0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwYXJzZUludCIpLCAxLCBnbG9iYWxGdW5j
UGFyc2VJbnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKIH0KIAogLy8gRUNN
QSAxNS43LjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcAppbmRleCA2MDJlNTc1Mjg5ZTE2Y2RjMTZhMGJiYTM0OTc4NWYyZTI3ZWYx
N2RkLi5iZmI1ZjY0N2JjYmQ3ZjlmMmE5YTY4NTgxNGMwMmExM2E4NjM0ZDM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBA
IC0zNCwxMiArMzQsMTQgQEAKICNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKICNpbmNs
dWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgorI2lu
Y2x1ZGUgIlN5bWJvbC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSopOwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3lt
Ym9scyhFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoRXhlY1N0
YXRlKik7CkBAIC04NCwxMyArODYsMTYgQEAKIHsKIH0KIAotdm9pZCBPYmplY3RDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlw
ZSkKK3ZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiT2JqZWN0
Iikuc3RyaW5nKCkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBvYmplY3RQcm90b3R5
cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIC8vIEVDTUEgMTUuMi4zLjEKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAg
ICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBS
ZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisKKyAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5ydW50aW1lRmxhZ3MoKS5pc1N5bWJvbEVuYWJsZWQoKSkKKyAgICAgICAgSlNDX05BVElWRV9G
VU5DVElPTigiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eVN5bWJvbHMsIERvbnRFbnVtLCAxKTsKIH0KIAogYm9vbCBPYmplY3RDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQpAQCAtMjA2LDcg
KzIxMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JH
ZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBuYW1lcyBv
ZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVj
LT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBl
eGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsK
ICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMjE1LDEyICsyMjAsMjkg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGUKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVy
YXRpb24gY2FjaGUuCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIHByb3Bl
cnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CisgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1
bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFz
T2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25N
b2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOworICAgIEpT
QXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBzaXplX3Qg
bnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7CisgICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGlt
cGwgPSBwcm9wZXJ0aWVzW2ldLmltcGwoKTsKKyAgICAgICAgaWYgKGltcGwtPmlzVW5pcXVlKCkp
CisgICAgICAgICAgICBuYW1lcy0+cHVzaChleGVjLCBTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgp
LCBpbXBsKSk7CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZXMpOworfQor
CisvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVz
dGVkIGtleXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICBKU0FycmF5KiBrZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMzMxLDcg
KzM1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JE
ZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9w
ZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3Bl
cnRpZXMpCiB7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAg
ICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blBy
b3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGllcyksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0
aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVz
ID0gcHJvcGVydHlOYW1lcy5zaXplKCk7CiAgICAgVmVjdG9yPFByb3BlcnR5RGVzY3JpcHRvcj4g
ZGVzY3JpcHRvcnM7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbWFya0J1ZmZlcjsKQEAgLTM5
OCw3ICs0MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yU2VhbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24g
cHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhl
eGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURv
bnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1
bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBP
IHdpdGggUC4KQEAgLTQzNSw3ICs0NTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZv
ciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRp
b25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAg
IFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgp
OwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9w
ZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0
IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50
ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDgzLDcgKzUwNSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8s
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZElu
Y2x1ZGVTeW1ib2xzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9p
dGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tH
ZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTUxMyw3ICs1
MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNG
cm96ZW4oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHBy
b3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
Yyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250
RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0
eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0
IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3
aXRoIFAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuaAppbmRleCAxMjUyNzgxYTVlODkwMDY5ZWE3ZDkwMTMwZmYzMWVlOWU5MGQzOGQ1Li5i
YjA2N2IxNTU1ZmUwOTg2MWJlYTQyZDE5MmFhOTZhZjM3YzMwMmI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTMzLDEwICsz
MywxMCBAQCBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAotICAgIHN0
YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQorICAgIHN0YXRpYyBPYmplY3RD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQog
ICAgIHsKICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBPYmplY3RDb25z
dHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0
aW9uKHZtLCBvYmplY3RQcm90b3R5cGUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIGdsb2JhbE9iamVjdCwgb2JqZWN0UHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogICAgIH0KIApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBPYmplY3RDb25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICB9CiAKIHByb3RlY3RlZDoK
LSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgT2JqZWN0UHJvdG90eXBlKik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRl
TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAppbmRl
eCAyMTQxNjQ0NjY0NWM3ZmZmMDNmN2M4MmQxNzg3MzlhZDU2MDhiZjY0Li44NjdiZjU1OTE2NDdm
ZDRmMTJjZWE5MTBjOTczZThjODdmMzZlZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ByaXZhdGVOYW1lLmgKQEAgLTM1LDE5ICszNSwxOSBAQCBjbGFzcyBQcml2YXRlTmFt
ZSB7CiAgICAgUHJpdmF0ZU5hbWUoKQogICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVh
dGVVbmlxdWVFbXB0eSgpKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUo
KSk7Ci0gICAgfQotICAgIFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCi0g
ICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5pbXBs
KCkpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7CiAgICAgfQor
CiAgICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCogdWlkKQogICAgICAgICA6IG1f
aW1wbCh1aWQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAg
ICB9CiAKKyAgICBleHBsaWNpdCBQcml2YXRlTmFtZShjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
KQorICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWUoZGVzY3JpcHRpb24u
aW1wbCgpKSkKKyAgICB7CisgICAgfQorCiAgICAgQXRvbWljU3RyaW5nSW1wbCogdWlkKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KG1faW1wbC5nZXQoKSk7
IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIHVpZCgpID09IG90aGVyLnVpZCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCmluZGV4IDMwNzRjNzJlMTA3MDEzM2I5N2IwM2IxZGZm
NGE0M2RlMTMyZmMwYTYuLjA5NGJkMjVjZWY1OTdmMWFkMmY5YTQ1Y2NmZWIxMTIwMjYzMmFhMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC04
MSw3ICs4MSw3IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAgICAgUHJvcGVydHlOYW1lKEF0b21p
Y1N0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSkKICAgICAgICAgOiBtX2ltcGwocHJvcGVydHlOYW1l
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9pbXBsLT5pc0F0b21pYygpKTsK
KyAgICAgICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9pbXBsLT5pc0F0b21pYygpIHx8IG1faW1wbC0+
aXNVbmlxdWUoKSk7CiAgICAgfQogCiAgICAgUHJvcGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKQEAgLTk0LDcgKzk0LDYgQEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX2ltcGwpOwogICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1Vu
aXF1ZSgpKTsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNBdG9taWMoKSk7CiAgICAgfQogCiAg
ICAgQXRvbWljU3RyaW5nSW1wbCogdWlkKCkgY29uc3QKQEAgLTEwNCwxNCArMTAzLDE0IEBAIGNs
YXNzIFByb3BlcnR5TmFtZSB7CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiBwdWJsaWNOYW1lKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmlzVW5pcXVlKCkgPyBudWxscHRy
IDogbV9pbXBsOworICAgICAgICByZXR1cm4gKCFtX2ltcGwgfHwgbV9pbXBsLT5pc1VuaXF1ZSgp
KSA/IG51bGxwdHIgOiBtX2ltcGw7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90
IE5vdEFuSW5kZXggPSBVSU5UX01BWDsKIAogICAgIHVpbnQzMl90IGFzSW5kZXgoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1faW1wbCA/IHRvVUludDMyRnJvbVN0cmluZ0ltcGwobV9pbXBsKSA6
IE5vdEFuSW5kZXg7CisgICAgICAgIHJldHVybiAobV9pbXBsICYmICFtX2ltcGwtPmlzVW5pcXVl
KCkpID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDogTm90QW5JbmRleDsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKaW5kZXgg
NDQ3NWI4OThhOTc0OTc3Y2U2OGU0NzU5ZGNhZDA2YmQ2YTA0ODM3My4uMjU5MDRkNTcxNGU3M2Y2
ZDVhZTkzMWY2ZjM1ZDUxN2M4YmJkMzFjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcApAQCAtMzEsOSArMzEsOSBAQAogCiB2
b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQoU3RyaW5nSW1wbCogaWRlbnRpZmllcikKIHsKLSAg
ICBBU1NFUlQoIWlkZW50aWZpZXIgfHwgaWRlbnRpZmllciA9PSBTdHJpbmdJbXBsOjplbXB0eSgp
IHx8IGlkZW50aWZpZXItPmlzQXRvbWljKCkpOworICAgIEFTU0VSVCghaWRlbnRpZmllciB8fCAo
IW1fdm0tPnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoaWRlbnRpZmllcikgJiYgKGlkZW50
aWZpZXIgPT0gU3RyaW5nSW1wbDo6ZW1wdHkoKSB8fCBpZGVudGlmaWVyLT5pc0F0b21pYygpIHx8
IGlkZW50aWZpZXItPmlzVW5pcXVlKCkpKSk7CiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsK
LSAgICAgICAgdWludDMyX3QgaW5kZXggPSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcihtX3ZtLCBp
ZGVudGlmaWVyKSkuYXNJbmRleCgpOworICAgICAgICB1aW50MzJfdCBpbmRleCA9IFByb3BlcnR5
TmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlkZW50aWZpZXIpKS5hc0luZGV4KCk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoaW5kZXgsIGluZGV4ID09IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCB8fCBpbmRleCA+PSBtX3ByZXZpb3VzbHlFbnVtZXJhdGVkTGVuZ3RoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
CmluZGV4IDk5NGYwOWM5MDU0MDExZTQxYjIzMzhmOWQwNTA0YjJkNDliZmYzOWEuLjg5ZmNiZGVj
ZjdlODFjZTIzNWQ0YjEwM2U1OTQ2OWM5ODExYTdjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaApAQCAtOTgsNyArOTgsNyBAQCBj
bGFzcyBQcm9wZXJ0eU5hbWVBcnJheSB7CiAgICAgdm9pZCBhZGRLbm93blVuaXF1ZShTdHJpbmdJ
bXBsKiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgbV9zZXQtPmFkZChpZGVudGlmaWVyKTsK
LSAgICAgICAgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5hcHBlbmQoSWRlbnRpZmllciht
X3ZtLCBpZGVudGlmaWVyKSk7CisgICAgICAgIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCku
YXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgaWRlbnRpZmllcikpOwogICAgIH0KIAog
ICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWduZWQgaSkgeyByZXR1cm4gbV9kYXRhLT5w
cm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IDQ1ZTgwZjVjZGMxNWE1NmYyYzY2
MmI1MzRiNWQyZGRkYjViZmU5OTIuLmVlMWQ4YjNmYzY5Zjk0M2I5NGE1MjU5Y2Y3YzE4NmNhYzYz
NzNmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
b25zdHJ1Y3Rvci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAKIAogdm9pZCBSZWdFeHBDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlw
ZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJSZWdF
eHAiKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHJlZ0V4cFByb3Rv
dHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOwogCiAgICAgLy8gRUNNQSAxNS4xMC41LjEgUmVnRXhwLnByb3RvdHlwZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNGQ5ZDBiMjdl
NGQwYzhjOTFmOWZlYjQ1YTFkNTRlNTk1ZDMzZDUxOS4uNTQ5YTNhMmY5YTc0YzNhMWE5ZGM3MDAx
MDQxMmZhNDc5ZDkxYTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuY3BwCkBAIC0xMDUsMjEgKzEwNSwyMSBAQCBib29sIFJlZ0V4cE9iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcgogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQgUmVnRXhw
T2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
KQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAg
IGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFz
ZTo6Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwog
fQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGFzdEluZGV4KTsKICAgICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDU3M2FjZmE1
Y2Q3NjRiMDllZTc1NDNiMzQ3YjQ5YTUxMTFlNzA1MzcuLjhlYTYxMDQ4ZDc0OTdlYWMwNWM5MTEx
YmMxMjY4M2I2Y2Y4MjQ5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBT
ZXRJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5w
cm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBTZXRJdGVyYXRvclByb3Rv
dHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVu
Y0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvck5leHRQcml2YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90b3R5cGVG
dW5jTmV4dCwgRG9udEVudW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCBmODhlYTdjZjk4NjhmNjY4YjhjMmU4ODgxNWZm
NjVjZjM5OTI3YjQ5Li40OTk2ZGEwZWE1MzEzZmQyZTYxZTcxYTZlZjQzODM1MWZhYTNiYWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAg
LTY3LDcgKzY3LDcgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmtleXMsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgc2V0UHJvdG9G
dW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7Ci0g
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVO
YW1lLCBzZXRQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgc2V0UHJvdG9GdW5jS2V5cywg
RG9udEVudW0sIDApOwogCiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRl
cjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMt
PnNpemUuc3RyaW5nKCksIHNldFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNTAwMWJjYzRlMWI3ZTM3OTNlZDI2
ZTE0MjBhODBhNjA0NjhlMTNjNi4uYWIzOTQ5ZTA3ZTMzZTFhMTlmNzUzNTlmMjk5ODFhMjE0OWFm
MGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
Y3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICBpbnQg
c2l6ZSA9IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCk7CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggODY5Y2JjNTdjMjA2OWZhYzI0MTg4ZTEwZjUw
MTU1Y2ZjNWFiZjk3OC4uZmI3MDYzODQwMDNmY2U1Y2E3ZGFlZDJiMGE2NTg5ZjllZmNkN2EzMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC05NDgs
NyArOTQ4LDEzIEBAIHZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVy
ZShWTSYgdm0sIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0CiAgICAgUHJvcGVydHlUYWJsZTo6
aXRlcmF0b3IgZW5kID0gcHJvcGVydHlUYWJsZSgpLT5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5
VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0eVRhYmxlKCktPmJlZ2luKCk7IGl0ZXIgIT0g
ZW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVz
KCkgfHwgIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pKTsKLSAgICAgICAgaWYgKCFpdGVy
LT5rZXktPmlzVW5pcXVlKCkgJiYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBz
aG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSkgeworICAgICAgICBpZiAoIShp
dGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcygpKSB7CisgICAgICAgICAgICBpZiAoaXRlci0+a2V5LT5pc1VuaXF1ZSgpKSB7
CisgICAgICAgICAgICAgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVTeW1ib2xzKCkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmICh2bS5wcm9wZXJ0
eU5hbWVzLT5pc1ByaXZhdGVOYW1lKGl0ZXItPmtleSkpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGtub3duVW5pcXVlKQogICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkS25vd25VbmlxdWUoaXRlci0+a2V5KTsKICAg
ICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbENvbnN0cnVjdG9yLmNwcAppbmRleCA5OWNlNjg2Mjc0ZmQ3NzM5MjhkZGQ1OWZmMWY5Y2Fm
NGVlYmUyMTFlLi5hYTk0ZmEzMWYxYTA5NWJlMzg4NGM0MTc4MDI0NGI3MTg4YjMwMjg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3Iu
Y3BwCkBAIC00NCw3ICs0NCw3IEBACiB9CiAKICNkZWZpbmUgSU5JVElBTElaRV9XRUxMX0tOT1dO
X1NZTUJPTFMobmFtZSkgXAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSMjU3ltYm9sLmltcGwoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
IAogdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTeW1ib2xQ
cm90b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCBjZWIwMjlmOWIzZTJmOTg4ZWU1ODZjMzNkYjg1Y2IxYjQwMWJkMTc1Li45OWUyOGM5MDM1
NTYzODI0MDQyNGZlZjRjNzhmYjg0YTRlNDljYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC02NTksMTAgKzY1OSwxMCBAQCBKU1ZhbHVlIFZNOjp0aHJvd0V4Y2VwdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCiAgICAgICAgIHVuc2lnbmVkIGxpbmU7
CiAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsKICAgICAgICAgc3RhY2tGcmFtZS5jb21wdXRlTGlu
ZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwotICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgq
dGhpcywgSWRlbnRpZmllcih0aGlzLCAibGluZSIpLCBqc051bWJlcihsaW5lKSwgUmVhZE9ubHkg
fCBEb250RGVsZXRlKTsKLSAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50
aWZpZXIodGhpcywgImNvbHVtbiIpLCBqc051bWJlcihjb2x1bW4pLCBSZWFkT25seSB8IERvbnRE
ZWxldGUpOworICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh0aGlzLCAibGluZSIpLCBqc051bWJlcihsaW5lKSwgUmVhZE9ubHkgfCBEb250
RGVsZXRlKTsKKyAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodGhpcywgImNvbHVtbiIpLCBqc051bWJlcihjb2x1bW4pLCBSZWFkT25seSB8
IERvbnREZWxldGUpOwogICAgICAgICBpZiAoIXN0YWNrRnJhbWUuc291cmNlVVJMLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyKHRo
aXMsICJzb3VyY2VVUkwiKSwganNTdHJpbmcodGhpcywgc3RhY2tGcmFtZS5zb3VyY2VVUkwpLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3Qo
KnRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodGhpcywgInNvdXJjZVVSTCIpLCBqc1N0cmlu
Zyh0aGlzLCBzdGFja0ZyYW1lLnNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAg
ICAgfQogICAgIGlmIChleGNlcHRpb24tPmlzRXJyb3JJbnN0YW5jZSgpICYmIHN0YXRpY19jYXN0
PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb24pLT5hcHBlbmRTb3VyY2VUb01lc3NhZ2UoKSkgewog
ICAgICAgICBGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yIGZ1bmN0b3Io
ZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL29i
amVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDBlOTNkOGIyNDc5ZGU5MmFkOTYwZTc1YjQyZTc5MWZkOTI1ZjE2NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24t
cHJvcGVydHktc3ltYm9scy5qcwpAQCAtMCwwICsxLDM1IEBACisvLyBUaGlzIHRlc3RzIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMuCisKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVy
biB0aGlzIikoKSk7CisKKy8vIHByaXZhdGUgbmFtZXMgZm9yIHByaXZpbGVnZWQgY29kZSBzaG91
bGQgbm90IGJlIGV4cG9zZWQuCitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhnbG9i
YWwpLmxlbmd0aCAhPT0gMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgT2JqZWN0
LmdldE93blByb3BlcnR5U3ltYm9scyhnbG9iYWwpLmxlbmd0aDsKKwordmFyIG9iamVjdCA9IHt9
OwordmFyIHN5bWJvbCA9IFN5bWJvbCgiQ29jb2EiKTsKK29iamVjdFtzeW1ib2xdID0gIkNhcHB1
Y2Npbm8iOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoICE9
PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QpLmxlbmd0aDsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
KG9iamVjdCkubGVuZ3RoICE9PSAxKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSAhPT0gc3ltYm9sKQorICAgIHRocm93ICJF
cnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhv
YmplY3QpWzBdKTsKKworZnVuY3Rpb24gZm9ySW4ob2JqKSB7CisgICAgdmFyIGFycmF5ID0gW107
CisgICAgLy8gU3ltYm9sIHNob3VsZCBub3QgYmUgZW51bWVyYXRlZC4KKyAgICBmb3IgKHZhciBr
ZXkgaW4gb2JqKSBhcnJheS5wdXNoKGtleSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCitpZiAo
Zm9ySW4ob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUg
IiArIGZvckluKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3Ro
ICE9PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3Qua2V5cyhvYmpl
Y3QpLmxlbmd0aDsKKworZGVsZXRlIG9iamVjdFtzeW1ib2xdOworaWYgKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFk
IHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aDsKK2lm
IChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoICE9PSAwKQorICAg
IHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
KG9iamVjdCkubGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYzNl
YzA1ZjgwNmUzNzI1NzczNjI0ODI2MTk4MTUyMzBiNmIzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHku
anMKQEAgLTAsMCArMSwzMyBAQAorLy8gVGhpcyB0ZXN0cyBPYmplY3QuY3JlYXRlLCBPYmplY3Qu
ZGVmaW5lUHJvcGVydHksIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIHdvcmsgd2l0aCBTeW1ib2wu
CisKK2Z1bmN0aW9uIHRlc3RTeW1ib2wob2JqZWN0KSB7CisgICAgaWYgKCFvYmplY3QuaGFzT3du
UHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBvYmplY3Qg
ZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVyYXRvciI7CisgICAgaWYgKG9iamVjdC5wcm9wZXJ0eUlz
RW51bWVyYWJsZShTeW1ib2wuaXRlcmF0b3IpKQorICAgICAgICB0aHJvdyAiRXJyb3I6IFN5bWJv
bC5pdGVyYXRvciBpcyBkZWZpbmVkIGFzIGVudW1lcmFibGUiOworICAgIGlmIChKU09OLnN0cmlu
Z2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJh
dG9yKSkgIT09ICd7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjpmYWxz
ZSwiY29uZmlndXJhYmxlIjpmYWxzZX0nKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBwcm9w
ZXJ0eSBkZXNjcmlwdG9yICIgKyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSk7CisgICAgaWYgKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggIT09IDEpCisgICAgdGhyb3cgIkVycm9y
OiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5n
dGg7CisgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSAhPT0g
U3ltYm9sLml0ZXJhdG9yKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgU3Ry
aW5nKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSk7Cit9CisKK3ZhciBv
YmplY3QgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5wcm90b3R5cGUsIHsKKyAgICBbU3ltYm9sLml0
ZXJhdG9yXTogeworICAgICAgICB2YWx1ZTogNDIKKyAgICB9Cit9KTsKK3Rlc3RTeW1ib2wob2Jq
ZWN0KTsKKwordmFyIG9iamVjdCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHt9LCB7CisgICAg
W1N5bWJvbC5pdGVyYXRvcl06IHsKKyAgICAgICAgdmFsdWU6IDQyCisgICAgfQorfSk7Cit0ZXN0
U3ltYm9sKG9iamVjdCk7CisKK3ZhciBvYmplY3QgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30s
IFN5bWJvbC5pdGVyYXRvciwgeworICAgIHZhbHVlOiA0MgorfSk7Cit0ZXN0U3ltYm9sKG9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJv
bC1zZWFsLWFuZC1mcmVlemUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY1MDdjZDllZTUzYzUxYjJj
MjE5YzcyOGM0ZDNjNTVlZGQ3N2M1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qcwpAQCAtMCwwICsx
LDI2IEBACisvLyBUaGlzIHRlc3RzIE9iamVjdC5zZWFsIGFuZCBPYmplY3QuZnJlZXplIGFmZmVj
dCBvbiBTeW1ib2wgcHJvcGVydGllcy4KKwordmFyIG9iamVjdCA9IHsKKyAgICBbU3ltYm9sLml0
ZXJhdG9yXTogNDIKK307CisKK2lmICghb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVy
YXRvcikpCisgICAgdGhyb3cgIkVycm9yOiBvYmplY3QgZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVy
YXRvciI7CitpZiAoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpICE9PSAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjp0
cnVlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOnRydWV9JykKKyAgICB0aHJvdyAi
RXJyb3I6IGJhZCBwcm9wZXJ0eSBkZXNjcmlwdG9yICIgKyBKU09OLnN0cmluZ2lmeShPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSk7CitpZiAo
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCAhPT0gMSkKKyAgICB0
aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhv
YmplY3QpLmxlbmd0aDsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClb
MF0gIT09IFN5bWJvbC5pdGVyYXRvcikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsg
U3RyaW5nKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSk7CisKK09iamVj
dC5zZWFsKG9iamVjdCk7CitpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0
b3IpKQorICAgIHRocm93ICJFcnJvcjogb2JqZWN0IGRvZXNuJ3QgaGF2ZSBTeW1ib2wuaXRlcmF0
b3IiOworaWYgKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAhPT0gJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6dHJ1
ZSwiZW51bWVyYWJsZSI6dHJ1ZSwiY29uZmlndXJhYmxlIjpmYWxzZX0nKQorICAgIHRocm93ICJF
cnJvcjogYmFkIHByb3BlcnR5IGRlc2NyaXB0b3IgIiArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKTsKKworT2Jq
ZWN0LmZyZWV6ZShvYmplY3QpOworaWYgKCFvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0
ZXJhdG9yKSkKKyAgICB0aHJvdyAiRXJyb3I6IG9iamVjdCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0
ZXJhdG9yIjsKK2lmIChKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgIT09ICd7InZhbHVlIjo0Miwid3JpdGFibGUi
OmZhbHNlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOmZhbHNlfScpCisgICAgdGhy
b3cgIkVycm9yOiBiYWQgcHJvcGVydHkgZGVzY3JpcHRvciAiICsgSlNPTi5zdHJpbmdpZnkoT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtd2l0
aC1qc29uLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtd2l0
aC1qc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMDNkNWQ1YTExZDQ4MmFhZjYwMzhjYzBhNDdmOTcxOWM1
ZDlmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3N5bWJvbC13aXRoLWpzb24uanMKQEAgLTAsMCArMSwxNCBAQAorLy8gVGhpcyB0ZXN0cyBK
U09OIGNvcnJlY3RseSBiZWhhdmVzIHdpdGggU3ltYm9sLgorCitpZiAoSlNPTi5zdHJpbmdpZnko
U3ltYm9sKCdDb2NvYScpKSAhPT0gdW5kZWZpbmVkKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZh
bHVlICIgKyBKU09OLnN0cmluZ2lmeShTeW1ib2woJ0NvY29hJykpOworCit2YXIgb2JqZWN0ID0g
e307Cit2YXIgc3ltYm9sID0gU3ltYm9sKCJDb2NvYSIpOworb2JqZWN0W3N5bWJvbF0gPSA0MjsK
K29iamVjdFsnQ2FwcHVjY2lubyddID0gNDI7CitpZiAoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSAh
PT0gJ3siQ2FwcHVjY2lubyI6NDJ9JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsg
SlNPTi5zdHJpbmdpZnkob2JqZWN0KTsKKworaWYgKEpTT04uc3RyaW5naWZ5KG9iamVjdCwgWyBT
eW1ib2woJ0NvY29hJykgXSkgIT09ICJ7fSIpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUg
IiArIEpTT04uc3RyaW5naWZ5KG9iamVjdCwgWyBTeW1ib2woJ0NvY29hJykgXSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggMDYyOTBjMjRlNDczZDNlOTY1YjQ1MDQwMDBh
NjNhMmE3MjAwOGY1Yy4uOWYxMzBlZGNmMjhjYmYyZjVmMGExMDU4NzE3MDE2MWI0MTIxMGZjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtNDAzLDYgKzQwMyw5IEBAIHN0
cnVjdCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvciB7CiAgICAgaWYgKCFzdHJp
bmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAqU3RyaW5nSW1wbDo6ZW1wdHkoKTsKIAorICAg
IGlmIChzdHJpbmcuaXNVbmlxdWUoKSkKKyAgICAgICAgcmV0dXJuIGFkZChzdHJpbmcuZXh0cmFj
dEZvbGRlZFN0cmluZ0luVW5pcXVlKCkpOworCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3Ry
aW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJpbmcgc2hvdWxkIG5vdCBoaXQgdGhlIHNsb3cgY2Fz
ZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkgYXRvbWljLiIpOwogCiAgICAgQXRvbWljU3RyaW5n
VGFibGVMb2NrZXIgbG9ja2VyOwpAQCAtNDIxLDYgKzQyNCw5IEBAIHN0cnVjdCBDaGFyQnVmZmVy
RnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvciB7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAg
ICAgICAgIHJldHVybiAqU3RyaW5nSW1wbDo6ZW1wdHkoKTsKIAorICAgIGlmIChzdHJpbmcuaXNV
bmlxdWUoKSkKKyAgICAgICAgcmV0dXJuIGFkZChzdHJpbmdUYWJsZSwgc3RyaW5nLmV4dHJhY3RG
b2xkZWRTdHJpbmdJblVuaXF1ZSgpKTsKKwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmlu
Zy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2Ug
aWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGF0b21pYy4iKTsKIAogICAgIEF0b21pY1N0cmluZ1Rh
YmxlTG9ja2VyIGxvY2tlcjsKQEAgLTUwMyw2ICs1MDksMTIgQEAgQXRvbWljU3RyaW5nSW1wbCog
QXRvbWljU3RyaW5nOjpmaW5kU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQogewogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5nSW1wbHMg
c2hvdWxkIHJldHVybiBmcm9tIHRoZSBmYXN0IGNhc2UuIik7CiAKKyAgICBpZiAoIXN0cmluZy5s
ZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihT
dHJpbmdJbXBsOjplbXB0eSgpKTsKKworICAgIGlmIChzdHJpbmcuaXNVbmlxdWUoKSkKKyAgICAg
ICAgcmV0dXJuIGZpbmQoJnN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5VbmlxdWUoKSk7CisK
ICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CiAgICAgSGFzaFNldDxTdHJpbmdJ
bXBsKj4mIGF0b21pY1N0cmluZ1RhYmxlID0gc3RyaW5nVGFibGUoKTsKICAgICBhdXRvIGl0ZXJh
dG9yID0gYXRvbWljU3RyaW5nVGFibGUuZmluZCgmc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oCmluZGV4IGJhZTlkMzYyZDI3NTFlNWE3M2NlMGIxYjdlMmE0MTFiMDE4MzdmMzMu
LjYwOWNmNzMxZDI3YmZjMDY3OGQ2YzY5ODNjNGNiMDhiNmEyMjkxM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuaApAQCAtMTgzLDExICsxODMsOSBAQCBjbGFzcyBBdG9taWNTdHJpbmcg
ewogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFk
ZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCogc3Ry
aW5nKQogICAgIHsKLSAgICAgICAgaWYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKSB7
Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcgfHwgIXN0cmluZy0+bGVu
Z3RoKCkgfHwgc3RyaW5nLT5pc1VuaXF1ZSgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJp
bmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7Cisg
ICAgICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoKnN0cmluZyk7CisgICAgICAgIHJldHVybiBh
ZGQoKnN0cmluZyk7CiAgICAgfQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGFkZEZyb21MaXRlcmFsRGF0YShjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpOwogI2lmIFVTRShDRikKQEAgLTE5NywxMSArMTk1LDkgQEAgY2xhc3Mg
QXRvbWljU3RyaW5nIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUYWJsZVByb3ZpZGVy
PgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGRXaXRoU3Ry
aW5nVGFibGVQcm92aWRlcihTdHJpbmdUYWJsZVByb3ZpZGVyJiBzdHJpbmdUYWJsZVByb3ZpZGVy
LCBTdHJpbmdJbXBsKiBzdHJpbmcpCiAgICAgewotICAgICAgICBpZiAoIXN0cmluZyB8fCBzdHJp
bmctPmlzQXRvbWljKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmlu
ZyB8fCAhc3RyaW5nLT5sZW5ndGgoKSB8fCBzdHJpbmctPmlzVW5pcXVlKCkgfHwgaXNJbkF0b21p
Y1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90
aGVyIHRocmVhZCEiKTsKKyAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4g
c3RyaW5nOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhZGRTbG93Q2FzZSgqc3RyaW5nVGFi
bGVQcm92aWRlci5hdG9taWNTdHJpbmdUYWJsZSgpLCAqc3RyaW5nKTsKKyAgICAgICAgcmV0dXJu
IGFkZCgqc3RyaW5nVGFibGVQcm92aWRlci5hdG9taWNTdHJpbmdUYWJsZSgpLCAqc3RyaW5nKTsK
ICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0yMTMsNyArMjA5LDI1IEBAIGNsYXNz
IEF0b21pY1N0cmluZyB7CiAgICAgQXRvbWljU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7CiAKICAgICBT
dHJpbmcgbV9zdHJpbmc7Ci0gICAgCisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmIChzdHJp
bmcuaXNBdG9taWMoKSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5n
Lmxlbmd0aCgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZSgmc3RyaW5nKSwgIlRoZSBhdG9taWMg
c3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICAgICAgcmV0dXJu
IHN0cmluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3RyaW5nKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKEF0
b21pY1N0cmluZ1RhYmxlJiBzdHJpbmdUYWJsZSwgU3RyaW5nSW1wbCYgc3RyaW5nKQorICAgIHsK
KyAgICAgICAgaWYgKHN0cmluZy5pc0F0b21pYygpKSB7CisgICAgICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgaXNJbkF0b21pY1N0cmluZ1RhYmxlKCZzdHJp
bmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7Cisg
ICAgICAgICAgICByZXR1cm4gc3RyaW5nOworICAgICAgICB9CisgICAgICAgIHJldHVybiBhZGRT
bG93Q2FzZShzdHJpbmdUYWJsZSwgc3RyaW5nKTsKKyAgICB9CisKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsJik7
CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkU2xv
d0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmLCBTdHJpbmdJbXBsJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwCmluZGV4IGMyNDlmNGQ3ZmZkNWRhYmVlMTY0MDY0YTYyMTkyNGRjZjM0NTdk
YzguLmQzOWRkNTM0NTc5ZTA3YjVhNTMyMDdjYjEwN2QyMWFhY2NhNWI4ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMjkyLDYgKzI5Miw3IEBAIHZvaWQgU3RyaW5nSW1wbDo6
ZGVzdHJveShTdHJpbmdJbXBsKiBzdHJpbmdJbXBsKQogICAgIGlmICghbGVuZ3RoKQogICAgICAg
ICByZXR1cm4gY3JlYXRlVW5pcXVlRW1wdHkoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gc3RyaW5n
ID0gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwocmVwLCAwLCBsZW5ndGgpOworICAgIEFTU0VS
VCghc3RyaW5nLT5pc0F0b21pYygpKTsKICAgICBzdHJpbmctPm1faGFzaEFuZEZsYWdzID0gaGFz
aEFuZEZsYWdzRm9yVW5pcXVlKHN0cmluZy0+bV9oYXNoQW5kRmxhZ3MpOwogICAgIHJldHVybiBz
dHJpbmc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDI2NmI5N2U0Yzg4NjY3YmYx
NDYwZTdiOTFiYjA1MWM0YmE1Mzg5N2IuLjdjNTVhMjlkODk2ZDg3ZDgyNjM1OWVkNDI3NTVmNTE1
ODFjMWExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC0xNDEsNiArMTQxLDI1IEBA
IGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICBCdWZmZXJTdWJzdHJpbmcsCiAgICAgfTsKIAor
ICAgIC8vIFRoZSBib3R0b20gNiBiaXRzIGluIHRoZSBoYXNoIGFyZSBmbGFncy4KKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19mbGFnQ291bnQgPSA2OworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX2ZsYWdNYXNrID0gKDF1IDw8IHNfZmxhZ0NvdW50KSAtIDE7CisgICAgQ09NUElMRV9B
U1NFUlQoc19mbGFnQ291bnQgPD0gU3RyaW5nSGFzaGVyOjpmbGFnQ291bnQsIFN0cmluZ0hhc2hl
cl9yZXNlcnZlc19lbm91Z2hfYml0c19mb3JfU3RyaW5nSW1wbF9mbGFncyk7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNfZmxhZ1N0cmluZ0tpbmRDb3VudCA9IDQ7CisKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYyA9IDF1IDw8IChzX2Zs
YWdTdHJpbmdLaW5kQ291bnQpOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFn
U3RyaW5nS2luZElzVW5pcXVlID0gMXUgPDwgKHNfZmxhZ1N0cmluZ0tpbmRDb3VudCArIDEpOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hNYXNrU3RyaW5nS2luZCA9IHNfaGFzaEZs
YWdTdHJpbmdLaW5kSXNBdG9taWMgfCBzX2hhc2hGbGFnU3RyaW5nS2luZElzVW5pcXVlOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9IDF1IDw8IDM7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0ID0gMXUgPDwg
MjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoTWFza0J1ZmZlck93bmVyc2hpcCA9
ICgxdSA8PCAwKSB8ICgxdSA8PCAxKTsKKworICAgIGVudW0gU3RyaW5nS2luZCB7CisgICAgICAg
IFN0cmluZ05vcm1hbCA9IDB1LCAvLyBub24tdW5pcXVlLCBub24tYXRvbWljCisgICAgICAgIFN0
cmluZ0F0b21pYyA9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWMsIC8vIG5vbi11bmlxdWUs
IGF0b21pYworICAgICAgICBTdHJpbmdVbmlxdWUgPSBzX2hhc2hGbGFnU3RyaW5nS2luZElzVW5p
cXVlLCAvLyB1bmlxdWUsIG5vbi1hdG9taWMKKyAgICB9OworCiAgICAgLy8gVXNlZCB0byBjb25z
dHJ1Y3Qgc3RhdGljIHN0cmluZ3MsIHdoaWNoIGhhdmUgYW4gc3BlY2lhbCByZWZDb3VudCB0aGF0
IGNhbiBuZXZlciBoaXQgemVyby4KICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIHN0YXRpYyBz
dHJpbmcgd2lsbCBuZXZlciBiZSBkZXN0cm95ZWQsIHdoaWNoIGlzIGltcG9ydGFudCBiZWNhdXNl
CiAgICAgLy8gc3RhdGljIHN0cmluZ3Mgd2lsbCBiZSBzaGFyZWQgYWNyb3NzIHRocmVhZHMgJiBy
ZWYtY291bnRlZCBpbiBhIG5vbi10aHJlYWRzYWZlIG1hbm5lci4KQEAgLTE1MCw3ICsxNjksNyBA
QCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRGbGFn
SXNTdGF0aWNTdHJpbmcpCiAgICAgICAgICwgbV9sZW5ndGgoMCkKICAgICAgICAgLCBtX2RhdGE4
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9sZW5ndGgpKQotICAgICAgICAsIG1f
aGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgc19oYXNoRmxhZ0lzQXRvbWljIHwg
QnVmZmVyT3duZWQpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBTdHJpbmdBdG9taWMgfCBCdWZmZXJPd25lZCkKICAgICB7CiAgICAgICAgIC8vIEVuc3Vy
ZSB0aGF0IHRoZSBoYXNoIGlzIGNvbXB1dGVkIHNvIHRoYXQgQXRvbWljU3RyaW5nSGFzaCBjYW4g
Y2FsbCBleGlzdGluZ0hhc2goKQogICAgICAgICAvLyB3aXRoIGltcHVuaXR5LiBUaGUgZW1wdHkg
c3RyaW5nIGlzIHNwZWNpYWwgYmVjYXVzZSBpdCBpcyBuZXZlciBlbnRlcmVkIGludG8KQEAgLTE2
Nyw3ICsxODYsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNf
cmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAs
IG1fZGF0YTgodGFpbFBvaW50ZXI8TENoYXI+KCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Mo
c19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hhc2hB
bmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVy
bmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwogICAgICAgICBBU1NFUlQobV9s
ZW5ndGgpOwpAQCAtMTgwLDcgKzE5OSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6
IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCiAgICAgICAgICwgbV9kYXRhMTYodGFpbFBvaW50ZXI8VUNoYXI+KCkpCi0gICAgICAgICwg
bV9oYXNoQW5kRmxhZ3MoQnVmZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Mo
U3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9k
YXRhMTYpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMTkzLDcgKzIxMiw3IEBAIGNs
YXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVu
dCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0
ZXJzLmxlYWtQdHIoKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1
ZmZlciB8IEJ1ZmZlck93bmVkKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4
Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9kYXRhOCk7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0yMDYsNyArMjI1
LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50
SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGEx
NihjaGFyYWN0ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlckludGVybmFsKQor
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3Ro
KTsKQEAgLTIxOCw3ICsyMzcsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3Jl
ZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQog
ICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhz
X2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKQorICAgICAgICAsIG1faGFzaEFu
ZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJu
YWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAgICAgICAgIEFTU0VSVChtX2xl
bmd0aCk7CkBAIC0yMzEsNyArMjUwLDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDog
bV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKICAgICAgICAgLCBtX2RhdGExNihjaGFyYWN0ZXJzLmxlYWtQdHIoKSkKLSAgICAgICAgLCBt
X2hhc2hBbmRGbGFncyhCdWZmZXJPd25lZCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhTdHJp
bmdOb3JtYWwgfCBCdWZmZXJPd25lZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7
CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0yNDQsNyArMjYzLDcgQEAgY2xhc3MgU3Ry
aW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAg
ICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMpCi0g
ICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJTdWJz
dHJpbmcpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBT
dHJpbmdOb3JtYWwgfCBCdWZmZXJTdWJzdHJpbmcpCiAgICAgewogICAgICAgICBBU1NFUlQoaXM4
Qml0KCkpOwogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CkBAIC0yNjEsNyArMjgwLDcgQEAgY2xh
c3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50
KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGExNihjaGFyYWN0
ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlclN1YnN0cmluZykKKyAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJTdWJzdHJpbmcpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIWlzOEJpdCgpKTsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKQEAg
LTI3Myw4ICsyOTIsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgU1RSSU5HX1NUQVRT
X0FERF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKICAgICB9CiAKLSAgICBlbnVtIENy
ZWF0ZUVtcHR5VW5pcXVlVGFnIHsgQ3JlYXRlRW1wdHlVbmlxdWUgfTsKLSAgICBTdHJpbmdJbXBs
KENyZWF0ZUVtcHR5VW5pcXVlVGFnKQorICAgIGVudW0gQ3JlYXRlVW5pcXVlRW1wdHlUYWcgeyBD
cmVhdGVVbmlxdWVFbXB0eSB9OworICAgIFN0cmluZ0ltcGwoQ3JlYXRlVW5pcXVlRW1wdHlUYWcp
CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1f
bGVuZ3RoKDApCiAgICAgICAgIC8vIFdlIGV4cGVjdCBtX2xlbmd0aCB0byBiZSBpbml0aWFsaXpl
ZCB0byAwIGFzIHdlIHVzZSBpdApAQCAtMzgwLDcgKzM5OSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwg
ewogCiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaXF1
ZUVtcHR5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwo
Q3JlYXRlRW1wdHlVbmlxdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5n
SW1wbChDcmVhdGVVbmlxdWVFbXB0eSkpOwogICAgIH0KIAogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaXF1ZShQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHJlcCk7CkBAIC0zOTMsOCArNDEyLDkgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAg
ICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
U3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJ
czhCaXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQotICAgIHN0YXRpYyB1bnNp
Z25lZCBmbGFnSXNBdG9taWMoKSB7IHJldHVybiBzX2hhc2hGbGFnSXNBdG9taWM7IH0KLSAgICBz
dGF0aWMgdW5zaWduZWQgZmxhZ0lzVW5pcXVlKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzVW5pcXVl
OyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc0F0b21pYygpIHsgcmV0dXJuIHNfaGFzaEZs
YWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzVW5pcXVl
KCkgeyByZXR1cm4gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1VuaXF1ZTsgfQorICAgIHN0YXRpYyB1
bnNpZ25lZCBtYXNrU3RyaW5nS2luZCgpIHsgcmV0dXJuIHNfaGFzaE1hc2tTdHJpbmdLaW5kOyB9
CiAgICAgc3RhdGljIHVuc2lnbmVkIGRhdGFPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoU3RyaW5nSW1wbCwgbV9kYXRhOCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJU
eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KQEAg
LTQ1NCwxNyArNDc0LDIxIEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0OwogCi0gICAgYm9vbCBpc1VuaXF1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0lzVW5pcXVlOyB9
CisgICAgU3RyaW5nS2luZCBzdHJpbmdLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
U3RyaW5nS2luZD4obV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hNYXNrU3RyaW5nS2luZCk7IH0KKyAg
ICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hG
bGFnU3RyaW5nS2luZElzVW5pcXVlOyB9CisgICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsgfQogCi0g
ICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNo
RmxhZ0lzQXRvbWljOyB9CiAgICAgdm9pZCBzZXRJc0F0b21pYyhib29sIGlzQXRvbWljKQogICAg
IHsKICAgICAgICAgQVNTRVJUKCFpc1N0YXRpYygpKTsKICAgICAgICAgQVNTRVJUKCFpc1VuaXF1
ZSgpKTsKLSAgICAgICAgaWYgKGlzQXRvbWljKQotICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3Mg
fD0gc19oYXNoRmxhZ0lzQXRvbWljOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2hhc2hB
bmRGbGFncyAmPSB+c19oYXNoRmxhZ0lzQXRvbWljOworICAgICAgICBpZiAoaXNBdG9taWMpIHsK
KyAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9t
aWM7CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5nS2luZCgpID09IFN0cmluZ0F0b21pYyk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxh
Z1N0cmluZ0tpbmRJc0F0b21pYzsKKyAgICAgICAgICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0g
U3RyaW5nTm9ybWFsKTsKKyAgICAgICAgfQogICAgIH0KIAogI2lmIFNUUklOR19TVEFUUwpAQCAt
NzA2LDYgKzczMCwxNiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgY29uc3QgVUNoYXIgbGF0aW4xQ2FzZUZvbGRUYWJsZVsyNTZdOwogCisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZ0ltcGwmIGV4dHJhY3RGb2xkZWRTdHJpbmdJ
blVuaXF1ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoKCkpOworICAgICAgICBBU1NF
UlQoaXNVbmlxdWUoKSk7CisgICAgICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZm
ZXJTdWJzdHJpbmcpOworICAgICAgICBBU1NFUlQoc3Vic3RyaW5nQnVmZmVyKCkpOworICAgICAg
ICBBU1NFUlQoIXN1YnN0cmluZ0J1ZmZlcigpLT5pc1VuaXF1ZSgpKTsKKyAgICAgICAgcmV0dXJu
ICpzdWJzdHJpbmdCdWZmZXIoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJl
c0NvcHkoKSBjb25zdAogICAgIHsKQEAgLTc3OCwxNyArODEyLDYgQEAgY2xhc3MgU3RyaW5nSW1w
bCB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJp
bmcgPSAweDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRJbmNyZW1lbnQg
PSAweDI7IC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlZiAvIGRlcmVmIHdpdGhvdXQgZGlzdHVyYmlu
ZyB0aGUgc3RhdGljIHN0cmluZyBmbGFnLgogCi0gICAgLy8gVGhlIGJvdHRvbSA3IGJpdHMgaW4g
dGhlIGhhc2ggYXJlIGZsYWdzLgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3Vu
dCA9IDc7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19m
bGFnQ291bnQpIC0gMTsKLSAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJpbmdI
YXNoZXI6OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zvcl9T
dHJpbmdJbXBsX2ZsYWdzKTsKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFn
SXNVbmlxdWUgPSAxdSA8PCA2OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFn
OEJpdEJ1ZmZlciA9IDF1IDw8IDU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZs
YWdJc0F0b21pYyA9IDF1IDw8IDQ7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZs
YWdEaWRSZXBvcnRDb3N0ID0gMXUgPDwgMzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19o
YXNoTWFza0J1ZmZlck93bmVyc2hpcCA9IDF1IHwgKDF1IDw8IDEpOwotCiAjaWYgU1RSSU5HX1NU
QVRTCiAgICAgV1RGX0VYUE9SVERBVEEgc3RhdGljIFN0cmluZ1N0YXRzIG1fc3RyaW5nU3RhdHM7
CiAjZW5kaWYKQEAgLTgwMyw3ICs4MjYsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgICAg
ICAvLyBUaGVzZSB2YWx1ZXMgbWltaWMgQ29uc3RydWN0RnJvbUxpdGVyYWwuCiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxSZWZDb3VudCA9IHNfcmVmQ291bnRJbmNyZW1l
bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9IHNfaGFz
aEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWw7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9IHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9y
bWFsIHwgQnVmZmVySW50ZXJuYWw7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hh
c2hTaGlmdCA9IHNfZmxhZ0NvdW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0
YXRpY3MuY3BwCmluZGV4IDY1YmI2NzIxZDc0M2ZhMTA0MWMyOTJiNjBmNGQwMzI5MjgzZDhlNTEu
LmI5OWM3YmFjM2RlZWM3ODY2ZDUzNDU3MjFhNjA1ZjcxNmUwMWU5NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdTdGF0aWNzLmNwcApAQCAtNTcsNyArNTcsNyBAQCB1bnNpZ25lZCBTdHJpbmdJ
bXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUodW5zaWduZWQgZmxhZ3MpCiAgICAgc3RhdGljIHVu
c2lnbmVkIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSA9IDA7CiAgICAgc19uZXh0SGFzaEFu
ZEZsYWdzRm9yVW5pcXVlICs9IDEgPDwgc19mbGFnQ291bnQ7CiAgICAgc19uZXh0SGFzaEFuZEZs
YWdzRm9yVW5pcXVlIHw9IDEgPDwgMzE7Ci0gICAgdW5zaWduZWQgZmxhZ3NGb3JVbmlxdWUgPSAo
ZmxhZ3MgJiBzX2ZsYWdNYXNrKSB8IHNfaGFzaEZsYWdJc0F0b21pYyB8IHNfaGFzaEZsYWdJc1Vu
aXF1ZTsKKyAgICB1bnNpZ25lZCBmbGFnc0ZvclVuaXF1ZSA9ICgoZmxhZ3MgJiBzX2ZsYWdNYXNr
KSAmICh+c19oYXNoTWFza1N0cmluZ0tpbmQpKSB8IFN0cmluZ1VuaXF1ZTsKICAgICByZXR1cm4g
c19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlIHwgZmxhZ3NGb3JVbmlxdWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQppbmRleCA3ZWE3Y2JhYWE3ZTdmZTc3YmYwMjkyNzZmZGNhN2EyNjM1
OWIxMDRmLi5hYzc0ZmY2MTIyZmQ5NjkyNGRmMzQzM2M5MzNhN2Y3YzYzYzllOTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgpCiAgICAgSlND
OjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIAotICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNl
bWVudEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4
ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVwbGFj
ZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7CiAgICAgaWYgKHJl
cGxhY2VtZW50RnVuY3Rpb24uaXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojpp
bnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9vdCkKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOwogICAgIAogICAgIC8vIExvb2t1cCB0aGUgImNyZWF0ZVBsdWdpblJlcGxh
Y2VtZW50IiBmdW5jdGlvbi4KLSAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5jdGlvbiA9
IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlUGx1
Z2luUmVwbGFjZW1lbnQiKSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50RnVuY3Rpb24g
PSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOwogICAgIGlmIChyZXBsYWNlbWVudEZ1bmN0
aW9uLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBKU0M6
OkpTT2JqZWN0KiByZXBsYWNlbWVudE9iamVjdCA9IHJlcGxhY2VtZW50RnVuY3Rpb24udG9PYmpl
Y3QoZXhlYyk7CkBAIC0yMDgsNyArMjA4LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgfQogCiAgICAg
Ly8gR2V0IHRoZSA8dmlkZW8+IGNyZWF0ZWQgdG8gcmVwbGFjZSB0aGUgcGx1Zy1pbi4KLSAgICBK
U0M6OkpTVmFsdWUgdmFsdWUgPSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVy
KGV4ZWMsICJ2aWRlbyIpKTsKKyAgICBKU0M6OkpTVmFsdWUgdmFsdWUgPSByZXBsYWNlbWVudC5n
ZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2aWRlbyIpKTsKICAg
ICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpICYmICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KQogICAgICAgICBtX21lZGlhRWxlbWVudCA9IEpTSFRNTFZpZGVvRWxlbWVudDo6dG9XcmFwcGVk
KHZhbHVlKTsKIApAQCAtMjE5LDcgKzIxOSw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290KQogICAgIH0KIAogICAg
IC8vIEdldCB0aGUgc2NyaXB0aW5nIGludGVyZmFjZS4KLSAgICB2YWx1ZSA9IHJlcGxhY2VtZW50
LmdldChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgInNjcmlwdE9iamVjdCIpKTsKKyAgICB2
YWx1ZSA9IHJlcGxhY2VtZW50LmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgInNjcmlwdE9iamVjdCIpKTsKICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpICYm
ICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICBtX3NjcmlwdE9iamVjdCA9IHZh
bHVlLnRvT2JqZWN0KGV4ZWMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25h
cnkuY3BwCmluZGV4IGRmNGRjNzg2MmQyZGFhYTlmMmI2NzZkMWVkMzE3MmEyZjNlYWZkMjkuLjRj
ZDA4MzhmMzY0MjUzODNlOGMxODg4MjY2ZjgyMTIxYTAwZTc1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgRGljdGlv
bmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiYgbWFwKSBjCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0
ZSgpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25z
dF9pdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1l
cy5lbmQoKTsgKytpdCkgewogICAgICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygp
OwogICAgICAgICBpZiAoc3RyaW5nS2V5LmlzRW1wdHkoKSkKQEAgLTg4LDcgKzg4LDcgQEAgYm9v
bCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBuYW1lcykg
Y29uc3QKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5hbWVzLmVuZCgp
OyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5nKCk7CiAgICAg
ICAgIGlmICghc3RyaW5nS2V5LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggYmI1MDE4YzE3OTkyZDYwZDJl
ZjI0YmZlZDY4MTBiMjI0NzE3MjcxNi4uNmY4MDY2MTRlYTRiMGNiNDE2YTUzZjI3MjkyZDljZWQ5
NWNmNjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGJvb2wgZ2V0KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBvYmplY3QsIGNvbnN0IFN0cmluZyYga2V5UGF0aEVsZW1lbnQsIEoK
ICAgICB9CiAgICAgaWYgKCFvYmplY3QuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQu
dXRmOCgpLmRhdGEoKSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CiAg
ICAgaWYgKCFhc09iamVjdChvYmplY3QpLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudGlmaWVyKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IGFzT2JqZWN0KG9iamVjdCktPmdl
dChleGVjLCBpZGVudGlmaWVyKTsKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGJvb2wgc2V0KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVt
ZW50LAogewogICAgIGlmICghY2FuU2V0KG9iamVjdCwga2V5UGF0aEVsZW1lbnQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZleGVjLT52bSgpLCBr
ZXlQYXRoRWxlbWVudC51dGY4KCkuZGF0YSgpKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLT52bSgpLCBrZXlQYXRoRWxlbWVudC51dGY4
KCkuZGF0YSgpKTsKICAgICBhc09iamVjdChvYmplY3QpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
aWRlbnRpZmllciwganNWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9t
LmNwcAppbmRleCA4OTZiOTljZTkxYjcyYzZjZmU4MDJiMTdjYmQwNzBmMjQ1ZDRhNDdkLi5jZjhj
NmJhZTc1ZTRhN2Q1ZDkzYjc3NGM1YjY0NTc0ZjRkYWFhMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5j
cHAKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQogCiAgICAgICAg
IHByb3BlcnR5SWRlbnRpZmllcnMgPSBuZXcgSWRlbnRpZmllcltudW1DU1NQcm9wZXJ0aWVzXTsK
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCi0gICAg
ICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcihleGVjLCBqc1Byb3Bl
cnR5TmFtZXNbaV0uaW1wbCgpKTsKKyAgICAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnNbaV0g
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGpzUHJvcGVydHlOYW1lc1tpXSk7CiAgICAg
fQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKaW5kZXggZTFkNzI1
ZjhjNmQxMTEzNDEyMTVlMTBiZGQ3YWI2NzI3ZTc0ZWFkNC4uNDUxZGFjNjIzMTNiMjMzYWRmNjVk
OGY3MGJhYjMxYzM4MzY1OTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYWxsYmFja0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FsbGJhY2tEYXRhLmNwcApAQCAtNjAsNyArNjAsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRh
OjppbnZva2VDYWxsYmFjayhKU1ZhbHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJndW1lbnRCdWZmZXIm
CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBjYWxsYmFj
aygpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShjYWxsYmFjaygpLCBjYWxsRGF0YSk7CiAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBmdW5jdGlvbiA9IGNh
bGxiYWNrKCktPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAg
ICAgICAgZnVuY3Rpb24gPSBjYWxsYmFjaygpLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAiaGFuZGxlRXZlbnQiKSk7CiAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBl
Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKaW5k
ZXggZGE1MmNlYzJjZmRjYzc2YTFjZDQwZDJlNDVhZTA5NTY0NjVlMWY3Ni4uOGQyZDAyMDY0ZTU3
ZWFhNDc4MTgwYmI4ZTQ1YmQzMDA0ZThmMzE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcApAQCAtODks
OCArODksOCBAQCBzdGF0aWMgSlNBcnJheSogZ2V0SlNMaXN0ZW5lckZ1bmN0aW9ucyhFeGVjU3Rh
dGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgY29ucwogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgSlNPYmplY3QqIGxpc3RlbmVyRW50cnkgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChleGVjKTsKLSAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXIoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsKLSAgICAgICAgbGlzdGVuZXJF
bnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInVzZUNhcHR1cmUi
KSwganNCb29sZWFuKGxpc3RlbmVySW5mby5ldmVudExpc3RlbmVyVmVjdG9yW2ldLnVzZUNhcHR1
cmUpKTsKKyAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsKKyAgICAgICAg
bGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgInVzZUNhcHR1cmUiKSwganNCb29sZWFuKGxpc3RlbmVySW5mby5ldmVudExpc3Rl
bmVyVmVjdG9yW2ldLnVzZUNhcHR1cmUpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRl
eChleGVjLCBvdXRwdXRJbmRleCsrLCBKU1ZhbHVlKGxpc3RlbmVyRW50cnkpKTsKICAgICB9CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTExOCw3ICsxMTgsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExp
bmVBUElIb3N0OjpnZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlm
ICghbGlzdGVuZXJzLT5sZW5ndGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBB
dG9taWNTdHJpbmcgZXZlbnRUeXBlID0gbGlzdGVuZXJzQXJyYXlbaV0uZXZlbnRUeXBlOwotICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIGV2ZW50
VHlwZS5pbXBsKCkpLCBKU1ZhbHVlKGxpc3RlbmVycykpOworICAgICAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV2ZW50VHlwZS5p
bXBsKCkpLCBKU1ZhbHVlKGxpc3RlbmVycykpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRo
bUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0
aG1CdWlsZGVyLmNwcAppbmRleCAwODEwYmM4MWU5YTA1ZWVhZGVlZjRmMGU2Njk5NGQyMWI5MzUz
YWE3Li5hOWYzNzI2NTcwZTI4OTRhYmE2MWU4NWNjMDlmMDljMTQ4YjE4Zjk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRl
ci5jcHAKQEAgLTU2LDIxICs1NiwyMSBAQAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6
OmFkZChjb25zdCBjaGFyKiBrZXksIHVuc2lnbmVkIHZhbHVlKQogewogICAgIFZNJiB2bSA9IG1f
ZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwog
ICAgIG1fZGljdGlvbmFyeS0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc051bWJlcih2YWx1
ZSkpOwogfQogCiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIq
IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7
Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAgICBtX2RpY3Rp
b25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNTdHJpbmcobV9leGVjLCB2YWx1ZSkp
OwogfQogCiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtl
eSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiB7CiAgICAgVk0mIHZtID0gbV9leGVj
LT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CisgICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAg
UmVmUHRyPFVpbnQ4QXJyYXk+IGFycmF5VmlldyA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwg
aWRlbnRpZmllciwgYXJyYXlWaWV3LT53cmFwKG1fZXhlYywgdm0uZW50cnlTY29wZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1
aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmUK
IHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhcioga2V5LCBjb25z
dCBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXImIG5lc3RlZEJ1aWxkZXIpCiB7CiAg
ICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0s
IGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sIGtleSk7CiAgICAgY29uc3QgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyJiBqc0J1aWxk
ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXImPihuZXN0ZWRC
dWlsZGVyKTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNC
dWlsZGVyLnJlc3VsdCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCmluZGV4IDY0ZDU2ZDk3MGE3
NGU1ZGMxYWVhYTM4NTk1YjU2YmQxZTYzNDZmZTIuLjRhZTZhZTUwNjI0NmUzOWZiZmNjNTJkMzcw
YzA2NmY4OWNlMDNjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcApAQCAtODksNyArODksNyBAQCBi
b29sIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRlbnRpZmllcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogCiBzdGF0aWMgSlNWYWx1ZSBnZXRQcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAg
SWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIG5hbWUpOworICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZSk7CiAgICAgUHJvcGVydHlT
bG90IHNsb3Qob2JqZWN0KTsKIAogICAgIGlmIChvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVj
LCBpZGVudGlmaWVyLCBzbG90KSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgYm9vbCBnZXRI
YXNoQWxnb3JpdGhtKEpTRGljdGlvbmFyeSYgZGljdGlvbmFyeSwgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcgogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGRpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGRpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmplY3QoKTsKIAot
ICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCAiaGFzaCIpOworICAgIElkZW50aWZpZXIg
aWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhc2giKTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogCiAgICAgSlNWYWx1ZSBoYXNoID0gZ2V0UHJvcGVy
dHkoZXhlYywgb2JqZWN0LCAiaGFzaCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKaW5kZXggYTg5MTdk
NzVkYTRkODQ2MDQ0YWYxYWUyOWUxYTljZTQxZDVmMzMxOS4uMWUxYTUyNmYyNjEzOTQ2Yzc4NzIy
ZWM5MDAxZTc0ZWFmZDNlNTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCkBAIC01Miw3ICs1Miw3
IEBACiAKIHN0YXRpYyBib29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIEpTQXJyYXkqJiByZXN1bHQpCiB7Ci0gICAg
SWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlm
aWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xv
dCBzbG90KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRl
bnRpZmllciwgc2xvdCkpCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBib29sIGdldEpTQXJyYXlG
cm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXks
CiAKIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90
KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRpZmll
ciwgc2xvdCkpCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09O
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwKIAogc3Rh
dGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpz
b24sIGNvbnN0IGNoYXIqIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIElkZW50aWZpZXIgaWRl
bnRpZmllcihleGVjLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChqc29uKTsK
IAogICAgIGlmICghanNvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50aWZpZXIsIHNsb3Qp
KQpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpr
ZXlTaXplSXNWYWxpZChzaXplX3Qgc2l6ZUluQml0cykgY29uc3QKIHN0YXRpYyB2b2lkIGFkZFRv
SlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIGpzb24tPnB1dERpcmVjdCh2
bSwgaWRlbnRpZmllciwganNTdHJpbmcoZXhlYywgdmFsdWUpKTsKIH0KIApAQCAtNTQyLDEzICs1
NDIsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRKU09ORm9yUlNBQ29tcG9uZW50cyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQ3J5cHRvS2V5RGF0YVIKICAgICAgICAgYWRkVG9KU09OKGV4ZWMs
IGpzUHJpbWVJbmZvLCAidCIsIGJhc2U2NFVSTEVuY29kZShkYXRhLm90aGVyUHJpbWVJbmZvcygp
W2ldLmZhY3RvckNSVENvZWZmaWNpZW50KSk7CiAgICAgICAgIG90aC0+cHV0RGlyZWN0SW5kZXgo
ZXhlYywgaSwganNQcmltZUluZm8pOwogICAgIH0KLSAgICByZXN1bHQtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJvdGgiKSwgb3RoKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJvdGgiKSwgb3Ro
KTsKIH0KIAogc3RhdGljIHZvaWQgYWRkQm9vbFRvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIGJvb2wgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwog
ICAgIGpzb24tPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNCb29sZWFuKHZhbHVlKSk7CiB9
CiAKQEAgLTY3NSw3ICs2NzUsNyBAQCBzdGF0aWMgdm9pZCBhZGRVc2FnZXNUb0pTT04oRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgQ3J5cHRvS2V5VXNhZ2UgdXNhZwogICAgIGlmICh1
c2FnZXMgJiBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpCiAgICAgICAgIGtleU9wcy0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgaW5kZXgrKywganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiZGVyaXZlQml0cyIpKSk7CiAKLSAgICBqc29uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
SWRlbnRpZmllcihleGVjLCAia2V5X29wcyIpLCBrZXlPcHMpOworICAgIGpzb24tPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJrZXlfb3BzIiksIGtl
eU9wcyk7CiB9CiAKIFN0cmluZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnNlcmlhbGl6
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENyeXB0b0tleSYga2V5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4
IDc4MzY2ODE5MDJmYzNiMjQwYmFhMGU1ZWE4ZTY2ZjRkMWIwZDJmNmQuLjU0ZWIzMzExNjNkZTY4
Yzk2N2ExYjRjM2MxOWU2NWJmNWQ0YzQ5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTc0LDcgKzc0LDcg
QEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29u
c3QgU3RyaW5nJiBwcmVmaXgpCiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpOwogICAgICAgICAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9jdXN0
b21SZXNvbHZlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxvb2t1cE5hbWVzcGFjZVVS
SSIpKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9jdXN0b21SZXNvbHZlci0+Z2V0KGV4ZWMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvb2t1cE5hbWVzcGFjZVVSSSIpKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0
b20uY3BwCmluZGV4IDNhZmFhZTIzNDA3NzQ5YWM3YTlmMjcyMGYzZjg5N2YwYmU1N2NkZTcuLjUy
NTk4Y2VjMjQ3NWYxNmFiY2Q5MTgxN2EwYzgzNjFiZjVjZmMwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgdm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKICAgICB0aGlzT2JqZWN0LT5tX2ltcGwt
PmdldE5hbWVzKG5hbWVzKTsKICAgICBzaXplX3QgbGVuZ3RoID0gbmFtZXMuc2l6ZSgpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXIoZXhlYywgbmFtZXNbaV0pKTsKKyAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBuYW1lc1tpXSkpOwogCiAgICAgQmFz
ZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAppbmRleCA0OGY4MTg0NTIyNzY4MjBhYWFlMWZhNDgzY2Y0N2U0ODQxNjBiNzUyLi4y
NzFlODJmNGViY2VjYzA0NmM0Nzk1N2JiN2Y5ODA2NDA5YjNlZjk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00MjgsNyArNDI4
LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCog
b2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29yIHByb3Bl
cnRpZXMuCi0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9w
ZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAibG9jYXRpb24iKSkKKyAgICBpZiAoZGVzY3Jp
cHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJsb2NhdGlvbiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CkBAIC00NDQsNyArNDQ0LDcgQEAg
dm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlKQogICAgIGlmIChGcmFtZSogYWN0aXZlRnJhbWUgPSBhY3RpdmVET01XaW5kb3coZXhlYyku
ZnJhbWUoKSkgewogICAgICAgICBpZiAoYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkudXNlc0Rhc2hi
b2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRyZWUoKS5w
YXJlbnQoKSkgewogICAgICAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBpbXBsKCkpKQotICAgICAgICAgICAgICAgIHB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgImxvY2F0aW9uIiksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KQEAgLTUyNiw3ICs1MjYsNyBAQCBpbmxpbmUgdm9pZCBEaWFsb2dIYW5kbGVyOjpk
aWFsb2dDcmVhdGVkKERPTVdpbmRvdyYgZGlhbG9nKQogICAgIC8vICAgICAgICB3b3JsZCBpZiBk
aWFsb2dBcmd1bWVudHMgY29tZXMgZnJvbSBhbiBpc29sYXRlZCB3b3JsZC4KICAgICBKU0RPTVdp
bmRvdyogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTVdpbmRvdyhtX2ZyYW1lLmdldCgpLCBub3JtYWxX
b3JsZChtX2V4ZWMtPnZtKCkpKTsKICAgICBpZiAoSlNWYWx1ZSBkaWFsb2dBcmd1bWVudHMgPSBt
X2V4ZWMtPmFyZ3VtZW50KDEpKQotICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChtX2V4
ZWMtPnZtKCksIElkZW50aWZpZXIobV9leGVjLCAiZGlhbG9nQXJndW1lbnRzIiksIGRpYWxvZ0Fy
Z3VtZW50cyk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KG1fZXhlYy0+dm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9n
QXJndW1lbnRzKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgRGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFs
dWUoKSBjb25zdApAQCAtNTM0LDcgKzUzNCw3IEBAIGlubGluZSBKU1ZhbHVlIERpYWxvZ0hhbmRs
ZXI6OnJldHVyblZhbHVlKCkgY29uc3QKICAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0g
dG9KU0RPTVdpbmRvdyhtX2ZyYW1lLmdldCgpLCBub3JtYWxXb3JsZChtX2V4ZWMtPnZtKCkpKTsK
ICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0g
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyKG1fZXhlYywgInJldHVyblZhbHVlIik7CisgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsICJyZXR1
cm5WYWx1ZSIpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7CiAgICAgaWYg
KCFKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgbV9leGVj
LCBpZGVudGlmaWVyLCBzbG90KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRD
dXN0b20uY3BwCmluZGV4IGZjYTdjN2VkNmFkNWQ4NzNlMDdhMjAyNzM3MWU3NjhmNmUzMmJiMzcu
LmVjYmIzM2VlZjg3OGM1ZTVmMWUwM2M5ZjhiNzY2MDNlMmNiMjIwNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20u
Y3BwCkBAIC00OCw3ICs0OCw3IEBACiAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMg
d2lsbCBhbHdheXMgeWllbGQgYW4gb2JqZWN0LgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1
ZS50b09iamVjdChleGVjKTsKIAotICAgIEpTVmFsdWUgeFZhbHVlID0gb2JqZWN0LT5nZXQoZXhl
YywgSWRlbnRpZmllcihleGVjLCAieCIpKTsKKyAgICBKU1ZhbHVlIHhWYWx1ZSA9IG9iamVjdC0+
Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIngiKSk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3Zp
ZGVYID0gIXhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtNTYsNyArNTYsNyBAQAogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1Zh
bHVlIHlWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInkiKSk7Cisg
ICAgSlNWYWx1ZSB5VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJ5IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlWSA9ICF5VmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKTsKQEAgLTY0LDcgKzY0LDcgQEAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgSlNWYWx1ZSB6VmFsdWUgPSBvYmplY3QtPmdldChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsICJ6IikpOworICAgIEpTVmFsdWUgelZhbHVlID0gb2JqZWN0LT5n
ZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieiIpKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlk
ZVogPSAhelZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC04Niw3ICs4Niw3IEBACiAgICAg
Ly8gR2l2ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQgYW4gb2JqZWN0
LgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKIAotICAgIEpT
VmFsdWUgYWxwaGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImFs
cGhhIikpOworICAgIEpTVmFsdWUgYWxwaGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFscGhhIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlQWxwaGEgPSAh
YWxwaGFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtOTQsNyArOTQsNyBAQAogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVl
IGJldGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImJldGEiKSk7
CisgICAgSlNWYWx1ZSBiZXRhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJiZXRhIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlQmV0YSA9ICFiZXRhVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlIGdhbW1hVmFs
dWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJnYW1tYSIpKTsKKyAgICBK
U1ZhbHVlIGdhbW1hVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJnYW1tYSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hID0gIWdhbW1hVmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKTsKQEAgLTExOSwxOCArMTE5LDE4IEBACiBzdGF0aWMgSlNPYmplY3Qq
IGNyZWF0ZUFjY2VsZXJhdGlvbk9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVy
YXRpb24qIGFjY2VsZXJhdGlvbiwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJv
dmlkZVgoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgpKTsKLSAgICBv
YmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ5IiksIGFjY2Vs
ZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eSgpKSA6IGpz
TnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVooKSA/IGpzTnVtYmVyKGFjY2VsZXJh
dGlvbi0+eigpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJv
dmlkZVgoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgpKTsKKyAgICBv
YmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJ5IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlv
bi0+eSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlk
ZVooKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsKICAgICByZXR1
cm4gb2JqZWN0OwogfQogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVJvdGF0aW9uUmF0ZU9iamVj
dChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJvdGF0aW9uUmF0ZSwgRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJhbHBoYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgpID8ganNOdW1i
ZXIocm90YXRpb25SYXRlLT5hbHBoYSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUt
PmNhblByb3ZpZGVCZXRhKCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpz
TnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJnYW1tYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgpID8ganNOdW1iZXIo
cm90YXRpb25SYXRlLT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbHBoYSIpLCByb3Rh
dGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgpID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5hbHBo
YSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUtPmNhblByb3Zp
ZGVCZXRhKCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpzTnVsbCgpKTsK
KyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJnYW1tYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgpID8ganNOdW1i
ZXIocm90YXRpb25SYXRlLT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKICAgICByZXR1cm4gb2JqZWN0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25h
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRl
eCAyMGQ4ZjgzY2QwZTQ5YWE2YTA0YzNmNjdiYzhkMjVlZTIzYmY5OGYwLi5lOTg0OTA5ZTc2YjI1
OTQwZGE5ZWVjZDBkOTY1OTllMGU4ZjZmNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKIEpTRGljdGlvbmFyeTo6R2V0
UHJvcGVydHlSZXN1bHQgSlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUmIGZpbmFsUmVzdWx0KSBjb25zdAogewogICAgIEFTU0VSVChp
c1ZhbGlkKCkpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihtX2V4ZWMsIHByb3BlcnR5TmFt
ZSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyht
X2V4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QobV9pbml0aWFsaXpl
ck9iamVjdC5nZXQoKSk7CiAKICAgICBpZiAoIW1faW5pdGlhbGl6ZXJPYmplY3QuZ2V0KCktPmdl
dFByb3BlcnR5U2xvdChtX2V4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggYTJjZjI2OGRkNjY0ZjY2
YWI4ZmM2YTdkMDY0YmQyYzBkMDdjMWY4OC4uNWZmZDNjNjM1YWExNTMyNGYyNjZjZGIwZjg2YzFl
MDc3MzMzMzdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRs
ZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNh
bGxEYXRhKTsKICAgICAvLyBJZiBqc0Z1bmN0aW9uIGlzIG5vdCBhY3R1YWxseSBhIGZ1bmN0aW9u
LCBzZWUgaWYgaXQgaW1wbGVtZW50cyB0aGUgRXZlbnRMaXN0ZW5lciBpbnRlcmZhY2UgYW5kIHVz
ZSB0aGF0CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBoYW5k
bGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
ImhhbmRsZUV2ZW50IikpOworICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlv
bi0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhbmRsZUV2ZW50Iikp
OwogICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNh
bGxEYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggODEyMjUwN2I0ZmJjNjhlMTIz
ZjY3MmZhMzEwODhhNTJjYTcwZTk2NS4uM2ViYTQyMWJjNzM0MTc3M2FjOGY2YWE2YjEyMWVhY2Qx
ZTgyYTdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0Nv
bGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLml0ZW0oaW5kZXgpKSk7CiAKICAg
ICAgICAgLy8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuaW1hZ2VzKCc8bmFtZT4nKSBldGMuCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZWRJdGVtcyhleGVjLCBqc0NvbGxlY3Rpb24s
IElkZW50aWZpZXIoZXhlYywgc3RyaW5nKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG5hbWVkSXRlbXMoZXhlYywganNDb2xsZWN0aW9uLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIHN0cmluZykpKTsKICAgICB9CiAKICAgICAvLyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0
LCBpcyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gd2Ugd2FudApAQCAtMTA2LDEyICsxMDYsMTIgQEAg
SlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSogZXhlYykKICAgICB1
aW50MzJfdCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CiAgICAgaWYgKGluZGV4ICE9IFBy
b3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0KCksIGltcGwoKS5pdGVtKGluZGV4KSk7Ci0gICAgcmV0dXJuIG5hbWVkSXRlbXMoZXhl
YywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpKTsKKyAgICByZXR1cm4gbmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSkpOwogfQogCiBKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVk
SXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMo
ZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhleGVj
LCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5l
ZCgpID8ganNOdWxsKCkgOiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDNhZDlhNDcyOTAzNGNkZDA3
NzY5ZjdjZTYwYzdkZWYyYjFjOTA5NTIuLjZkMzljNDU5ZDdkMjU1NTRhOTdkZTRkYjcyNGQzMTY1
YzI5MzNkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxE
b2N1bWVudEN1c3RvbS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0hU
TUxEb2N1bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRQogSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
IHsKICAgICAvLyBJZiAiYWxsIiBoYXMgYmVlbiBvdmVyd3JpdHRlbiwgcmV0dXJuIHRoZSBvdmVy
d3JpdHRlbiB2YWx1ZQotICAgIEpTVmFsdWUgdiA9IGdldERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJhbGwiKSk7CisgICAgSlNWYWx1ZSB2ID0gZ2V0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFsbCIpKTsKICAgICBpZiAodikKICAg
ICAgICAgcmV0dXJuIHY7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3Vt
ZW50OjphbGwoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogdm9pZCBKU0hUTUxEb2N1bWVudDo6c2V0
QWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyBBZGQgImFsbCIg
dG8gdGhlIHByb3BlcnR5IG1hcC4KLSAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cihleGVjLCAiYWxsIiksIHZhbHVlKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYWxsIiksIHZhbHVlKTsKIH0KIAogc3RhdGljIERvY3Vt
ZW50KiBmaW5kQ2FsbGluZ0RvY3VtZW50KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0Niw3ICsxNDYs
NyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwoKS5mcmFtZSgpKSB7CiAgICAgICAgICAgICBKU0RP
TVdpbmRvd1NoZWxsKiB3cmFwcGVyID0gdG9KU0RPTVdpbmRvd1NoZWxsKGZyYW1lLCBjdXJyZW50
V29ybGQoZXhlYykpOwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpIHsKLSAgICAgICAgICAgICAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gd3JhcHBlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
Im9wZW4iKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHdyYXBwZXItPmdl
dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJvcGVuIikpOwogICAgICAgICAg
ICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICAgICAgICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwCmluZGV4IDI4NjdkNjBmMmEwMjYyN2YwN2NkMDBhMzQwZTU5Yzc4MTEyNGQ5ODMuLjI4
NDg5NzEyYTdmNmNjYzQ5OTA3YTZhZmIzMTVkYzVmZDdjOGNkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjCiAKIEpTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhleGVjLCB0
aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1zKGV4ZWMsIHRoaXMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBq
c051bGwoKSA6IHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCmluZGV4IGU2YTE0MGY1NDU4NDliOGFhNjQ5NDdlMGQ2
NjdmODgzNmY0YzlhZWEuLmEyNWRjYTk5MThjM2FlMmVlNzZhMTgwNWEyMGQwYjEwYmRhZjE5ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0
b20uY3BwCkBAIC02MCw3ICs2MCw3IEBAIEpTVmFsdWUgSlNJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoRXhlY1N0YXRlKiBleGVjKQogICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBi
b29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsKICAgICBpZiAoIW9wdGlvbnNWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIEpTVmFsdWUga2V5UGF0aFZhbHVlID0gb3B0aW9uc1Zh
bHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJrZXlQYXRoIikpOworICAgICAgICBKU1Zh
bHVlIGtleVBhdGhWYWx1ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAia2V5UGF0aCIpKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTcwLDcgKzcwLDcg
QEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvSW5jcmVtZW50ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVy
KGV4ZWMsICJhdXRvSW5jcmVtZW50IikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgYXV0b0lu
Y3JlbWVudCA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiYXV0b0luY3JlbWVudCIpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3Rv
cmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHAKaW5kZXggMDQwNDRkMzVkMzk1OWM1ZjE4Y2YyYmQ1YjM1NTNiYTgyZDgzNWVl
Yy4uODUwN2U0OTRhMzc2ZGI3OTllNTZmYmVlOGJkMWNjNmQ5ZDE2NzgyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAK
QEAgLTY3LDExICs2NywxMSBAQCBKU1ZhbHVlIEpTSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBib29sIHVuaXF1ZSA9IGZhbHNlOwogICAgIGJvb2wgbXVs
dGlFbnRyeSA9IGZhbHNlOwogICAgIGlmICghb3B0aW9uc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKLSAgICAgICAgdW5pcXVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVy
KGV4ZWMsICJ1bmlxdWUiKSkudG9Cb29sZWFuKGV4ZWMpOworICAgICAgICB1bmlxdWUgPSBvcHRp
b25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInVuaXF1ZSIp
KS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgICAgIG11bHRpRW50cnkgPSBv
cHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIm11bHRpRW50cnkiKSkudG9C
b29sZWFuKGV4ZWMpOworICAgICAgICBtdWx0aUVudHJ5ID0gb3B0aW9uc1ZhbHVlLmdldChleGVj
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJtdWx0aUVudHJ5IikpLnRvQm9vbGVhbihl
eGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbWFnZURhdGFDdXN0b20uY3BwCmluZGV4IDVhYWU1YWU5NjdhZDkzYTI3Zjg4ZDM2ZDcw
ZTk3OGRlOWNlYjQwMTAuLjRhMWZjNjFiZjllZDcwMDZkNzliYzNhMmUyZjVlYzZjYTYyYjI0Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhKiBpbWFnZUQKICAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CiAgICAgCiAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9i
YWxPYmplY3QsIEltYWdlRGF0YSwgaW1hZ2VEYXRhKTsKLSAgICBJZGVudGlmaWVyIGRhdGFOYW1l
KGV4ZWMsICJkYXRhIik7CisgICAgSWRlbnRpZmllciBkYXRhTmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImRhdGEiKTsKICAgICB3cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgZGF0YU5hbWUsIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbWFnZURhdGEtPmRhdGEoKSks
IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgZXhlYy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1l
bW9yeUNvc3QoaW1hZ2VEYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Q3VzdG9tLmNwcAppbmRleCBkODZhNDgwYjBjMzgwNmJkZTY3ZTlkYjRhNjY3NDI4MjY2OWFmZjY2
Li44NTUwZWI0NTNmOTNmY2FhYmIzMTM2MDRhYzU0MmZjN2I3NTQ2NDNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhv
c3RDdXN0b20uY3BwCkBAIC04NiwxMiArODYsMTIgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVDb250
ZXh0TWVudUl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIENvbnRleHRNZW4K
IHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKSB7CiAg
ICAgICAgIEpTT2JqZWN0KiBpdGVtID0gYXNPYmplY3QoYXJyYXktPmdldEluZGV4KGV4ZWMsIGkp
KTsKLSAgICAgICAgSlNWYWx1ZSBsYWJlbCA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4
ZWMsICJsYWJlbCIpKTsKLSAgICAgICAgSlNWYWx1ZSB0eXBlID0gaXRlbS0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgInR5cGUiKSk7Ci0gICAgICAgIEpTVmFsdWUgaWQgPSBpdGVtLT5nZXQo
ZXhlYywgSWRlbnRpZmllcihleGVjLCAiaWQiKSk7Ci0gICAgICAgIEpTVmFsdWUgZW5hYmxlZCA9
IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJlbmFibGVkIikpOwotICAgICAgICBK
U1ZhbHVlIGNoZWNrZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiY2hlY2tl
ZCIpKTsKLSAgICAgICAgSlNWYWx1ZSBzdWJJdGVtcyA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlm
aWVyKGV4ZWMsICJzdWJJdGVtcyIpKTsKKyAgICAgICAgSlNWYWx1ZSBsYWJlbCA9IGl0ZW0tPmdl
dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsYWJlbCIpKTsKKyAgICAgICAg
SlNWYWx1ZSB0eXBlID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgInR5cGUiKSk7CisgICAgICAgIEpTVmFsdWUgaWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiaWQiKSk7CisgICAgICAgIEpTVmFsdWUgZW5hYmxlZCA9
IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJlbmFibGVkIikp
OworICAgICAgICBKU1ZhbHVlIGNoZWNrZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAiY2hlY2tlZCIpKTsKKyAgICAgICAgSlNWYWx1ZSBzdWJJdGVtcyA9
IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzdWJJdGVtcyIp
KTsKICAgICAgICAgaWYgKCF0eXBlLmlzU3RyaW5nKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVy
LmNwcAppbmRleCA2ZGRlNTEwYzQzMjU1MjZjZDI3OTc5YjgyMmI3MTI0NjEyNzUzYmQ0Li5jMzFh
ZGFmNzcxNjJiODJhODlkN2I0M2Q3NTdkZWZjMjU5NzQzMTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcApAQCAtMTAzLDcgKzEw
Myw3IEBAIEpTT2JqZWN0KiBKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjCiAgICAgYXJncy5hcHBlbmQoanNOb250cml2
aWFsU3RyaW5nKGV4ZWMsIG1fZXZlbnRQYXJhbWV0ZXJOYW1lKSk7CiAgICAgYXJncy5hcHBlbmQo
anNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgbV9jb2RlKSk7CiAKLSAgICBKU09iamVjdCoganNGdW5j
dGlvbiA9IGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJncywgSWRlbnRpZmllcihleGVjLCBtX2Z1bmN0
aW9uTmFtZSksIG1fc291cmNlVVJMLCBtX3Bvc2l0aW9uKTsgLy8gRklYTUU6IGlzIGdsb2JhbEV4
ZWMgb2s/CisgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBw
aW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFy
Z3MsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbV9mdW5jdGlvbk5hbWUpLCBtX3NvdXJj
ZVVSTCwgbV9wb3NpdGlvbik7IC8vIEZJWE1FOiBpcyBnbG9iYWxFeGVjIG9rPwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4
ZWMpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKaW5kZXggNzE3MjZi
YmYxYjFlYjY3MWUxYTZiNGVkNDgyYzYxZTJiNThhYmNhMy4uN2I0MTE5YTVhNWQwYjcyODlmM2Ux
MzY4ZDkxMGQ3NmE3OThkOGI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCkBAIC01Miw3ICs1Miw3IEBAIHNob3J0IEpT
Tm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgTm9k
ZSogZmlsdGVyTm9kZSkKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKGZpbHRlciwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgZmlsdGVyID0gZmlsdGVyLmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsICJhY2NlcHROb2RlIikpOworICAgICAgICBmaWx0ZXIgPSBmaWx0ZXIuZ2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFjY2VwdE5vZGUiKSk7CiAgICAg
ICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZmlsdGVyLCBjYWxsRGF0YSk7CiAgICAgICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOb2RlRmlsdGVyIG9iamVj
dCBkb2VzIG5vdCBoYXZlIGFuIGFjY2VwdE5vZGUgZnVuY3Rpb24iKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9t
LmNwcAppbmRleCAzYzkyYmViMTM0ZWQwNjMzMWIzOWY2MWYzNjllNGQ4OGRjMzMzZGEzLi44Yzll
YjhmOWMxOWY5MGEwMGEzNmRmNTM1Zjk5M2JhYzdhMTNlYmViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5j
cHAKQEAgLTc0LDcgKzc0LDcgQEAgSlNWYWx1ZSBKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0o
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXIoZXhlYywgbV9pbXBsLT5jb2x1bW5OYW1lcygpW2ldKSwganNWYWx1ZSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBtX2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pLCBqc1ZhbHVl
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIH0KIAogICAgIHJldHVybiBvYmplY3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCA5
NDJjNGRmYjZlN2U2OGY4OWEwY2Y3OWQ1NDVlMzE5MTQ2YmMyNzM3Li5kNjQ2MDNlMWI4ZDI1ZWRm
NWQxZjI5YzVmNzAzNzIxYjZiY2EzMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKU1N0b3JhZ2U6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU4KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5tX2ltcGwtPmtleShp
LCBlYykpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCB0aGlzT2JqZWN0LT5tX2ltcGwtPmtleShpLCBlYykpKTsKICAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcAppbmRleCBiODFhYWNkNTAwOGI1NzQ0ODJkOWVj
MTYzYTdhMzcwYWVkN2NkN2Q3Li42MGZjNTQ1YTVjYTNkYjE1ODVmNDc2ZWE1MGMzNjc1N2IwZjVj
MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVh
bUpTU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0
cmVhbUpTU291cmNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIHNldEludGVybmFsU2xvdFRv
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvYmplY3RWYWx1ZSwgUHJpdmF0ZU5hbWUm
CiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOwog
ICAgIFB1dFByb3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3Qob2JqZWN0VmFsdWUpOwotICAgIG9iamVj
dC0+cHV0KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShuYW1lKSwgdmFsdWUsIHByb3Bl
cnR5U2xvdCk7CisgICAgb2JqZWN0LT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
VWlkKG5hbWUpLCB2YWx1ZSwgcHJvcGVydHlTbG90KTsKIH0KIAogSlNWYWx1ZSBnZXRJbnRlcm5h
bFNsb3RGcm9tT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvYmplY3RWYWx1ZSwgUHJp
dmF0ZU5hbWUmIG5hbWUpCkBAIC01NSw3ICs1NSw3IEBAIEpTVmFsdWUgZ2V0SW50ZXJuYWxTbG90
RnJvbU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2JqZWN0VmFsdWUsIFByaXZhdGVO
CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogICAg
IFByb3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3Qob2JqZWN0VmFsdWUpOwogCi0gICAgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20obmFtZSk7CisgICAgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQobmFtZSk7CiAgICAgaWYgKCFv
YmplY3QtPmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgcHJv
cGVydHlTbG90KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICByZXR1cm4gcHJvcGVy
dHlTbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYjQ5MzFkZDU2YTc2
ZWIzMjRiYTZmM2RlOTUxNjQ3MzRlODBlNDliLi4wM2Q0NDc2NTg5Nzk3OGMwMDRhZDkzMWFjMTY0
MGQzMTY4MGUzYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEdsb2JhbE9iamVjdC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlRXhj
ZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKIGJvb2wgU2NyaXB0R2xvYmFsT2Jq
ZWN0OjpzZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIHZhbHVlKQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHNjcmlwdFN0YXRlKTsKLSAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUs
IG5hbWUpLCB2YWx1ZS5qc09iamVjdCgpKTsKKyAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpLCB2YWx1ZS5qc09iamVjdCgpKTsKICAgICByZXR1cm4g
aGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0KIApAQCAtNjEsMTQgKzYxLDE0IEBAIGJv
b2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBj
b25zdCBjaGFyKiBuYW1lLCBJbnNwCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3Rh
dGUpOwogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBn
bG9iYWxPYmplY3QtPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRlbnRpZmllcihzY3Jp
cHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsK
KyAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2Jh
bE9iamVjdCwgdmFsdWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRl
KTsKIH0KIAogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgdmFs
dWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIEpTVmFsdWUg
anNWYWx1ZSA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdldChzY3JpcHRT
dGF0ZSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSkpOworICAgIEpTVmFsdWUganNWYWx1
ZSA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdldChzY3JpcHRTdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFtZSkpOwogICAgIGlmICghanNW
YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgU2Ny
aXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBj
aGFyKiBuYW1lLCBEZXByCiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6cmVtb3ZlKEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhzY3JpcHRTdGF0ZSk7Ci0gICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoc2NyaXB0U3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgc2NyaXB0U3RhdGUsIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUp
KTsKKyAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tZXRob2RUYWJsZSgp
LT5kZWxldGVQcm9wZXJ0eShzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzY3Jp
cHRTdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFtZSkpOwogICAg
IHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBk
Y2E1NjAzZjljMzk5NjE4MzM4YWY3ZTBkYjMxYWRmMTBjYjZiNmY5Li5iMWM1MjgwN2I5MDNmYWU2
Y2YyZDU4ZTEwZjBiYjQwMDA3OWQzMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTUyMSw3ICs1MjEsNyBAQCBj
bGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICA6IENsb25lQmFzZShl
eGVjKQogICAgICAgICAsIG1fYnVmZmVyKG91dCkKICAgICAgICAgLCBtX2Jsb2JVUkxzKGJsb2JV
UkxzKQotICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKGV4ZWMsIGVtcHR5U3RyaW5nKCkpCisg
ICAgICAgICwgbV9lbXB0eUlkZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBl
bXB0eVN0cmluZygpKSkKICAgICB7CiAgICAgICAgIHdyaXRlKEN1cnJlbnRWZXJzaW9uKTsKICAg
ICAgICAgZmlsbFRyYW5zZmVyTWFwKG1lc3NhZ2VQb3J0cywgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0cyk7CkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9u
ZUJhc2UgewogICAgICAgICBpZiAoc3RyLmlzTnVsbCgpKQogICAgICAgICAgICAgd3JpdGUobV9l
bXB0eUlkZW50aWZpZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB3cml0ZShJZGVudGlm
aWVyKG1fZXhlYywgc3RyKSk7CisgICAgICAgICAgICB3cml0ZShJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKG1fZXhlYywgc3RyKSk7CiAgICAgfQogCiAgICAgdm9pZCB3cml0ZShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHZlY3RvcikKQEAgLTEyNDgsNyArMTI0OCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAg
ICAgICAgICAgIGxlbmd0aFN0YWNrLnJlbW92ZUxhc3QoKTsKIAogICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAg
ICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhhcnJheSwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFj
ay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAgLTEyOTgsNyArMTI5
OCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXpl
KEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5P
YmplY3QpOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAg
ICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwot
ICAgICAgICAgICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKGluT2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3Qo
KSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAgICAgICAgICBG
QUxMVEhST1VHSDsKQEAgLTEzODEsNyArMTM4MSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2Rl
IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihvYmplY3QpIHx8IGpzRHlu
YW1pY0Nhc3Q8SlNNYXAqPihvYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlT
dGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1f
ZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgICAgICAgICB3cml0
ZShOb25NYXBQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5h
cHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJl
cjsKQEAgLTI0NjAsMTEgKzI0NjAsMTEgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVz
ZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChKU1ZhbHVlIHRlcm1pbmFsID0gcmVhZFRlcm1pbmFsKCkpIHsKLSAgICAgICAgICAgICAgICBw
dXRQcm9wZXJ0eShvdXRwdXRPYmplY3RTdGFjay5sYXN0KCksIElkZW50aWZpZXIobV9leGVjLCBj
YWNoZWRTdHJpbmctPnN0cmluZygpKSwgdGVybWluYWwpOworICAgICAgICAgICAgICAgIHB1dFBy
b3BlcnR5KG91dHB1dE9iamVjdFN0YWNrLmxhc3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyht
X2V4ZWMsIGNhY2hlZFN0cmluZy0+c3RyaW5nKCkpLCB0ZXJtaW5hbCk7CiAgICAgICAgICAgICAg
ICAgZ290byBvYmplY3RTdGFydFZpc2l0TWVtYmVyOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgc3RhdGVTdGFjay5hcHBlbmQoT2JqZWN0RW5kVmlzaXRNZW1iZXIpOwotICAgICAgICAgICAg
cHJvcGVydHlOYW1lU3RhY2suYXBwZW5kKElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJpbmct
PnN0cmluZygpKSk7CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVTdGFjay5hcHBlbmQoSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsIGNhY2hlZFN0cmluZy0+c3RyaW5nKCkpKTsKICAgICAg
ICAgICAgIGdvdG8gc3RhdGVVbmtub3duOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgT2JqZWN0
RW5kVmlzaXRNZW1iZXI6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0KaW5kZXggYjMxZTNlYjY5NTNiYmI0OWMxNmRhYWQ5YjE2MGNhMWMwMDBh
MjY2YS4uYzhjNmE4OTNjZTkyMzVhNzk1OTgyZTI3MTNlODIzZTEwNTVjNTM2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTMzMCw3
ICszMzAsNyBAQCAtIChpZCljYWxsV2ViU2NyaXB0TWV0aG9kOihOU1N0cmluZyAqKW5hbWUgd2l0
aEFyZ3VtZW50czooTlNBcnJheSAqKWFyZ3MKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
ICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBm
dW5jdGlvbiA9IFtzZWxmIF9pbXBdLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJpbmco
bmFtZSkpKTsKKyAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKG5hbWUpKSk7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5j
dGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCkBAIC0z
ODQsNyArMzg0LDcgQEAgLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleQogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihbc2VsZiBfaW1wXSk7CiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1
dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2Jq
Y1ZhbHVlVG9WYWx1ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9i
amVjdF0pLCBzbG90KTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChvYmplY3QsIGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2Jq
Y1ZhbHVlVG9WYWx1ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9i
amVjdF0pLCBzbG90KTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAg
ICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CkBAIC00MDcsNyArNDA3LDcgQEAgLSAoaWQp
dmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgICAgIC8vIGxlYXZpbmcgdGhlIGxvY2sg
cGVybWFuZW50bHkgaGVsZAogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAg
ICAgCi0gICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpKTsKKyAgICAgICAgSlNDOjpKU1ZhbHVlIHJl
c3VsdCA9IFtzZWxmIF9pbXBdLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCBTdHJpbmcoa2V5KSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7CiAgICAgICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CkBAIC00MzMs
NyArNDMzLDcgQEAgLSAodm9pZClyZW1vdmVXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopa2V5CiAg
ICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKLSAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHko
W3NlbGYgX2ltcF0sIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpKTsKKyAgICBb
c2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKIAogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUo
ZXhlYyk7CkBAIC00NTAsNyArNDUwLDcgQEAgLSAoQk9PTCloYXNXZWJTY3JpcHRLZXk6KE5TU3Ry
aW5nICopa2V5CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9pbXBdLT5oYXNQ
cm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CisgICAgQk9PTCBy
ZXN1bHQgPSBbc2VsZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCBTdHJpbmcoa2V5KSkpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZmZjZmQ5
NjdiMWFkNWY5ZTA5NTlhMWQxNDYzMDAxZTNkZWNhOWFhNi4uMzc1NTI0MzY2OTYwZjhlMDQ1NjFi
M2I1MDhlYjJmNTcwN2JjMmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTk3MiwxNiArOTcyLDE2IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogCiAgICAgIyBDdXN0b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlz
dHMgb24gRE9NV2luZG93CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7
Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVy
dHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9k
ZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVz
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkm
LCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lk
IGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlv
bk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpT
Qzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIHZvaWQgZ2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUg
PSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0RW51
bWVyYWJsZUxlbmd0aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwogICAg
ICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0g
MTsKICAgICB9CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQ
cm9wZXJ0eSJ9IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6
OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFn
c3siSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOyAgICAgICAKICAgICB9CiAK
QEAgLTE5OTUsNyArMTk5NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5h
bWUoJHNpZ25hdHVyZSk7CiAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkc2lnbmF0dXJlLT5u
YW1lOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghJHtlbmFi
bGVfZnVuY3Rpb259KCkpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSgmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZW1vdmVEaXJlY3Qodm0sIHByb3Bl
cnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMjYwMywxMCArMjYwMywxMCBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KTsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvclxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdFxuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRU
aGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBc
IiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbFR5cGUmIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7XG4iKTsKQEAgLTI3MTYsNyArMjcxNiw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3Qt
PmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhl
YywgaSkpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICBCYXNlOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmdldE93blByb3BlcnR5
TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5j
cHAKaW5kZXggMWQ1OTE4OWI0NzIwNTExNzE3OWM2MzlhNjA1YjMwODZlZGRiZjZlZi4uZDI0YTJl
YTcwNmFlMmQ5NDQyYjcwNzVmOTVlMjg4MzM2NTYyMDYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3Bw
CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PEZsb2F0NjRBcnJheSo+KHRoaXNPYmplY3QtPmltcGwo
KSktPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb20oZXhlYywgaSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5
TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFs
dWUgSlNGbG9hdDY0QXJyYXk6OmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKaW5kZXggZmYzODhjYTAxNzYw
YzEyYjk1NzUwMzlmZWM3NjQzMjkzZmU4NGUzNC4uMTNlMTU3N2UzNmNkNjFiZGQxYmMxODcwNmIz
NjAyMDhhYzM4MmU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3Mg
SlNGbG9hdDY0QXJyYXkgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6
OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKICAgICBGbG9hdDY0QXJyYXkqIGltcGwoKSBjb25zdAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDVhMjE0ZDA3ZGQxMDYwZjllZGVhZDVjOWNiMmJlNzlk
ODk5YjdhOTQuLmUwYWE2ZDA5MzMwNmE3MGY2NjY5MDlmNjBlMTk2NzNiY2M2MDJiMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgSlNUZXN0RXZl
bnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgp
Lmxlbmd0aCgpOyBpIDwgY291bnQ7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBpKSk7Ci0gICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0K
IAogSlNWYWx1ZSBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAppbmRleCBiZjFj
ZTY3ZTJmZTNjZGNiOTdlMjAzODdmNWIwZTllNTA4OWYyNDdmLi40MDhjYjhmMmZmNzkzZTMxZDFj
NmUzNDI5MTI1ZDNkMWZhNTQ1YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaApAQCAtNTMsNyAr
NTMsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBKU1Rlc3RFdmVudFRhcmdldCA6IHB1YmxpYyBK
U0RPTVdyYXBwZXIgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jiwg
SlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDg3YjJk
MWIyM2I4YmMyNTk1MmRjNzExOTcwOGU5OTFmYTgwYWIwOTUuLjczNWE2N2FlMWJiNTE5MmVmNDk3
ZjM4YWFkMzhlNjRmZDQwMzk1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xODc5LDcgKzE4NzksNyBAQCB2
b2lkIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdAogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CisgICAgY2FzdGVkVGhp
cy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIlRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIiksIHZhbHVlKTsKIH0KIAogCkBAIC0yNjcyLDcgKzI2
NzIsNyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZQogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJjb25kaXRpb25hbEF0dHI0IiksIHZhbHVlKTsKKyAgICBjYXN0ZWRUaGlz
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29u
ZGl0aW9uYWxBdHRyNCIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjY4Nyw3ICsyNjg3LDcg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZU9iamUKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IKLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cihleGVjLCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CisgICAgY2FzdGVkVGhpcy0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbmRpdGlv
bmFsQXR0cjUiKSwgdmFsdWUpOwogfQogCiAjZW5kaWYKQEAgLTI3MDIsNyArMjcwMiw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2VPYmplCiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhl
YywgImNvbmRpdGlvbmFsQXR0cjYiKSwgdmFsdWUpOworICAgIGNhc3RlZFRoaXMtPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb25kaXRpb25hbEF0
dHI2IiksIHZhbHVlKTsKIH0KIAogI2VuZGlmCkBAIC0yODQwLDcgKzI4NDAsNyBAQCB2b2lkIHNl
dEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGJhc2VPYmplY3QsIEVuYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIG9iamVjdAotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7CisgICAg
Y2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgInJlcGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVlKTsKIH0KIAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCA5MDAxMDEzOGFiNDZjZTdkOTc1M2NiZmYyOTVl
NTNjZGZhY2QwYjVhLi4wOTA1ZGUxOTdlNTU2MTI4ZDUyMjVhNjVkNDEyM2U2OGQ5NjJmODU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBi
b29sIF9OUE5fRW51bWVyYXRlKE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllcioqIGlkZW50
aWZpZXIsIHVpbnQzMl90KiBjb3VudAogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
ICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKIAotICAgICAg
ICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmotPmltcCwgZXhl
YywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIG9i
ai0+aW1wLT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+aW1wLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OwogICAgICAgICB1bnNpZ25lZCBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByb3BlcnR5
TmFtZXMuc2l6ZSgpKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBjYWxs
IE5QTl9NZW1BbGxvYyBidXQgdGhhdCdzIGluIFdlYktpdAogICAgICAgICBOUElkZW50aWZpZXIq
IGlkZW50aWZpZXJzID0gc3RhdGljX2Nhc3Q8TlBJZGVudGlmaWVyKj4obWFsbG9jKHNpemVvZihO
UElkZW50aWZpZXIpICogc2l6ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY191dGlsaXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAK
aW5kZXggNzc0ZmRmYzNmNGVmOTUzZWZkN2JkNmZkOTY3NmY2NDg3ZTg5OTA3Ni4uZGY5MDlkY2U1
ZWFkOTM4NThlMDIzMDljZDgyZGM1YTczMjM5NWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X3V0aWxpdHkuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgU3RyaW5nIGNvbnZlcnROUFN0cmluZ1Rv
VVRGMTYoY29uc3QgTlBTdHJpbmcqIHN0cmluZykKIAogSWRlbnRpZmllciBpZGVudGlmaWVyRnJv
bU5QSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE5QVVRGOCogbmFtZSkKIHsKLSAg
ICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBjb252ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0aW4xRmFs
bGJhY2sobmFtZSwgLTEpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCBjb252ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEpKTsKIH0KIAog
fSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggY2Qz
NGU1ZjEyMDJkN2YzYWRiZGMxODMwOTg3ZWY4NmJhZGU2Y2MxMy4uNTc4OTE1ODkzOWEyYWY3Yjky
ZmFiOTBhZjg0YWFiZTk1YWVmN2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiBK
U1ZhbHVlIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAg
ICBjb25zdCBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3Qg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+
X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcihleGVj
LCB0aGlzT2JqZWN0LT5tX2l0ZW0pKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNl
LT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCB0aGlzT2JqZWN0LT5tX2l0ZW0pKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJ
bXA6OnRvQm9vbGVhbihFeGVjU3RhdGUgKikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmNwcAppbmRleCAwMjIyMTkwNWM0MGU2ZWRmZWQ1Nzk5OWViMjM1ZjU4OTFhN2Ey
ZTA4Li5jNzEzZmZhNGUyMzI5M2M2NmNjNjVjYjI5OTNkYTNhOTJlZWRhODIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgUnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVyCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsK
IAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlm
IChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKICAgICBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKaW5kZXggOTU3MzBjNDNk
NzQwOTg1N2IxYmZkMjkyOTUxYzU1ZGIwZGNjNWRmNS4uYmFmMjQ3ZDJkYjZjZTdlN2VlMTEzYTIx
MGI4N2NjMzNhNzI2YTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAK
QEAgLTM4MCw3ICszODAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAg
ICAgIAogICAgICAgICBNeU9iamVjdCAqbXlPYmplY3QgPSAoTXlPYmplY3QgKilOUE5fQ3JlYXRl
T2JqZWN0IChteUZ1bmN0aW9uUHRycyk7CiAgICAgICAgIAotICAgICAgICBnbG9iYWwucHV0KGV4
ZWMsIElkZW50aWZpZXIoIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2Jq
ZWN0KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopbXlPYmplY3QpKTsKKyAgICAgICAgZ2xv
YmFsLnB1dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJteUludGVyZmFjZSIp
LCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6Q0xhbmd1YWdlLCAodm9p
ZCAqKW15T2JqZWN0KSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFy
Z2M7IGkrKykgewogICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0
RnJvbUZpbGUoYXJndltpXSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KQogICAgICAgICAgICAgICAgICAgICBjaGFyKiBtc2cgPSBleFZhbC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykuYXNjaWkoKTsKICAgICAgICAgICAgICAgICAgICAgaW50
IGxpbmVubyA9IC0xOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhWYWwudHlwZSgpID09IE9i
amVjdFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwgPSBPYmpl
Y3Q6OmR5bmFtaWNDYXN0KGV4VmFsKS5nZXQoZXhlYyxJZGVudGlmaWVyKCJsaW5lIikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3Qo
ZXhWYWwpLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVWYWwudHlwZSgpID09IE51bWJlclR5cGUp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGxpbmVWYWwudG9OdW1i
ZXIoZXhlYykpOwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5tbQppbmRleCBiZmFjZjIxMDc0YTFlZTg1NzIyMzZlNWFhYWMxMmM1ZDllNGMyNzcw
Li4zNTMyYjBhNjg5YWJjZDZkMmQ3ZTEzNWIxN2IwYWM2ODU1NGUzNmNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS90ZXN0YmluZGluZ3MubW0KQEAgLTI0OCw3ICsyNDgsNyBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgIAogICAgICAgICBNeUZpcnN0SW50ZXJmYWNlICpt
eUludGVyZmFjZSA9IFtbTXlGaXJzdEludGVyZmFjZSBhbGxvY10gaW5pdF07CiAgICAgICAgIAot
ICAgICAgICBnbG9iYWwucHV0KGV4ZWMsIElkZW50aWZpZXIoIm15SW50ZXJmYWNlIiksIEluc3Rh
bmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2UsICh2
b2lkICopbXlJbnRlcmZhY2UpKTsKKyAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGlt
ZU9iamVjdChJbnN0YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNl
KSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykgewog
ICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJn
dltpXSk7CkBAIC0yNjIsNyArMjYyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2
KQogICAgICAgICAgICAgICAgICAgICBjaGFyICptc2cgPSBleFZhbC50b1N0cmluZyhleGVjKS5h
c2NpaSgpOwogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChleFZhbC50eXBlKCkgPT0gT2JqZWN0VHlwZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhWYWwpLmdl
dChleGVjLElkZW50aWZpZXIoImxpbmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgImxpbmUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobGluZVZhbC50eXBlKCkgPT0gTnVtYmVyVHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lbm8gPSBpbnQobGluZVZhbC50b051bWJlcihleGVjKSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDUx
MTJjZjJlY2MzMWU2OTUwMDNlMzlkNGVjZWRiNDkwODZjNGFmNTMuLjAyNzFiZWQzYmUwZGFiZjcy
YThmN2FiNTRiNGJlMjliZjk0YWU3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtMzcwMSw3ICszNzAxLDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250
cm9sbGVySlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3QmIGcK
ICAgICBpZiAoIW1lZGlhSlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051
bGwoKTsKICAgICAKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbHNIb3N0KCZleGVjLnZtKCks
ICJjb250cm9sc0hvc3QiKTsKKyAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbHNIb3N0ID0gSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLnZtKCksICJjb250cm9sc0hvc3QiKTsKICAg
ICBKU0M6OkpTVmFsdWUgY29udHJvbHNIb3N0SlNXcmFwcGVyID0gbWVkaWFKU1dyYXBwZXJPYmpl
Y3QtPmdldCgmZXhlYywgY29udHJvbHNIb3N0KTsKICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CkBAIC0zNzEwLDcgKzM3MTAsNyBAQCBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlJiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCYgZwogICAgIGlmICghY29udHJvbHNIb3N0SlNXcmFwcGVyT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIAotICAgIEpTQzo6SWRlbnRpZmll
ciBjb250cm9sbGVySUQoJmV4ZWMudm0oKSwgImNvbnRyb2xsZXIiKTsKKyAgICBKU0M6OklkZW50
aWZpZXIgY29udHJvbGxlcklEID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLnZt
KCksICJjb250cm9sbGVyIik7CiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJKU1dyYXBwZXIg
PSBjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QtPmdldCgmZXhlYywgY29udHJvbGxlcklEKTsK
ICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxs
KCk7CkBAIC0zNzUyLDcgKzM3NTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNh
cHRpb25Db250YWluZXIoKQogICAgIC8vICAgICBOb25lCiAgICAgLy8gUmV0dXJuIHZhbHVlOgog
ICAgIC8vICAgICBOb25lCi0gICAgSlNDOjpKU1ZhbHVlIG1ldGhvZFZhbHVlID0gY29udHJvbGxl
ck9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAidXBkYXRlQ2FwdGlvbkNv
bnRhaW5lciIpKTsKKyAgICBKU0M6OkpTVmFsdWUgbWV0aG9kVmFsdWUgPSBjb250cm9sbGVyT2Jq
ZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ1cGRhdGVD
YXB0aW9uQ29udGFpbmVyIikpOwogICAgIEpTQzo6SlNPYmplY3QqIG1ldGhvZE9iamVjdCA9IEpT
Qzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4obWV0aG9kVmFsdWUpOwogICAgIGlmICgh
bWV0aG9kT2JqZWN0KQogICAgICAgICByZXR1cm47CkBAIC01ODc4LDcgKzU4NzgsNyBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCgpCiAg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGZ1bmN0
aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywg
ImNyZWF0ZUNvbnRyb2xzIikpOworICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xv
YmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJj
cmVhdGVDb250cm9scyIpKTsKICAgICBpZiAoZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01OTAxLDcgKzU5MDEsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRQYWdlU2NhbGVGYWN0b3JQcm9wZXJ0eShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIGNvbnRybwogewogICAgIEpTQzo6UHV0UHJvcGVydHlTbG90IHByb3BlcnR5U2xvdChjb250
cm9sbGVyVmFsdWUpOwogICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xsZXJPYmplY3QgPSBjb250
cm9sbGVyVmFsdWUudG9PYmplY3QoZXhlYyk7Ci0gICAgY29udHJvbGxlck9iamVjdC0+bWV0aG9k
VGFibGUoKS0+cHV0KGNvbnRyb2xsZXJPYmplY3QsIGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVj
LCAicGFnZVNjYWxlRmFjdG9yIiksIEpTQzo6anNOdW1iZXIocGFnZVNjYWxlRmFjdG9yKSwgcHJv
cGVydHlTbG90KTsKKyAgICBjb250cm9sbGVyT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoY29u
dHJvbGxlck9iamVjdCwgZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJw
YWdlU2NhbGVGYWN0b3IiKSwgSlNDOjpqc051bWJlcihwYWdlU2NhbGVGYWN0b3IpLCBwcm9wZXJ0
eVNsb3QpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRv
d1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKQEAgLTU5MzAsNyArNTkzMCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQog
ICAgIC8vIFJldHVybiB2YWx1ZToKICAgICAvLyAgICAgQSByZWZlcmVuY2UgdG8gdGhlIGNyZWF0
ZWQgbWVkaWEgY29udHJvbGxlciBpbnN0YW5jZS4KIAotICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlv
blZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJj
cmVhdGVDb250cm9scyIpKTsKKyAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2Jh
bE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3Jl
YXRlQ29udHJvbHMiKSk7CiAgICAgaWYgKGZ1bmN0aW9uVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01OTU4LDcgKzU5NTgsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKIAog
ICAgIC8vIENvbm5lY3QgdGhlIE1lZGlhLCBNZWRpYUNvbnRyb2xsZXJIb3N0LCBhbmQgQ29udHJv
bGxlciBzbyB0aGUgR0Mga25vd3MgYWJvdXQgdGhlaXIgcmVsYXRpb25zaGlwCiAgICAgSlNDOjpK
U09iamVjdCogbWVkaWFKU1dyYXBwZXJPYmplY3QgPSBtZWRpYUpTV3JhcHBlci50b09iamVjdChl
eGVjKTsKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbHNIb3N0KCZleGVjLT52bSgpLCAiY29u
dHJvbHNIb3N0Iik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xzSG9zdCA9IEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwgImNvbnRyb2xzSG9zdCIpOwogICAgIAog
ICAgIEFTU0VSVCghbWVkaWFKU1dyYXBwZXJPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGNvbnRy
b2xzSG9zdCkpOwogCkBAIC01OTY4LDcgKzU5NjgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKICAgICBpZiAoIW1l
ZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXIoJmV4ZWMtPnZtKCksICJjb250cm9sbGVyIik7
CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXIgPSBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcoJmV4ZWMtPnZtKCksICJjb250cm9sbGVyIik7CiAKICAgICBBU1NFUlQoIWNvbnRyb2xs
ZXJPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGNvbnRyb2xsZXIpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggMDliYzE2NTZlODZj
ZWI0NDQ1NjAxZDA5YmI0NzBhNzJjZWJjMGM5Yy4uZjAwZWU2YzUyNDA5OTVkMzRiNmM5YjVmZWI5
OWNkZmU5ZjM3MTNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgYXJn
TGlzdC5hcHBlbmQoSlNDOjpqc0Jvb2xlYW4oIW1fc25hcHNob3RJbWFnZSkpOwogCiAgICAgLy8g
SXQgaXMgZXhwZWN0ZWQgdGhlIEpTIGZpbGUgcHJvdmlkZXMgYSBjcmVhdGVPdmVybGF5KHNoYWRv
d1Jvb3QsIHRpdGxlLCBzdWJ0aXRsZSkgZnVuY3Rpb24uCi0gICAgSlNDOjpKU09iamVjdCogb3Zl
cmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3Jl
YXRlT3ZlcmxheSIpKS50b09iamVjdChleGVjKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBvdmVybGF5
ID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJjcmVhdGVPdmVybGF5IikpLnRvT2JqZWN0KGV4ZWMpOwogICAgIEpTQzo6Q2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IG92ZXJsYXktPm1ldGhvZFRh
YmxlKCktPmdldENhbGxEYXRhKG92ZXJsYXksIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUg
PT0gSlNDOjpDYWxsVHlwZU5vbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggMDJlM2Y0OWVmN2M4MWZmOGE3MDQzMTg0YjY0MGMw
NThlNmY2ZDY5Ny4uYjUyZDFlNjJhNTY2Yjk5NmRjZDkyYWM5NGQ0YTMwZjI0NmJiYzhkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApA
QCAtNDgsNyArNDgsNyBAQCB2b2lkIGluamVjdEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2xvYmFsT2JqZWN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKGlzPERvY3VtZW50Pigqc2NyaXB0Q29udGV4dCkp
Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIo
ZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBJ
bnRlcm5hbHM6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0Q29udGV4dCkpKSk7Cisg
ICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0Q29udGV4
dCkpKSk7CiB9CiAKIHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4IDljZDY1NWM5ZjcxMDUzNWE5ZGYyYWY0NTdk
NzA0NDZhNmQ5YjZlNjcuLjM0NDFlNGZiMTM3OGQ5Mzg3NTY0NTZlYjk1OWQ1ZGZkMTFmOGJiMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC02MjcsNyArNjI3LDcgQEAgc3RhdGljIElkZW50
aWZpZXIgaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKElkZW50aWZpZXJSZXAqIGlkZW50aWZp
ZXIpCiAgICAgQVNTRVJUKGlkZW50aWZpZXItPmlzU3RyaW5nKCkpOwogICAKICAgICBjb25zdCBj
aGFyKiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmcoKTsgICAgCi0gICAgcmV0dXJuIElkZW50aWZp
ZXIoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZh
bGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4x
RmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpOwogfQogCiBrZXJuX3JldHVybl90IFdLUENJbnZv
a2UobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQsIHVpbnQzMl90IHJl
cXVlc3RJRCwgdWludDMyX3Qgb2JqZWN0SUQsIHVpbnQ2NF90IHNlcnZlcklkZW50aWZpZXIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggY2FkZTllMWU5ZmRmN2I2ZjY0MTA4NWRi
NDcwM2FiODQzMzg1M2E2ZC4uM2I5OGZkNGU4NzNkMDBmMTc4ZmE5NDg5NTlmYTQ4MWViODExZmQ0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTIzMSw3ICsxMjMxLDcgQEAg
Ym9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSh1aW50MzJfdCBvYmpl
Y3RJRCwgZGF0YV90JiByZXN1bHREYXQKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXkqPiBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsg
aSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94
eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbQppbmRleCAwZGYwZGVjMGMyNDc4ZjBmYjFmZTg4YzY0ODkzMGIyYWE4MmYwZjAyLi43
NTFiMTZhZGNiMDNlYTllM2M5NjEzOTBjYWM0ZWE4NDNiYTBkZDBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTMyMSw3ICsz
MjEsNyBAQCB2b2lkIFByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgbmFtZUFycgogCiAgICAgICAgIGlmIChpZGVudGlmaWVy
LT5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlmaWVy
LT5zdHJpbmcoKTsKLSAgICAgICAgICAgIG5hbWVBcnJheS5hZGQoSWRlbnRpZmllcigmSlNET01X
aW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3Ry
LCBzdHJsZW4oc3RyKSkpKTsKKyAgICAgICAgICAgIG5hbWVBcnJheS5hZGQoSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVURjhXaXRo
TGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBuYW1lQXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmllci0+
bnVtYmVyKCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggMWNlZDI5M2ViOGNjYzc3
ZDM3MDliOWJkMzk4MDhjYzM5ODEyNzM3Ny4uZmRiZTgxYThlMGJlOTc2OTQ5OWFjOWIyZDNlMGZh
MzFkYmI1NTgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQg
SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBpZGVu
dGlmaWVyUmVwLT5zdHJpbmcoKTsKICAgICAgICAgICAgIGludCBsZW5ndGggPSBzdHJsZW4oc3Ry
aW5nKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZpZXIo
ZXhlYywgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCku
aW1wbCgpKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5ndGgp
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApp
bmRleCAwZDE2Njc0ZTVjMTVmNDcxNzE4NTQzZDI1Y2E0ZjMxMDljMDUyZDIyLi5hNjVjODkzM2Zj
ZTBjYjgwYmQwOTZjNzY0NzY4YzAyYzEwOGZjMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC04
Nyw3ICs4Nyw3IEBAIHN0YXRpYyBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJl
cChFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXJSZXAqIGlkCiAgICAgY29uc3QgY2hhciogc3Ry
aW5nID0gaWRlbnRpZmllclJlcC0+c3RyaW5nKCk7CiAgICAgaW50IGxlbmd0aCA9IHN0cmxlbihz
dHJpbmcpOwogCi0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpmcm9tVVRGOFdp
dGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkuaW1wbCgpKTsKKyAgICByZXR1cm4gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrKHN0cmluZywgbGVuZ3RoKSk7CiB9CiAKIGJvb2wgTlBKU09iamVjdDo6aGFzTWV0aG9kKE5Q
SWRlbnRpZmllciBtZXRob2ROYW1lKQpAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgTlBKU09iamVj
dDo6ZW51bWVyYXRlKE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXJzLCB1aW50MzJfdCogaWRlbnRp
ZmllckNvdW50CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKICAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVjdC5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1l
cywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgbV9qc09iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogCiAgICAg
TlBJZGVudGlmaWVyKiBuYW1lSWRlbnRpZmllcnMgPSBucG5NZW1OZXdBcnJheTxOUElkZW50aWZp
ZXI+KHByb3BlcnR5TmFtZXMuc2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQxYzEwODgwNDA5YWUxNzdlNTNh
ZjI1ZDVjODc1MDg1OGZmNTk0NjcuLjJkNWY4Y2U3ZTcyNmVkN2RiNjVkODEyYjIxZDI1YzM2OGJh
ZGNiY2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMy0wNCAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICoganMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5q
czoKKwogMjAxNS0wMy0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFRlc3QgZ2FyZGVuaW5nIGFmdGVyIHIxODEwMTMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAppbmRl
eCBmZmM2OTMwMDUwYjZiZGE2MmM1M2I1MDYxMjI3NWQ0ODk4MzFhZDg1Li42OGI3NWU1YTI3NmUz
YTkwZTkyOTdiNWRlODRiMTUyZjM2NGFkZTFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9P
YmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
anMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CkBAIC00MCw3ICs0MCw3
IEBAIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhkZWNvZGVVUkkpIGlzIFsnbGVuZ3Ro
JywgJ25hbWUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKGRlY29kZVVSSUNvbXBv
bmVudCkgaXMgWydsZW5ndGgnLCAnbmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFt
ZXMoZW5jb2RlVVJJKSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJv
cGVydHlOYW1lcyhlbmNvZGVVUklDb21wb25lbnQpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQotUEFT
UyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5l
UHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNF
eHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25h
bWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXQorUEFTUyBnZXRT
b3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVy
dGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywgJ2dl
dFByb3RvdHlwZU9mJywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdr
ZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScs
ICdzZWFsJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBl
KSBpcyBbJ19fZGVmaW5lR2V0dGVyX18nLCAnX19kZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdl
dHRlcl9fJywgJ19fbG9va3VwU2V0dGVyX18nLCAnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywg
J2hhc093blByb3BlcnR5JywgJ2lzUHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUn
LCAndG9Mb2NhbGVTdHJpbmcnLCAndG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoRnVuY3Rpb24pIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90
eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhGdW5jdGlvbi5wcm90b3R5cGUp
IGlzIFsnYXBwbHknLCAnYmluZCcsICdjYWxsJywgJ2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICdu
YW1lJywgJ3RvU3RyaW5nJ10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwppbmRleCBiNDI0YjA1ZTRkODNjMmE5
YTZiYWUyYTlkMzRiMzQzZWU2MDk4MTE0Li5mYmQ2NWRkM2FjOTdjZDhhN2QwZWRhYzQzOWZlZDdk
NzgzZTAxMGQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0
LWdldE93blByb3BlcnR5TmFtZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCkBAIC00OCw3ICs0OCw3IEBACiAgICAgImVu
Y29kZVVSSSI6ICJbJ2xlbmd0aCcsICduYW1lJ10iLAogICAgICJlbmNvZGVVUklDb21wb25lbnQi
OiAiWydsZW5ndGgnLCAnbmFtZSddIiwKIC8vIEJ1aWx0LWluIEVDTUEgb2JqZWN0cwotICAgICJP
YmplY3QiOiAiWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScs
ICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFt
ZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2Vh
bGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJv
dG90eXBlJywgJ3NlYWwnXSIsCisgICAgIk9iamVjdCI6ICJbJ2NyZWF0ZScsICdkZWZpbmVQcm9w
ZXJ0aWVzJywgJ2RlZmluZVByb3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3InLCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCAn
Z2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywg
J2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBl
JywgJ3NlYWwnXSIsCiAgICAgIk9iamVjdC5wcm90b3R5cGUiOiAiWydfX2RlZmluZUdldHRlcl9f
JywgJ19fZGVmaW5lU2V0dGVyX18nLCAnX19sb29rdXBHZXR0ZXJfXycsICdfX2xvb2t1cFNldHRl
cl9fJywgJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1By
b3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3Rv
U3RyaW5nJywgJ3ZhbHVlT2YnXSIsCiAgICAgIkZ1bmN0aW9uIjogIlsnbGVuZ3RoJywgJ25hbWUn
LCAncHJvdG90eXBlJ10iLAogICAgICJGdW5jdGlvbi5wcm90b3R5cGUiOiAiWydhcHBseScsICdi
aW5kJywgJ2NhbGwnLCAnY29uc3RydWN0b3InLCAnbGVuZ3RoJywgJ25hbWUnLCAndG9TdHJpbmcn
XSIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248266</attachid>
            <date>2015-03-09 12:07:28 -0700</date>
            <delta_ts>2015-03-14 00:27:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150310040703.patch</filename>
            <type>text/plain</type>
            <size>266116</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjY0MDhlMGJkMTc2OWMyMzk3MmZiMDVlYzFiNTg2NzJjMTcwMDk1Li5iZjdlODUzMmZkNTNmNGFk
MDlhZTZhOWRhMzNjNTE1Y2U3MjhkOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDQgQEAKKzIwMTUtMDMtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGlucy9gLCB0aGV5IHNob3VsZCBub3QgYmUgZXhwb3NlZC4KKyAgICAgICAgVG8g
ZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIHRoZSB1c3VhbCBzeW1ib2xzLCBjaGVja2luZyB0aGUgdGFy
Z2V0IGBTdHJpbmdJbXBsKmAgaXMgYSBub3QgcHJpdmF0ZSBuYW1lCisgICAgICAgIGJlZm9yZSBh
ZGRpbmcgaXQgaW50byBQcm9wZXJ0eU5hbWVBcnJheS4KKworICAgICAgICBUbyBjaGVjayB0aGUg
dGFyZ2V0IGBTdHJpbmdJbXBsKmAgaXMgYSBwcml2YXRlIG5hbWUsIHdlIGxldmVyYWdlIHByaXZh
dGVUb1B1YmxpYyBtYXAgaW4gYEJ1aWx0aW5OYW1lc2AKKyAgICAgICAgc2luY2UgYWxsIHByaXZh
dGUgc3ltYm9scyBhcmUgaGVsZCBpbiB0aGlzIG1hcC4KKworICAgICAgICBUbyBjbGVhbiB1cCBg
U3RyaW5nSW1wbGAsIHdlIGludHJvZHVjZSBgU3RyaW5nS2luZGAgaW50byBgU3RyaW5nSW1wbGAu
IFRoZXJlJ3MgMyBraW5kcworICAgICAgICAxLiBTdHJpbmdOb3JtYWwgKG5vbi1hdG9taWMsIG5v
bi1zeW1ib2wpCisgICAgICAgIDIuIFN0cmluZ0F0b21pYyAoYXRvbWljLCBub24tc3ltYm9sKQor
ICAgICAgICAzLiBTdHJpbmdTeW1ib2wgKG5vbi1hdG9taWMsIHN5bWJvbCkKKyAgICAgICAgVGhl
eSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBBbmQgKGF0b21pYywgc3ltYm9sKSBjYXNlIHNob3Vs
ZCBub3QgZXhpc3QuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEuIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzCisgICAgICAgIDIuIEluY2x1ZGUvRXhjbHVkZSBTeW1ib2xzCisgICAgICAgIDMuIElu
Y2x1ZGUvRXhjbHVkZSBKU09iamVjdCBwcm9wZXJ0eSBuYW1lcworICAgICAgICBJbiB0aGUgYSBs
b3Qgb2YgY29kZSwgd2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBh
IGxvdCBvZiBjYWxsZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1l
QXJyYXlgIGRvZXNuJ3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25z
ZXJ2YXRpdmUgYXNzdW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAg
IEluIHRoZSBhIGxvdCBvZiBwbGFjZXMsIGBJZGVudGlmaWVyKFZNKi9FeGVjU3RhdGUqLCBTdHJp
bmdJbXBsKilgIGNvbnN0cnVjdG9yIGlzIHVzZWQuCisgICAgICAgIEhvd2V2ZXIsIGl0J3MgYW1i
aWd1b3VzIGJlY2F1c2UgYFN0cmluZ0ltcGwqYCBoYXMgMiBkaWZmZXJlbnQgbWVhbmluZ3MuCisg
ICAgICAgIDEpIG5vcm1hbCBzdHJpbmcsIGl0IGlzIHJlcGxhY2FibGUgd2l0aCBgV1RGU3RyaW5n
YCBhbmQgMikgYHVpZGAsIHdoaWNoIGhvbGRzIGBpc1N5bWJvbGAgaW5mb3JtYXRpb24gdG8gcmVw
cmVzZW50IFN5bWJvbHMuCisgICAgICAgIFNvIHdlIGRyb3BwZWQgSWRlbnRpZmllciBjb25zdHJ1
Y3RvcnMgZm9yIHN0cmluZ3MgYW5kIGluc3RlYWQsIGludHJvZHVjZWQgMiBmYWN0b3J5IGZ1bmN0
aW9ucy4KKyAgICAgICAgKyBgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSovRXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJilgLgorICAgICAgICAgICAgSnVzdCBjb25zdHJ1Y3QgSWRlbnRpZmllciBm
cm9tIHN0cmluZ3MuIFRoZSBzeW1ib2wtbmVzcyBvZiBTdHJpbmdJbXBsKiBpcyBub3Qga2VwdC4K
KyAgICAgICAgKyBgSWRlbnRpZmllcjo6ZnJvbVVpZChWTSovRXhlY1N0YXRlKiwgU3RyaW5nSW1w
bCopYC4KKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgMikgYHVpZGAuIFNv
IHN5bWJvbC1uZXNzIG9mIGBTdHJpbmdJbXBsKmAgaXMga2VwdC4KKworICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb24pOgorICAgICAg
ICAoSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL09wYXF1ZUpTU3Ry
aW5nLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5O
YW1lcyk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFtZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAg
KiBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNp
cmVkSWRlbnRpZmllcnM6OnJlYWxseUFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhv
c3Q6OmZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChJbnNwZWN0b3I6OmNvbnN0cnVjdEludGVy
bmFsUHJvcGVydHkpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6
d2Vha01hcEVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9z
dDo6aXRlcmF0b3JFbnRyaWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0cmFjdFNvdXJj
ZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGV4cGxjaXRseSBjaGVjayBgaXNT
eW1ib2woKWAgaW4gdGhlIGNhbGxlciBzaWRlLiBXZSBjYW4ganVzdCB1c2UgYElkZW50aWZpZXI6
OmZyb21VaWRgLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6Cisg
ICAgICAgIChHbG9iYWxPYmplY3Q6OmFkZENvbnN0cnVjdGFibGVGdW5jdGlvbik6CisgICAgICAg
IChmdW5jdGlvblJ1bik6CisgICAgICAgIChydW5XaXRoU2NyaXB0cyk6CisgICAgICAgICogbGxp
bnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3Nl
cnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAg
ICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphZGRW
YXIpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpjcmVhdGVCaW5kaW5nUGF0dGVybik6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmg6
CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIpOgorICAgICAg
ICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIpOgor
ICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VOdW1lcmljSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6Z2V0T3duUHJv
cGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJh
eVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVu
Y1B1c2gpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NvcnQpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlm
aWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVy
czo6aXNQcml2YXRlTmFtZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
OgorICAgICAgICAqIHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmg6CisgICAgICAgIChKU0M6OkVu
dW1lcmF0aW9uTW9kZTo6RW51bWVyYXRpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6RW51bWVyYXRp
b25Nb2RlOjpzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6
RW51bWVyYXRpb25Nb2RlOjpzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKToKKyAg
ICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpzaG91bGRJbmNsdWRlU3ltYm9scyk6CisgICAg
ICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6Y3JlYXRlVGhhdFNraXBzSlNPYmplY3QpOgorICAg
ICAgICAoSlNDOjpzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6c2hvdWxkRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjptb2RlVGhhdFNraXBzSlNPYmplY3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjphZGRFcnJvckluZm8pOgorICAg
ICAgICAoSlNDOjpoYXNFcnJvckluZm8pOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVy
OjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZnJvbSk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVp
ZCk6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAg
ICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZHVtcElu
Q29udGV4dEFzc3VtaW5nU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2FsbGVlLmg6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJ1bnRpbWVGbGFncyk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OmdldENsYXNzUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZWlm
eVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRH
ZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAg
ICAgICAoSlNDOjptYWtlSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1Jh
Y2UpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNBbGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmg6CisgICAgICAgIChKU0M6OnN0
cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpnZW5lcmljUHJv
cGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAoSlNDOjpKU1N0cmluZzo6dG9JZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+Ojp0cnlK
U09OUFBhcnNlKToKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46Om1ha2VJ
ZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpy
ZWlmeVN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXRo
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpO
dW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yS2V5cyk6CisgICAgICAg
IChKU0M6OmRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
clNlYWwpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAg
IChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWU6OlByaXZh
dGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmZpbmQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRh
YmxlOjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChK
U0M6OlByb3BlcnR5TmFtZTo6UHJvcGVydHlOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlO
YW1lOjpwdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lOjphc0luZGV4KToK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVB
cnJheS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6YWRkS25vd25VbmlxdWUp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldFByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlNldFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6U3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanM6IEFkZGVkLgorICAg
ICAgICAoZm9ySW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wtZGVmaW5lLXByb3Bl
cnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTeW1ib2wpOgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3Mvc3ltYm9sLXdpdGgtanNvbi5qczogQWRkZWQuCisKIDIwMTUtMDMtMDggIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpJVFRodW5rcyBrZWVwcyBmaW5h
bGl6ZWQgV2Vha3MgYXJvdW5kLCBwaW5uaW5nIFdlYWtCbG9ja3MuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhjZjAxZDBmZjMw
MWI2MmI3NjBiNDNhOTFkZjY3NThlNjBjNjZhZWYuLmVjY2YwMmY4OWJmODlhNWM0OTNlMTI1OGI1
MGJhNGExZGI1MzNjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTUtMDMtMDkgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU3RyaW5nS2luZCBpbnRvIGBTdHJpbmdJbXBs
YC4gVGhlcmUncyAzIGtpbmRzCisgICAgICAgIDEuIFN0cmluZ05vcm1hbCAobm9uLWF0b21pYywg
bm9uLXN5bWJvbCkKKyAgICAgICAgMi4gU3RyaW5nQXRvbWljIChhdG9taWMsIG5vbi1zeW1ib2wp
CisgICAgICAgIDMuIFN0cmluZ1N5bWJvbCAobm9uLWF0b21pYywgc3ltYm9sKQorICAgICAgICBU
aGV5IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNT
dHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKToKKyAg
ICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpmaW5kU2xvd0Nhc2UpOgorICAgICAgICBXaGVuIHJl
Z2lzdGVyaW5nIGEgc3RyaW5nIGludG8gQXRvbWljU3RyaW5nVGFibGUsIGl0IHNob3VsZCBub3Qg
YmUgYSBzeW1ib2wgc3RyaW5nIGJlY2F1c2Ugc3ltYm9sIGFuZCBhdG9taWMgdHlwZXMgYXJlIG11
dHVhbGx5IGV4Y2x1c2l2ZS4KKyAgICAgICAgV2hlbiBhIHN5bWJvbCBzdHJpbmcgY29tZXMsIHdl
IGV4dHJhY3QgYW4gb3duZXIgc3RyaW5nIGZyb20gYSBzeW1ib2wgc3RyaW5nIGJ5IHVzaW5nIGBT
dHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKWAuIEl0IGFsd2F5cyBzdWNj
ZWVkcyBiZWNhdXNlIGEgc3ltYm9sIChub24gZW1wdHkpIHN0cmluZyBpcyBhbHdheXMgQnVmZmVy
U3Vic3RyaW5nIGFuZCBoYXMgYW4gb3duZXIgc3RyaW5nLgorICAgICAgICBFbXB0eSBzeW1ib2wg
c3RyaW5nIGRvZXNuJ3QgaGF2ZSBhbiBvd25lciBzdHJpbmcuIFRoaXMgY2FzZSBpcyBmaWx0ZXJl
ZCBieSBgIXN0cmluZy5sZW5ndGgoKWAgZ3VhcmQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGQpOgorICAgICAgICAo
V1RGOjpBdG9taWNTdHJpbmc6OmFkZFdpdGhTdHJpbmdUYWJsZVByb3ZpZGVyKToKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6flN0
cmluZ0ltcGwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVTeW1ib2wpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWUpOiBEZWxldGVkLgorICAgICAgICAq
IHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6U3RyaW5n
SW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbEVtcHR5KToKKyAg
ICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6ZmxhZ0lzU3ltYm9sKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6bWFza1N0
cmluZ0tpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpzdHJpbmdLaW5kKToKKyAgICAg
ICAgKFdURjo6U3RyaW5nSW1wbDo6aXNTeW1ib2wpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
Ojppc0F0b21pYyk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnNldElzQXRvbWljKToKKyAg
ICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKToKKyAg
ICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNVbmlxdWUpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjppc1VuaXF1ZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nU3RhdGljcy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc2hBbmRGbGFn
c0ZvclN5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc2hBbmRGbGFnc0ZvclVu
aXF1ZSk6IERlbGV0ZWQuCisKIDIwMTUtMDMtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gV1RGOjpXb3JrUXVldWUgZG9lcyBub3QgYmFsYW5j
ZSByZWYvZGVyZWYgcHJvcGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNzUzMDRhNzdhNWE4MDgxMDZjODZm
YTk0NTU4ZDdiYWU2NDkwMTRhLi42ODhkMjg0MjIxYTJhZWI5MjE2MzRjNzViMTljZGIxZTQwOTBm
ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDE1LTAzLTA5ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2Jq
ZWN0LmdldE93blByb3BlcnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIElkZW50aWZpZXI6OmZyb21TdHJpbmcgYW5kIElkZW50aWZp
ZXI6OmZyb21VaWQuCisKKyAgICAgICAgVGVzdHM6IGpzL29iamVjdC1nZXQtb3duLXByb3BlcnR5
LXN5bWJvbHMuaHRtbAorICAgICAgICAgICAgICAganMvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5o
dG1sCisgICAgICAgICAgICAgICBqcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmh0bWwKKyAgICAg
ICAgICAgICAgIGpzL3N5bWJvbC13aXRoLWpzb24uaHRtbAorCisgICAgICAgICogTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5qZWN0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6Omluc3Rh
bGxSZXBsYWNlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNo
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlND
YWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Nv
bW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRKU0xpc3Rl
bmVyRnVuY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0Ojpn
ZXRFdmVudExpc3RlbmVycyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0
aG1CdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRl
cjo6YWRkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25h
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0SGFzaEFsZ29yaXRobSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uSldLLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTQXJyYXlGcm9tSlNP
Tik6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJpbmdGcm9tSlNPTik6CisgICAgICAgIChXZWJD
b3JlOjpnZXRCb29sZWFuRnJvbUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6YWRkVG9KU09OKToK
KyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSlNPTkZvclJTQUNvbXBvbmVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6YWRkQm9vbFRvSlNPTik6CisgICAgICAgIChXZWJDb3JlOjphZGRVc2FnZXNUb0pT
T04pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3Bh
Y2VVUkkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRpYWxvZ0hh
bmRsZXI6OmRpYWxvZ0NyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlhbG9nSGFuZGxlcjo6
cmV0dXJuVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEFjY2VsZXJhdGlvbkFyZ3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OnJlYWRSb3RhdGlvblJhdGVBcmd1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVBY2NlbGVyYXRpb25PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUm90YXRpb25SYXRlT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25h
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
bEhUTUxBbGxDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENvbGxlY3Rp
b246Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJ
dGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6YWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTERvY3VtZW50OjpzZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1l
bnQ6Om9wZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9z
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTU3RvcmFnZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6Omdl
dE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFt
SlNTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SW50ZXJuYWxTbG90VG9PYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW50ZXJuYWxTbG90RnJvbU9iamVjdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdsb2Jh
bE9iamVjdDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdsb2JhbE9iamVjdDo6cmVt
b3ZlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpDbG9uZVNlcmlhbGl6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURl
c2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2Ny
aXB0T2JqZWN0Lm1tOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgY2FsbFdlYlNjcmlwdE1l
dGhvZDp3aXRoQXJndW1lbnRzOl0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3Qgc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgdmFsdWVGb3JLZXk6XSk6
CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCByZW1vdmVXZWJTY3JpcHRLZXk6XSk6CisgICAg
ICAgICgtW1dlYlNjcmlwdE9iamVjdCBoYXNXZWJTY3JpcHRLZXk6XSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKToK
KyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAoX05QTl9FbnVtZXJh
dGUpOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjppZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcik6CisgICAgICAgICogYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNr
T2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5
LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKiBicmlkZ2UvdGVzdGJpbmRpbmdzLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIGJyaWRnZS90ZXN0YmluZGluZ3MubW06CisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dlcik6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6bG9hZEFjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFn
ZW50U2hhZG93Um9vdCk6CisgICAgICAgICogdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNPYmplY3Qp
OgorCiAyMDE1LTAzLTA5ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlh
LmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAog
ICAgICAgICBSZWFkYWJsZVN0cmVhbUpTU291cmNlIHNob3VsZCB1c2UgSlNDOjpTdHJvbmcgVW5z
cGVjaWZpZWRCb29sVHlwZSBvcGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDJkOGY3MzlkMzMz
YWJjMjNhNTNkZDc5YjUyNTdhMTU0MTRiZWM5MDguLmQzMWE3ZGI5YzMwMDYxZmFiZTczZjJjZjFi
ZjVkNTJkZGJkZWQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0w
My0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nIGFuZCBJZGVudGlmaWVyOjpmcm9tVWlkLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW06CisgICAgICAgIChpZGVudGlmaWVyRnJvbUlkZW50
aWZpZXJSZXApOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
OjplbnVtZXJhdGUpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06
CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMpOgorCiAy
MDE1LTAzLTA2ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU1ZHIGZvbnRzIGFyZSBnYXJibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmE1MThhNDg4
ZjgzMTUwMjhhOWZmNDcyZThiN2EwODdkYmEyZjk1MS4uZWFiMTZlYzNhZGQ2N2MzNTU3M2Y2MGQ3
NzI5NTEzZDNiMDcyMmRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTAzLTA5
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIElkZW50aWZpZXI6OmZyb21TdHJpbmcg
YW5kIElkZW50aWZpZXI6OmZyb21VaWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aWRlbnRpZmllckZyb21JZGVudGlm
aWVyUmVwKToKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6ZW51bWVyYXRlKToKKwogMjAx
NS0wMy0wOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBN
ZWRpYV0gVmlkZW8gYnVmZmVyIHByb2dyZXNzIG1pc3Npbmcgb24gaVBob25lcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApp
bmRleCA4Y2JmMGZmNDkwMjIyYTM2OTA1M2JmNzFmNjNkNmQ0NGVlMjVlM2IzLi4yMmFmZTQ4ZmI4
Y2MzNjFmZTYxNDA4OWJlMmUxODkzYmFmYmU1MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTE4LDggKzUx
OCwxMCBAQAogICAgICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IHN0YXRpY1ZhbHVlcy0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogbmFt
ZSA9IGl0LT5rZXkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgU3RhdGljVmFsdWVFbnRyeSogZW50
cnkgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5nZXRQcm9w
ZXJ0eSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVu
dW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpKQotICAgICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZW50cnktPmdldFByb3BlcnR5ICYmICghKGVudHJ5LT5hdHRyaWJ1
dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbmFt
ZS0+aXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKG5hbWUpKSk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApAQCAtNTI5LDggKzUzMSwx
MCBAQAogICAgICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IHN0YXRpY0Z1bmN0aW9ucy0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogbmFt
ZSA9IGl0LT5rZXkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgU3RhdGljRnVuY3Rpb25FbnRyeSog
ZW50cnkgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCEoZW50cnktPmF0
dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIShl
bnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IG1vZGUu
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghbmFtZS0+aXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKG5hbWUpKSk7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCAyMzRkMjQ4OGZmODkwYjhi
ZWU2OTdlZjU1YWE2ODAzODBhMTgxYTQyLi41OTBhNTM3MDE2OTk1MmIxMjlmMGEzNDQ2NGNkNGE1
ZThlZjNlYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uKEpTQ29u
dGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUsIHVuc2lnbmVkIHBhCiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKIAogICAgIHN0YXJ0aW5nTGluZU51bWJlciA9IHN0ZDo6bWF4KDEs
IHN0YXJ0aW5nTGluZU51bWJlcik7Ci0gICAgSWRlbnRpZmllciBuYW1lSUQgPSBuYW1lID8gbmFt
ZS0+aWRlbnRpZmllcigmZXhlYy0+dm0oKSkgOiBJZGVudGlmaWVyKGV4ZWMsICJhbm9ueW1vdXMi
KTsKKyAgICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVj
LT52bSgpKSA6IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFub255bW91cyIpOwogICAg
IAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHBhcmFtZXRlckNvdW50OyBpKyspCkBAIC02OTgsNyArNjk4LDcgQEAgSlNQcm9wZXJ0
eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIG8KICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAg
ICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBwcm9wZXJ0eU5hbWVzID0gbmV3IE9wYXF1ZUpTUHJv
cGVydHlOYW1lQXJyYXkodm0pOwogICAgIFByb3BlcnR5TmFtZUFycmF5IGFycmF5KHZtKTsKLSAg
ICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhqc09iamVjdCwgZXhl
YywgYXJyYXksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGpzT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKGpzT2JqZWN0LCBleGVjLCBhcnJheSwgRW51bWVy
YXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgIHNpemVfdCBzaXpl
ID0gYXJyYXkuc2l6ZSgpOwogICAgIHByb3BlcnR5TmFtZXMtPmFycmF5LnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09w
YXF1ZUpTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJp
bmcuY3BwCmluZGV4IDIyYzE2MjMwYzdjMWQzNjkxMWM3ZDU4OWNlNTBmMDk0Mjg3YTFkOWUuLjdm
OWVkYjQxMzZlMjc0OTk3NDdkMjk2ZDJmMWEyZGM0ODliMDQ0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
SWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIApAQCAtNjksOSArNzAsOSBAQCBJZGVudGlmaWVy
IE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKFZNKiB2bSkgY29uc3QKICAgICAgICAgcmV0dXJu
IElkZW50aWZpZXIoSWRlbnRpZmllcjo6RW1wdHlJZGVudGlmaWVyKTsKIAogICAgIGlmIChtX3N0
cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIG1fc3RyaW5nLmNo
YXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIG1fc3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0
aCgpKTsKIAotICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBtX3N0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbV9zdHJpbmcubGVuZ3RoKCkpOwogfQogCiBj
b25zdCBVQ2hhciogT3BhcXVlSlNTdHJpbmc6OmNoYXJhY3RlcnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCAy
ZGY3ODc2NDEwZTc4Y2Y5ZmFiZjI0MTc4NmU2MDI0MmZlNGVlZTA5Li5mM2EyMjM4ZWJhOThmYzEy
ODI3YjgxZGVmMmM4MGM2MzE0Y2UwNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBA
IHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoYm9vbCBhcmd1
bWVudCkKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7CiAKLSAgICBKU1ZhbHVlIGZ1
bmN0aW9uID0gdGhpc09iamVjdC0+Z2V0KG1fZXhlYywgSWRlbnRpZmllcihtX2V4ZWMsIG1fbmFt
ZSkpOworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywgbV9uYW1lKSk7CiAgICAgaWYgKG1fZXhlYy0+aGFk
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgcmV0
dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA3NmE3YjExMWE4ZDg3N2E2NzliNWM4Yjhl
ODk2ZTFhN2IxYjZiOGFjLi41YTA1YmE4OWI5ZTkwY2E5NDA3Y2EzYThlYWU2MjA3NDcyOGExMmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAK
QEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIFNjcmlwdFZhbHVlOjppc0Z1bmN0aW9uKCkgY29uc3QK
ICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gaW5zcGVjdG9yT2JqZWN0ID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9i
amVjdCgpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKHNjcmlwdFN0
YXRlKTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKICAgICAgICAgICAgIEpTVmFsdWUgcHJvcGVy
dHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNjcmlwdFN0YXRlLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXgg
M2M4ZGFjNTMyZmFkODU4Y2YzOWJkYjUzMTFjMWYxMDc5MDBiMTRlNy4uMTM3ZDdhN2MyNmIyNGUy
MjNiMTU5MGMxZmMzZTBiZDJlYmEwY2ZlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTcxLDExICs3MSwxMSBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVC
dWlsdGluRXhlY3V0YWJsZShjb25zdCBTbwogICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOwogICAg
IGZvciAoY29uc3QgYXV0byYgY2xvc2VkVmFyaWFibGUgOiBwcm9ncmFtLT5jbG9zZWRWYXJpYWJs
ZXMoKSkgewogICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT5hcmd1bWVudHMuaW1wbCgpKQotICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAKICAgICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUtPmlzVW5pcXVlKCkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3ZtLnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoY2xv
c2VkVmFyaWFibGUuZ2V0KCkpKTsKICAgICB9CiAgICAgYm9keS0+b3ZlcnJpZGVOYW1lKG5hbWUp
OwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZtX3ZtLCBzb3VyY2UsIGJvZHksIFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaAppbmRleCA5Yjg4OTZiOTY4MDE0OTEzZjQ2YjMyYzQ4MGUwNTc4OTYz
NzlkZmE0Li5kN2Q5M2RhMmNhMTY2YTM5NGQ0MWUxMDI3MTI4ZDkzY2NkMGM2MzZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0zMSwxMiAr
MzEsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCi0jZGVmaW5lIElOSVRJQUxJU0VfQlVJ
TFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKHZtLCAjbmFtZSksIG1fIyNuYW1lIyNQcml2YXRl
TmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLiIg
I25hbWUpKSkpCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhuYW1lKSBjb25zdCBJZGVu
dGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lIyNQcml2YXRlTmFtZTs7
CisjZGVmaW5lIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShJZGVu
dGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpKQorI2RlZmluZSBERUNMQVJFX0JVSUxUSU5f
TkFNRVMobmFtZSkgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmllciBt
XyMjbmFtZSMjUHJpdmF0ZU5hbWU7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVS
X0FDQ0VTU09SKG5hbWUpIFwKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0gXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5h
bWUjI1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1ByaXZhdGVOYW1lOyB9
CiAKKyNkZWZpbmUgSU5JVElBTElTRV9CVUlMVElOX1NZTUJPTFMobmFtZSkgSU5JVElBTElTRV9C
VUlMVElOX05BTUVTKG5hbWUpLCBtXyMjbmFtZSMjU3ltYm9sKElkZW50aWZpZXI6OmZyb21VaWQo
UHJpdmF0ZU5hbWUoQVNDSUlMaXRlcmFsKCJTeW1ib2wuIiAjbmFtZSkpKSkKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NZTUJPTFMobmFtZSkgREVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUpIGNv
bnN0IElkZW50aWZpZXIgbV8jI25hbWUjI1N5bWJvbDsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElO
X1NZTUJPTF9BQ0NFU1NPUihuYW1lKSBcCisgICAgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJf
QUNDRVNTT1IobmFtZSkgXAorICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1N5bWJvbCgpIGNv
bnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTeW1ib2w7IH0KKwogI2RlZmluZSBJTklUSUFMSVNFX1BS
SVZBVEVfVE9fUFVCTElDX0VOVFJZKG5hbWUpIG1fcHJpdmF0ZVRvUHVibGljTWFwLmFkZChtXyMj
bmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpLCAmbV8jI25hbWUpOwogI2RlZmluZSBJTklUSUFMSVNF
X1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKG5hbWUpIG1fcHVibGljVG9Qcml2YXRlTWFwLmFkZCht
XyMjbmFtZS5pbXBsKCksICZtXyMjbmFtZSMjUHJpdmF0ZU5hbWUpOwogICAgIApAQCAtNDgsMjMg
KzU0LDMwIEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgICAgIDogbV9lbXB0eUlkZW50aWZp
ZXIoY29tbW9uSWRlbnRpZmllcnMtPmVtcHR5SWRlbnRpZmllcikKICAgICAgICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUykKICAgICAg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklU
SUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElG
SUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTKQog
ICAgIHsKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
U0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9J
REVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJ
Q19FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VM
TF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKICAgICAg
ICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFVCTElDX1RP
X1BSSVZBVEVfRU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKKyAg
ICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1C
T0woSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKICAgICB9CiAKKyAgICBib29s
IGlzUHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCogdWlkKSBjb25zdDsKKyAgICBib29sIGlzUHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIGNvbnN0IElkZW50aWZpZXIqIGdl
dFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICBjb25zdCBJZGVudGlm
aWVyJiBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICAKICAgICBK
U0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJ
RVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKyAgICBKU0Nf
Q09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJF
X0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SKQogCiBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbV9l
bXB0eUlkZW50aWZpZXI7CiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERF
Q0xBUkVfQlVJTFRJTl9OQU1FUykKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKyAgICBKU0NfQ09NTU9O
X1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxU
SU5fU1lNQk9MUykKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBjb25z
dCBJZGVudGlmaWVyKiwgSWRlbnRpZmllclJlcEhhc2g+IEJ1aWx0aW5OYW1lc01hcDsKICAgICBC
dWlsdGluTmFtZXNNYXAgbV9wdWJsaWNUb1ByaXZhdGVNYXA7CiAgICAgQnVpbHRpbk5hbWVzTWFw
IG1fcHJpdmF0ZVRvUHVibGljTWFwOwpAQCAtNzMsNyArODYsMTkgQEAgY2xhc3MgQnVpbHRpbk5h
bWVzIHsKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fTkFNRVMKICN1bmRlZiBJTklUSUFMSVNFX0JV
SUxUSU5fTkFNRVMKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUgor
I3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xTCisjdW5kZWYgSU5JVElBTElTRV9CVUlMVElO
X1NZTUJPTFMKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SCisKK2lubGlu
ZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZVRvUHVibGljTWFwLmZpbmQodWlkKSAhPSBtX3ByaXZh
dGVUb1B1YmxpY01hcC5lbmQoKTsKK30KIAoraW5saW5lIGJvb2wgQnVpbHRpbk5hbWVzOjppc1By
aXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworICAgIHJldHVybiBp
c1ByaXZhdGVOYW1lKGlkZW50LmltcGwoKSk7Cit9CiAKIGlubGluZSBjb25zdCBJZGVudGlmaWVy
KiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBj
b25zdAogewpAQCAtOTEsNyArMTE2LDcgQEAgaW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0
aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGMKICAgICBy
ZXR1cm4gbV9lbXB0eUlkZW50aWZpZXI7CiB9CiAKLSAgICAKKwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Q
cm9maWxlLmgKaW5kZXggOWE5ZGIwYmM3MGI5ZjEzNWY2NWRkMmQ3OTZkZTY1Mjg5NmFlMGZiMS4u
NTc4MGYwMGM3MjgxNGEzMTg1MGUxYzgyYTVhZGMyZTJlYjI4ODMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxl
LmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSB7CiAK
ICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJv
cGVydHlOYW1lQXJyYXkoJnZtKTsKLSAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0
UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0
UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJh
dGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAg
ICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0
eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnByb3BlcnR5TmFtZVZlY3Rv
cigpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZVZlY3Rvci5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHByb3RvdHlwZS0+Z2V0
RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA3
ODdjMjUwOWQyMTRlZDZmMTBiOWI2NTA2ZmU5NDdmNzQ5YzI3NTNhLi5lNWVjODAwYmZiYjcyOTc3
ZWMyMzI5ZDgxMmM3NTYzN2U5ZTRhMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDM4LDcgKzQz
OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoCiAgICAgVmVjdG9y
PElkZW50aWZpZXIsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiB2YXJpYWJsZXM7CiAgICAgdmFy
aWFibGVzLnJlc2VydmVDYXBhY2l0eShudW1WYXJpYWJsZXMpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtVmFyaWFibGVzOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKHZhclN0YWNrW2ld
LmZpcnN0LmltcGwoKS0+aXNBdG9taWMoKSk7CisgICAgICAgIEFTU0VSVCh2YXJTdGFja1tpXS5m
aXJzdC5pbXBsKCktPmlzQXRvbWljKCkgfHwgdmFyU3RhY2tbaV0uZmlyc3QuaW1wbCgpLT5pc1N5
bWJvbCgpKTsKICAgICAgICAgdmFyaWFibGVzLmFwcGVuZCh2YXJTdGFja1tpXS5maXJzdCk7CiAg
ICAgfQogICAgIGNvZGVCbG9jay0+YWRvcHRWYXJpYWJsZXModmFyaWFibGVzKTsKQEAgLTIzMzgs
MTQgKzIzMzgsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFRyeUFuZEVt
aXRDYXRjaChUcnlEYXRhKiB0cnlEYXRhLCBSZWdpc3RlcklEKgogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewog
ICAgIGVtaXRPcGNvZGUob3BfdGhyb3dfc3RhdGljX2Vycm9yKTsKLSAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyKG1f
dm0sIG1lc3NhZ2UpKSktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRD
b25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXI6OmZyb21TdHJpbmcobV92
bSwgbWVzc2FnZSkpKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRydWUp
OwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dUeXBlRXJyb3IoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewogICAgIGVtaXRPcGNvZGUob3BfdGhyb3dfc3RhdGljX2Vycm9y
KTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJpbmdD
b25zdGFudChJZGVudGlmaWVyKG1fdm0sIG1lc3NhZ2UpKSktPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50
aWZpZXI6OmZyb21TdHJpbmcobV92bSwgbWVzc2FnZSkpKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGZhbHNlKTsKIH0KIApAQCAtMjUxMiw3ICsyNTEyLDcgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKQogICAgIGlm
ICghaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBlbWl0T3Bjb2RlKG9wX3Ro
cm93X3N0YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcihtX3ZtLCBTdHJpY3RNb2RlUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXI6OmZyb21T
dHJpbmcobV92bSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSkpLT5pbmRl
eCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmFsc2UpOwogfQogICAgIApAQCAtMjU0
Niw3ICsyNTQ2LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICBMYWJlbFNjb3BlUHRy
IHNjb3BlID0gbmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc3ViamVjdCA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3Qu
Z2V0KCksIHN1YmplY3ROb2RlKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBl
bWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgc3ViamVjdC5nZXQoKSwgcHJvcGVydHlOYW1lcygp
Lml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9
IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVz
KCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIHsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0
aGlzLCBudWxscHRyKTsKICAgICAgICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgc3Vi
amVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRJZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2ly
ZWRJZGVudGlmaWVycy5jcHAKaW5kZXggNjBhNDk0ZGRjZjRiMTUzODFhY2FmMGM1ODE4OTY0NjRl
N2EyZTQzYi4uNjVjMzAxZGJlZTE2ZDNmNzRiNTQyN2I3YTBmNjkyNDg4NDFjNGUzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNw
cApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIERlc2lyZWRJZGVudGlmaWVyczo6cmVhbGx5QWRkKFZN
JiB2bSwgQ29tbW9uRGF0YSogY29tbW9uRGF0YSkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9hZGRlZElkZW50aWZpZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZ0ltcGwq
IHJlcCA9IG1fYWRkZWRJZGVudGlmaWVyc1tpXTsKICAgICAgICAgQVNTRVJUKHJlcC0+aGFzQXRM
ZWFzdE9uZVJlZigpKTsKLSAgICAgICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5k
KElkZW50aWZpZXIoJnZtLCByZXApKTsKKyAgICAgICAgY29tbW9uRGF0YS0+ZGZnSWRlbnRpZmll
cnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCByZXApKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdC5jcHAKaW5kZXggZDE1YWYzMjFhMjNjOTU0NWQyZjBlZmU2MDBkNzg3MjczODY2MWYy
Ni4uM2QwZjYwZWQxM2FlZDI1YzAwN2ZmYWZiZGVlYmFlNDc3OTAwZjljOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9z
dC5jcHAKQEAgLTE5NiwyMCArMTk2LDIwIEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6
OmZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBTdHJpbmcgc2NyaXB0SUQg
PSBTdHJpbmc6Om51bWJlcihzb3VyY2VDb2RlLT5wcm92aWRlcigpLT5hc0lEKCkpOwogICAgIEpT
T2JqZWN0KiBsb2NhdGlvbiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIGxvY2F0
aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAic2NyaXB0SWQiKSwg
anNTdHJpbmcoZXhlYywgc2NyaXB0SUQpKTsKLSAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgImxpbmVOdW1iZXIiKSwganNOdW1iZXIobGluZU51bWJl
cikpOwotICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAiY29sdW1uTnVtYmVyIiksIGpzTnVtYmVyKGNvbHVtbk51bWJlcikpOworICAgIGxvY2F0aW9u
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2Ny
aXB0SWQiKSwganNTdHJpbmcoZXhlYywgc2NyaXB0SUQpKTsKKyAgICBsb2NhdGlvbi0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpbmVOdW1iZXIi
KSwganNOdW1iZXIobGluZU51bWJlcikpOworICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29sdW1uTnVtYmVyIiksIGpzTnVt
YmVyKGNvbHVtbk51bWJlcikpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXIoZXhlYywgImxvY2F0aW9uIiksIGxvY2F0aW9uKTsKKyAgICByZXN1bHQtPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb2NhdGlvbiIpLCBs
b2NhdGlvbik7CiAKICAgICBTdHJpbmcgbmFtZSA9IGZ1bmN0aW9uLT5uYW1lKGV4ZWMpOwogICAg
IGlmICghbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXIoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOworICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKIAogICAgIFN0cmluZyBkaXNw
bGF5TmFtZSA9IGZ1bmN0aW9uLT5kaXNwbGF5TmFtZShleGVjKTsKICAgICBpZiAoIWRpc3BsYXlO
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcihleGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmcoZXhlYywgZGlzcGxheU5hbWUp
KTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmcoZXhlYywgZGlzcGxheU5hbWUp
KTsKIAogICAgIC8vIEZJWE1FOiBwcm92aWRlIGZ1bmN0aW9uIHNjb3BlIGRhdGEgaW4gInNjb3Bl
c1JhdyIgcHJvcGVydHkgd2hlbiBKU0Mgc3VwcG9ydHMgaXQuCiAgICAgLy8gPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzg3MTkyPiBbSlNDXSBleHBvc2UgZnVuY3Rpb24gKGNsb3N1cmUpIGlubmVyIGNv
bnRleHQgdG8gZGVidWdnZXIKQEAgLTIyMCw4ICsyMjAsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBleGVjKQogc3RhdGljIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBuYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKLSAgICBy
ZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ2YWx1ZSIpLCB2
YWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAibmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1lKSk7CisgICAgcmVzdWx0
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFs
dWUiKSwgdmFsdWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTM3NCw4ICszNzQsOCBA
QCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWFrTWFwRW50cmllcyhFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51
bGxwdHIpOwogICAgIGZvciAoYXV0byBpdCA9IHdlYWtNYXAtPndlYWtNYXBEYXRhKCktPmJlZ2lu
KCk7IGl0ICE9IHdlYWtNYXAtPndlYWtNYXBEYXRhKCktPmVuZCgpOyArK2l0KSB7CiAgICAgICAg
IEpTT2JqZWN0KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICBl
bnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImtleSIpLCBpdC0+
a2V5KTsKLSAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJ2YWx1ZSIpLCBpdC0+dmFsdWUuZ2V0KCkpOworICAgICAgICBlbnRyeS0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleSIpLCBpdC0+a2V5
KTsKKyAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJ2YWx1ZSIpLCBpdC0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBhcnJheS0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgZmV0Y2hlZCsrLCBlbnRyeSk7CiAgICAgICAgIGlmIChudW1i
ZXJUb0ZldGNoICYmIGZldGNoZWQgPj0gbnVtYmVyVG9GZXRjaCkKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDI0LDcgKzQyNCw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJh
dG9yRW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBKU09iamVjdCogZW50cnkgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICAgICAg
ZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ2YWx1ZSIpLCBu
ZXh0VmFsdWUpOworICAgICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgInZhbHVlIiksIG5leHRWYWx1ZSk7CiAgICAgICAgIGFycmF5
LT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBlbnRyeSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuY3BwCmluZGV4IDRiZmZhZDFlMTAwMGI5MTliZjU0OGFmZGI0NzU0NjEy
NGUxMzA5ZmMuLmIxY2UwYTEzOGJjMDVmMTAwNzcxNTc1ZTlhM2I5YjVjNTQ3OTBkNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSlNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhCiAgICAgSlNDX05BVElWRV9GVU5DVElPTigid2Vha01hcEVudHJpZXMi
LCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMsIERv
bnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJpdGVyYXRvckVudHJpZXMiLCBq
c0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzLCBEb250
RW51bSwgMSk7CiAKLSAgICBJZGVudGlmaWVyIGV2YWx1YXRlSWRlbnRpZmllcigmdm0sICJldmFs
dWF0ZSIpOworICAgIElkZW50aWZpZXIgZXZhbHVhdGVJZGVudGlmaWVyID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJldmFsdWF0ZSIpOwogICAgIEdldHRlclNldHRlciogYWNjZXNzb3Ig
PSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCBldmFs
dWF0ZUlkZW50aWZpZXIuc3RyaW5nKCksIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0
cmlidXRlRXZhbHVhdGUpOwogICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVj
dCwgZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCmluZGV4IDU4
YmI2OGIwYTFmMzg4ZjIxY2FmOGI1ZjYyMmNhZDc3YjIwNzllMmQuLjQ4MjgzODY1MjRkYzI2YWI0
NmM4NDEzNTY4MzFjNzBkYzZlOWZmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlw
ZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKIAogI2RlZmluZSBKU0NfTkFUSVZFX05PTl9JTkRFWF9B
Q0NFU1NPUihqc05hbWUsIGNwcE5hbWUsIGF0dHJpYnV0ZXMpIFwKICAgICB7IFwKLSAgICAgICAg
SWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwganNOYW1lKTsgXAorICAgICAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwganNOYW1lKTsgXAogICAg
ICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCk7IFwKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgaWRlbnRpZmllci5zdHJpbmcoKSwgY3BwTmFt
ZSk7IFwKICAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBmdW5j
dGlvbik7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4IDI3ZGMwOTliZGI1OGIwNzQzYTNiYjZl
MTVhMmQzMGQ1M2IwMWJjYjIuLmY5ZjZjMWM0OWFhYTYwNmEzNzMzNDhiNmUyZDhmYzI3MGZjZGU4
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtMTE5LDExICsxMTksMTEgQEAgY2xhc3MgQ3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrRnVuY3RvciB7CiBzdGF0aWMgdm9pZCBleHRyYWN0U291cmNlSW5m
b3JtYXRpb25Gcm9tRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZXhj
ZXB0aW9uT2JqZWN0LCBpbnQqIGxpbmVOdW1iZXIsIGludCogY29sdW1uTnVtYmVyLCBTdHJpbmcq
IHNvdXJjZVVSTCkKIHsKICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE1MDg3
PiBXZWIgSW5zcGVjdG9yOiBTaG91bGQgbm90IG5lZWQgdG8gZXZhbHVhdGUgSmF2YVNjcmlwdCBo
YW5kbGluZyBleGNlcHRpb25zCi0gICAgSlNWYWx1ZSBsaW5lVmFsdWUgPSBleGNlcHRpb25PYmpl
Y3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lIikpOworICAg
IEpTVmFsdWUgbGluZVZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGluZSIpKTsKICAgICAqbGluZU51bWJl
ciA9IGxpbmVWYWx1ZSAmJiBsaW5lVmFsdWUuaXNOdW1iZXIoKSA/IGludChsaW5lVmFsdWUudG9O
dW1iZXIoZXhlYykpIDogMDsKLSAgICBKU1ZhbHVlIGNvbHVtblZhbHVlID0gZXhjZXB0aW9uT2Jq
ZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29sdW1uIikpOwor
ICAgIEpTVmFsdWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb2x1bW4iKSk7CiAgICAgKmNv
bHVtbk51bWJlciA9IGNvbHVtblZhbHVlICYmIGNvbHVtblZhbHVlLmlzTnVtYmVyKCkgPyBpbnQo
Y29sdW1uVmFsdWUudG9OdW1iZXIoZXhlYykpIDogMDsKLSAgICBKU1ZhbHVlIHNvdXJjZVVSTFZh
bHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihl
eGVjLCAic291cmNlVVJMIikpOworICAgIEpTVmFsdWUgc291cmNlVVJMVmFsdWUgPSBleGNlcHRp
b25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJzb3VyY2VVUkwiKSk7CiAgICAgKnNvdXJjZVVSTCA9IHNvdXJjZVVSTFZhbHVlICYmIHNv
dXJjZVVSTFZhbHVlLmlzU3RyaW5nKCkgPyBzb3VyY2VVUkxWYWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykgOiBBU0NJSUxpdGVyYWwoInVuZGVmaW5lZCIpOwogICAgIGV4ZWMtPmNsZWFy
RXhjZXB0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAppbmRleCA0NjExNjdhZTY1NDEwZjQyNmQ3ZTg3ODQyMDc4ZTAyMDA4YTcxNTU1Li5hZjYx
NDFhOWQzZDkwZjFkOGM4OWI2ZDk3YzVhMWRmNzljOWVkZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbwogICAgIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7Ci0gICAgSWRl
bnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1
ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKIH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdChFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50
KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5
cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGJhc2UpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSWRlbnRpZmllciBpZGVudCA9IHVpZC0+aXNV
bmlxdWUoKSA/IElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUodWlkKSkgOiBJZGVudGlmaWVy
KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCB1aWQpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7
CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmVTdHViSQogICAgIAogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAotICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZp
ZXI6OmZyb21VaWQodm0sIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSk7CiAgICAg
Ym9vbCByZXN1bHQgPSBhc09iamVjdChiYXNlKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50
LCBzbG90KTsKICAgICAKQEAgLTIzMCw3ICsyMzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBK
UwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
IAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudCA9
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGtleSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZSktPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkpOwog
fQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWRTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEUKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZp
ZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHRydWUsIGV4ZWMtPmNvZGVC
bG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpLnB1dChleGVjLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3Qp
OwogfQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qCiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
ZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlm
aWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBmYWxzZSwgZXhlYy0+Y29k
ZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZSkucHV0KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xv
dCk7CiB9CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW4KICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50
aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHRydWUsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBhc09iamVjdChKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmVTdHUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlk
ZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlk
KHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSksIGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAg
ICAgYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSktPnB1dERpcmVjdChleGVj
LT52bSgpLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQpA
QCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViCiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlk
ZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0z
MTEsNyArMzExLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJp
Y3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVMKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAg
ICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTMzNSw3
ICszMzUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmlj
dE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAot
ICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzU5LDcgKzM1
OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0
T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAg
SWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0zODMsNyArMzgzLDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVu
dGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTQwNCw3ICs0MDQsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZp
ZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBp
ZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAgICAgCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEV4
ZWNTdGF0ZSogZXhlYywgU3RyCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBp
ZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0xMzkxLDEwICsxMzkxLDkgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRBcmd1bWVudHNMZW5ndGgoRXhlY1N0
YXRlKiBleGVjLCBpbnQzMl8KICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7CiAgICAgLy8gSGVyZSB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhlIGFyZ3VtZXJudHMgd2Vy
ZSBjcmVhdGVkLiBCZWNhdXNlIG90aGVyd2lzZSB0aGUgSklUIGNvZGUgd291bGQKICAgICAvLyBo
YXZlIG5vdCBtYWRlIHRoaXMgY2FsbC4KLSAgICBJZGVudGlmaWVyIGlkZW50KCZ2bSwgImxlbmd0
aCIpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZXhlYy0+dW5jaGVja2VkUihhcmd1bWVudHNS
ZWdpc3RlcikuanNWYWx1ZSgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIHNsb3QpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAppbmRleCAwYmMwZDdmMmVlMDQ3YWUyZWU1MWUwMjVjY2Q3MGQ4OGIzMTQ0ZDZmLi43NmEzYTgw
YjE2NGVjZDI3ZDdlZWY5ZTc0YjUzNWIyNjQ0ZGU5OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApA
QCAtNjE4LDExICs2MTgsMTEgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFs
T2JqZWN0IHsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRFbGVtZW50IiwgZnVuY3Rpb25H
ZXRFbGVtZW50LCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRFbGVtZW50Um9vdCIs
IGZ1bmN0aW9uU2V0RWxlbWVudFJvb3QsIDIpOwogICAgICAgICAKLSAgICAgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXIoJnZtLCAiREZHVHJ1ZSIpLCAwLCBm
dW5jdGlvbkZhbHNlMSwgREZHVHJ1ZUludHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9u
KTsKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXIo
JnZtLCAiT1NSRXhpdCIpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDEsIE9TUkV4aXRJbnRyaW5zaWMs
IERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgImlzRmluYWxUaWVyIiksIDAsIGZ1bmN0aW9u
RmFsc2UyLCBJc0ZpbmFsVGllckludHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9uKTsK
LSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXIoJnZt
LCAicHJlZGljdEludDMyIiksIDAsIGZ1bmN0aW9uVW5kZWZpbmVkMiwgU2V0SW50MzJIZWFwUHJl
ZGljdGlvbkludHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9uKTsKLSAgICAgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXIoJnZtLCAiZmlhdEludDUy
IiksIDAsIGZ1bmN0aW9uSWRlbnRpdHksIEZpYXRJbnQ1MkludHJpbnNpYywgRG9udEVudW0gfCBK
U0M6OkZ1bmN0aW9uKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiREZHVHJ1ZSIpLCAwLCBmdW5jdGlvbkZhbHNl
MSwgREZHVHJ1ZUludHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9uKTsKKyAgICAgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiT1NSRXhpdCIpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDEsIE9TUkV4aXRJbnRyaW5zaWMs
IERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzRmluYWxUaWVyIiks
IDAsIGZ1bmN0aW9uRmFsc2UyLCBJc0ZpbmFsVGllckludHJpbnNpYywgRG9udEVudW0gfCBKU0M6
OkZ1bmN0aW9uKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicHJlZGljdEludDMyIiksIDAsIGZ1bmN0aW9uVW5k
ZWZpbmVkMiwgU2V0SW50MzJIZWFwUHJlZGljdGlvbkludHJpbnNpYywgRG9udEVudW0gfCBKU0M6
OkZ1bmN0aW9uKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZmlhdEludDUyIiksIDAsIGZ1bmN0aW9uSWRlbnRp
dHksIEZpYXRJbnQ1MkludHJpbnNpYywgRG9udEVudW0gfCBKU0M6OkZ1bmN0aW9uKTsKICAgICAg
ICAgCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZWZmZWN0ZnVsNDIiLCBmdW5jdGlvbkVmZmVj
dGZ1bDQyLCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJtYWtlTWFzcXVlcmFkZXIiLCBm
dW5jdGlvbk1ha2VNYXNxdWVyYWRlciwgMCk7CkBAIC02NDQsMjAgKzY0NCwyMCBAQCBjbGFzcyBH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgICAgICBKU0FycmF5KiBh
cnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsRXhlYygpLCAwKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBh
cnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsRXhlYygpLCBpLCBqc1N0cmluZyhnbG9iYWxFeGVj
KCksIGFyZ3VtZW50c1tpXSkpOwotICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXIoZ2xv
YmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICAgICAgcHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7
CiAgICAgICAgIAotICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXIoZ2xvYmFsRXhlYygp
LCAiY29uc29sZSIpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbEV4ZWMoKSwgImNvbnNvbGUiKSwganNVbmRlZmluZWQo
KSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGRGdW5jdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5h
bWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewot
ICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBuYW1lKTsKKyAgICAgICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIG5hbWUpOwogICAg
ICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbikpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIGFkZENvbnN0cnVjdGFibGVGdW5jdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIq
IG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1bWVudHMpCiAgICAg
ewotICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBuYW1lKTsKKyAgICAgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIG5hbWUpOwog
ICAgICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIGZ1bmN0aW9uKSk7CiAgICAgfQogfTsKQEAgLTg4OSw3ICs4ODksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAg
IGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEs
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dCgKLSAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAgICAgIGV4ZWMtPnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwg
YXJyYXkpOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb247CiAgICAgU3RvcFdhdGNoIHN0b3BXYXRj
aDsKQEAgLTEyNzAsNyArMTI3MCw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAgICAgICAg
ICAgICBwcmludGYoIkVuZDogJXNcbiIsIHJldHVyblZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgewogICAgICAgICAg
ICAgcHJpbnRmKCJFeGNlcHRpb246ICVzXG4iLCBldmFsdWF0aW9uRXhjZXB0aW9uLnRvU3RyaW5n
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgSWRlbnRpZmllciBzdGFja0lEKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKKyAgICAgICAgICAgIElkZW50aWZp
ZXIgc3RhY2tJRCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksICJzdGFjayIpOwogICAgICAgICAgICAgSlNWYWx1ZSBzdGFja1ZhbHVlID0gZXZhbHVh
dGlvbkV4Y2VwdGlvbi5nZXQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHN0YWNrSUQpOwog
ICAgICAgICAgICAgaWYgKCFzdGFja1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgcHJpbnRmKCIlc1xuIiwgc3RhY2tWYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCku
ZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXgg
YWIwMTUwMWIxMjkxN2Q5ZWU4MGVkMzE1MjNmOTI1OGRjNDQyZGEyZS4uZWRmZDY3MDFkYzBmM2Q1
OTFjYjM3OGQzOTk4Y2I3ZDQyZjkwNGM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3Nl
cnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PGludCoqPigmdGVzdFZlY3Rv
cilbMF0gPT0gdGVzdFZlY3Rvci5iZWdpbigpKTsKICNlbmRpZgogCi0gICAgQVNTRVJUKFN0cmlu
Z0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVmZmVyID09IDMyKTsKKyAgICBBU1NFUlQoU3RyaW5nSW1w
bDo6c19oYXNoRmxhZzhCaXRCdWZmZXIgPT0gOCk7CiB9CiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDcxYTNlZmU3Njg5ZGY5ZGY1
ZTg3OWU2M2U4MjQ3YWM4MDQ4Mzk1Ny4uYTkxZTQ2NzkwNmI1YWZmZmE0N2RmN2NlZTdiNWU1MmM2
ZmMyM2U1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQpAQCAtMTc2LDcgKzE3Niw3IEBAIGNvbnN0IEZ1bmN0aW9uQ29kZSA9
IDIKIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0CiAKICMg
U3RyaW5nIGZsYWdzLgotY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDMyCitjb25zdCBIYXNo
RmxhZ3M4Qml0QnVmZmVyID0gOAogCiAjIENvcGllZCBmcm9tIFByb3BlcnR5T2Zmc2V0LmgKIGNv
bnN0IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ID0gMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCmluZGV4IDFiMGRjOGEyM2IyMzYwMzc3NDVkMWVjMDY2YWI2YTU4ZGM1
Njg0YmMuLmZlY2QzM2Y0NmFiMzJmMDBjNTc5MmYzMDJlYTRkNWY5MDVjYmY0MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC01NjYsNyArNTY2LDcgQEAg
Y2xhc3MgQVNUQnVpbGRlciB7CiAgICAgewogICAgICAgICBpZiAobV92bS0+cHJvcGVydHlOYW1l
cy0+YXJndW1lbnRzID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAg
ICAgICAgQVNTRVJUKGlkZW50LT5pbXBsKCktPmlzQXRvbWljKCkpOworICAgICAgICBBU1NFUlQo
aWRlbnQtPmltcGwoKS0+aXNBdG9taWMoKSB8fCBpZGVudC0+aW1wbCgpLT5pc1N5bWJvbCgpKTsK
ICAgICAgICAgbV9zY29wZS5tX3ZhckRlY2xhcmF0aW9ucy5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
KmlkZW50LCBhdHRycykpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IDEwYzdhZWMwOGU5YWRiYTAzMjQ5YTAxZjViOWM1N2FlNWE0ZmRkZTMuLmVh
NjUxYTYyNjU3ZTk0OTI5ZWU0NjE1NzM0YzFjNGEzYTY0MmE0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4NiwxMCArMjg2LDEwIEBACiAgICAgICAgIElk
ZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKICAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJs
ZXModXNlZFZhcmlhYmxlcyk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1
c2VkVmFyaWFibGVzKSB7Ci0gICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFi
bGUoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgaWYgKHNj
b3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgdmFyaWFi
bGUuZ2V0KCkpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyKG1fdm0s
IHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFy
YW1ldGVyKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKHZhcmlhYmxlID09IG1fdm0t
PnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpCkBAIC01MTgsNyArNTE4LDcgQEAKICAg
ICBBU1NFUlQoIW5hbWUuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW5hbWUuaXNOdWxsKCkpOwog
ICAgIAotICAgIEFTU0VSVChuYW1lLmltcGwoKS0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUKG5h
bWUuaW1wbCgpLT5pc0F0b21pYygpIHx8IG5hbWUuaW1wbCgpLT5pc1N5bWJvbCgpKTsKICAgICBp
ZiAoZGVwdGgpIHsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb1ZhcmlhYmxlcykK
ICAgICAgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKCZuYW1lKSwg
IkNhbm5vdCBkZWNvbnN0cnVjdCB0byBhIHZhcmlhYmxlIG5hbWVkICciLCBuYW1lLmltcGwoKSwg
IicgaW4gc3RyaWN0IG1vZGUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
QXJlbmEuaAppbmRleCA0MjdiODRjZGE1MzIzMWE1NDcwNmY0Y2VmZWMzZDgxZDc4YjUwZGRiLi40
MGVjZTUzYTBiNjQ0YzA4MjA3OWMyMmRmMGY5NDNiYzI1ZGJkYTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC03MywyMCArNzMsMjAgQEAKICAgICAg
ICAgaWYgKCFsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gdm0tPnByb3BlcnR5TmFtZXMtPmVt
cHR5SWRlbnRpZmllcjsKICAgICAgICAgaWYgKGNoYXJhY3RlcnNbMF0gPj0gTWF4aW11bUNhY2hh
YmxlQ2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlm
aWVyKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMu
YXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOwog
ICAgICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICAgICAgaWYgKElkZW50aWZpZXIqIGlkZW50
ID0gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dKQogICAgICAgICAgICAgICAgIHJl
dHVybiAqaWRlbnQ7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVy
KHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBw
ZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAg
ICAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gJm1faWRlbnRpZmll
cnMubGFzdCgpOwogICAgICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogICAg
ICAgICB9CiAgICAgICAgIElkZW50aWZpZXIqIGlkZW50ID0gbV9yZWNlbnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXTsKICAgICAgICAgaWYgKGlkZW50ICYmIElkZW50aWZpZXI6OmVxdWFsKGlk
ZW50LT5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gKmlk
ZW50OwotICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0
ZXJzLCBsZW5ndGgpKTsKKyAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgICAgIG1fcmVjZW50SWRl
bnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSAmbV9pZGVudGlmaWVycy5sYXN0KCk7CiAgICAgICAg
IHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICB9CkBAIC0xMDIsNyArMTAyLDcgQEAK
ICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAgICAgICBpZiAoSWRlbnRpZmllciog
aWRlbnQgPSBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuICppZGVudDsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50
aWZpZXIodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOworICAgICAgICAgICAgbV9pZGVudGlmaWVy
cy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7
CiAgICAgICAgICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSAmbV9pZGVu
dGlmaWVycy5sYXN0KCk7CiAgICAgICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7
CiAgICAgICAgIH0KQEAgLTExNiw3ICsxMTYsNyBAQAogICAgIAogICAgIGlubGluZSBjb25zdCBJ
ZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VOdW1lcmljSWRlbnRpZmllcihWTSogdm0s
IGRvdWJsZSBudW1iZXIpCiAgICAgewotICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVu
dGlmaWVyKHZtLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChudW1iZXIpKSk7Cisg
ICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFN0
cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG51bWJlcikpKTsKICAgICAgICAgcmV0dXJu
IG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOTg1NDhkMmE0MWQ4NmI3N2U1ZDU3YmY0N2ZjY2Y5
NjBmODJmYThiOS4uZmQ5MDNlNTRkMTgwZmRiY2MyYmM4NWJjMzQ4NzJhMzUyZjhiYjM3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBAIC0xODAsMTAg
KzE4MCwxMCBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogCiAgICAgaWYgKEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSkgeworICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKSB7CiAgICAgICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJ
VkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFy
Z3VtZW50c0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgICAgICB0aGlzT2JqZWN0LT5K
U0NfTkFUSVZFX0ZVTkNUSU9OKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCwg
YXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAgICAgIGlmIChKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xOTgsNyArMTk4LDcgQEAg
dm9pZCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICB9Ci0gICAg
aWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAgICBpZiAobW9k
ZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSk7CiAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlLmNwcAppbmRleCBhZDhiNzU5MGQ4NWU2NTZhOTEyYjRhYTk5MTc2MGZhZDM2MzA2
MGJmLi5mYzM1YTlmYzUxMjg0YzA1NGQwMGZkZTdmZjg2Y2ZmNzAxOTI0ODMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQ
cm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY0l0
ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRl
cmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPm5leHQsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVt
LCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBmNzY4NjhjMDNlYTUzMzgwMTBhMmI3YjA2
MWZmMGQ0MjkwODU0YmMyLi5iODYyNjc3MDFmNDA5OTA2ODI1NTkzYzNmOWQ2NDViZDFmYTM2ZmJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9y
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0
ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIEFycmF5SXRlcmF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdAogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLSAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUs
IGFycmF5SXRlcmF0b3JQcm90b0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5SXRl
cmF0b3JQcm90b0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogfQogCiBib29sIEFycmF5SXRl
cmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAppbmRleCAzZmQwMzRhMWMzMjg0NjFhNDY1Y2U2NjJjMDk4ZDIzZGUxYjQ4NzRkLi5jNGE3MGQ4
OTMxNWVhOTljM2ZlMzkwYzc0ZjIwNjBhMGNjMWQ4OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAg
dm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NF
UlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0
aGlzKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
UHJpdmF0ZU5hbWUsIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CisgICAgSlND
X05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJyYXlQ
cm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKIH0KIAogYm9vbCBBcnJheVByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtNTMwLDcgKzUz
MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQdXNoKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5
SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoICsgbiwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
biksIHRydWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KHRoaXNPYmopOwotICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUoZXhlYywg
SlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8aW50NjRf
dD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBKU1ZhbHVlKHN0YXRpY19jYXN0
PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSkudG9XVEZTdHJpbmco
ZXhlYykpOwogICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmos
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQobiksIHNsb3QpOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTczNSw3ICs3
MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgbmFtZUFycmF5KGV4ZWMpOwotICAg
IHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNP
YmosIGV4ZWMsIG5hbWVBcnJheSwgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgdGhp
c09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwg
ZXhlYywgbmFtZUFycmF5LCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDU2ZGYzNDUwMjg3ZmY5OTlh
MzhmY2Y0Y2I3MTUwZTg2MWE1NjQzZTguLmE2ZDE5MWU2NWQ1MzdlOWUzMDE1ZmJkZmY5OWJkOTE0
OTAwYjBkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5jcHAKQEAgLTIyLDI1ICsyMiwyOCBAQAogI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJJZGVu
dGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAiUHJp
dmF0ZU5hbWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSU5JVElBTElaRV9QUk9Q
RVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2bSwgI25hbWUpCi0jZGVmaW5lIElOSVRJQUxJWkVfS0VZ
V09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQodm0sICNuYW1lKQorI2RlZmluZSBJTklUSUFMSVpF
X1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNu
YW1lKSkKKyNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZChJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJJ
VkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUobV9idWlsdGluTmFtZXMtPm5hbWUj
I1ByaXZhdGVOYW1lKCkpCisjZGVmaW5lIElOSVRJQUxJWkVfU1lNQk9MKG5hbWUpICwgbmFtZSMj
U3ltYm9sKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNTeW1ib2woKSkKIAogQ29tbW9uSWRlbnRpZmll
cnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKICAg
ICAsIGVtcHR5SWRlbnRpZmllcihJZGVudGlmaWVyOjpFbXB0eUlkZW50aWZpZXIpCi0gICAgLCB1
bmRlcnNjb3JlUHJvdG8odm0sICJfX3Byb3RvX18iKQotICAgICwgdGhpc0lkZW50aWZpZXIodm0s
ICJ0aGlzIikKLSAgICAsIHVzZVN0cmljdElkZW50aWZpZXIodm0sICJ1c2Ugc3RyaWN0IikKKyAg
ICAsIHVuZGVyc2NvcmVQcm90byhJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiX19wcm90b19f
IikpCisgICAgLCB0aGlzSWRlbnRpZmllcihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGhp
cyIpKQorICAgICwgdXNlU3RyaWN0SWRlbnRpZmllcihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAidXNlIHN0cmljdCIpKQogICAgICwgbV9idWlsdGluTmFtZXMobmV3IEJ1aWx0aW5OYW1lcyh2
bSwgdGhpcykpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElB
TElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9O
QU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQorICAg
IEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElO
SVRJQUxJWkVfU1lNQk9MKQogewogfQogCkBAIC00OCw2ICs1MSwxNiBAQAogewogfQogCitib29s
IENvbW1vbklkZW50aWZpZXJzOjppc1ByaXZhdGVOYW1lKFN0cmluZ0ltcGwqIHVpZCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmlzUHJpdmF0ZU5hbWUodWlkKTsKK30KKwor
Ym9vbCBDb21tb25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmlzUHJpdmF0ZU5hbWUo
aWRlbnQpOworfQorCiBjb25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
YnVpbHRpbk5hbWVzLT5nZXRQcml2YXRlTmFtZShpZGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBlOTVjOTc2MzYxNzEy
ZTJkMjNlMTE1YTJkOWYyZDAxMDNjODYyZTkzLi43ZTIzYzFkN2U2ZWE2YTUzMDNmZjdhMDBhY2I4
YTZhOWRlM2RlZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKQEAgLTIzNCw3ICsyMzQsNiBAQAogICAgIG1hY3JvKHVuc2NvcGFi
bGUpCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShtYWNybykgXAotICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNI
X1dFTExfS05PV05fU1lNQk9MKG1hY3JvKSBcCiAgICAgbWFjcm8oaXRlcmF0ZWRPYmplY3QpIFwK
ICAgICBtYWNybyhhcnJheUl0ZXJhdG9yTmV4dEluZGV4KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVy
YXRpb25LaW5kKSBcCkBAIC0yOTcsNyArMjk2LDEzIEBACiAjZGVmaW5lIEpTQ19JREVOVElGSUVS
X0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlm
aWVyIG5hbWUjI1ByaXZhdGVOYW1lOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJ
RklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9Q
Uk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZB
VEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKLSAgICAgICAgCisKKyNkZWZpbmUgSlNDX0lERU5USUZJ
RVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTChuYW1lKSBjb25zdCBJ
ZGVudGlmaWVyIG5hbWUjI1N5bWJvbDsKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCisKKyAgICAgICAgYm9vbCBpc1By
aXZhdGVOYW1lKFN0cmluZ0ltcGwqIHVpZCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNQcml2YXRl
TmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICAgICAgSWRlbnRp
ZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaAppbmRleCA0
ZGJhZjdiNDE3ZGM3MDhmYmM2YzcyNTA5ZjE5ZjU0NGYwMWI5NmJkLi5lZGEyY2IxNGI1NTk0NzMw
NmYzMzA0NDRiODljNDBlMmM3ODRjMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaApAQCAtMjgsNjMgKzI4LDUyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1lbnVtIEVudW1lcmF0aW9uTW9kZSB7Ci0gICAgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcywKLSAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0LAot
ICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMsCi0gICAgSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllc0FuZFNraXBKU09iamVjdAotfTsKK2NsYXNzIEVudW1lcmF0aW9uTW9kZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMgPSAxdSA8PCAwOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdTa2lwSlNPYmpl
Y3QgPSAxdSA8PCAxOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdJbmNsdWRlU3lt
Ym9scyA9IDF1IDw8IDI7CisKKyAgICBlbnVtIEVudW1lcmF0aW9uTW9kZVJlcHJlc2VudGF0aW9u
VGFnIDogdW5zaWduZWQgeworICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzID0gMCwK
KyAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzID0gc19m
bGFnSW5jbHVkZVN5bWJvbHMsCisgICAgICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMgPSBz
X2ZsYWdJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLAorICAgICAgICBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMgPSBzX2ZsYWdJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzIHwgc19mbGFnSW5jbHVkZVN5bWJvbHMsCisgICAgfTsKKworICAgIEVudW1lcmF0aW9uTW9k
ZShFbnVtZXJhdGlvbk1vZGVSZXByZXNlbnRhdGlvblRhZyB0YWcpCisgICAgICAgIDogbV9mbGFn
cyh0YWcpCisgICAgeworICAgIH0KIAotaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsK
LSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgY2FzZSBJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBzaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZsYWdz
ICYgc19mbGFnSW5jbHVkZURvbnRFbnVtUHJvcGVydGllczsKICAgICB9Ci19CiAKLWlubGluZSBi
b29sIHNob3VsZEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMoRW51bWVyYXRpb25Nb2RlIG1vZGUp
Ci17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzOgotICAgIGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDoK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGJvb2wgc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gIShtX2ZsYWdzICYgc19mbGFnU2tpcEpTT2JqZWN0KTsKICAg
ICB9Ci19CiAKLWlubGluZSBib29sIHNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMo
RW51bWVyYXRpb25Nb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgotICAgIGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllczoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
c0FuZFNraXBKU09iamVjdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGJvb2wgc2hvdWxk
SW5jbHVkZVN5bWJvbHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBz
X2ZsYWdJbmNsdWRlU3ltYm9sczsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQogCi1pbmxpbmUgRW51bWVyYXRpb25Nb2RlIG1vZGVUaGF0U2tp
cHNKU09iamVjdChFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsK
LSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgICAgIHJldHVybiBJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OwotICAgIGNhc2UgRXhjbHVkZURv
bnRFbnVtUHJvcGVydGllczoKLSAgICAgICAgcmV0dXJuIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXNBbmRTa2lwSlNPYmplY3Q7Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5k
U2tpcEpTT2JqZWN0OgotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBK
U09iamVjdDoKLSAgICAgICAgcmV0dXJuIG1vZGU7CisgICAgc3RhdGljIEVudW1lcmF0aW9uTW9k
ZSBjcmVhdGVUaGF0U2tpcHNKU09iamVjdChFbnVtZXJhdGlvbk1vZGUgbW9kZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBFbnVtZXJhdGlvbk1vZGUobW9kZS5tX2ZsYWdzIHwgc19mbGFnU2tpcEpT
T2JqZWN0KTsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1v
ZGU7Ci19CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRW51bWVyYXRpb25Nb2RlKHVuc2lnbmVk
IGZsYWdzKQorICAgICAgICA6IG1fZmxhZ3MoZmxhZ3MpCisgICAgeworICAgIH0KKworICAgIHVu
c2lnbmVkIG1fZmxhZ3M7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDkzMGI2ZmFmNmJjMWZjNjVkZTllNjFhMWZj
N2U2MmE5ZTVmYzY4MGUuLjM2MTU2YTFlMDUxNjgxZjVjZWI1NjE4MmI2ZTRlYjk0MjliOGY1MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTEzNywxNyArMTM3
LDE3IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2Jq
ZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvCiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwgPSBzb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7CiAKICAgICBpZiAobGluZSAhPSAtMSkKLSAg
ICAgICAgZXJyb3ItPnB1dERpcmVjdCgqdm0sIElkZW50aWZpZXIodm0sIGxpbmVQcm9wZXJ0eU5h
bWUpLCBqc051bWJlcihsaW5lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZXJy
b3ItPnB1dERpcmVjdCgqdm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGxpbmVQcm9wZXJ0
eU5hbWUpLCBqc051bWJlcihsaW5lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKICAgICBpZiAo
IXNvdXJjZVVSTC5pc051bGwoKSkKLSAgICAgICAgZXJyb3ItPnB1dERpcmVjdCgqdm0sIElkZW50
aWZpZXIodm0sIHNvdXJjZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKHZtLCBzb3VyY2VVUkwp
LCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCp2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgc291cmNlVVJMUHJvcGVydHlOYW1lKSwganNTdHJp
bmcodm0sIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgcmV0dXJuIGVy
cm9yOwogfQogCiAKIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGVycm9yKQogewotICAgIHJldHVybiBlcnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmll
cihleGVjLCBsaW5lUHJvcGVydHlOYW1lKSkKLSAgICAgICAgfHwgZXJyb3ItPmhhc1Byb3BlcnR5
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgc291cmNlVVJMUHJvcGVydHlOYW1lKSk7CisgICAgcmV0
dXJuIGVycm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
IGxpbmVQcm9wZXJ0eU5hbWUpKQorICAgICAgICB8fCBlcnJvci0+aGFzUHJvcGVydHkoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpKTsKIH0K
IAogSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMTA1
YWFlZjdmMDlhYWUxNTJiODVmMzIwOGIxNGJiZjkwYTFmNWFjMy4uNTQ5NWQ5Mzc1ZGRiNTRhNDQ0
ZThhNTAxYjZmNmIwNzIyMzU2NTAxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDggKzgxLDcgQEAgSlNPYmplY3Qq
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
CiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewotICAgIAotICAgIGlmIChpZGVudC5pbXBsKCkt
PmlzVW5pcXVlKCkpIHsKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc1N5bWJvbCgpICYmIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKGlkZW50KSkgewogICAgICAgICBTdHJpbmcg
bWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCAwMTMyZDBlNzUy
OGVhMzYzYjhjMzEzNmVjZTViMDA4YzUzOWEzOGVmLi5mN2RlOWZlOTZjMTA1MGVmNmU0MmI5MjVh
MjhiMGVhNjdlNmFkY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
Zmllci5oCkBAIC0zOCwyMyArMzgsNiBAQCBjbGFzcyBJZGVudGlmaWVyIHsKICAgICBlbnVtIEVt
cHR5SWRlbnRpZmllckZsYWcgeyBFbXB0eUlkZW50aWZpZXIgfTsKICAgICBJZGVudGlmaWVyKEVt
cHR5SWRlbnRpZmllckZsYWcpIDogbV9zdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkgeyBBU1NF
UlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQogCi0gICAgLy8gT25seSB0byBiZSB1
c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3Rl
cnNDb3VudD4KLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciAoJmNo
YXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pIDogbV9zdHJpbmcoYWRkKGV4ZWMsIGNoYXJhY3Rl
cnMpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgdGVtcGxh
dGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgotICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25z
dCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhhZGQodm0s
IGNoYXJhY3RlcnMpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0K
LSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIEF0b21pY1N0cmluZ0ltcGwqKTsKLSAgICBJZGVu
dGlmaWVyKEV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIElkZW50aWZpZXIo
RXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRkKGV4ZWMsIHJl
cCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlm
aWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChleGVj
LCBzLmltcGwoKSkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAg
ICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogcykgOiBJZGVudGlmaWVy
KGV4ZWMsIEF0b21pY1N0cmluZyhzKSkgeyB9Ci0KLSAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29u
c3QgTENoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7
IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihW
TSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwgcywg
bGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIElk
ZW50aWZpZXIoVk0qIHZtLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRkKHZtLCByZXAp
KSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmll
cihWTSogdm0sIGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQodm0sIHMuaW1wbCgpKSkg
eyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotCiAgICAgY29uc3QgU3Ry
aW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIEF0b21pY1N0cmlu
Z0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBs
Kj4obV9zdHJpbmcuaW1wbCgpKTsgfQogCkBAIC02MywxMiArNDYsMzMgQEAgY2xhc3MgSWRlbnRp
ZmllciB7CiAgICAgQ1N0cmluZyBhc2NpaSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmFzY2lp
KCk7IH0KICAgICBDU3RyaW5nIHV0ZjgoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy51dGY4KCk7
IH0KIAotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oY29uc3QgUHJpdmF0ZU5hbWUmIG5hbWUp
Ci0gICAgewotICAgICAgICBJZGVudGlmaWVyIHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fc3Ry
aW5nID0gbmFtZS51aWQoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAgLy8g
VGhlcmUncyAyIGZ1bmN0aW9ucyB0byBjb25zdHJ1Y3QgSWRlbnRpZmllciBmcm9tIHN0cmluZywg
KDEpIGZyb21TdHJpbmcgYW5kICgyKSBmcm9tVWlkLgorICAgIC8vIFRoZXkgaGF2ZSBkaWZmZXJl
bnQgbWVhbmluZ3MgaW4ga2VlcGluZyBvciBkaXNjYXJkaW5nIHN5bWJvbC1uZXNzIG9mIHN0cmlu
Z3MuCisgICAgLy8gKDEpOiBmcm9tU3RyaW5nCisgICAgLy8gSnVzdCBjb25zdHJ1Y3QgSWRlbnRp
ZmllciBmcm9tIHN0cmluZy4gU3RyaW5nIGhlbGQgYnkgSWRlbnRpZmllciBpcyBhbHdheXMgYXRv
bWl6ZWQuCisgICAgLy8gU3ltYm9sLW5lc3Mgb2YgU3RyaW5nSW1wbCosIHdoaWNoIHJlcHJlc2Vu
dHMgdGhhdCB0aGUgc3RyaW5nIGlzIGludGVkZWQgdG8gYmUgdXNlZCBmb3IgRVM2IFN5bWJvbHMs
IGlzIGRpc2NhcmRlZC4KKyAgICAvLyBTbyBhIGNvbnN0cnVjdGVkIElkZW50aWZpZXIgbmV2ZXIg
cmVwcmVzZW50cyBhIHN5bWJvbC4KKyAgICAvLyAoMik6IGZyb21VaWQKKyAgICAvLyBgU3RyaW5n
SW1wbCogdWlkYCByZXByZXNlbnRzIGV0aGVyIFN0cmluZyBvciBTeW1ib2wgcHJvcGVydHkuCisg
ICAgLy8gZnJvbVVpZCBrZWVwcyBzeW1ib2wtbmVzcyBvZiBwcm92aWRlZCBTdHJpbmdJbXBsKiB3
aGlsZSBmcm9tU3RyaW5nIGRpc2NhcmRzIGl0LgorICAgIC8vIFVzZSBmcm9tVWlkIHdoZW4gY29u
c3RydWN0aW5nIElkZW50aWZpZXIgZnJvbSBTdHJpbmdJbXBsKiB3aGljaCBtYXkgcmVwcmVzZW50
IHN5bWJvbHMuCisKKyAgICAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMu
CisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgorICAgIHN0YXRpYyBJZGVu
dGlmaWVyIGZyb21TdHJpbmcoVk0qLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVy
c0NvdW50XSk7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgorICAgIHN0
YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgY2hhciAoJmNoYXJh
Y3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJp
bmcoVk0qLCBjb25zdCBMQ2hhciosIGludCBsZW5ndGgpOworICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb21TdHJpbmcoVk0qLCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOworICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoVk0qLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSWRl
bnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIEF0b21pY1N0cmluZ0ltcGwqKTsKKyAgICBz
dGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmlu
ZyYpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJik7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBj
b25zdCBjaGFyKik7CisKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNKiwgU3RyaW5n
SW1wbCogdWlkKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKEV4ZWNTdGF0ZSosIFN0
cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2
YXRlTmFtZSYpOwogCiAgICAgc3RhdGljIElkZW50aWZpZXIgY3JlYXRlTENoYXJGcm9tVUNoYXIo
Vk0qIHZtLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkgeyByZXR1cm4gSWRlbnRpZmllcih2
bSwgYWRkOCh2bSwgcywgbGVuZ3RoKSk7IH0KIApAQCAtMTA1LDYgKzEwOSwyMCBAQCBjbGFzcyBJ
ZGVudGlmaWVyIHsKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogCisgICAgLy8gT25s
eSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgIHRlbXBsYXRlPHVuc2lnbmVk
IGNoYXJhY3RlcnNDb3VudD4KKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgY2hhciAoJmNo
YXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pIDogbV9zdHJpbmcoYWRkKHZtLCBjaGFyYWN0ZXJz
KSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorCisgICAgSWRlbnRp
ZmllcihWTSogdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2
bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQor
ICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0
cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9t
aWMoKSk7IH0KKyAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIEF0b21pY1N0cmluZ0ltcGwqKTsK
KyAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIElk
ZW50aWZpZXIoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHN0cmluZykgOiBtX3N0cmluZyhhZGQodm0s
IHN0cmluZy5pbXBsKCkpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9
CisgICAgSWRlbnRpZmllcihWTSogdm0sIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQo
dm0sIHJlcCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KKworICAg
IGVudW0gVW5pcXVlSWRlbnRpZmllckZsYWcgeyBVbmlxdWVJZGVudGlmaWVyIH07CisgICAgSWRl
bnRpZmllcihVbmlxdWVJZGVudGlmaWVyRmxhZywgU3RyaW5nSW1wbCogdWlkKSA6IG1fc3RyaW5n
KHVpZCkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc1N5bWJvbCgpKTsgfQorCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQz
Ml90IHRvVUludDMyRnJvbUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCwgYm9vbCYgb2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRleCA3NDcyZDg0N2Q3NWIzMDNlNjQ1NGYw
NmQ2OWVkNmZjNWVlNjkyM2FjLi40MDYyMjFhNjNhYWQ5NjVmNDczMGU0Njg4MzQ3MzY3YzNiMjY3
MDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIo
RXhlY1N0YXRlKiBleGVjLCBBdG9taWNTdHJpbmdJbXBsKiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJV
RwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAgIGlmIChzdHJp
bmcpCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwgQXRv
bWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3Ry
aW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNTeW1ib2woKSB8fCBBdG9taWNT
dHJpbmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcg
Y29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICNlbmRpZgpAQCAtNDksNyArNDksNyBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRp
ZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogI2lmbmRl
ZiBOREVCVUcKICAgICBjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGVjKTsKICAgICBp
ZiAoIXN0cmluZy5pc051bGwoKSkKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5n
Lmxlbmd0aCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZy5p
bXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcu
aW1wbCgpLT5pc1N5bWJvbCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxl
KHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0
aHJlYWQhIik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNlbmRpZgpAQCAtNzAs
NiArNzAsNzAgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gKkF0b21pY1N0cmluZzo6
YWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoKnZtLCByKTsKIH0KIAoraW5saW5lIElkZW50aWZp
ZXIgSWRlbnRpZmllcjo6ZnJvbVVpZChWTSogdm0sIFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBp
ZiAoIXVpZCB8fCAhdWlkLT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgdWlkKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcihVbmlxdWVJZGVudGlmaWVyLCB1aWQpOwor
fQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tVWlkKEV4ZWNTdGF0ZSogZXhl
YywgU3RyaW5nSW1wbCogdWlkKQoreworICAgIHJldHVybiBmcm9tVWlkKCZleGVjLT52bSgpLCB1
aWQpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tVWlkKGNvbnN0IFBy
aXZhdGVOYW1lJiBuYW1lKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKFVuaXF1ZUlkZW50aWZp
ZXIsIG5hbWUudWlkKCkpOworfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+
CitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNKiB2bSwgY29uc3Qg
Y2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCit7CisgICAgcmV0dXJuIElkZW50
aWZpZXIodm0sIGNoYXJhY3RlcnMpOworfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJz
Q291bnQ+CitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCit7Cisg
ICAgcmV0dXJuIElkZW50aWZpZXIoJmV4ZWMtPnZtKCksIGNoYXJhY3RlcnMpOworfQorCitpbmxp
bmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNKiB2bSwgY29uc3QgTENoYXIq
IHMsIGludCBsZW5ndGgpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHMsIGxlbmd0aCk7
Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBj
b25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwg
cywgbGVuZ3RoKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhWTSogdm0sIGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBJZGVudGlmaWVy
KHZtLCBzdHJpbmcuaW1wbCgpKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAg
IHJldHVybiBJZGVudGlmaWVyKCZleGVjLT52bSgpLCBzdHJpbmcuaW1wbCgpKTsKK30KKworaW5s
aW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEF0
b21pY1N0cmluZ0ltcGwqIGF0b21pY1N0cmluZykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcihl
eGVjLCBhdG9taWNTdHJpbmcpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBhdG9taWNTdHJp
bmcpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgYXRvbWljU3RyaW5nKTsKK30KKwor
aW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IGNoYXIqIHMpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgQXRvbWljU3Ry
aW5nKHMpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBJZGVudGlmaWVy
SW5saW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4
IDIwZDQ5ZGI4YmEyZTJjNTg1NTA2Njc0OWVmOWRmNTE1NTQxNTc2ODEuLmMxYjA0YTZlMjJlZDI4
YTJmOTNkMjMwZDU2M2MzMDhlNjI2ZTEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBKU0FycmF5OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm8KIHsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihvYmplY3Qp
OwogCi0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAg
aWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKIAogICAgIEpTT2Jq
ZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXIuY3BwCmluZGV4IGMxY2FkMTA1YzdlMGQ1YWQ3ZWZkMjk2YTNiZWYwNjk2Yzk1ZjYw
MDcuLjViNjZjNDRmM2U4MTg0MjUwMDhiNjBhZWQ0MjYxM2FiYzdlMThmMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCkBAIC0xMTksNyAr
MTE5LDcgQEAgdm9pZCBKU0FycmF5QnVmZmVyOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
CiB7CiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVy
Kj4ob2JqZWN0KTsKICAgICAKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkp
CiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCk7CiAg
ICAgCiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIGFycmF5LCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBjYjVjOGEyZjAzOTM0M2M1YTI0MDUwYjA5MDgw
OGRlZDI1ZTEwOTBiLi5hZGE2NzNiZTc3NDk3ZDA2NjJmY2VjYzc3YjBiODRiZGMyNmRhNmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4ob2JqZWN0KTsKICAgICAKICAgICAvLyBsZW5n
dGgvYnl0ZU9mZnNldC9ieXRlTGVuZ3RoIGFyZSBEb250RW51bSwgYXQgbGVhc3QgaW4gRmlyZWZv
eC4KLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkgeworICAg
IGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewogICAgICAgICBh
cnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVPZmZzZXQpOwogICAgICAgICBhcnJh
eS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5ndGgpOwogICAgICAgICBhcnJheS5h
ZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IDQ4NzU2YmEzYjMzZjZjZGU4OTA0ZTAxZjdm
N2IwOTM0ZGQzZTBhZDcuLjdkNjFjYTJkOTAyMWQ4MGM3ZTJjOTY3MGRmZGIyMTU2NzBjZTI1NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0y
MzMsOCArMjMzLDggQEAgdm9pZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1
cmUoCiAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiIChhdG9taWMpIik7CiAgICAgICAg
ICAgICAgICAgaWYgKGltcGwtPmlzQXRvbWljKCkpCiAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludCgiIChpZGVudGlmaWVyKSIpOwotICAgICAgICAgICAgICAgIGlmIChpbXBsLT5pc1VuaXF1
ZSgpKQotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAodW5pcXVlKSIpOworICAgICAg
ICAgICAgICAgIGlmIChpbXBsLT5pc1N5bWJvbCgpKQorICAgICAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIiAoc3ltYm9sKSIpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
b3V0LnByaW50KCIgKHVucmVzb2x2ZWQpIik7CiAgICAgICAgICAgICBvdXQucHJpbnQoIjogIiwg
aW1wbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxl
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAppbmRleCBkZWQ4
Yzg1ODBiMGFjMzVkNGQ5NzcxNmEwMGFkZjA4MGRjYjZlMmVlLi4zMmFjYWQ1MjBkNWI0MDNiZDE0
NzIxYmFiZmU2OWY0MjQyZTU4ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NhbGxlZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2FsbGVlLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBjbGFzcyBKU0NhbGxlZSA6IHB1YmxpYyBKU0Rl
c3RydWN0aWJsZU9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlID0gRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAg
ICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggODUxYjY2ZjE1YjM2NjA3MzU2MjM2OTIw
NTc3ZTgxYTc2OGQxZDU1Yi4uNWJlYzg1ODk5OTE1NjJhOGUyNGQ4MDI2NzhkYjBhMTJlNzY2YWI5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAg
LTM2OSw3ICszNjksNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9u
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4ob2JqZWN0KTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9u
KCkgJiYgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkgeworICAgIGlmICgh
dGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiBtb2RlLnNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQuCiAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGJlMGJkYzc4NDJmOTczM2M3NmIwNjQ0M2JkYTM2NjE0
MThlYTU5OTcuLjM0ZWQ0MDhiNWQxYjA4MWZmYjRiNGM5YWFmODY5YzVmYTQ5ZDQ2YjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTEzOCw3ICsxMzgs
NyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2FsbGVlIHsKICAgICBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZSogY3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiwgc2l6ZV90
IGlubGluZUNhcGFjaXR5KTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAg
c3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSA9IEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwog
CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IDZkMGQyMWZhNjFmMzk4OWY5ZDliNDE5OWRhYTg4OGU5ZjY2NDRlY2EuLmE5OThlZTg4NTIx
ZWY2NzM5YTIyMTE1NjdkMzc4MzJhZTM0ODUwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCkBAIC00MTUsNyArNDE1LDcgQEAKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAg
ICAgCi0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAg
aWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBhcnJh
eS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgCiAgICAgQmFzZTo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApp
bmRleCBkOGQzMDY5ODZlMzY4MjEyZmRhMjMxZTBkNDE2MWE1NGIxNWUwZjc1Li5kNzVmMTNhYmFh
ODY0YmM4MDJjOGYwYjg5NzMwODZhNWFiNmMxNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgLy8gQ29uc3RydWN0b3Jz
CiAgICAgCi0gICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0
Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKTsKKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBv
YmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0
KCkpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgIAogICAgIGZvciAodW5zaWduZWQgdHlwZWRBcnJheUluZGV4ID0gTlVNQkVSX09GX1RZ
UEVEX0FSUkFZX1RZUEVTOyB0eXBlZEFycmF5SW5kZXgtLTspIHsKICAgICAgICAgbV90eXBlZEFy
cmF5c1t0eXBlZEFycmF5SW5kZXhdLnByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0eXBlZEFycmF5Q29uc3RydWN0
b3JzW3R5cGVkQXJyYXlJbmRleF0sIERvbnRFbnVtKTsKLSAgICAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoZXhlYywgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0
eXBlZEFycmF5SW5kZXhdLT5uYW1lKGV4ZWMpKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBl
ZEFycmF5SW5kZXhdLCBEb250RW51bSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHR5cGVkQXJyYXlDb25zdHJ1Y3Rv
cnNbdHlwZWRBcnJheUluZGV4XS0+bmFtZShleGVjKSksIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNb
dHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwogICAgIH0KICAgICAKICAgICBKU0Z1bmN0aW9u
KiBidWlsdGluTG9nID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0
eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKTsK
QEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAg
ICBDb25zb2xlUHJvdG90eXBlKiBjb25zb2xlUHJvdG90eXBlID0gQ29uc29sZVByb3RvdHlwZTo6
Y3JlYXRlKHZtLCB0aGlzLCBDb25zb2xlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9jb25zb2xlU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNDb25zb2xlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGNvbnNvbGVQ
cm90b3R5cGUpKTsKICAgICBKU0NvbnNvbGUqIGNvbnNvbGVPYmplY3QgPSBKU0NvbnNvbGU6OmNy
ZWF0ZSh2bSwgbV9jb25zb2xlU3RydWN0dXJlLmdldCgpKTsKLSAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcihleGVjLCAiY29uc29sZSIpLCBjb25zb2xlT2JqZWN0
LCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbnNvbGUiKSwgY29uc29sZU9iamVjdCwgRG9udEVudW0p
OwogCiAgICAgcmVzZXRQcm90b3R5cGUodm0sIHByb3RvdHlwZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDkwMzU0NmIwNzRh
MWMxMjdjN2U5OWFiNDE5ZDc3MmY4MzFlYjIxYzUuLjA4MWUzZGQ2OTQ1ZGRkYTg5M2M3ZDZjYTA1
ZGYxN2NmZmM5MTNiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaApAQCAtMzA2LDYgKzMwNiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAgICAgYm9vbCBoYXNEZWJ1Z2dl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KICAgICBib29sIGhhc1Byb2ZpbGVyKCkg
Y29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNQcm9maWxp
bmcodGhpcyk7IH0KKyAgICBjb25zdCBSdW50aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fcnVudGltZUZsYWdzOyB9CiAKIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRf
UFJJVkFURSBleHBsaWNpdCBKU0dsb2JhbE9iamVjdChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKiA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IDg0MDM3YTM0NWY5
OWU4NTAwYmY2ZDA1NmE1MTg0OWRjMTliNTZmYTAuLjAzYzdlMzQ2ZTI3ZmU4OWQ3MmUxZTIwOWI3
ZmY2Y2VlMmM0YTkzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTExNCwxMSArMTE0LDE3IEBAIHZvaWQg
SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhCiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRo
aXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIp
OwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVj
dC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgICAgICBpZiAoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtICYmICFzaG91
bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgICAgICAgICAgaWYgKGl0LT52
YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSAmJiAhbW9kZS5zaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpZiAoIXRoaXNPYmplY3QtPmlzVmFsaWQoaXQtPnZhbHVlKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywg
aXQtPmtleS5nZXQoKSkpOworICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzU3ltYm9sKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIW1vZGUuc2hvdWxkSW5jbHVkZVN5bWJvbHMoKSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKGl0LT5rZXkuZ2V0KCkpKQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb3BlcnR5TmFtZXMu
YWRkKElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9
CiAgICAgfQogICAgIC8vIFNraXAgdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQgaW1wbGVtZW50YXRp
b24gb2YgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGJkYjgyMWNkZjU2NDgwZDY4ZGMxYzRkYTJl
ZDA1NmNiNTU4MWUxYTkuLmM4OThhMzQyODU5NWI2ZDExOTMyYzBlYThlMGQ5YjgwZjFiYTM1YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC00
OTAsNyArNDkwLDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVy
dHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkKICAgICAgICAgICAgICAgICBt
X3Byb3BlcnR5TmFtZXMgPSBzdHJpbmdpZmllci5tX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVz
LmRhdGEoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFByb3BlcnR5TmFt
ZUFycmF5IG9iamVjdFByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgICAgICAgICAgICAgbV9vYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMobV9vYmplY3QuZ2V0KCksIGV4
ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAg
ICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgICAgIG1fcHJvcGVy
dHlOYW1lcyA9IG9iamVjdFByb3BlcnR5TmFtZXMucmVsZWFzZURhdGEoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIG1fc2l6ZSA9IG1fcHJvcGVydHlOYW1lcy0+cHJvcGVydHlOYW1lVmVj
dG9yKCkuc2l6ZSgpOwpAQCAtNzA3LDcgKzcwNyw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdh
bGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgb2JqZWN0U3Rh
Y2sucHVzaChvYmplY3QpOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwog
ICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1f
ZXhlYykpOwotICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0
KCksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgogICAgICAgICAgICAg
RkFMTFRIUk9VR0g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
aW5kZXggZGIyYTcyMmNiYTg4NWM4MDg2ZGViNzkwYzJjMjg1NzM3NGY2Zjc5OS4uZWQxM2VhMGE4
YmUzYjM1MjlhYjI2ZDg0MzE2MmMzMDQzY2VmNDkxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNzgsOCArNzgsOCBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzcwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZXIg
PSB0YWJsZS0+YmVnaW4oKTsgaXRlciAhPSB0YWJsZS0+ZW5kKCk7ICsraXRlcikgewotICAgICAg
ICAgICAgaWYgKCghKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSAmJiAhKChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBC
dWlsdGluT3JGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQotICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXIoJnZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICBpZiAo
KCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcygpKSAmJiAhKChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JG
dW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBpdGVyLmtleSgpKSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CkBAIC0xNTE4LDcgKzE1MTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQQogCiB2
b2lkIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQogewotICAgIGlmICghc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1l
cyhtb2RlKSkgeworICAgIGlmICghbW9kZS5zaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5h
bWVzKCkpIHsKICAgICAgICAgLy8gV2Ugc3RpbGwgaGF2ZSB0byBnZXQgbm9uLWluZGV4ZWQgcHJv
cGVydGllcyBmcm9tIGFueSBzdWJjbGFzc2VzIG9mIEpTT2JqZWN0IHRoYXQgaGF2ZSB0aGVtLgog
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTU3Miw3ICsxNTcyLDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbWFwLT5lbmQoKTsKICAgICAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUp
IHx8ICEoaXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBEb250RW51bSkpCisgICAgICAgICAgICAgICAg
aWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpIHx8ICEoaXQtPnZhbHVl
LmF0dHJpYnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgICAgICAgICAgICAgIGtleXMudW5jaGVj
a2VkQXBwZW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpdC0+a2V5KSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTE1OTQsNyArMTU5NCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByCiB7CiAgICAgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKGV4ZWMsIG9iamVjdC0+Y2xhc3NJbmZv
KCksIHByb3BlcnR5TmFtZXMsIG1vZGUsIG9iamVjdC0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgp
KTsKIAotICAgIGlmICghc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhtb2RlKSkK
KyAgICBpZiAoIW1vZGUuc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcygpKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE2NzksNyAr
MTY3OSw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7CiAgICAgICAg
IGZvciAoYXV0byBpdGVyID0gaGFzaFRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGhhc2hUYWJsZS0+
ZW5kKCk7ICsraXRlcikgewogICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1
aWx0aW5PckZ1bmN0aW9uKQotICAgICAgICAgICAgICAgIHNldFVwU3RhdGljRnVuY3Rpb25TbG90
KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGl0ZXIudmFsdWUoKSwgdGhpcywgSWRlbnRp
Zmllcigmdm0sIGl0ZXIua2V5KCkpLCBzbG90KTsKKyAgICAgICAgICAgICAgICBzZXRVcFN0YXRp
Y0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpdGVyLnZhbHVlKCks
IHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBpdGVyLmtleSgpKSwgc2xvdCk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTI4MDAsNyArMjgwMCw3IEBAIHZvaWQgSlNPYmplY3Q6Omdl
dFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wCiB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpKTsKKyAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6Y3JlYXRlVGhhdFNraXBzSlNPYmplY3QobW9k
ZSkpOwogCiAgICAgaWYgKG9iamVjdC0+cHJvdG90eXBlKCkuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDNmNWUy
NWQxNWIwM2U2MGQ1NzhjODM0YzNmZDUwOTI3NjhhZGEwZDQuLjc4Njc3NWEwZGM0OWMxMjMwN2Rh
ZjQ1MjIxNmFiNzgzNGUxYWI4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaApAQCAtMTU1NCw3ICsxNTU0LDcgQEAgaW5saW5lIGludCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBt
YWtlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgcmV0dXJuIElk
ZW50aWZpZXIoJnZtLCBuYW1lKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sIG5hbWUpOwogfQogCiBBTFdBWVNfSU5MSU5FIElkZW50aWZpZXIgbWFrZUlkZW50aWZpZXIo
Vk0mLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IGFmZGZjMjdkMjBh
ODY1YTM0M2FmMjFkNWM3NDg4ZGM0MzY1YjE3MTUuLmI4YTVhZGFlOTg3ZTQwMzdkNjU1ZTBhM2Y2
YWQwMjhmODQxZTI2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTMxNyw3ICszMTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JhY2UoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IGpzQ2FzdDxKU1By
b21pc2VEZWZlcnJlZCo+KGRlZmVycmVkVmFsdWUpOwogCiAgICAgLy8gNC4gTGV0ICdpdGVyYXRv
cicgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEdldEl0ZXJhdG9yKGl0ZXJhYmxlKS4KLSAgICBK
U1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9u
ID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7CiAKQEAgLTQ4MCw3ICs0ODAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVu
Y0FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0g
anNDYXN0PEpTUHJvbWlzZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0LiBM
ZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRlcmFi
bGUpLgotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0ZXJh
dG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuaAppbmRleCBlZTE4YWJmNmViM2YzMmNmYzAxMjkxZWIxNDQ3NDBlZjc4YTk2YTFj
Li4wYjllNzM5ZjVhNzAzOTY5YTU0MDYzZWYwOTNkNTc1M2I4MDIzMjZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaApAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
IHN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoRXhlY1N0YXRlKiBleGVjCiAgICAgICAg
IHJldHVybiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSk7CiAKICAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIGJhc2UtPm1ldGhvZFRhYmxl
KHZtKS0+Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSkt
PmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZXMpOwogICAgIGlmIChzdHJ1Y3R1cmUt
PmNhbkNhY2hlU3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcigpKQpAQCAtMTQyLDkgKzE0
Miw5IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGdlbmVyaWNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywKICAgICAvLyB0aGUgbmV3IGdlbmVyaWMgUHJv
cGVydHlOYW1lQXJyYXkgYW5kIGZhaWxpbmcgYmVjYXVzZSB3ZSd2ZSBhbHJlYWR5IHZpc2l0ZWQg
dGhlbS4KICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9IHN0cnVjdHVyZUVudW1lcmF0
b3ItPmNhY2hlZFN0cnVjdHVyZSh2bSk7CiAgICAgaWYgKHN0cnVjdHVyZSA9PSBjYWNoZWRTdHJ1
Y3R1cmUgJiYgc3RydWN0dXJlLT5jYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseSgpICYmIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihsZW5ndGgpID09IGJhc2UtPmdldEFycmF5TGVuZ3RoKCkpCi0gICAg
ICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoYmFzZSwg
ZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAg
IGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoYmFzZSwgZXhl
YywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKICAgICBlbHNlCi0gICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVy
dHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKyAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKGJh
c2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CiAgICAgCiAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgc3Ry
dWN0dXJlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXgg
MDU3NTQ0NzZmZDE1NGFkNTYzYTg5MDI0NGRlZGMyZjk2ZjNlMmQxMy4uMzhhZjlkZDRhZWFkYzdh
ZDJiNjY0MWU1MzI1YjUzZDRjNDJiZGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCkBAIC00NjcsNyArNDY3LDcgQEAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRy
aXZpYWxTdHJpbmcoVk0qIHZtLCBTdHJpbmcmJiBzKQogCiBBTFdBWVNfSU5MSU5FIElkZW50aWZp
ZXIgSlNTdHJpbmc6OnRvSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIElkZW50aWZpZXIoZXhlYywgdG9BdG9taWNTdHJpbmcoZXhlYykpOworICAgIHJldHVy
biBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRvQXRvbWljU3RyaW5nKGV4ZWMpKTsKIH0K
IAogQUxXQVlTX0lOTElORSBBdG9taWNTdHJpbmcgSlNTdHJpbmc6OnRvQXRvbWljU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggYjhmYjIyODJhZmFlODdlY2M0MTEw
MjQ1Y2U5YmI4NzNlOTUwZjBmZi4uNzE0YzFhMGZjYjkxNDMwYjZkNGQ0NDM3ZjdiNWRjOTNhYjcx
NmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAKQEAgLTYxLDEwICs2MSwxNSBAQCB2b2lkIEpTU3ltYm9sVGFibGVP
YmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1i
b2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBl
bmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9y
IChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKGl0
LT5rZXktPmlzVW5pcXVlKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IHNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCi0gICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CisgICAgICAgICAgICBp
ZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IG1vZGUuc2hvdWxk
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0LT5r
ZXktPmlzU3ltYm9sKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlLnNob3VsZElu
Y2x1ZGVTeW1ib2xzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKGl0
LT5rZXkuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb21VaWQoZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFs
UGFyc2VyLmNwcAppbmRleCBmNmY1ZmUxNzNjNzA0ZWRlMGY2NTNiNjgzOGUwOTgwNmNhNDQyZWI3
Li5kNDU0NGE0ZjZmMjZjYWE4YzM4NDVkYWYwZmNhZmU3MzIzMjhiZGNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNTcsMTcgKzU3
LDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENoYXJUeXBl
JiBjKQogICAgIGRvIHsKICAgICAgICAgVmVjdG9yPEpTT05QUGF0aEVudHJ5PiBwYXRoOwogICAg
ICAgICAvLyBVbmd1YXJkZWQgbmV4dCB0byBzdGFydCBvZmYgdGhlIGxleGVyCi0gICAgICAgIElk
ZW50aWZpZXIgbmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50
VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJl
bnRUb2tlbigpLnN0YXJ0KTsKKyAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBt
X2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQp
OwogICAgICAgICBKU09OUFBhdGhFbnRyeSBlbnRyeTsKICAgICAgICAgaWYgKG5hbWUgPT0gbV9l
eGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPnZhcktleXdvcmQpIHsKICAgICAgICAgICAgIGlmICht
X2xleGVyLm5leHQoKSAhPSBUb2tJZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05QUGF0aEVudHJ5VHlwZURlY2xh
cmU7Ci0gICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4
ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRv
a2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAgICBl
bnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZt
KCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
ZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICBwYXRoLmFw
cGVuZChlbnRyeSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbnRyeS5tX3R5cGUg
PSBKU09OUFBhdGhFbnRyeVR5cGVEb3Q7Ci0gICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5h
bWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3Rh
cnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5z
dGFydCk7CisgICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7
CiAgICAgICAgICAgICBwYXRoLmFwcGVuZChlbnRyeSk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KG1fZXhlYy0+dm0oKS5rZXl3b3Jkcy0+aXNLZXl3b3JkKGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSkp
CkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNv
bnN0IENoYXJUeXBlJiBjKQogICAgICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05QUGF0
aEVudHJ5VHlwZURvdDsKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9r
SWRlbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgICAgIGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwg
bV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQg
LSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKKyAgICAgICAgICAgICAgICBlbnRyeS5t
X3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0g
bV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFRva0xQYXJlbjogewpAQCAtMTM1LDE3ICsx
MzUsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5
cGUmIGMpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBtX2V4ZWMtPnZtKCkucHJv
cGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyOwogICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1h
eGltdW1DYWNoYWJsZUNoYXJhY3RlcikKLSAgICAgICAgcmV0dXJuIElkZW50aWZpZXIoJm1fZXhl
Yy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIAogICAgIGlm
IChsZW5ndGggPT0gMSkgewogICAgICAgICBpZiAoIW1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0
ZXJzWzBdXS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBtX3Nob3J0SWRlbnRpZmllcnNb
Y2hhcmFjdGVyc1swXV07Ci0gICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBd
XSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAg
ICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4g
bV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwogICAgIH0KICAgICBpZiAoIW1fcmVj
ZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkgJiYgSWRlbnRpZmllcjo6ZXF1
YWwobV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pbXBsKCksIGNoYXJhY3RlcnMs
IGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNb
MF1dOwotICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVy
KCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgbV9yZWNlbnRJZGVudGlm
aWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0o
KSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXTsKIH0KIApAQCAtMTU1LDE3ICsxNTUsMTcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5cGUmIGMpCiAgICAgaWYgKCFsZW5ndGgp
CiAgICAgICAgIHJldHVybiBtX2V4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlm
aWVyOwogICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikK
LSAgICAgICAgcmV0dXJuIElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVu
Z3RoKTsKKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0o
KSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIAogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAg
ICBpZiAoIW1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pc051bGwoKSkKICAgICAg
ICAgICAgIHJldHVybiBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07Ci0gICAgICAg
IG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXIoJm1fZXhlYy0+
dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2No
YXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJh
Y3RlcnNbMF1dOwogICAgIH0KICAgICBpZiAoIW1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVy
c1swXV0uaXNOdWxsKCkgJiYgSWRlbnRpZmllcjo6ZXF1YWwobV9yZWNlbnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXS5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgIHJldHVy
biBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwotICAgIG1fcmVjZW50SWRlbnRp
ZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3Rl
cnMsIGxlbmd0aCk7CisgICAgbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsK
ICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiN2VjYmIxOTBhMDRiNTA5ZDkw
NDEwZmZjNGNjMzJkZDAzOTQ4MGZhLi5hOGEzMzY3ZjUzZmE2YzUxOGI5ZGExZTVkZTc3ZjQ5MDBl
OWNmYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjkzLDcg
KzI5Myw3IEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydGllcyhWTSYgdm0sIGNvbnN0
IEhhc2hUYWJsZVZhbHVlICgmdmFsdWVzKVtudW1iZXJPCiAgICAgICAgIGlmICghdmFsdWUubV9r
ZXkpCiAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAgCiAKLSAgICAgICAgSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
dmFsdWUubV9rZXkpLCBzdHJsZW4odmFsdWUubV9rZXkpKTsKKyAgICAgICAgSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KHZhbHVlLm1fa2V5KSwgc3RybGVuKHZhbHVlLm1fa2V5KSk7CiAgICAg
ICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKSB7CiAgICAgICAgICAgICB0aGlz
T2JqLnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai5nbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCB2YWx1ZS5idWlsdGluR2VuZXJhdG9yKCkodm0pLCB2YWx1ZS5hdHRyaWJ1
dGVzKCkpOwogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggODA2N2NiMjBm
MGMzN2Q2NmE3NzhiZTlkMWVmNmFmZGIzYzZkZTgyOC4uY2E3ZGMwOGYyOGUwZjY2ZmJkNmViYmFm
NWQ4YjY4YWI0ZThmZDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIE1h
cEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnBy
b3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIE1hcEl0ZXJhdG9yUHJvdG90
eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5j
SXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPm5leHQsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAw
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5j
cHAKaW5kZXggNTQ4MjIyNzY5NDAwYjcxODUyYWY3ZGI4Yjc1ZWY1MDc1NDRlZGQ0Zi4uZjg0MzY3
YWU4MGI3MjYzNzUwNWVkYzE1NjNkOGIyODg4YzU4Yzk1OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQg
TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlz
LCBtYXBQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIG1hcFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0s
IDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywg
bWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgbWFwUHJvdG9GdW5jRW50
cmllcywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wsIG1hcFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsK
IAogICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLnN0cmluZygp
LCBtYXBQcm90b0Z1bmNTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0
aE9iamVjdC5jcHAKaW5kZXggMjhmZjVjOGQ5Mjc5ZWU1OWU1YjExZTc1MWI5OWI1NGIyZjZmMDM5
NC4uNTE1NmVkMmVmZDVmMDA0MTJmYzI3MDQ2NzBhZDhkYWIzZmIyNzg4OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKQEAgLTg3LDQ5ICs4Nyw0OSBA
QCB2b2lkIE1hdGhPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IElkZW50aWZpZXIoJnZtLCAiRSIpLCBqc051bWJlcihleHAoMS4wKSksIERvbnREZWxldGUgfCBE
b250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcigmdm0sICJMTjIiKSwganNOdW1iZXIobG9nKDIuMCkpLCBEb250RGVsZXRlIHwg
RG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IElkZW50aWZpZXIoJnZtLCAiTE4xMCIpLCBqc051bWJlcihsb2coMTAuMCkpLCBEb250RGVsZXRl
IHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXIoJnZtLCAiTE9HMkUiKSwganNOdW1iZXIoMS4wIC8gbG9nKDIuMCkpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE9HMTBFIiksIGpzTnVtYmVyKDAuNDM0Mjk0
NDgxOTAzMjUxOCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJQSSIpLCBqc051bWJl
cihwaURvdWJsZSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJTUVJUMV8yIiksIGpz
TnVtYmVyKHNxcnQoMC41KSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJTUVJUMiIp
LCBqc051bWJlcihzcXJ0KDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
Ci0KLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYWJzIiksIDEsIG1hdGhQcm90b0Z1bmNBYnMsIEFi
c0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwg
ImFjb3MiKSwgMSwgbWF0aFByb3RvRnVuY0FDb3MsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXNpbiIpLCAxLCBtYXRoUHJvdG9GdW5j
QVNpbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cigmdm0sICJhdGFuIiksIDEsIG1hdGhQcm90b0Z1bmNBVGFuLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImFjb3NoIiksIDEsIG1hdGhQ
cm90b0Z1bmNBQ29zaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcigmdm0sICJhc2luaCIpLCAxLCBtYXRoUHJvdG9GdW5jQVNpbmgsIE5vSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXRhbmgi
KSwgMSwgbWF0aFByb3RvRnVuY0FUYW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImF0YW4yIiksIDIsIG1hdGhQcm90b0Z1bmNBVGFu
MiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigm
dm0sICJjYnJ0IiksIDEsIG1hdGhQcm90b0Z1bmNDYnJ0LCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImNlaWwiKSwgMSwgbWF0aFByb3Rv
RnVuY0NlaWwsIENlaWxJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcigmdm0sICJjb3MiKSwgMSwgbWF0aFByb3RvRnVuY0NvcywgQ29zSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiY29zaCIpLCAxLCBt
YXRoUHJvdG9GdW5jQ29zaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcigmdm0sICJleHAiKSwgMSwgbWF0aFByb3RvRnVuY0V4cCwgRXhwSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiZXhwbTEi
KSwgMSwgbWF0aFByb3RvRnVuY0V4cG0xLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImZsb29yIiksIDEsIG1hdGhQcm90b0Z1bmNGbG9v
ciwgRmxvb3JJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cigmdm0sICJmcm91bmQiKSwgMSwgbWF0aFByb3RvRnVuY0Zyb3VuZCwgRlJvdW5kSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiaHlwb3QiKSwg
MiwgbWF0aFByb3RvRnVuY0h5cG90LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImxvZyIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nLCBMb2dJ
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJs
b2cxMCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMTAsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibG9nMXAiKSwgMSwgbWF0aFByb3RvRnVu
Y0xvZzFwLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyKCZ2bSwgImxvZzIiKSwgMSwgbWF0aFByb3RvRnVuY0xvZzIsIE5vSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibWF4IiksIDIsIG1hdGhQ
cm90b0Z1bmNNYXgsIE1heEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyKCZ2bSwgIm1pbiIpLCAyLCBtYXRoUHJvdG9GdW5jTWluLCBNaW5JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJwb3ciKSwgMiwg
bWF0aFByb3RvRnVuY1BvdywgUG93SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIoJnZtLCAicmFuZG9tIiksIDAsIG1hdGhQcm90b0Z1bmNSYW5kb20sIE5v
SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAi
cm91bmQiKSwgMSwgbWF0aFByb3RvRnVuY1JvdW5kLCBSb3VuZEludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNpZ24iKSwgMSwgbWF0aFByb3Rv
RnVuY1NpZ24sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIoJnZtLCAic2luIiksIDEsIG1hdGhQcm90b0Z1bmNTaW4sIFNpbkludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNpbmgiKSwgMSwgbWF0
aFByb3RvRnVuY1NpbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXIoJnZtLCAic3FydCIpLCAxLCBtYXRoUHJvdG9GdW5jU3FydCwgU3FydEludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRhbiIp
LCAxLCBtYXRoUHJvdG9GdW5jVGFuLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRhbmgiKSwgMSwgbWF0aFByb3RvRnVuY1RhbmgsIE5v
SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAi
dHJ1bmMiKSwgMSwgbWF0aFByb3RvRnVuY1RydW5jLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImltdWwiKSwgMSwgbWF0aFByb3RvRnVu
Y0lNdWwsIElNdWxJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkUiKSwg
anNOdW1iZXIoZXhwKDEuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiTE4yIiksIGpzTnVtYmVyKGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwg
UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgIkxOMTAiKSwganNOdW1iZXIobG9nKDEwLjApKSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxPRzJFIiksIGpzTnVtYmVyKDEuMCAv
IGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxP
RzEwRSIpLCBqc051bWJlcigwLjQzNDI5NDQ4MTkwMzI1MTgpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiUEkiKSwganNOdW1iZXIocGlEb3VibGUpLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiU1FSVDFfMiIpLCBqc051bWJlcihz
cXJ0KDAuNSkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiU1FS
VDIiKSwganNOdW1iZXIoc3FydCgyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9u
bHkpOworCisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFicyIpLCAxLCBtYXRo
UHJvdG9GdW5jQWJzLCBBYnNJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhY29zIiksIDEsIG1hdGhQcm90b0Z1bmNBQ29z
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImFzaW4iKSwgMSwgbWF0aFByb3RvRnVuY0FTaW4sIE5vSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiYXRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhY29zaCIpLCAx
LCBtYXRoUHJvdG9GdW5jQUNvc2gsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYXNpbmgiKSwgMSwgbWF0aFByb3Rv
RnVuY0FTaW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImF0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNBVGFuaCwg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJhdGFuMiIpLCAyLCBtYXRoUHJvdG9GdW5jQVRhbjIsIE5vSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiY2JydCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2JydCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjZWlsIiksIDEs
IG1hdGhQcm90b0Z1bmNDZWlsLCBDZWlsSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY29zIiksIDEsIG1hdGhQcm90b0Z1
bmNDb3MsIENvc0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvc2giKSwgMSwgbWF0aFByb3RvRnVuY0Nvc2gsIE5vSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiZXhwIiksIDEsIG1hdGhQcm90b0Z1bmNFeHAsIEV4cEludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4cG0x
IiksIDEsIG1hdGhQcm90b0Z1bmNFeHBtMSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJmbG9vciIpLCAxLCBtYXRo
UHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZnJvdW5kIiksIDEsIG1hdGhQcm90b0Z1
bmNGcm91bmQsIEZSb3VuZEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImh5cG90IiksIDIsIG1hdGhQcm90b0Z1bmNIeXBv
dCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJsb2ciKSwgMSwgbWF0aFByb3RvRnVuY0xvZywgTG9nSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAibG9nMTAiKSwgMSwgbWF0aFByb3RvRnVuY0xvZzEwLCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImxvZzFwIiks
IDEsIG1hdGhQcm90b0Z1bmNMb2cxcCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb2cyIiksIDEsIG1hdGhQcm90
b0Z1bmNMb2cyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIm1heCIpLCAyLCBtYXRoUHJvdG9GdW5jTWF4LCBNYXhJ
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJtaW4iKSwgMiwgbWF0aFByb3RvRnVuY01pbiwgTWluSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicG93
IiksIDIsIG1hdGhQcm90b0Z1bmNQb3csIFBvd0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInJhbmRvbSIpLCAwLCBtYXRo
UHJvdG9GdW5jUmFuZG9tLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInJvdW5kIiksIDEsIG1hdGhQcm90b0Z1bmNS
b3VuZCwgUm91bmRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJzaWduIiksIDEsIG1hdGhQcm90b0Z1bmNTaWduLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgInNpbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2luLCBTaW5JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzaW5o
IiksIDEsIG1hdGhQcm90b0Z1bmNTaW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInNxcnQiKSwgMSwgbWF0aFBy
b3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0YW4iKSwgMSwgbWF0aFByb3RvRnVuY1Rhbiwg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJ0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNUYW5oLCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
InRydW5jIiksIDEsIG1hdGhQcm90b0Z1bmNUcnVuYywgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbXVsIiksIDEs
IG1hdGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDNjZmU5NDExNmZhMDYxYmNiNWEy
MTI3MTY1YTRkMDE0ODQxNzJmNWQuLjk1YThkY2E5MDhmYTViN2ZlYTE1OTEyOTUxMDkxNzI0M2Fi
N2MwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5jcHAKQEAgLTU5LDIxICs1OSwyMSBAQCB2b2lkIE51bWJlckNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBl
KQogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIAotICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkVQU0lMT04iKSwganNEb3VibGVO
dW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjplcHNpbG9uKCkpLCBEb250RGVsZXRl
IHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXIoJnZtLCAiTUFYX1ZBTFVFIiksIGpzRG91YmxlTnVtYmVyKDEuNzk3Njkz
MTM0ODYyMzE1N0UrMzA4KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk1JTl9WQUxV
RSIpLCBqc0RvdWJsZU51bWJlcig1RS0zMjQpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFk
T25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZt
LCAiTUFYX1NBRkVfSU5URUdFUiIpLCBqc0RvdWJsZU51bWJlcig5MDA3MTk5MjU0NzQwOTkxLjAp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTUlOX1NBRkVfSU5URUdFUiIpLCBqc0Rv
dWJsZU51bWJlcigtOTAwNzE5OTI1NDc0MDk5MS4wKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwg
UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
KCZ2bSwgIk5FR0FUSVZFX0lORklOSVRZIiksIGpzRG91YmxlTnVtYmVyKC1zdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFk
T25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZt
LCAiUE9TSVRJVkVfSU5GSU5JVFkiKSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk5h
TiIpLCBqc05hTigpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0KLSAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgImlzRmluaXRlIiksIDEsIG51bWJl
ckNvbnN0cnVjdG9yRnVuY0lzRmluaXRlLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVt
YmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJpc0ludGVnZXIi
KSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0s
ICJpc05hTiIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc05hTiwgTm9JbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIo
JnZtLCAiaXNTYWZlSW50ZWdlciIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRl
Z2VyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxP
YmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJwYXJzZUZsb2F0IiksIDEsIGdsb2JhbEZ1bmNQYXJz
ZUZsb2F0LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJwYXJzZUludCIpLCAxLCBnbG9iYWxGdW5jUGFy
c2VJbnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJFUFNJTE9O
IiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigp
KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk1BWF9WQUxVRSIp
LCBqc0RvdWJsZU51bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCksIERvbnREZWxldGUgfCBE
b250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNSU5fVkFMVUUiKSwganNEb3VibGVOdW1iZXIo
NUUtMzI0KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk1BWF9T
QUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIoOTAwNzE5OTI1NDc0MDk5MS4wKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk1JTl9TQUZFX0lOVEVHRVIiKSwg
anNEb3VibGVOdW1iZXIoLTkwMDcxOTkyNTQ3NDA5OTEuMCksIERvbnREZWxldGUgfCBEb250RW51
bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJORUdBVElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJl
cigtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlBPU0lUSVZFX0lORklOSVRZIiksIGpzRG91
YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJOYU4iKSwganNOYU4oKSwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworCisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpc0Zpbml0ZSIpLCAxLCBudW1iZXJDb25z
dHJ1Y3RvckZ1bmNJc0Zpbml0ZSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNJ
bnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlciwgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNOYU4iKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNO
YU4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzU2FmZUludGVnZXIiKSwgMSwg
bnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZlSW50ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAicGFyc2VGbG9hdCIpLCAxLCBnbG9iYWxGdW5jUGFyc2VGbG9hdCwgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFyc2VJbnQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNl
SW50LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CiB9CiAKIC8vIEVDTUEgMTUu
Ny4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggNjAyZTU3NTI4OWUxNmNkYzE2YTBiYmEzNDk3ODVmMmUyN2VmMTdkZC4u
ZDRiM2Q4MzNlODc3MTk5MDcyMzRiOTJmNmU5YTQ1NTgwZmUyYTM5NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMzQs
MTIgKzM0LDE0IEBACiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKKyNpbmNsdWRl
ICJTeW1ib2wuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMo
RXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yS2V5cyhFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSop
OwpAQCAtODQsMTMgKzg2LDE2IEBACiB7CiB9CiAKLXZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCit2
b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogewot
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk9iamVjdCIpLnN0
cmluZygpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgb2JqZWN0UHJvdG90eXBlLT5j
bGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKICAgICAvLyBFQ01BIDE1LjIuMy4xCiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgb2Jq
ZWN0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgLy8g
bm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9u
bHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworCisgICAgaWYgKGdsb2JhbE9iamVjdC0+cnVu
dGltZUZsYWdzKCkuaXNTeW1ib2xFbmFibGVkKCkpCisgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04oImdldE93blByb3BlcnR5U3ltYm9scyIsIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVy
dHlTeW1ib2xzLCBEb250RW51bSwgMSk7CiB9CiAKIGJvb2wgT2JqZWN0Q29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKQEAgLTIwNiw3ICsyMTEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCku
aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2
YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJn
dW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
KyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywg
cHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
ICAgICBKU0FycmF5KiBuYW1lcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CiAgICAg
c2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKQEAgLTIxNSwxMiArMjIwLDI5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0
eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiB9CiAKIC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9u
IGNhY2hlLgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5h
cmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBu
YW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOworICAgIFByb3BlcnR5
TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQo
MCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVj
dChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKKyAgICBKU0FycmF5
KiBuYW1lcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgc2l6ZV90IG51bVBy
b3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bVByb3BlcnRpZXM7IGkrKykgeworICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBsID0g
cHJvcGVydGllc1tpXS5pbXBsKCk7CisgICAgICAgIGlmIChpbXBsLT5pc1N5bWJvbCgpKQorICAg
ICAgICAgICAgbmFtZXMtPnB1c2goZXhlYywgU3ltYm9sOjpjcmVhdGUoZXhlYy0+dm0oKSwgaW1w
bCkpOworICAgIH0KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5hbWVzKTsKK30KKworLy8g
RklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYg
KCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBr
ZXlzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CiAgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgw
KSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0
KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgw
KSksIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CiAgICAgSlNBcnJheSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywg
MCk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKQEAgLTMzMSw3ICszNTMs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5l
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogc3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGll
cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIEpTT2JqZWN0KiBwcm9wZXJ0aWVz
KQogewogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgYXNP
YmplY3QocHJvcGVydGllcyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGllcyks
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJv
cGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHBy
b3BlcnR5TmFtZXMuc2l6ZSgpOwogICAgIFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0b3I+IGRlc2Ny
aXB0b3JzOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBAIC0zOTgsNyAr
NDIwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNl
YWwoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3Bl
cnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7
Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51
bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5h
bWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAh
PSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9m
IGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRo
IFAuCkBAIC00MzUsNyArNDU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFj
aCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkg
cHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9k
ZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBQcm9w
ZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAg
ICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGll
cy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNj
IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFs
IG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTQ4Myw3ICs1MDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAg
IFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0
aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRl
U3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBy
b3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAg
ICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC01MTMsNyArNTM1LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVu
KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0
eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwot
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1l
QXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0g
ZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBj
YWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQ
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgKaW5kZXggMTI1Mjc4MWE1ZTg5MDA2OWVhN2Q5MDEzMGZmMzFlZTllOTBkMzhkNS4uYmIwNjdi
MTU1NWZlMDk4NjFiZWE0MmQxOTJhYTk2YWYzN2MzMDJiOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCkBAIC0zMywxMCArMzMsMTAg
QEAgY2xhc3MgT2JqZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKLSAgICBzdGF0aWMg
T2JqZWN0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBP
YmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKKyAgICBzdGF0aWMgT2JqZWN0Q29uc3Ry
dWN0b3IqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKICAgICB7
CiAgICAgICAgIE9iamVjdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPE9iamVjdENvbnN0cnVjdG9yPih2bS5oZWFwKSkgT2JqZWN0Q29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgb2JqZWN0UHJvdG90eXBlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIG9iamVjdFByb3RvdHlwZSk7CiAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RvcjsKICAgICB9CiAKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgT2JqZWN0Q29uc3RydWN0
b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE9iamVjdFByb3RvdHlwZSopOworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIE9iamVjdFByb3RvdHlwZSopOwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKaW5kZXggMjE0
MTY0NDY2NDVjN2ZmZjAzZjdjODJkMTc4NzM5YWQ1NjA4YmY2NC4uY2NjY2MzOWZhOTM5MTNiM2Zh
NjFjNzUwZTY4ZGM3MjkxNmU1YjcxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcml2YXRlTmFtZS5oCkBAIC0zMywxOSArMzMsMTkgQEAKIGNsYXNzIFByaXZhdGVOYW1lIHsK
IHB1YmxpYzoKICAgICBQcml2YXRlTmFtZSgpCi0gICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6
OmNyZWF0ZVVuaXF1ZUVtcHR5KCkpCisgICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0
ZVN5bWJvbEVtcHR5KCkpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgp
KTsKLSAgICB9Ci0gICAgUHJpdmF0ZU5hbWUoY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKLSAg
ICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlKGRlc2NyaXB0aW9uLmltcGwo
KSkpCi0gICAgewotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKICAgICB9CisK
ICAgICBleHBsaWNpdCBQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpCiAgICAgICAgIDogbV9p
bXBsKHVpZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOworICAg
ICAgICBBU1NFUlQobV9pbXBsLT5pc1N5bWJvbCgpKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBQ
cml2YXRlTmFtZShjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQorICAgICAgICA6IG1faW1wbChT
dHJpbmdJbXBsOjpjcmVhdGVTeW1ib2woZGVzY3JpcHRpb24uaW1wbCgpKSkKKyAgICB7CiAgICAg
fQogCiAgICAgQXRvbWljU3RyaW5nSW1wbCogdWlkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QXRvbWljU3RyaW5nSW1wbCo+KG1faW1wbC5nZXQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCmluZGV4IDAzNzBh
MzU0OGRhOTg2ZDA0MTEzMTNlMDRkYWMyZDE1YzZiYTA5MDQuLjc1NGRhMmQ4ZTgxNTU1NGI3N2I2
OGZlM2U1MmZjNGM4MjJkMzAyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaApAQCAtMjcxLDcgKzI3MSw3IEBAIGlubGlu
ZSBQcm9wZXJ0eVRhYmxlOjpjb25zdF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjplbmQoKSBjb25z
dAogaW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6Zmlu
ZChjb25zdCBLZXlUeXBlJiBrZXkpCiB7CiAgICAgQVNTRVJUKGtleSk7Ci0gICAgQVNTRVJUKGtl
eS0+aXNBdG9taWMoKSB8fCBrZXktPmlzVW5pcXVlKCkpOworICAgIEFTU0VSVChrZXktPmlzQXRv
bWljKCkgfHwga2V5LT5pc1N5bWJvbCgpKTsKICAgICB1bnNpZ25lZCBoYXNoID0ga2V5LT5leGlz
dGluZ0hhc2goKTsKICAgICB1bnNpZ25lZCBzdGVwID0gMDsKIApAQCAtMzA1LDcgKzMwNSw3IEBA
IGlubGluZSBQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmZpbmQo
Y29uc3QgS2V5VHlwZSYga2V5KQogaW5saW5lIFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJv
cGVydHlUYWJsZTo6Z2V0KGNvbnN0IEtleVR5cGUmIGtleSkKIHsKICAgICBBU1NFUlQoa2V5KTsK
LSAgICBBU1NFUlQoa2V5LT5pc0F0b21pYygpIHx8IGtleS0+aXNVbmlxdWUoKSk7CisgICAgQVNT
RVJUKGtleS0+aXNBdG9taWMoKSB8fCBrZXktPmlzU3ltYm9sKCkpOwogCiAgICAgaWYgKCFtX2tl
eUNvdW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKaW5kZXggMzA3NGM3MmUxMDcwMTMzYjk3YjAzYjFkZmY0
YTQzZGUxMzJmYzBhNi4uNjU1ZTc0ZDYyYWMzNjEyMGExOTYxYWJkNzAxMWZmNmJlYzUyMTViMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTgx
LDcgKzgxLDcgQEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKICAgICBQcm9wZXJ0eU5hbWUoQXRvbWlj
U3RyaW5nSW1wbCogcHJvcGVydHlOYW1lKQogICAgICAgICA6IG1faW1wbChwcm9wZXJ0eU5hbWUp
CiAgICAgewotICAgICAgICBBU1NFUlQoIW1faW1wbCB8fCBtX2ltcGwtPmlzQXRvbWljKCkpOwor
ICAgICAgICBBU1NFUlQoIW1faW1wbCB8fCBtX2ltcGwtPmlzQXRvbWljKCkgfHwgbV9pbXBsLT5p
c1N5bWJvbCgpKTsKICAgICB9CiAKICAgICBQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQpAQCAtOTMsOCArOTMsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWUgewogICAg
ICAgICA6IG1faW1wbChzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4ocHJvcGVydHlOYW1l
LnVpZCgpKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ltcGwpOwotICAgICAgICBBU1NFUlQo
bV9pbXBsLT5pc1VuaXF1ZSgpKTsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNBdG9taWMoKSk7
CisgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzU3ltYm9sKCkpOwogICAgIH0KIAogICAgIEF0b21p
Y1N0cmluZ0ltcGwqIHVpZCgpIGNvbnN0CkBAIC0xMDQsMTQgKzEwMywxNCBAQCBjbGFzcyBQcm9w
ZXJ0eU5hbWUgewogCiAgICAgQXRvbWljU3RyaW5nSW1wbCogcHVibGljTmFtZSgpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLT5pc1VuaXF1ZSgpID8gbnVsbHB0ciA6IG1faW1w
bDsKKyAgICAgICAgcmV0dXJuICghbV9pbXBsIHx8IG1faW1wbC0+aXNTeW1ib2woKSkgPyBudWxs
cHRyIDogbV9pbXBsOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBOb3RBbklu
ZGV4ID0gVUlOVF9NQVg7CiAKICAgICB1aW50MzJfdCBhc0luZGV4KCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX2ltcGwgPyB0b1VJbnQzMkZyb21TdHJpbmdJbXBsKG1faW1wbCkgOiBOb3RBbklu
ZGV4OworICAgICAgICByZXR1cm4gKG1faW1wbCAmJiAhbV9pbXBsLT5pc1N5bWJvbCgpKSA/IHRv
VUludDMyRnJvbVN0cmluZ0ltcGwobV9pbXBsKSA6IE5vdEFuSW5kZXg7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCmluZGV4IDQ0NzViODk4
YTk3NDk3N2NlNjhlNDc1OWRjYWQwNmJkNmEwNDgzNzMuLjAxOGEwN2YxZWE2NzA2NTQ3MmY0OGU5
ZWNjZTRkNzczYjBlYTYzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKIAogdm9pZCBQcm9w
ZXJ0eU5hbWVBcnJheTo6YWRkKFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJU
KCFpZGVudGlmaWVyIHx8IGlkZW50aWZpZXIgPT0gU3RyaW5nSW1wbDo6ZW1wdHkoKSB8fCBpZGVu
dGlmaWVyLT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlQoIWlkZW50aWZpZXIgfHwgKCFtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKGlkZW50aWZpZXIpICYmIChpZGVudGlmaWVyID09
IFN0cmluZ0ltcGw6OmVtcHR5KCkgfHwgaWRlbnRpZmllci0+aXNBdG9taWMoKSB8fCBpZGVudGlm
aWVyLT5pc1N5bWJvbCgpKSkpOwogICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAg
IHVpbnQzMl90IGluZGV4ID0gUHJvcGVydHlOYW1lKElkZW50aWZpZXIobV92bSwgaWRlbnRpZmll
cikpLmFzSW5kZXgoKTsKKyAgICAgICAgdWludDMyX3QgaW5kZXggPSBQcm9wZXJ0eU5hbWUoSWRl
bnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBpZGVudGlmaWVyKSkuYXNJbmRleCgpOwogICAgICAgICBB
U1NFUlRfVU5VU0VEKGluZGV4LCBpbmRleCA9PSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXggfHwg
aW5kZXggPj0gbV9wcmV2aW91c2x5RW51bWVyYXRlZExlbmd0aCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRleCA5
OTRmMDljOTA1NDAxMWU0MWIyMzM4ZjlkMDUwNGIyZDQ5YmZmMzlhLi44OWZjYmRlY2Y3ZTgxY2Uy
MzVkNGIxMDNlNTk0NjljOTgxMWE3YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUHJv
cGVydHlOYW1lQXJyYXkgewogICAgIHZvaWQgYWRkS25vd25VbmlxdWUoU3RyaW5nSW1wbCogaWRl
bnRpZmllcikKICAgICB7CiAgICAgICAgIG1fc2V0LT5hZGQoaWRlbnRpZmllcik7Ci0gICAgICAg
IG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXIobV92bSwgaWRl
bnRpZmllcikpOworICAgICAgICBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJ
ZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICBJZGVu
dGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlO
YW1lVmVjdG9yKClbaV07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCA0NWU4MGY1Y2RjMTVhNTZmMmM2NjJiNTM0YjVk
MmRkZGI1YmZlOTkyLi5lZTFkOGIzZmM2OWY5NDNiOTRhNTI1OWNmN2MxODZjYWM2MzczZjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwCkBAIC05MSw3ICs5MSw3IEBACiAKIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUpCiB7Ci0g
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiUmVnRXhwIikuc3Ry
aW5nKCkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCByZWdFeHBQcm90b3R5cGUtPmNs
YXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKIAog
ICAgIC8vIEVDTUEgMTUuMTAuNS4xIFJlZ0V4cC5wcm90b3R5cGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IDRkOWQwYjI3ZTRkMGM4Yzkx
ZjlmZWI0NWExZDU0ZTU5NWQzM2Q1MTkuLjU0OWEzYTJmOWE3NGMzYTFhOWRjNzAwMTA0MTJmYTQ3
OWQ5MWE4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcApAQCAtMTA1LDIxICsxMDUsMjEgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHIKIAog
dm9pZCBSZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sYXN0SW5kZXgpOwogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6
Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAg
ICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9k
ZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpOwogICAgIEJhc2U6OmdldFBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogdm9p
ZCBSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
KSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJ
bmRleCk7CiAgICAgQmFzZTo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCA1MjYxYmYzY2FjYzFkNGUw
ZTQ1NzU1MWEwMjJkZTY3YzkxOTRkZmY5Li5mMWI4Yjc5NDgxMTg5MDkzYTAxYTYyYzU4NjE0ZGQ5
ZGVlZDhmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJ
dGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgU2V0SXRlcmF0
b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBl
TWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5j
SXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRv
ciwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+bmV4dCwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRl
eCBmODhlYTdjZjk4NjhmNjY4YjhjMmU4ODgxNWZmNjVjZjM5OTI3YjQ5Li40OTk2ZGEwZWE1MzEz
ZmQyZTYxZTcxYTZlZjQzODM1MWZhYTNiYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTZXRQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIHNldFBy
b3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPnZhbHVlcywgc2V0UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQcm90
b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBzZXRQcm90b0Z1bmNLZXlzLCBEb250
RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvclN5bWJvbCwgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwogCiAgICAgR2V0dGVy
U2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qp
OwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIHNldFByb3RvRnVu
Y1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDUzZTBjY2IzMTQ0ZjM5NTk2ZTY0NTVlYTdi
MzJmNzU3MGJiZjFhZGIuLjQ2OGI3MmQwZmNhNzRmOTI0NzUyMTFiYzQxZDlhZWYwYzU5Zjc2YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBTdHJpbmdJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWMKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFw
LmFkZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVJdGVy
YXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wsIHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlSXRlcmF0b3IsIERv
bnRFbnVtLCAwKTsKIH0KIAogYm9vbCBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNTAwMWJjYzRlMWI3ZTM3OTNlZDI2
ZTE0MjBhODBhNjA0NjhlMTNjNi4uYWIzOTQ5ZTA3ZTMzZTFhMTlmNzUzNTlmMjk5ODFhMjE0OWFm
MGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
Y3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICBpbnQg
c2l6ZSA9IHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCk7CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggYWVhNTkyNjk1MjJiODU5
ODg5NGM0N2VlNWQ0OWE0ZWJjNjJkMjEzMy4uY2E2MmM0MWIwZjM1ODk2OTE2ZDFjNjI1ZDdjMzQw
ZmE0ZGYyNDkyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNT
dHIKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJzdGFydHNXaXRoIiwgc3RyaW5nUHJvdG9GdW5j
U3RhcnRzV2l0aCwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImVuZHNX
aXRoIiwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKCJpbmNsdWRlcyIsIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzLCBEb250RW51
bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lLCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHN0
cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAKICAgICBKU0NfTkFUSVZFX0lO
VFJJTlNJQ19GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5jaGFyQ29kZUF0UHJpdmF0ZU5hbWUs
IHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQsIERvbnRFbnVtLCAxLCBDaGFyQ29kZUF0SW50cmlu
c2ljKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5k
ZXggYzc2OTA1MTNkN2FhNzAzYjdmYjIzZDE1YzNmMjA3YTVjMGViMWQyNy4uZjcxMDJhZTM0Y2M5
MjM1Mjk5YWUyNDc0ZGZlN2YxOTMyZWVlYTI4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC05NDcsNyArOTQ3LDEzIEBAIHZvaWQgU3RydWN0dXJl
OjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShWTSYgdm0sIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0CiAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gcHJvcGVydHlUYWJs
ZSgpLT5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBwcm9w
ZXJ0eVRhYmxlKCktPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNT
RVJUKGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgfHwgIShpdGVyLT5hdHRyaWJ1dGVzICYg
RG9udEVudW0pKTsKLSAgICAgICAgaWYgKCFpdGVyLT5rZXktPmlzVW5pcXVlKCkgJiYgKCEoaXRl
ci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKG1vZGUpKSkgeworICAgICAgICBpZiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0p
IHx8IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CisgICAgICAgICAg
ICBpZiAoaXRlci0+a2V5LT5pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtb2Rl
LnNob3VsZEluY2x1ZGVTeW1ib2xzKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKGl0ZXIt
PmtleSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGtub3duVW5pcXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMu
YWRkS25vd25VbmlxdWUoaXRlci0+a2V5KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAppbmRleCA5
OWNlNjg2Mjc0ZmQ3NzM5MjhkZGQ1OWZmMWY5Y2FmNGVlYmUyMTFlLi5hYTk0ZmEzMWYxYTA5NWJl
Mzg4NGM0MTc4MDI0NGI3MTg4YjMwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBACiB9CiAK
ICNkZWZpbmUgSU5JVElBTElaRV9XRUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAotICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6
OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgI25hbWUpLCBTeW1ib2w6
OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjU3ltYm9sLmltcGwoKSksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0ZTcyNTk5ZDhkMjdlZjVjMzg3NGZi
MTI1NjczMDIzOTQzYzE0MWE3Li4xZDNkNzc5OWIwZmRkZmZhN2Q2OTZiYmQ1ODczZjlhZWYwNjdh
ZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NTIsMTAgKzY1Miwx
MCBAQCBKU1ZhbHVlIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
ZXJyb3IpCiAgICAgICAgIHVuc2lnbmVkIGxpbmU7CiAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsK
ICAgICAgICAgc3RhY2tGcmFtZS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwot
ICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcih0aGlzLCAibGlu
ZSIpLCBqc051bWJlcihsaW5lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKLSAgICAgICAgZXhj
ZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXIodGhpcywgImNvbHVtbiIpLCBqc051
bWJlcihjb2x1bW4pLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBleGNlcHRpb24t
PnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh0aGlzLCAibGluZSIpLCBq
c051bWJlcihsaW5lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZXhjZXB0aW9u
LT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodGhpcywgImNvbHVtbiIp
LCBqc051bWJlcihjb2x1bW4pLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgICAgICBpZiAo
IXN0YWNrRnJhbWUuc291cmNlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGV4Y2VwdGlvbi0+
cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyKHRoaXMsICJzb3VyY2VVUkwiKSwganNTdHJpbmco
dGhpcywgc3RhY2tGcmFtZS5zb3VyY2VVUkwpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAg
ICAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodGhpcywgInNvdXJjZVVSTCIpLCBqc1N0cmluZyh0aGlzLCBzdGFja0ZyYW1lLnNvdXJjZVVS
TCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24tPmlz
RXJyb3JJbnN0YW5jZSgpICYmIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb24p
LT5hcHBlbmRTb3VyY2VUb01lc3NhZ2UoKSkgewogICAgICAgICBGaW5kRmlyc3RDYWxsZXJGcmFt
ZVdpdGhDb2RlYmxvY2tGdW5jdG9yIGZ1bmN0b3IoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJv
bHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3du
LXByb3BlcnR5LXN5bWJvbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBlOTNkOGIyNDc5ZGU5MmFkOTYwZTc1
YjQyZTc5MWZkOTI1ZjE2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcwpAQCAtMCww
ICsxLDM1IEBACisvLyBUaGlzIHRlc3RzIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMuCisK
K3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikoKSk7CisKKy8vIHByaXZhdGUg
bmFtZXMgZm9yIHByaXZpbGVnZWQgY29kZSBzaG91bGQgbm90IGJlIGV4cG9zZWQuCitpZiAoT2Jq
ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhnbG9iYWwpLmxlbmd0aCAhPT0gMCkKKyAgICB0aHJv
dyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhnbG9i
YWwpLmxlbmd0aDsKKwordmFyIG9iamVjdCA9IHt9OwordmFyIHN5bWJvbCA9IFN5bWJvbCgiQ29j
b2EiKTsKK29iamVjdFtzeW1ib2xdID0gIkNhcHB1Y2Npbm8iOworaWYgKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFk
IHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aDsKK2lm
IChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoICE9PSAxKQorICAg
IHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
KG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0
KVswXSAhPT0gc3ltYm9sKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmco
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdKTsKKworZnVuY3Rpb24gZm9y
SW4ob2JqKSB7CisgICAgdmFyIGFycmF5ID0gW107CisgICAgLy8gU3ltYm9sIHNob3VsZCBub3Qg
YmUgZW51bWVyYXRlZC4KKyAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBhcnJheS5wdXNoKGtleSk7
CisgICAgcmV0dXJuIGFycmF5OworfQorCitpZiAoZm9ySW4ob2JqZWN0KS5sZW5ndGggIT09IDAp
CisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIGZvckluKG9iamVjdCkubGVuZ3RoOwor
aWYgKE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJFcnJvcjog
YmFkIHZhbHVlICIgKyBPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aDsKKworZGVsZXRlIG9iamVj
dFtzeW1ib2xdOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3Ro
ICE9PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aDsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzKG9iamVjdCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIg
KyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtZGVmaW5lLXByb3Bl
cnR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtZGVmaW5l
LXByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYzNlYzA1ZjgwNmUzNzI1NzczNjI0ODI2MTk4MTUy
MzBiNmIzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuanMKQEAgLTAsMCArMSwzMyBAQAorLy8gVGhp
cyB0ZXN0cyBPYmplY3QuY3JlYXRlLCBPYmplY3QuZGVmaW5lUHJvcGVydHksIE9iamVjdC5kZWZp
bmVQcm9wZXJ0aWVzIHdvcmsgd2l0aCBTeW1ib2wuCisKK2Z1bmN0aW9uIHRlc3RTeW1ib2wob2Jq
ZWN0KSB7CisgICAgaWYgKCFvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBvYmplY3QgZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVyYXRv
ciI7CisgICAgaWYgKG9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZShTeW1ib2wuaXRlcmF0b3Ip
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IFN5bWJvbC5pdGVyYXRvciBpcyBkZWZpbmVkIGFzIGVu
dW1lcmFibGUiOworICAgIGlmIChKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgIT09ICd7InZhbHVlIjo0Miwid3Jp
dGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjpmYWxzZSwiY29uZmlndXJhYmxlIjpmYWxzZX0nKQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBwcm9wZXJ0eSBkZXNjcmlwdG9yICIgKyBKU09OLnN0
cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0
ZXJhdG9yKSk7CisgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5s
ZW5ndGggIT09IDEpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGg7CisgICAgaWYgKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSAhPT0gU3ltYm9sLml0ZXJhdG9yKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgU3RyaW5nKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMob2JqZWN0KVswXSk7Cit9CisKK3ZhciBvYmplY3QgPSBPYmplY3QuY3JlYXRlKE9iamVj
dC5wcm90b3R5cGUsIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogeworICAgICAgICB2YWx1ZTog
NDIKKyAgICB9Cit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsKKwordmFyIG9iamVjdCA9IE9iamVj
dC5kZWZpbmVQcm9wZXJ0aWVzKHt9LCB7CisgICAgW1N5bWJvbC5pdGVyYXRvcl06IHsKKyAgICAg
ICAgdmFsdWU6IDQyCisgICAgfQorfSk7Cit0ZXN0U3ltYm9sKG9iamVjdCk7CisKK3ZhciBvYmpl
Y3QgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIFN5bWJvbC5pdGVyYXRvciwgeworICAgIHZh
bHVlOiA0MgorfSk7Cit0ZXN0U3ltYm9sKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGY1MDdjZDllZTUzYzUxYjJjMjE5YzcyOGM0ZDNjNTVlZGQ3N2M1YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9s
LXNlYWwtYW5kLWZyZWV6ZS5qcwpAQCAtMCwwICsxLDI2IEBACisvLyBUaGlzIHRlc3RzIE9iamVj
dC5zZWFsIGFuZCBPYmplY3QuZnJlZXplIGFmZmVjdCBvbiBTeW1ib2wgcHJvcGVydGllcy4KKwor
dmFyIG9iamVjdCA9IHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogNDIKK307CisKK2lmICghb2Jq
ZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikpCisgICAgdGhyb3cgIkVycm9yOiBv
YmplY3QgZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVyYXRvciI7CitpZiAoSlNPTi5zdHJpbmdpZnko
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikp
ICE9PSAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25m
aWd1cmFibGUiOnRydWV9JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBwcm9wZXJ0eSBkZXNjcmlw
dG9yICIgKyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
amVjdCwgU3ltYm9sLml0ZXJhdG9yKSk7CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyhvYmplY3QpLmxlbmd0aCAhPT0gMSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsg
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aDsKK2lmIChPYmplY3Qu
Z2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0gIT09IFN5bWJvbC5pdGVyYXRvcikKKyAg
ICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgU3RyaW5nKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eVN5bWJvbHMob2JqZWN0KVswXSk7CisKK09iamVjdC5zZWFsKG9iamVjdCk7CitpZiAoIW9iamVj
dC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpKQorICAgIHRocm93ICJFcnJvcjogb2Jq
ZWN0IGRvZXNuJ3QgaGF2ZSBTeW1ib2wuaXRlcmF0b3IiOworaWYgKEpTT04uc3RyaW5naWZ5KE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAh
PT0gJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6dHJ1ZSwiZW51bWVyYWJsZSI6dHJ1ZSwiY29uZmln
dXJhYmxlIjpmYWxzZX0nKQorICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2NyaXB0
b3IgIiArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2Jq
ZWN0LCBTeW1ib2wuaXRlcmF0b3IpKTsKKworT2JqZWN0LmZyZWV6ZShvYmplY3QpOworaWYgKCFv
YmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICB0aHJvdyAiRXJyb3I6
IG9iamVjdCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsKK2lmIChKU09OLnN0cmluZ2lm
eShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9y
KSkgIT09ICd7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjp0cnVlLCJj
b25maWd1cmFibGUiOmZhbHNlfScpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcHJvcGVydHkgZGVz
Y3JpcHRvciAiICsgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtd2l0aC1qc29uLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtd2l0aC1qc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMDNk
NWQ1YTExZDQ4MmFhZjYwMzhjYzBhNDdmOTcxOWM1ZDlmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMKQEAg
LTAsMCArMSwxNCBAQAorLy8gVGhpcyB0ZXN0cyBKU09OIGNvcnJlY3RseSBiZWhhdmVzIHdpdGgg
U3ltYm9sLgorCitpZiAoSlNPTi5zdHJpbmdpZnkoU3ltYm9sKCdDb2NvYScpKSAhPT0gdW5kZWZp
bmVkKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBKU09OLnN0cmluZ2lmeShTeW1i
b2woJ0NvY29hJykpOworCit2YXIgb2JqZWN0ID0ge307Cit2YXIgc3ltYm9sID0gU3ltYm9sKCJD
b2NvYSIpOworb2JqZWN0W3N5bWJvbF0gPSA0MjsKK29iamVjdFsnQ2FwcHVjY2lubyddID0gNDI7
CitpZiAoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSAhPT0gJ3siQ2FwcHVjY2lubyI6NDJ9JykKKyAg
ICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgSlNPTi5zdHJpbmdpZnkob2JqZWN0KTsKKwor
aWYgKEpTT04uc3RyaW5naWZ5KG9iamVjdCwgWyBTeW1ib2woJ0NvY29hJykgXSkgIT09ICJ7fSIp
CisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIEpTT04uc3RyaW5naWZ5KG9iamVjdCwg
WyBTeW1ib2woJ0NvY29hJykgXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5k
ZXggMDYyOTBjMjRlNDczZDNlOTY1YjQ1MDQwMDBhNjNhMmE3MjAwOGY1Yy4uMTcxZWIxNWRhM2I0
ODNjZjAxMmUwODFhNDM0ZTc5MDM1NWJmY2NmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcApAQCAtNDAzLDYgKzQwMyw5IEBAIHN0cnVjdCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxE
YXRhVHJhbnNsYXRvciB7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biAqU3RyaW5nSW1wbDo6ZW1wdHkoKTsKIAorICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkKKyAg
ICAgICAgcmV0dXJuIGFkZChzdHJpbmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKCkpOwor
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJp
bmcgc2hvdWxkIG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkg
YXRvbWljLiIpOwogCiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwpAQCAtNDIx
LDYgKzQyNCw5IEBAIHN0cnVjdCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvciB7
CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAqU3RyaW5nSW1wbDo6
ZW1wdHkoKTsKIAorICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIGFk
ZChzdHJpbmdUYWJsZSwgc3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpKTsKKwog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5n
IHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGF0
b21pYy4iKTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKQEAgLTUwMyw2
ICs1MDksMTIgQEAgQXRvbWljU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjpmaW5kU2xvd0Nhc2Uo
U3RyaW5nSW1wbCYgc3RyaW5nKQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5p
c0F0b21pYygpLCAiQXRvbWljU3RyaW5nSW1wbHMgc2hvdWxkIHJldHVybiBmcm9tIHRoZSBmYXN0
IGNhc2UuIik7CiAKKyAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsKKworICAg
IGlmIChzdHJpbmcuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIGZpbmQoJnN0cmluZy5leHRy
YWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKSk7CisKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tl
ciBsb2NrZXI7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0cmluZ1RhYmxlID0g
c3RyaW5nVGFibGUoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gYXRvbWljU3RyaW5nVGFibGUuZmlu
ZCgmc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IGJhZTlkMzYyZDI3
NTFlNWE3M2NlMGIxYjdlMmE0MTFiMDE4MzdmMzMuLjYwOWNmNzMxZDI3YmZjMDY3OGQ2YzY5ODNj
NGNiMDhiNmEyMjkxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaApAQCAtMTgzLDEx
ICsxODMsOSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxT
dHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIHsKLSAgICAgICAgaWYgKCFz
dHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKSB7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFzdHJpbmcgfHwgIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5pc1VuaXF1ZSgp
IHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29t
ZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgIGlmICghc3RyaW5nKQogICAgICAg
ICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYWRkU2xvd0Nh
c2UoKnN0cmluZyk7CisgICAgICAgIHJldHVybiBhZGQoKnN0cmluZyk7CiAgICAgfQogICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZEZyb21MaXRlcmFs
RGF0YShjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogI2lmIFVTRShD
RikKQEAgLTE5NywxMSArMTk1LDkgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUYWJsZVByb3ZpZGVyPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IFJlZlB0cjxTdHJpbmdJbXBsPiBhZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcihTdHJpbmdUYWJs
ZVByb3ZpZGVyJiBzdHJpbmdUYWJsZVByb3ZpZGVyLCBTdHJpbmdJbXBsKiBzdHJpbmcpCiAgICAg
ewotICAgICAgICBpZiAoIXN0cmluZyB8fCBzdHJpbmctPmlzQXRvbWljKCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZyB8fCAhc3RyaW5nLT5sZW5ndGgoKSB8fCBz
dHJpbmctPmlzVW5pcXVlKCkgfHwgaXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUg
YXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgaWYg
KCFzdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBhZGRTbG93Q2FzZSgqc3RyaW5nVGFibGVQcm92aWRlci5hdG9taWNTdHJpbmdUYWJs
ZSgpLCAqc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIGFkZCgqc3RyaW5nVGFibGVQcm92aWRlci5h
dG9taWNTdHJpbmdUYWJsZSgpLCAqc3RyaW5nKTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FC
TEVECkBAIC0yMTMsNyArMjA5LDI1IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAgQXRvbWlj
U3RyaW5nKEFTQ0lJTGl0ZXJhbCk7CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgCisKKyAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwmIHN0
cmluZykKKyAgICB7CisgICAgICAgIGlmIChzdHJpbmcuaXNBdG9taWMoKSkgeworICAgICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IGlzSW5BdG9taWNTdHJp
bmdUYWJsZSgmc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIg
dGhyZWFkISIpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3RyaW5nKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKEF0b21pY1N0cmluZ1RhYmxlJiBzdHJpbmdUYWJs
ZSwgU3RyaW5nSW1wbCYgc3RyaW5nKQorICAgIHsKKyAgICAgICAgaWYgKHN0cmluZy5pc0F0b21p
YygpKSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkg
fHwgaXNJbkF0b21pY1N0cmluZ1RhYmxlKCZzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29t
ZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShzdHJpbmdUYWJsZSwgc3RyaW5n
KTsKKyAgICB9CisKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsJik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmLCBT
dHJpbmdJbXBsJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDBiNzc0OWFm
OGY5MmZiZTY1OTY0ZGNjODNkZTFjZWM1ODczYzA5MmYuLjU3NmQyYWExYzlmZGVkOTRjMWRjM2Y0
MDViNzA1MTdmNTk5NTAwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgU3RyaW5nU3RhdHM6OnByaW50U3RhdHMoKQogCiAgICAgU1RSSU5H
X1NUQVRTX1JFTU9WRV9TVFJJTkcoKnRoaXMpOwogCi0gICAgaWYgKGlzQXRvbWljKCkgJiYgbGVu
Z3RoKCkgJiYgIWlzVW5pcXVlKCkpCisgICAgaWYgKGlzQXRvbWljKCkgJiYgbGVuZ3RoKCkgJiYg
IWlzU3ltYm9sKCkpCiAgICAgICAgIEF0b21pY1N0cmluZzo6cmVtb3ZlKHRoaXMpOwogCiAgICAg
QnVmZmVyT3duZXJzaGlwIG93bmVyc2hpcCA9IGJ1ZmZlck93bmVyc2hpcCgpOwpAQCAtMjg2LDEz
ICsyODYsMTQgQEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0ltcGwqIHN0cmluZ0lt
cGwpCiAgICAgcmV0dXJuIGNyZWF0ZShzdHJpbmcsIGxlbmd0aCk7CiB9CiAKLVJlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXAp
CitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sKFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gcmVwKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHJlcC0+bGVuZ3RoKCk7CiAg
ICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBjcmVhdGVVbmlxdWVFbXB0eSgpOworICAg
ICAgICByZXR1cm4gY3JlYXRlU3ltYm9sRW1wdHkoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gc3Ry
aW5nID0gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwocmVwLCAwLCBsZW5ndGgpOwotICAgIHN0
cmluZy0+bV9oYXNoQW5kRmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc3RyaW5nLT5tX2hh
c2hBbmRGbGFncyk7CisgICAgQVNTRVJUKCFzdHJpbmctPmlzQXRvbWljKCkpOworICAgIHN0cmlu
Zy0+bV9oYXNoQW5kRmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JTeW1ib2woc3RyaW5nLT5tX2hhc2hB
bmRGbGFncyk7CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAppbmRleCA2NjcyMjNlNmRhNzVkMTJiNTMxNzQ0MTA5MDNhM2IzYTc2MzFhNDc2Li41MTBhMzli
MmI3ZDUyMDZiOTE4ZmE1YzY1ZTIyMzkyNzNhZWM0NWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaApAQCAtMTQxLDYgKzE0MSwyNSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgQnVm
ZmVyU3Vic3RyaW5nLAogICAgIH07CiAKKyAgICAvLyBUaGUgYm90dG9tIDYgYml0cyBpbiB0aGUg
aGFzaCBhcmUgZmxhZ3MuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0NvdW50ID0g
NjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnTWFzayA9ICgxdSA8PCBzX2ZsYWdD
b3VudCkgLSAxOworICAgIENPTVBJTEVfQVNTRVJUKHNfZmxhZ0NvdW50IDw9IFN0cmluZ0hhc2hl
cjo6ZmxhZ0NvdW50LCBTdHJpbmdIYXNoZXJfcmVzZXJ2ZXNfZW5vdWdoX2JpdHNfZm9yX1N0cmlu
Z0ltcGxfZmxhZ3MpOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdTdHJpbmdLaW5k
Q291bnQgPSA0OworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdL
aW5kSXNBdG9taWMgPSAxdSA8PCAoc19mbGFnU3RyaW5nS2luZENvdW50KTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbCA9IDF1IDw8IChzX2Zs
YWdTdHJpbmdLaW5kQ291bnQgKyAxKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNo
TWFza1N0cmluZ0tpbmQgPSBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljIHwgc19oYXNoRmxh
Z1N0cmluZ0tpbmRJc1N5bWJvbDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxh
ZzhCaXRCdWZmZXIgPSAxdSA8PCAzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hG
bGFnRGlkUmVwb3J0Q29zdCA9IDF1IDw8IDI7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
aGFzaE1hc2tCdWZmZXJPd25lcnNoaXAgPSAoMXUgPDwgMCkgfCAoMXUgPDwgMSk7CisKKyAgICBl
bnVtIFN0cmluZ0tpbmQgeworICAgICAgICBTdHJpbmdOb3JtYWwgPSAwdSwgLy8gbm9uLXN5bWJv
bCwgbm9uLWF0b21pYworICAgICAgICBTdHJpbmdBdG9taWMgPSBzX2hhc2hGbGFnU3RyaW5nS2lu
ZElzQXRvbWljLCAvLyBub24tc3ltYm9sLCBhdG9taWMKKyAgICAgICAgU3RyaW5nU3ltYm9sID0g
c19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbCwgLy8gc3ltYm9sLCBub24tYXRvbWljCisgICAg
fTsKKwogICAgIC8vIFVzZWQgdG8gY29uc3RydWN0IHN0YXRpYyBzdHJpbmdzLCB3aGljaCBoYXZl
IGFuIHNwZWNpYWwgcmVmQ291bnQgdGhhdCBjYW4gbmV2ZXIgaGl0IHplcm8uCiAgICAgLy8gVGhp
cyBtZWFucyB0aGF0IHRoZSBzdGF0aWMgc3RyaW5nIHdpbGwgbmV2ZXIgYmUgZGVzdHJveWVkLCB3
aGljaCBpcyBpbXBvcnRhbnQgYmVjYXVzZQogICAgIC8vIHN0YXRpYyBzdHJpbmdzIHdpbGwgYmUg
c2hhcmVkIGFjcm9zcyB0aHJlYWRzICYgcmVmLWNvdW50ZWQgaW4gYSBub24tdGhyZWFkc2FmZSBt
YW5uZXIuCkBAIC0xNTAsNyArMTY5LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDog
bV9yZWZDb3VudChzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nKQogICAgICAgICAsIG1fbGVu
Z3RoKDApCiAgICAgICAgICwgbV9kYXRhOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
Jm1fbGVuZ3RoKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZl
ciB8IHNfaGFzaEZsYWdJc0F0b21pYyB8IEJ1ZmZlck93bmVkKQorICAgICAgICAsIG1faGFzaEFu
ZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nQXRvbWljIHwgQnVmZmVyT3duZWQp
CiAgICAgewogICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaGFzaCBpcyBjb21wdXRlZCBzbyB0
aGF0IEF0b21pY1N0cmluZ0hhc2ggY2FuIGNhbGwgZXhpc3RpbmdIYXNoKCkKICAgICAgICAgLy8g
d2l0aCBpbXB1bml0eS4gVGhlIGVtcHR5IHN0cmluZyBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgaXMg
bmV2ZXIgZW50ZXJlZCBpbnRvCkBAIC0xNjcsNyArMTg2LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7
CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1f
bGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KHRhaWxQb2ludGVyPExDaGFyPigpKQot
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50
ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBT
dHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2Rh
dGE4KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTE4MCw3ICsxOTksNyBAQCBjbGFz
cyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQp
CiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KHRhaWxQb2lu
dGVyPFVDaGFyPigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlckludGVybmFsKQor
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3Ro
KTsKQEAgLTE5Myw3ICsyMTIsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3Jl
ZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQog
ICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycy5sZWFrUHRyKCkpCi0gICAgICAgICwgbV9oYXNo
QW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJPd25lZCkKKyAgICAgICAgLCBt
X2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZl
ck93bmVkKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwogICAgICAgICBBU1NFUlQo
bV9sZW5ndGgpOwpAQCAtMjA2LDcgKzIyNSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAg
ICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChs
ZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hB
bmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhTdHJpbmdO
b3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7
CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0yMTgsNyArMjM3LDcgQEAgY2xhc3MgU3Ry
aW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAg
ICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMpCi0g
ICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRl
cm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0
cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0
YTgpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjMxLDcgKzI1MCw3IEBAIGNsYXNz
IFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkK
ICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVy
cy5sZWFrUHRyKCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVyT3duZWQpCisgICAg
ICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQpCiAgICAgewog
ICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAt
MjQ0LDcgKzI2Myw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQo
c19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAg
ICwgbV9kYXRhOChjaGFyYWN0ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZs
YWc4Qml0QnVmZmVyIHwgQnVmZmVyU3Vic3RyaW5nKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdz
KHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGlzOEJpdCgpKTsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgp
OwpAQCAtMjYxLDcgKzI4MCw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVm
Q291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAg
ICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhC
dWZmZXJTdWJzdHJpbmcpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwg
QnVmZmVyU3Vic3RyaW5nKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpczhCaXQoKSk7CiAgICAg
ICAgIEFTU0VSVChtX2RhdGExNik7CkBAIC0yNzMsMTQgKzI5MiwxNCBAQCBjbGFzcyBTdHJpbmdJ
bXBsIHsKICAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0
cnVlKTsKICAgICB9CiAKLSAgICBlbnVtIENyZWF0ZUVtcHR5VW5pcXVlVGFnIHsgQ3JlYXRlRW1w
dHlVbmlxdWUgfTsKLSAgICBTdHJpbmdJbXBsKENyZWF0ZUVtcHR5VW5pcXVlVGFnKQorICAgIGVu
dW0gQ3JlYXRlU3ltYm9sRW1wdHlUYWcgeyBDcmVhdGVTeW1ib2xFbXB0eSB9OworICAgIFN0cmlu
Z0ltcGwoQ3JlYXRlU3ltYm9sRW1wdHlUYWcpCiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNv
dW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgIC8vIFdlIGV4cGVj
dCBtX2xlbmd0aCB0byBiZSBpbml0aWFsaXplZCB0byAwIGFzIHdlIHVzZSBpdAogICAgICAgICAv
LyB0byByZXByZXNlbnQgYSBudWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgogICAgICAgICAsIG1fZGF0
YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAgICwg
bV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHNfaGFzaEZsYWc4Qml0QnVmZmVy
IHwgQnVmZmVySW50ZXJuYWwpKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFn
c0ZvclN5bWJvbChzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKIApAQCAtMzc4LDEyICszOTcsMTIgQEAgY2xhc3Mg
U3RyaW5nSW1wbCB7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxUPihyZXN1bHRJ
bXBsLCBsZW5ndGgpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiBjcmVhdGVVbmlxdWVFbXB0eSgpCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbEVtcHR5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWUpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xFbXB0eSkpOwogICAgIH0K
IAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZVVuaXF1ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcCk7CisgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3ltYm9sKFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gcmVwKTsKIAogICAgIC8vIFJlYWxsb2NhdGUgdGhlIFN0cmluZ0ltcGwuIFRoZSBv
cmlnaW5hbFN0cmluZyBtdXN0IGJlIG9ubHkgb3duZWQgYnkgdGhlIFBhc3NSZWZQdHIsCiAgICAg
Ly8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUgQnVmZmVySW50ZXJuYWwuIEp1c3Qg
bGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCksCkBAIC0zOTMsOCArNDEyLDkgQEAg
Y2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9CiAg
ICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJczhCaXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1
ZmZlcjsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNBdG9taWMoKSB7IHJldHVybiBzX2hh
c2hGbGFnSXNBdG9taWM7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzVW5pcXVlKCkgeyBy
ZXR1cm4gc19oYXNoRmxhZ0lzVW5pcXVlOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc0F0
b21pYygpIHsgcmV0dXJuIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KKyAgICBzdGF0
aWMgdW5zaWduZWQgZmxhZ0lzU3ltYm9sKCkgeyByZXR1cm4gc19oYXNoRmxhZ1N0cmluZ0tpbmRJ
c1N5bWJvbDsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBtYXNrU3RyaW5nS2luZCgpIHsgcmV0dXJu
IHNfaGFzaE1hc2tTdHJpbmdLaW5kOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGRhdGFPZmZzZXQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RyaW5nSW1wbCwgbV9kYXRhOCk7IH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlcj4KQEAgLTQ1NCwxNyArNDc0LDIxIEBAIGNsYXNzIFN0cmluZ0lt
cGwgewogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBzaXplSW5CeXRlcygpIGNv
bnN0OwogCi0gICAgYm9vbCBpc1VuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdz
ICYgc19oYXNoRmxhZ0lzVW5pcXVlOyB9CisgICAgU3RyaW5nS2luZCBzdHJpbmdLaW5kKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RyaW5nS2luZD4obV9oYXNoQW5kRmxhZ3MgJiBzX2hh
c2hNYXNrU3RyaW5nS2luZCk7IH0KKyAgICBib29sIGlzU3ltYm9sKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnU3RyaW5nS2luZElzU3ltYm9sOyB9CisgICAgYm9v
bCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0
cmluZ0tpbmRJc0F0b21pYzsgfQogCi0gICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJu
IG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0lzQXRvbWljOyB9CiAgICAgdm9pZCBzZXRJc0F0
b21pYyhib29sIGlzQXRvbWljKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1N0YXRpYygpKTsK
LSAgICAgICAgQVNTRVJUKCFpc1VuaXF1ZSgpKTsKLSAgICAgICAgaWYgKGlzQXRvbWljKQotICAg
ICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ0lzQXRvbWljOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ0lzQXRvbWljOwor
ICAgICAgICBBU1NFUlQoIWlzU3ltYm9sKCkpOworICAgICAgICBpZiAoaXNBdG9taWMpIHsKKyAg
ICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7
CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5nS2luZCgpID09IFN0cmluZ0F0b21pYyk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ1N0
cmluZ0tpbmRJc0F0b21pYzsKKyAgICAgICAgICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0gU3Ry
aW5nTm9ybWFsKTsKKyAgICAgICAgfQogICAgIH0KIAogI2lmIFNUUklOR19TVEFUUwpAQCAtNzA2
LDYgKzczMCwxNiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgY29uc3QgVUNoYXIgbGF0aW4xQ2FzZUZvbGRUYWJsZVsyNTZdOwogCisgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZ0ltcGwmIGV4dHJhY3RGb2xkZWRTdHJpbmdJblN5
bWJvbCgpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQo
aXNTeW1ib2woKSk7CisgICAgICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJT
dWJzdHJpbmcpOworICAgICAgICBBU1NFUlQoc3Vic3RyaW5nQnVmZmVyKCkpOworICAgICAgICBB
U1NFUlQoIXN1YnN0cmluZ0J1ZmZlcigpLT5pc1N5bWJvbCgpKTsKKyAgICAgICAgcmV0dXJuICpz
dWJzdHJpbmdCdWZmZXIoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0Nv
cHkoKSBjb25zdAogICAgIHsKQEAgLTc3MiwyMyArODA2LDEyIEBAIGNsYXNzIFN0cmluZ0ltcGwg
ewogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiByZWFsbG9jYXRlSW50ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiwgdW5zaWduZWQsIENo
YXJUeXBlKiYpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSosIHVuc2lnbmVkKTsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIGhhc2hTbG93Q2FzZSgp
IGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdW5zaWduZWQgaGFzaEFuZEZs
YWdzRm9yVW5pcXVlKHVuc2lnbmVkIGZsYWdzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHVuc2lnbmVkIGhhc2hBbmRGbGFnc0ZvclN5bWJvbCh1bnNpZ25lZCBmbGFncyk7CiAKICAg
ICAvLyBUaGUgYm90dG9tIGJpdCBpbiB0aGUgcmVmIGNvdW50IGluZGljYXRlcyBhIHN0YXRpYyAo
aW1tb3J0YWwpIHN0cmluZy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19yZWZDb3VudEZs
YWdJc1N0YXRpY1N0cmluZyA9IDB4MTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19yZWZD
b3VudEluY3JlbWVudCA9IDB4MjsgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcmVmIC8gZGVyZWYgd2l0
aG91dCBkaXN0dXJiaW5nIHRoZSBzdGF0aWMgc3RyaW5nIGZsYWcuCiAKLSAgICAvLyBUaGUgYm90
dG9tIDcgYml0cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3MuCi0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHNfZmxhZ0NvdW50ID0gNzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnTWFz
ayA9ICgxdSA8PCBzX2ZsYWdDb3VudCkgLSAxOwotICAgIENPTVBJTEVfQVNTRVJUKHNfZmxhZ0Nv
dW50IDw9IFN0cmluZ0hhc2hlcjo6ZmxhZ0NvdW50LCBTdHJpbmdIYXNoZXJfcmVzZXJ2ZXNfZW5v
dWdoX2JpdHNfZm9yX1N0cmluZ0ltcGxfZmxhZ3MpOwotCi0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHNfaGFzaEZsYWdJc1VuaXF1ZSA9IDF1IDw8IDY7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHNfaGFzaEZsYWc4Qml0QnVmZmVyID0gMXUgPDwgNTsKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19oYXNoRmxhZ0lzQXRvbWljID0gMXUgPDwgNDsKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgPSAxdSA8PCAzOwotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzX2hhc2hNYXNrQnVmZmVyT3duZXJzaGlwID0gMXUgfCAoMXUgPDwgMSk7Ci0K
ICNpZiBTVFJJTkdfU1RBVFMKICAgICBXVEZfRVhQT1JUREFUQSBzdGF0aWMgU3RyaW5nU3RhdHMg
bV9zdHJpbmdTdGF0czsKICNlbmRpZgpAQCAtODAzLDcgKzgyNiw3IEBAIGNsYXNzIFN0cmluZ0lt
cGwgewogCiAgICAgICAgIC8vIFRoZXNlIHZhbHVlcyBtaW1pYyBDb25zdHJ1Y3RGcm9tTGl0ZXJh
bC4KICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlhbFJlZkNvdW50ID0gc19y
ZWZDb3VudEluY3JlbWVudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlh
bEZsYWdzID0gc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbDsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlhbEZsYWdzID0gc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbDsKICAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNfaGFzaFNoaWZ0ID0gc19mbGFnQ291bnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nU3RhdGljcy5jcHAKaW5kZXggNjViYjY3MjFkNzQzZmExMDQxYzI5MmI2MGY0
ZDAzMjkyODNkOGU1MS4uMzk0NWM3M2UwMDhjZDQzN2RhNTQ5YTE1YTVhYWJiNDg2NTMzNmQxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCkBAIC00NywxOCArNDcsMTggQEAg
U3RyaW5nSW1wbCogU3RyaW5nSW1wbDo6ZW1wdHkoKQogICAgIHJldHVybiAmZW1wdHlTdHJpbmcu
Z2V0KCk7CiB9CiAKLS8vIFNldCB0aGUgaGFzaCBlYXJseSwgc28gdGhhdCBhbGwgdW5pcXVlIFN0
cmluZ0ltcGxzIGhhdmUgYSBoYXNoLAorLy8gU2V0IHRoZSBoYXNoIGVhcmx5LCBzbyB0aGF0IGFs
bCBzeW1ib2wgU3RyaW5nSW1wbHMgaGF2ZSBhIGhhc2gsCiAvLyBhbmQgZG9uJ3QgdXNlIHRoZSBu
b3JtYWwgaGFzaGluZyBhbGdvcml0aG0gLSB0aGUgdW5pcXVlIG5hdHVyZSBvZiB0aGVzZQogLy8g
a2V5cyBtZWFucyB0aGF0IHdlIGRvbid0IG5lZWQgdGhlbSB0byBtYXRjaCBhbnkgb3RoZXIgc3Ry
aW5nIChpbiBmYWN0LAogLy8gdGhhdCdzIGV4YWN0bHkgdGhlIG9wb3NpdGUgb2Ygd2hhdCB3ZSB3
YW50ISksIGFuZCB0aGUgbm9ybWFsIGhhc2ggd291bGQKIC8vIGxlYWQgdG8gbG90cyBvZiBjb25m
bGljdHMuCi11bnNpZ25lZCBTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUodW5zaWdu
ZWQgZmxhZ3MpCit1bnNpZ25lZCBTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JTeW1ib2wodW5z
aWduZWQgZmxhZ3MpCiB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNfbmV4dEhhc2hBbmRGbGFnc0Zv
clVuaXF1ZSA9IDA7Ci0gICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlICs9IDEgPDwgc19m
bGFnQ291bnQ7Ci0gICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlIHw9IDEgPDwgMzE7Ci0g
ICAgdW5zaWduZWQgZmxhZ3NGb3JVbmlxdWUgPSAoZmxhZ3MgJiBzX2ZsYWdNYXNrKSB8IHNfaGFz
aEZsYWdJc0F0b21pYyB8IHNfaGFzaEZsYWdJc1VuaXF1ZTsKLSAgICByZXR1cm4gc19uZXh0SGFz
aEFuZEZsYWdzRm9yVW5pcXVlIHwgZmxhZ3NGb3JVbmlxdWU7CisgICAgc3RhdGljIHVuc2lnbmVk
IHNfbmV4dEhhc2hBbmRGbGFnc0ZvclN5bWJvbCA9IDA7CisgICAgc19uZXh0SGFzaEFuZEZsYWdz
Rm9yU3ltYm9sICs9IDEgPDwgc19mbGFnQ291bnQ7CisgICAgc19uZXh0SGFzaEFuZEZsYWdzRm9y
U3ltYm9sIHw9IDEgPDwgMzE7CisgICAgdW5zaWduZWQgZmxhZ3NGb3JTeW1ib2wgPSAoKGZsYWdz
ICYgc19mbGFnTWFzaykgJiAofnNfaGFzaE1hc2tTdHJpbmdLaW5kKSkgfCBTdHJpbmdTeW1ib2w7
CisgICAgcmV0dXJuIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclN5bWJvbCB8IGZsYWdzRm9yU3ltYm9s
OwogfQogCiBXVEZfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgbnVsbEF0
b20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KaW5kZXggN2VhN2NiYWFhN2U3ZmU3N2JmMDI5Mjc2
ZmRjYTdhMjYzNTliMTA0Zi4uYWM3NGZmNjEyMmZkOTY5MjRkZjM0MzNjOTMzYTdmN2M2M2M5ZTkz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5qZWN0ZWQo
KQogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAKLSAgICBKU0M6OkpTVmFs
dWUgcmVwbGFjZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRl
bnRpZmllcihleGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7CisgICAgSlNDOjpKU1Zh
bHVlIHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOwog
ICAgIGlmIChyZXBsYWNlbWVudEZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgCkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAKICAgICAvLyBMb29rdXAgdGhlICJjcmVhdGVQ
bHVnaW5SZXBsYWNlbWVudCIgZnVuY3Rpb24uCi0gICAgSlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50
RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywg
ImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOworICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVu
dEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKICAgICBpZiAocmVwbGFj
ZW1lbnRGdW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgSlNDOjpKU09iamVjdCogcmVwbGFjZW1lbnRPYmplY3QgPSByZXBsYWNlbWVudEZ1bmN0
aW9uLnRvT2JqZWN0KGV4ZWMpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290KQogICAg
IH0KIAogICAgIC8vIEdldCB0aGUgPHZpZGVvPiBjcmVhdGVkIHRvIHJlcGxhY2UgdGhlIHBsdWct
aW4uCi0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6
SWRlbnRpZmllcihleGVjLCAidmlkZW8iKSk7CisgICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcmVw
bGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmlk
ZW8iKSk7CiAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSAmJiAhdmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkKICAgICAgICAgbV9tZWRpYUVsZW1lbnQgPSBKU0hUTUxWaWRlb0VsZW1lbnQ6
OnRvV3JhcHBlZCh2YWx1ZSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCBib29sIFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9vdCkKICAg
ICB9CiAKICAgICAvLyBHZXQgdGhlIHNjcmlwdGluZyBpbnRlcmZhY2UuCi0gICAgdmFsdWUgPSBy
ZXBsYWNlbWVudC5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJzY3JpcHRPYmplY3Qi
KSk7CisgICAgdmFsdWUgPSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJzY3JpcHRPYmplY3QiKSk7CiAgICAgaWYgKCFleGVjLT5oYWRFeGNl
cHRpb24oKSAmJiAhdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgbV9zY3JpcHRP
YmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9EaWN0aW9uYXJ5LmNwcAppbmRleCBkZjRkYzc4NjJkMmRhYWE5ZjJiNjc2ZDFlZDMxNzJhMmYz
ZWFmZDI5Li40Y2QwODM4ZjM2NDI1MzgzZThjMTg4ODI2NmY4MjEyMWEwMGU3NWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBi
b29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4mIG1hcCkgYwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFy
eS5leGVjU3RhdGUoKTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhl
Yyk7Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVB
cnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHBy
b3BlcnR5TmFtZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0
LT5zdHJpbmcoKTsKICAgICAgICAgaWYgKHN0cmluZ0tleS5pc0VtcHR5KCkpCkBAIC04OCw3ICs4
OCw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyhWZWN0b3I8U3RyaW5n
PiYgbmFtZXMpIGNvbnN0CiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNT
dGF0ZSgpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAg
ICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpj
b25zdF9pdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlO
YW1lcy5lbmQoKTsgKytpdCkgewogICAgICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmlu
ZygpOwogICAgICAgICBpZiAoIXN0cmluZ0tleS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IGJiNTAxOGMx
Nzk5MmQ2MGQyZWYyNGJmZWQ2ODEwYjIyNDcxNzI3MTYuLjZmODA2NjE0ZWE0YjBjYjQxNmE1M2Yy
NzI5MmQ5Y2VkOTVjZjY5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBib29sIGdl
dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtleVBhdGhF
bGVtZW50LCBKCiAgICAgfQogICAgIGlmICghb2JqZWN0LmlzT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJmV4ZWMtPnZtKCksIGtleVBh
dGhFbGVtZW50LnV0ZjgoKS5kYXRhKCkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksIGtleVBhdGhFbGVtZW50LnV0ZjgoKS5k
YXRhKCkpOwogICAgIGlmICghYXNPYmplY3Qob2JqZWN0KS0+aGFzUHJvcGVydHkoZXhlYywgaWRl
bnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQgPSBhc09iamVjdChv
YmplY3QpLT5nZXQoZXhlYywgaWRlbnRpZmllcik7CkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBi
b29sIHNldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUmIG9iamVjdCwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoRWxlbWVudCwKIHsKICAgICBpZiAoIWNhblNldChvYmplY3QsIGtleVBhdGhFbGVtZW50
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmZXhl
Yy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CisgICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwga2V5UGF0aEVs
ZW1lbnQudXRmOCgpLmRhdGEoKSk7CiAgICAgYXNPYmplY3Qob2JqZWN0KS0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIGlkZW50aWZpZXIsIGpzVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHAKaW5kZXggODk2Yjk5Y2U5MWI3MmM2Y2ZlODAyYjE3Y2JkMDcwZjI0NWQ0
YTQ3ZC4uY2Y4YzZiYWU3NWU0YTdkNWQ5M2I3NzRjNWI2NDU3NGY0ZGFhYTE0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRp
b25DdXN0b20uY3BwCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRp
b246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGUK
IAogICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzID0gbmV3IElkZW50aWZpZXJbbnVtQ1NTUHJv
cGVydGllc107CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsg
KytpKQotICAgICAgICAgICAgcHJvcGVydHlJZGVudGlmaWVyc1tpXSA9IElkZW50aWZpZXIoZXhl
YywganNQcm9wZXJ0eU5hbWVzW2ldLmltcGwoKSk7CisgICAgICAgICAgICBwcm9wZXJ0eUlkZW50
aWZpZXJzW2ldID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBqc1Byb3BlcnR5TmFtZXNb
aV0pOwogICAgIH0KIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsg
KytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0Rh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCmlu
ZGV4IGUxZDcyNWY4YzZkMTExMzQxMjE1ZTEwYmRkN2FiNjcyN2U3NGVhZDQuLjQ1MWRhYzYyMzEz
YjIzM2FkZjY1ZDhmNzBiYWIzMWMzODM2NTk3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSlNWYWx1ZSB0aGlzVmFsdWUsIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyJgogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gY2FsbGJhY2soKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2FsbGJhY2soKSwgY2Fs
bERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgZnVu
Y3Rpb24gPSBjYWxsYmFjaygpLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZl
bnQiKSk7CisgICAgICAgIGZ1bmN0aW9uID0gY2FsbGJhY2soKS0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgImhhbmRsZUV2ZW50IikpOwogICAgICAgICBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0
b20uY3BwCmluZGV4IGRhNTJjZWMyY2ZkY2M3NmExY2Q0MGQyZTQ1YWUwOTU2NDY1ZTFmNzYuLjhk
MmQwMjA2NGU1N2VhYTQ3ODE4MGJiOGU0NWJkMzAwNGU4ZjMxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5j
cHAKQEAgLTg5LDggKzg5LDggQEAgc3RhdGljIEpTQXJyYXkqIGdldEpTTGlzdGVuZXJGdW5jdGlv
bnMoRXhlY1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnMKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIEpTT2JqZWN0KiBsaXN0ZW5lckVudHJ5ID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaXN0ZW5lciIpLCBmdW5jdGlvbik7Ci0gICAgICAg
IGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ1
c2VDYXB0dXJlIiksIGpzQm9vbGVhbihsaXN0ZW5lckluZm8uZXZlbnRMaXN0ZW5lclZlY3Rvcltp
XS51c2VDYXB0dXJlKSk7CisgICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaXN0ZW5lciIpLCBmdW5jdGlvbik7
CisgICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJ1c2VDYXB0dXJlIiksIGpzQm9vbGVhbihsaXN0ZW5lckluZm8u
ZXZlbnRMaXN0ZW5lclZlY3RvcltpXS51c2VDYXB0dXJlKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0SW5kZXgoZXhlYywgb3V0cHV0SW5kZXgrKywgSlNWYWx1ZShsaXN0ZW5lckVudHJ5KSk7
CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTgsNyArMTE4LDcgQEAgSlNWYWx1ZSBK
U0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICBpZiAoIWxpc3RlbmVycy0+bGVuZ3RoKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZSA9IGxpc3RlbmVyc0FycmF5W2ldLmV2ZW50
VHlwZTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihl
eGVjLCBldmVudFR5cGUuaW1wbCgpKSwgSlNWYWx1ZShsaXN0ZW5lcnMpKTsKKyAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBl
dmVudFR5cGUuaW1wbCgpKSwgSlNWYWx1ZShsaXN0ZW5lcnMpKTsKICAgICB9CiAKICAgICByZXR1
cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlw
dG9BbGdvcml0aG1CdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5
cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAKaW5kZXggMDgxMGJjODFlOWEwNWVlYWRlZWY0ZjBlNjY5
OTRkMjFiOTM1M2FhNy4uYTlmMzcyNjU3MGUyODk0YWJhNjFlODVjYzA5ZjA5YzE0OGIxOGY5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1C
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29y
aXRobUJ1aWxkZXIuY3BwCkBAIC01NiwyMSArNTYsMjEgQEAKIHZvaWQgSlNDcnlwdG9BbGdvcml0
aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhcioga2V5LCB1bnNpZ25lZCB2YWx1ZSkKIHsKICAgICBW
TSYgdm0gPSBtX2V4ZWMtPnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwga2V5KTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNO
dW1iZXIodmFsdWUpKTsKIH0KIAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChj
b25zdCBjaGFyKiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gbV9l
eGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CisgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7CiAg
ICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzU3RyaW5nKG1fZXhl
YywgdmFsdWUpKTsKIH0KIAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25z
dCBjaGFyKiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogewogICAgIFZNJiB2
bSA9IG1fZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOwor
ICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBr
ZXkpOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBhcnJheVZpZXcgPSBVaW50OEFycmF5OjpjcmVh
dGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXRE
aXJlY3Qodm0sIGlkZW50aWZpZXIsIGFycmF5Vmlldy0+d3JhcChtX2V4ZWMsIHZtLmVudHJ5U2Nv
cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSlNDcnlwdG9B
bGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhcioga2V5LCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGJ1ZmZlCiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIq
IGtleSwgY29uc3QgQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJiBuZXN0ZWRCdWls
ZGVyKQogewogICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50
aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIGNvbnN0IEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRl
ciYganNCdWlsZGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVy
Jj4obmVzdGVkQnVpbGRlcik7CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50
aWZpZXIsIGpzQnVpbGRlci5yZXN1bHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAppbmRleCA2
NGQ1NmQ5NzBhNzRlNWRjMWFlYWEzODU5NWI1NmJkMWU2MzQ2ZmUyLi40YWU2YWU1MDYyNDZlMzlm
YmZjYzUyZDM3MGMwNjZmODljZTAzYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKQEAgLTg5LDcg
Kzg5LDcgQEAgYm9vbCBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmdldEFsZ29yaXRobUlk
ZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKIAogc3RhdGljIEpTVmFsdWUgZ2V0UHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBjb25zdCBjaGFyKiBuYW1l
KQogewotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCBuYW1lKTsKKyAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG5hbWUpOwogICAg
IFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAKICAgICBpZiAob2JqZWN0LT5nZXRQcm9wZXJ0
eVNsb3QoZXhlYywgaWRlbnRpZmllciwgc2xvdCkpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGlj
IGJvb2wgZ2V0SGFzaEFsZ29yaXRobShKU0RpY3Rpb25hcnkmIGRpY3Rpb25hcnksIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBkaWN0aW9uYXJ5LmV4ZWNT
dGF0ZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBkaWN0aW9uYXJ5LmluaXRpYWxpemVyT2Jq
ZWN0KCk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoZXhlYywgImhhc2giKTsKKyAgICBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJoYXNo
Iik7CiAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKIAogICAgIEpTVmFsdWUgaGFzaCA9
IGdldFByb3BlcnR5KGV4ZWMsIG9iamVjdCwgImhhc2giKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCmlu
ZGV4IGE4OTE3ZDc1ZGE0ZDg0NjA0NGFmMWFlMjllMWE5Y2U0MWQ1ZjMzMTkuLjFlMWE1MjZmMjYx
Mzk0NmM3ODcyMmVjOTAwMWU3NGVhZmQzZTU3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcApAQCAt
NTIsNyArNTIsNyBAQAogCiBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBKU0FycmF5KiYgcmVzdWx0
KQogewotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCBrZXkpOworICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChqc29uKTsKIAogICAgIGlmICghanNvbi0+Z2V0UHJvcGVydHlTbG90
KGV4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgYm9vbCBn
ZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3Qg
Y2hhcioga2V5LAogCiBzdGF0aWMgYm9vbCBnZXRTdHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIFN0cmluZyYgcmVzdWx0KQogewot
ICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChqc29uKTsKIAogICAgIGlmICghanNvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMs
IGlkZW50aWZpZXIsIHNsb3QpKQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgYm9vbCBnZXRTdHJp
bmdGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBr
ZXksCiAKIHN0YXRpYyBib29sIGdldEJvb2xlYW5Gcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIGJvb2wmIHJlc3VsdCkKIHsKLSAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIoZXhlYywga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNs
b3QoanNvbik7CiAKICAgICBpZiAoIWpzb24tPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudGlm
aWVyLCBzbG90KSkKQEAgLTUwMSw3ICs1MDEsNyBAQCBib29sIEpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6a2V5U2l6ZUlzVmFsaWQoc2l6ZV90IHNpemVJbkJpdHMpIGNvbnN0CiBzdGF0aWMg
dm9pZCBhZGRUb0pTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hh
cioga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAgICBqc29uLT5w
dXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIHZhbHVlKSk7CiB9CiAKQEAg
LTU0MiwxMyArNTQyLDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkSlNPTkZvclJTQUNvbXBvbmVudHMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENyeXB0b0tleURhdGFSCiAgICAgICAgIGFkZFRv
SlNPTihleGVjLCBqc1ByaW1lSW5mbywgInQiLCBiYXNlNjRVUkxFbmNvZGUoZGF0YS5vdGhlclBy
aW1lSW5mb3MoKVtpXS5mYWN0b3JDUlRDb2VmZmljaWVudCkpOwogICAgICAgICBvdGgtPnB1dERp
cmVjdEluZGV4KGV4ZWMsIGksIGpzUHJpbWVJbmZvKTsKICAgICB9Ci0gICAgcmVzdWx0LT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAib3RoIiksIG90aCk7CisgICAgcmVz
dWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
b3RoIiksIG90aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkZEJvb2xUb0pTT04oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBib29sIHZhbHVlKQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwga2V5KTsKICAgICBqc29uLT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzQm9vbGVhbih2
YWx1ZSkpOwogfQogCkBAIC02NzUsNyArNjc1LDcgQEAgc3RhdGljIHZvaWQgYWRkVXNhZ2VzVG9K
U09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIENyeXB0b0tleVVzYWdlIHVzYWcK
ICAgICBpZiAodXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRzKQogICAgICAgICBrZXlP
cHMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4KyssIGpzTm9udHJpdmlhbFN0cmluZyhleGVj
LCBBU0NJSUxpdGVyYWwoImRlcml2ZUJpdHMiKSkpOwogCi0gICAganNvbi0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImtleV9vcHMiKSwga2V5T3BzKTsKKyAgICBqc29u
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAia2V5
X29wcyIpLCBrZXlPcHMpOwogfQogCiBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldL
OjpzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXkmIGtleSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
LmNwcAppbmRleCA3ODM2NjgxOTAyZmMzYjI0MGJhYTBlNWVhOGU2NmY0ZDFiMGQyZjZkLi41NGVi
MzMxMTYzZGU2OGM5NjdhMWI0YzNjMTllNjViZjVkNGM0OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC03
NCw3ICs3NCw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNw
YWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9n
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICAgICAgCi0gICAgSlNWYWx1ZSBmdW5jdGlv
biA9IG1fY3VzdG9tUmVzb2x2ZXItPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJsb29rdXBO
YW1lc3BhY2VVUkkiKSk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1fY3VzdG9tUmVzb2x2ZXIt
PmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb29rdXBOYW1lc3BhY2VV
UkkiKSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
U3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3Ry
aW5nTWFwQ3VzdG9tLmNwcAppbmRleCAzYWZhYWUyMzQwNzc0OWFjN2E5ZjI3MjBmM2Y4OTdmMGJl
NTdjZGU3Li41MjU5OGNlYzI0NzVmMTZhYmNkOTE4MTdhMGM4MzYxYmY1Y2ZjMDk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAgdGhpc09iamVj
dC0+bV9pbXBsLT5nZXROYW1lcyhuYW1lcyk7CiAgICAgc2l6ZV90IGxlbmd0aCA9IG5hbWVzLnNp
emUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIG5hbWVzW2ldKSk7CisgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZXNbaV0pKTsK
IAogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNDhmODE4NDUyMjc2ODIwYWFhZTFmYTQ4M2NmNDdlNDg0
MTYwYjc1Mi4uMjcxZTgyZjRlYmNlY2MwNDZjNDc5NTdiYjdmOTgwNjQwOWIzZWY5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAt
NDI4LDcgKzQyOCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzo6
SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIERvbid0IGFsbG93IHNoYWRvd2luZyBsb2NhdGlvbiB1c2luZyBhY2Nl
c3NvciBwcm9wZXJ0aWVzLgotICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9y
KCkgJiYgcHJvcGVydHlOYW1lID09IElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9uIikpCisgICAg
aWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9wZXJ0eU5hbWUgPT0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibG9jYXRpb24iKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwpAQCAtNDQ0LDcg
KzQ0NCw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlRE9NV2lu
ZG93KGV4ZWMpLmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGFjdGl2ZUZyYW1lLT5zZXR0aW5ncygp
LnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgIWFjdGl2ZUZyYW1l
LT50cmVlKCkucGFyZW50KCkpIHsKICAgICAgICAgICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgaW1wbCgpKSkKLSAgICAgICAgICAgICAg
ICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAibG9jYXRpb24iKSwgdmFs
dWUpOworICAgICAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC01MjYsNyArNTI2LDcgQEAgaW5saW5lIHZvaWQgRGlhbG9n
SGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZChET01XaW5kb3cmIGRpYWxvZykKICAgICAvLyAgICAgICAg
d29ybGQgaWYgZGlhbG9nQXJndW1lbnRzIGNvbWVzIGZyb20gYW4gaXNvbGF0ZWQgd29ybGQuCiAg
ICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IHRvSlNET01XaW5kb3cobV9mcmFtZS5nZXQo
KSwgbm9ybWFsV29ybGQobV9leGVjLT52bSgpKSk7CiAgICAgaWYgKEpTVmFsdWUgZGlhbG9nQXJn
dW1lbnRzID0gbV9leGVjLT5hcmd1bWVudCgxKSkKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXRE
aXJlY3QobV9leGVjLT52bSgpLCBJZGVudGlmaWVyKG1fZXhlYywgImRpYWxvZ0FyZ3VtZW50cyIp
LCBkaWFsb2dBcmd1bWVudHMpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChtX2V4
ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCAiZGlhbG9nQXJndW1lbnRz
IiksIGRpYWxvZ0FyZ3VtZW50cyk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIERpYWxvZ0hhbmRsZXI6
OnJldHVyblZhbHVlKCkgY29uc3QKQEAgLTUzNCw3ICs1MzQsNyBAQCBpbmxpbmUgSlNWYWx1ZSBE
aWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSgpIGNvbnN0CiAgICAgSlNET01XaW5kb3cqIGdsb2Jh
bE9iamVjdCA9IHRvSlNET01XaW5kb3cobV9mcmFtZS5nZXQoKSwgbm9ybWFsV29ybGQobV9leGVj
LT52bSgpKSk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihtX2V4ZWMsICJyZXR1cm5WYWx1ZSIp
OworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9l
eGVjLCAicmV0dXJuVmFsdWUiKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3Qp
OwogICAgIGlmICghSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmpl
Y3QsIG1fZXhlYywgaWRlbnRpZmllciwgc2xvdCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rp
b25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1v
dGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCBmY2E3YzdlZDZhZDVkODczZTA3YTIwMjczNzFlNzY4
ZjZlMzJiYjM3Li5lY2JiMzNlZWY4NzhjNWU1ZjFlMDNjOWY4Yjc2NjAzZTJjYjIyMDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2
ZW50Q3VzdG9tLmNwcApAQCAtNDgsNyArNDgsNyBAQAogICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0
ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9iamVjdC4KICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7CiAKLSAgICBKU1ZhbHVlIHhWYWx1ZSA9IG9iamVj
dC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIngiKSk7CisgICAgSlNWYWx1ZSB4VmFsdWUg
PSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ4IikpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9v
bCBjYW5Qcm92aWRlWCA9ICF4VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTU2LDcgKzU2
LDcgQEAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgSlNWYWx1ZSB5VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMs
ICJ5IikpOworICAgIEpTVmFsdWUgeVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAieSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZVkgPSAheVZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCk7CkBAIC02NCw3ICs2NCw3IEBACiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEpTVmFsdWUgelZhbHVlID0gb2JqZWN0
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAieiIpKTsKKyAgICBKU1ZhbHVlIHpWYWx1ZSA9
IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInoiKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29s
IGNhblByb3ZpZGVaID0gIXpWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtODYsNyArODYs
NyBAQAogICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxk
IGFuIG9iamVjdC4KICAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7
CiAKLSAgICBKU1ZhbHVlIGFscGhhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVy
KGV4ZWMsICJhbHBoYSIpKTsKKyAgICBKU1ZhbHVlIGFscGhhVmFsdWUgPSBvYmplY3QtPmdldChl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbHBoYSIpKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlk
ZUFscGhhID0gIWFscGhhVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTk0LDcgKzk0LDcg
QEAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgSlNWYWx1ZSBiZXRhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMs
ICJiZXRhIikpOworICAgIEpTVmFsdWUgYmV0YVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYmV0YSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZUJldGEgPSAh
YmV0YVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSlNWYWx1
ZSBnYW1tYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiZ2FtbWEi
KSk7CisgICAgSlNWYWx1ZSBnYW1tYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiZ2FtbWEiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVHYW1tYSA9ICFnYW1t
YVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC0xMTksMTggKzExOSwxOCBAQAogc3RhdGlj
IEpTT2JqZWN0KiBjcmVhdGVBY2NlbGVyYXRpb25PYmplY3QoY29uc3QgRGV2aWNlTW90aW9uRGF0
YTo6QWNjZWxlcmF0aW9uKiBhY2NlbGVyYXRpb24sIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBK
U09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgb2JqZWN0
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAieCIpLCBhY2NlbGVyYXRp
b24tPmNhblByb3ZpZGVYKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPngoKSkgOiBqc051bGwo
KSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAi
eSIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVZKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24t
PnkoKSkgOiBqc051bGwoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcihleGVjLCAieiIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVaKCkgPyBqc051bWJl
cihhY2NlbGVyYXRpb24tPnooKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieCIpLCBhY2NlbGVyYXRp
b24tPmNhblByb3ZpZGVYKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPngoKSkgOiBqc051bGwo
KSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAieSIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVZKCkgPyBqc051bWJlcihh
Y2NlbGVyYXRpb24tPnkoKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieiIpLCBhY2NlbGVyYXRpb24t
PmNhblByb3ZpZGVaKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPnooKSkgOiBqc051bGwoKSk7
CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAogc3RhdGljIEpTT2JqZWN0KiBjcmVhdGVSb3RhdGlv
blJhdGVPYmplY3QoY29uc3QgRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlKiByb3RhdGlv
blJhdGUsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
SWRlbnRpZmllcihleGVjLCAiYWxwaGEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRlQWxwaGEo
KSA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+YWxwaGEoKSkgOiBqc051bGwoKSk7Ci0gICAgb2Jq
ZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiYmV0YSIpLCAgcm90
YXRpb25SYXRlLT5jYW5Qcm92aWRlQmV0YSgpICA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+YmV0
YSgpKSAgOiBqc051bGwoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcihleGVjLCAiZ2FtbWEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRlR2FtbWEoKSA/
IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+Z2FtbWEoKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYWxw
aGEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRlQWxwaGEoKSA/IGpzTnVtYmVyKHJvdGF0aW9u
UmF0ZS0+YWxwaGEoKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYmV0YSIpLCAgcm90YXRpb25SYXRl
LT5jYW5Qcm92aWRlQmV0YSgpICA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+YmV0YSgpKSAgOiBq
c051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAiZ2FtbWEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRlR2FtbWEo
KSA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+Z2FtbWEoKSkgOiBqc051bGwoKSk7CiAgICAgcmV0
dXJuIG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5jcHAKaW5kZXggMjBkOGY4M2NkMGU0OWFhNmEwNGMzZjY3YmM4ZDI1ZWUyM2JmOThmMC4uZTk4
NDkwOWU3NmIyNTk0MGRhOWVlY2QwZDk2NTk5ZTBlOGY2ZjUwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBACiBKU0RpY3Rp
b25hcnk6OkdldFByb3BlcnR5UmVzdWx0IEpTRGljdGlvbmFyeTo6dHJ5R2V0UHJvcGVydHkoY29u
c3QgY2hhciogcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiBmaW5hbFJlc3VsdCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoaXNWYWxpZCgpKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIobV9leGVjLCBw
cm9wZXJ0eU5hbWUpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcobV9leGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KG1f
aW5pdGlhbGl6ZXJPYmplY3QuZ2V0KCkpOwogCiAgICAgaWYgKCFtX2luaXRpYWxpemVyT2JqZWN0
LmdldCgpLT5nZXRQcm9wZXJ0eVNsb3QobV9leGVjLCBpZGVudGlmaWVyLCBzbG90KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDk1OWIy
MzY2NzQzZDc5ZjYzYjBhYWMxYmFjODEyYmQxYmZkNTQ4Y2IuLjUyYTU3Mjg5NDQ3M2ExYWI1M2U5
NjllMjcyN2RmNzEyMTdhY2RjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSlNFdmVudExpc3Rl
bmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVFdmVudEZ1
bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgLy8gSWYganNGdW5jdGlvbiBpcyBub3QgYWN0dWFsbHkg
YSBmdW5jdGlvbiwgc2VlIGlmIGl0IGltcGxlbWVudHMgdGhlIEV2ZW50TGlzdGVuZXIgaW50ZXJm
YWNlIGFuZCB1c2UgdGhhdAogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAg
ICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlm
aWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9
IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJoYW5k
bGVFdmVudCIpKTsKICAgICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVFdmVudEZ1
bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDgxMjI1MDdi
NGZiYzY4ZTEyM2Y2NzJmYTMxMDg4YTUyY2E3MGU5NjUuLjNlYmE0MjFiYzczNDE3NzNhYzhmNmFh
NmIxMjFlYWNkMWU4MmE3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMo
ZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi5pdGVtKGluZGV4
KSkpOwogCiAgICAgICAgIC8vIFN1cHBvcnQgZm9yIGRvY3VtZW50LmltYWdlcygnPG5hbWU+Jykg
ZXRjLgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5hbWVkSXRlbXMoZXhlYywganND
b2xsZWN0aW9uLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZykpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShuYW1lZEl0ZW1zKGV4ZWMsIGpzQ29sbGVjdGlvbiwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCBzdHJpbmcpKSk7CiAgICAgfQogCiAgICAgLy8gVGhlIHNlY29uZCBh
cmcsIGlmIHNldCwgaXMgdGhlIGluZGV4IG9mIHRoZSBpdGVtIHdlIHdhbnQKQEAgLTEwNiwxMiAr
MTA2LDEyIEBAIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgdWludDMyX3QgaW5kZXggPSB0b1VJbnQzMkZyb21TdHJpbmdJbXBsKGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS5pbXBsKCkpOwogICAgIGlmIChp
bmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuaXRlbShpbmRleCkpOwotICAgIHJldHVybiBuYW1l
ZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgcmV0dXJuIG5hbWVkSXRlbXMoZXhlYywg
dGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKIH0KIAogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0
aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBu
YW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVk
SXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKICAgICByZXR1cm4gdmFsdWUu
aXNVbmRlZmluZWQoKSA/IGpzTnVsbCgpIDogdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCAzYWQ5YTQ3
MjkwMzRjZGQwNzc2OWY3Y2U2MGM3ZGVmMmIxYzkwOTUyLi42ZDM5YzQ1OWQ3ZDI1NTU0YTk3ZGU0
ZGI3MjRkMzE2NWMyOTMzZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhc2UsIEUKIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6OmFsbChFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiB7CiAgICAgLy8gSWYgImFsbCIgaGFzIGJlZW4gb3ZlcndyaXR0ZW4sIHJldHVy
biB0aGUgb3ZlcndyaXR0ZW4gdmFsdWUKLSAgICBKU1ZhbHVlIHYgPSBnZXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCAiYWxsIikpOworICAgIEpTVmFsdWUgdiA9IGdldERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbGwiKSk7CiAgICAg
aWYgKHYpCiAgICAgICAgIHJldHVybiB2OwogCkBAIC0xMjMsNyArMTIzLDcgQEAgSlNWYWx1ZSBK
U0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHZvaWQgSlNIVE1MRG9j
dW1lbnQ6OnNldEFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgLy8g
QWRkICJhbGwiIHRvIHRoZSBwcm9wZXJ0eSBtYXAuCi0gICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgImFsbCIpLCB2YWx1ZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFsbCIpLCB2YWx1ZSk7CiB9CiAKIHN0
YXRpYyBEb2N1bWVudCogZmluZENhbGxpbmdEb2N1bWVudChFeGVjU3RhdGUqIGV4ZWMpCkBAIC0x
NDYsNyArMTQ2LDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKSkgewogICAgICAg
ICAgICAgSlNET01XaW5kb3dTaGVsbCogd3JhcHBlciA9IHRvSlNET01XaW5kb3dTaGVsbChmcmFt
ZSwgY3VycmVudFdvcmxkKGV4ZWMpKTsKICAgICAgICAgICAgIGlmICh3cmFwcGVyKSB7Ci0gICAg
ICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHdyYXBwZXItPmdldChleGVjLCBJZGVudGlm
aWVyKGV4ZWMsICJvcGVuIikpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB3
cmFwcGVyLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAib3BlbiIpKTsK
ICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IDo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAg
ICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAppbmRleCAyODY3ZDYwZjJhMDI2MjdmMDdjZDAwYTM0MGU1OWM3ODEx
MjRkOTgzLi4yODQ4OTcxMmE3ZjZjY2M0OTkwN2E2YWZiMzE1ZGM1ZmQ3YzhjZGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplYwogCiBKU1ZhbHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5h
bWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRl
bXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhl
eGVjLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogICAgIHJldHVybiB2YWx1ZS5pc1VuZGVm
aW5lZCgpID8ganNOdWxsKCkgOiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCBlNmExNDBmNTQ1ODQ5Yjhh
YTY0OTQ3ZTBkNjY3Zjg4MzZmNGM5YWVhLi5hMjVkY2E5OTE4YzNhZTJlZTc2YTE4MDVhMjBkMGIx
MGJkYWYxOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRh
dGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRh
dGFiYXNlQ3VzdG9tLmNwcApAQCAtNjAsNyArNjAsNyBAQCBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6
OmNyZWF0ZU9iamVjdFN0b3JlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBJREJLZXlQYXRoIGtleVBh
dGg7CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2U7CiAgICAgaWYgKCFvcHRpb25zVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBKU1ZhbHVlIGtleVBhdGhWYWx1ZSA9
IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAia2V5UGF0aCIpKTsKKyAg
ICAgICAgSlNWYWx1ZSBrZXlQYXRoVmFsdWUgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleVBhdGgiKSk7CiAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC03
MCw3ICs3MCw3IEBAIEpTVmFsdWUgSlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0b0luY3JlbWVudCA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywg
SWRlbnRpZmllcihleGVjLCAiYXV0b0luY3JlbWVudCIpKS50b0Jvb2xlYW4oZXhlYyk7CisgICAg
ICAgIGF1dG9JbmNyZW1lbnQgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImF1dG9JbmNyZW1lbnQiKSkudG9Cb29sZWFuKGV4ZWMpOwogICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
Qk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
T2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDA0MDQ0ZDM1ZDM5NTljNWYxOGNmMmJkNWIzNTUz
YmE4MmQ4MzVlZWMuLjg1MDdlNDk0YTM3NmRiNzk5ZTU2ZmJlZThiZDFjYzZkOWQxNjc4MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwCkBAIC02NywxMSArNjcsMTEgQEAgSlNWYWx1ZSBKU0lEQk9iamVjdFN0b3JlOjpj
cmVhdGVJbmRleChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYm9vbCB1bmlxdWUgPSBmYWxzZTsKICAg
ICBib29sIG11bHRpRW50cnkgPSBmYWxzZTsKICAgICBpZiAoIW9wdGlvbnNWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHVuaXF1ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywg
SWRlbnRpZmllcihleGVjLCAidW5pcXVlIikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgdW5p
cXVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJ1bmlxdWUiKSkudG9Cb29sZWFuKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgICAgICBtdWx0
aUVudHJ5ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJtdWx0aUVu
dHJ5IikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgbXVsdGlFbnRyeSA9IG9wdGlvbnNWYWx1
ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibXVsdGlFbnRyeSIpKS50
b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAppbmRleCA1YWFlNWFlOTY3YWQ5M2Ey
N2Y4OGQzNmQ3MGU5NzhkZTljZWI0MDEwLi40YTFmYzYxYmY5ZWQ3MDA2ZDc5YmMzYTJlMmY1ZWM2
Y2E2MmIyNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdl
RGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURh
dGFDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEltYWdlRGF0YSogaW1hZ2VECiAg
ICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIAogICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dS
QVBQRVIoZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEsIGltYWdlRGF0YSk7Ci0gICAgSWRlbnRpZmll
ciBkYXRhTmFtZShleGVjLCAiZGF0YSIpOworICAgIElkZW50aWZpZXIgZGF0YU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJkYXRhIik7CiAgICAgd3JhcHBlci0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIGRhdGFOYW1lLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1hZ2VEYXRh
LT5kYXRhKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIGV4ZWMtPmhlYXAoKS0+cmVw
b3J0RXh0cmFNZW1vcnlDb3N0KGltYWdlRGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5k
SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZy
b250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggZDg2YTQ4MGIwYzM4MDZiZGU2N2U5ZGI0YTY2NzQy
ODI2NjlhZmY2Ni4uODU1MGViNDUzZjkzZmNhYWJiMzEzNjA0YWM1NDJmYzdiNzU0NjQzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhv
c3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9y
RnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIHN0YXRpYyB2b2lkIHBv
cHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCBD
b250ZXh0TWVuCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7
ICsraSkgewogICAgICAgICBKU09iamVjdCogaXRlbSA9IGFzT2JqZWN0KGFycmF5LT5nZXRJbmRl
eChleGVjLCBpKSk7Ci0gICAgICAgIEpTVmFsdWUgbGFiZWwgPSBpdGVtLT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAibGFiZWwiKSk7Ci0gICAgICAgIEpTVmFsdWUgdHlwZSA9IGl0ZW0tPmdl
dChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ0eXBlIikpOwotICAgICAgICBKU1ZhbHVlIGlkID0g
aXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImlkIikpOwotICAgICAgICBKU1ZhbHVl
IGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiZW5hYmxlZCIpKTsK
LSAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgImNoZWNrZWQiKSk7Ci0gICAgICAgIEpTVmFsdWUgc3ViSXRlbXMgPSBpdGVtLT5nZXQoZXhl
YywgSWRlbnRpZmllcihleGVjLCAic3ViSXRlbXMiKSk7CisgICAgICAgIEpTVmFsdWUgbGFiZWwg
PSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGFiZWwiKSk7
CisgICAgICAgIEpTVmFsdWUgdHlwZSA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJ0eXBlIikpOworICAgICAgICBKU1ZhbHVlIGlkID0gaXRlbS0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImlkIikpOworICAgICAgICBKU1ZhbHVl
IGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
ZW5hYmxlZCIpKTsKKyAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNoZWNrZWQiKSk7CisgICAgICAgIEpTVmFsdWUg
c3ViSXRlbXMgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
c3ViSXRlbXMiKSk7CiAgICAgICAgIGlmICghdHlwZS5pc1N0cmluZygpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6
eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZl
bnRMaXN0ZW5lci5jcHAKaW5kZXggNmRkZTUxMGM0MzI1NTI2Y2QyNzk3OWI4MjJiNzEyNDYxMjc1
M2JkNC4uYzMxYWRhZjc3MTYyYjgyYTg5ZDdiNDNkNzU3ZGVmYzI1OTc0MzE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAg
LTEwMyw3ICsxMDMsNyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6
ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAgIGFyZ3MuYXBwZW5k
KGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBtX2V2ZW50UGFyYW1ldGVyTmFtZSkpOwogICAgIGFy
Z3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIG1fY29kZSkpOwogCi0gICAgSlNPYmpl
Y3QqIGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVj
ayhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIElkZW50aWZpZXIoZXhl
YywgbV9mdW5jdGlvbk5hbWUpLCBtX3NvdXJjZVVSTCwgbV9wb3NpdGlvbik7IC8vIEZJWE1FOiBp
cyBnbG9iYWxFeGVjIG9rPworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gY29uc3RydWN0RnVu
Y3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBhcmdzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1fZnVuY3Rpb25OYW1l
KSwgbV9zb3VyY2VVUkwsIG1fcG9zaXRpb24pOyAvLyBGSVhNRTogaXMgZ2xvYmFsRXhlYyBvaz8K
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVwb3J0Q3VycmVudEV4
Y2VwdGlvbihleGVjKTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCmlu
ZGV4IDcxNzI2YmJmMWIxZWI2NzFlMWE2YjRlZDQ4MmM2MWUyYjU4YWJjYTMuLjdiNDExOWE1YTVk
MGI3Mjg5ZjNlMTM2OGQ5MTBkNzZhNzk4ZDhiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBzaG9ydCBKU05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIE5vZGUqIGZpbHRlck5vZGUpCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmaWx0ZXIsIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAgIGZpbHRlciA9IGZpbHRlci5nZXQo
ZXhlYywgSWRlbnRpZmllcihleGVjLCAiYWNjZXB0Tm9kZSIpKTsKKyAgICAgICAgZmlsdGVyID0g
ZmlsdGVyLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhY2NlcHROb2Rl
IikpOwogICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZpbHRlciwgY2FsbERhdGEpOwog
ICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CiAgICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTm9kZUZp
bHRlciBvYmplY3QgZG9lcyBub3QgaGF2ZSBhbiBhY2NlcHROb2RlIGZ1bmN0aW9uIikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93
TGlzdEN1c3RvbS5jcHAKaW5kZXggM2M5MmJlYjEzNGVkMDYzMzFiMzlmNjFmMzY5ZTRkODhkYzMz
M2RhMy4uOGM5ZWI4ZjljMTlmOTBhMDBhMzZkZjUzNWY5OTNiYWM3YTEzZWJlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwCkBAIC03NCw3ICs3NCw3IEBAIEpTVmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dM
aXN0OjppdGVtKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyKGV4ZWMsIG1faW1wbC0+Y29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbV9pbXBsLT5jb2x1bW5OYW1lcygpW2ld
KSwganNWYWx1ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICB9CiAKICAgICByZXR1cm4g
b2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5j
cHAKaW5kZXggOTQyYzRkZmI2ZTdlNjhmODlhMGNmNzlkNTQ1ZTMxOTE0NmJjMjczNy4uZDY0NjAz
ZTFiOGQyNWVkZjVkMWYyOWM1ZjcwMzcyMWI2YmNhMzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQg
SlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm47CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+bV9p
bXBsLT5rZXkoaSwgZWMpKSk7CisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgdGhpc09iamVjdC0+bV9pbXBsLT5rZXkoaSwgZWMpKSk7CiAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKaW5kZXggM2MzMzY1NTE1MmRi
ZjIyOTU0ZmE0OTdlNDE4MDhlM2ZlM2ZlMzUwMC4uNWFkOTc5Nzk4NzY3Y2IxMzNlMTY5ODZlZDNl
ZTVjOGVmNTJmZjBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBzZXRJbnRl
cm5hbFNsb3RUb09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2JqZWN0VmFsdWUsIFBy
aXZhdGVOYW1lJgogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RWYWx1ZS50b09iamVj
dChleGVjKTsKICAgICBQdXRQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KG9iamVjdFZhbHVlKTsK
LSAgICBvYmplY3QtPnB1dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20obmFtZSksIHZh
bHVlLCBwcm9wZXJ0eVNsb3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwgZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVVpZChuYW1lKSwgdmFsdWUsIHByb3BlcnR5U2xvdCk7CiB9CiAKIEpTVmFsdWUg
Z2V0SW50ZXJuYWxTbG90RnJvbU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2JqZWN0
VmFsdWUsIFByaXZhdGVOYW1lJiBuYW1lKQpAQCAtNTUsNyArNTUsNyBAQCBKU1ZhbHVlIGdldElu
dGVybmFsU2xvdEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9iamVjdFZhbHVl
LCBQcml2YXRlTgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RWYWx1ZS50b09iamVjdChl
eGVjKTsKICAgICBQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KG9iamVjdFZhbHVlKTsKIAotICAg
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKG5hbWUpOworICAg
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG5hbWUpOwog
ICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHByb3BlcnR5U2xvdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgcmV0
dXJuIHByb3BlcnR5U2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggY2I0
OTMxZGQ1NmE3NmViMzI0YmE2ZjNkZTk1MTY0NzM0ZTgwZTQ5Yi4uMDNkNDQ3NjU4OTc5NzhjMDA0
YWQ5MzFhYzE2NDBkMzE2ODBlM2ExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBib29s
IGhhbmRsZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiBib29sIFNjcmlw
dEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hh
ciogbmFtZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7Ci0gICAgc2NyaXB0U3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVudGlmaWVyKHNj
cmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CisgICAgc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CiAg
ICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKQEAgLTYxLDE0ICs2
MSwxNCBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcAogewogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHNjcmlwdFN0YXRlKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50
aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3Qs
IHZhbHVlKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCks
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0
YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihz
Y3JpcHRTdGF0ZSk7CiB9CiAKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QmIHZhbHVlKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKLSAg
ICBKU1ZhbHVlIGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5n
ZXQoc2NyaXB0U3RhdGUsIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpKTsKKyAgICBKU1Zh
bHVlIGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZXQoc2Ny
aXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpKTsKICAg
ICBpZiAoIWpzVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODIsNyArODIsNyBA
QCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgY2hhciogbmFtZSwgRGVwcgogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnJlbW92
ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIHNjcmlwdFN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHNjcmlwdFN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0
YXRlLCBuYW1lKSk7CisgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bWV0
aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgc2NyaXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5h
bWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggZGNhNTYwM2Y5YzM5OTYxODMzOGFmN2UwZGIzMWFkZjEwY2I2YjZmOS4uYjFjNTI4
MDdiOTAzZmFlNmNmMmQ1OGUxMGYwYmI0MDAwNzlkMzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC01MjEsNyAr
NTIxLDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgOiBD
bG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAgICAgICwgbV9ibG9i
VVJMcyhibG9iVVJMcykKLSAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVjLCBlbXB0eVN0
cmluZygpKQorICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgZW1wdHlTdHJpbmcoKSkpCiAgICAgewogICAgICAgICB3cml0ZShDdXJyZW50VmVy
c2lvbik7CiAgICAgICAgIGZpbGxUcmFuc2Zlck1hcChtZXNzYWdlUG9ydHMsIG1fdHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydHMpOwpAQCAtMTAxNCw3ICsxMDE0LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxp
emVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgaWYgKHN0ci5pc051bGwoKSkKICAgICAgICAgICAg
IHdyaXRlKG1fZW1wdHlJZGVudGlmaWVyKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgd3Jp
dGUoSWRlbnRpZmllcihtX2V4ZWMsIHN0cikpOworICAgICAgICAgICAgd3JpdGUoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhtX2V4ZWMsIHN0cikpOwogICAgIH0KIAogICAgIHZvaWQgd3JpdGUoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQog
ICAgICAgICAgICAgICAgICAgICBsZW5ndGhTdGFjay5yZW1vdmVMYXN0KCk7CiAKICAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVj
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAgICBhcnJheS0+bWV0
aG9kVGFibGUoKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKGFycmF5LCBtX2V4ZWMsIHBy
b3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlTdGFjay5sYXN0KCkuc2l6
ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25JbmRleFByb3BlcnRpZXNU
YWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CkBAIC0x
Mjk4LDcgKzEyOTgsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgIGlucHV0T2JqZWN0U3RhY2su
YXBwZW5kKGluT2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsK
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheSht
X2V4ZWMpKTsKLSAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgaW5PYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMoaW5PYmplY3QsIG1fZXhlYywgcHJvcGVydHlT
dGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgogICAg
ICAgICAgICAgRkFMTFRIUk9VR0g7CkBAIC0xMzgxLDcgKzEzODEsNyBAQCBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAg
ICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gaW5wdXRPYmplY3RTdGFjay5sYXN0KCk7
CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTU2V0Kj4ob2JqZWN0
KSB8fCBqc0R5bmFtaWNDYXN0PEpTTWFwKj4ob2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAg
ICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51
bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAg
ICAgICAgd3JpdGUoTm9uTWFwUHJvcGVydGllc1RhZyk7CiAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG9iamVjdFN0YXJ0
VmlzaXRNZW1iZXI7CkBAIC0yNDYwLDExICsyNDYwLDExIEBAIERlc2VyaWFsaXphdGlvblJlc3Vs
dCBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoKQogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoSlNWYWx1ZSB0ZXJtaW5hbCA9IHJlYWRUZXJtaW5hbCgpKSB7Ci0gICAgICAg
ICAgICAgICAgcHV0UHJvcGVydHkob3V0cHV0T2JqZWN0U3RhY2subGFzdCgpLCBJZGVudGlmaWVy
KG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSksIHRlcm1pbmFsKTsKKyAgICAgICAgICAg
ICAgICBwdXRQcm9wZXJ0eShvdXRwdXRPYmplY3RTdGFjay5sYXN0KCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0cmluZygpKSwgdGVybWluYWwpOwogICAg
ICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKE9iamVjdEVuZFZpc2l0TWVtYmVyKTsKLSAg
ICAgICAgICAgIHByb3BlcnR5TmFtZVN0YWNrLmFwcGVuZChJZGVudGlmaWVyKG1fZXhlYywgY2Fj
aGVkU3RyaW5nLT5zdHJpbmcoKSkpOworICAgICAgICAgICAgcHJvcGVydHlOYW1lU3RhY2suYXBw
ZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0cmluZygp
KSk7CiAgICAgICAgICAgICBnb3RvIHN0YXRlVW5rbm93bjsKICAgICAgICAgfQogICAgICAgICBj
YXNlIE9iamVjdEVuZFZpc2l0TWVtYmVyOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IGIzMWUzZWI2OTUzYmJiNDljMTZkYWFkOWIx
NjBjYTFjMDAwYTI2NmEuLmM4YzZhODkzY2U5MjM1YTc5NTk4MmUyNzEzZTgyM2UxMDU1YzUzNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1t
CkBAIC0zMzAsNyArMzMwLDcgQEAgLSAoaWQpY2FsbFdlYlNjcmlwdE1ldGhvZDooTlNTdHJpbmcg
KiluYW1lIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmdzCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKLSAgICBKU0M6
OkpTVmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgU3RyaW5nKG5hbWUpKSk7CisgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uID0gW3NlbGYgX2lt
cF0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhuYW1lKSkp
OwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVO
b25lKQpAQCAtMzg0LDcgKzM4NCw3IEBAIC0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvcktl
eTooTlNTdHJpbmcgKilrZXkKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBKU09i
amVjdCogb2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oW3NlbGYgX2ltcF0p
OwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7Ci0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSwg
Y29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVlLCBPYmpjT2JqZWN0VHlwZSwgW3Nl
bGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQo
b2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhrZXkpKSwg
Y29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVlLCBPYmpjT2JqZWN0VHlwZSwgW3Nl
bGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
IHsKICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDA3LDcgKzQwNyw3
IEBAIC0gKGlkKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQogICAgICAgICAvLyBsZWF2aW5n
IHRoZSBsb2NrIHBlcm1hbmVudGx5IGhlbGQKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7CiAgICAgICAgIAotICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gW3NlbGYgX2ltcF0t
PmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CisgICAgICAgIEpTQzo6
SlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMp
OwpAQCAtNDMzLDcgKzQzMyw3IEBAIC0gKHZvaWQpcmVtb3ZlV2ViU2NyaXB0S2V5OihOU1N0cmlu
ZyAqKWtleQogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKCktPmRlbGV0
ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkp
KSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KFtzZWxm
IF9pbXBdLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhrZXkpKSk7
CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgYWRkRXhjZXB0aW9u
VG9Db25zb2xlKGV4ZWMpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIC0gKEJPT0wpaGFzV2ViU2NyaXB0
S2V5OihOU1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwog
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgQk9PTCByZXN1bHQgPSBbc2VsZiBf
aW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJpbmcoa2V5KSkpOwor
ICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKIAogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmlu
ZGV4IDM4ZjUwNzZhNzhlMjMzOWJjYTdjMmExNmI1NGI2OTU3MDRjZjNiZmUuLjg2ODE3Mjg1OWYz
YzM4ZDNmYTI4OGY5ZmFjNjBlNjM2MmJlNzg4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC05ODAsMTYgKzk4MCwxNiBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgQ3VzdG9tIGdldFByb3BlcnR5TmFtZXMgZnVu
Y3Rpb24gZXhpc3RzIG9uIERPTVdpbmRvdwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9N
V2luZG93IikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lk
IGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRp
b25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7Ci0gICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0U3RydWN0dXJlUHJv
cGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6
RW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0
eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
QXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVy
YXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHVpbnQz
Ml90IGdldEVudW1lcmFibGVMZW5ndGgoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kik7
XG4iKTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXMifSA9IDE7CiAgICAgfQogCiAgICAgIyBDdXN0b20gZ2V0T3duUHJvcGVydHlOYW1lcyBm
dW5jdGlvbgogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
RW51bWVyYXRlUHJvcGVydHkifSB8fCAkaW5kZXhlZEdldHRlckZ1bmN0aW9uKSB7Ci0gICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5
JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVy
YXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwogICAgICAgICAkc3Ry
dWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsgICAgICAg
CiAgICAgfQogCkBAIC0yMDAzLDcgKzIwMDMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxl
RnVuY3Rpb25OYW1lKCRzaWduYXR1cmUpOwogICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJHNp
Z25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoISR7ZW5hYmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUoJnZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmVtb3ZlRGlyZWN0
KHZtLCBwcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5k
aWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI1OTcsMTEgKzI1OTcsMTEgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb25zdHJ1
Y3RvclR5cGUgbmUgImFueSIgYW5kICRjb25zdHJ1Y3RvclR5cGUgIX4gL05hbWVkJC8pIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkY29uc3RydWN0
b3JUeXBlIC4gIi5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29uZGl0aW9uYWwifSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgXCIk
bmFtZVwiKSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgXCIkbmFtZVwiKSwg
dmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifSkgewotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBv
YmplY3QuXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Y2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFt
ZVwiKSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdFxuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtc
biIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
JGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKQEAg
LTI3MTEsNyArMjcxMSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNv
dW50OyArK2kpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpO1xuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKaW5kZXggMWQ1OTE4OWI0NzIwNTEx
NzE3OWM2MzlhNjA1YjMwODZlZGRiZjZlZi4uZDI0YTJlYTcwNmFlMmQ5NDQyYjcwNzVmOTVlMjg4
MzM2NTYyMDYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9p
ZCBKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3AKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRpY19jYXN0
PEZsb2F0NjRBcnJheSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpOyArK2kpCiAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgICBC
YXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNGbG9hdDY0QXJyYXk6OmdldENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zs
b2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RmxvYXQ2NEFycmF5LmgKaW5kZXggZmYzODhjYTAxNzYwYzEyYjk1NzUwMzlmZWM3NjQzMjkzZmU4
NGUzNC4uMTNlMTU3N2UzNmNkNjFiZGQxYmMxODcwNmIzNjAyMDhhYzM4MmU4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2
NEFycmF5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSlNGbG9hdDY0QXJyYXkgOiBwdWJsaWMg
SlNBcnJheUJ1ZmZlclZpZXcgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFy
cmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBGbG9hdDY0
QXJyYXkqIGltcGwoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4
IDE3NjFkMzM5N2Q1MTZhY2NkNTNkNjVhNzVjNzg2YmIxN2QyMDY3NzEuLjEzZmJhODExMWMyMGE1
ODY0ZTM2YjA4ODQ0YzJkNDI3NTdmOGVjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApA
QCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQCiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwgY291bnQ7ICsr
aSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7
Ci0gICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RFdmVudFRh
cmdldDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuaAppbmRleCBiZjFjZTY3ZTJmZTNjZGNiOTdlMjAzODdmNWIw
ZTllNTA4OWYyNDdmLi40MDhjYjhmMmZmNzkzZTMxZDFjNmUzNDI5MTI1ZDNkMWZhNTQ1YjFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBKU1Rlc3RFdmVudFRhcmdldCA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVt
ZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBK
U0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90
VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDU3MGMwNjFkMDgyYTcyMDljY2IzMDdjMDVmN2Mz
YWQ2ODhlYmYwNTUuLjk2MDNhM2RkNjkwOGI1NGYyMGIyMjZiODk3ZDcwYTFmMjAxOTFkMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC0xODc4LDggKzE4NzgsOCBAQCB2b2lkIHNldEpTVGVzdE9ialRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAog
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYmFzZU9iamVjdCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwotICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3RlZFRoaXMtPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJUZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZyIpLCB2YWx1ZSk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSwgdmFsdWUpOwogfQog
CiAKQEAgLTI2NzEsOCArMjY3MSw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
NENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplCiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImNvbmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUp
OworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgY2FzdGVkVGhp
cy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNv
bmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUpOwogfQogCiAjZW5kaWYKQEAgLTI2ODYsOCArMjY4Niw4
IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplCiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXIoZXhlYywgImNvbmRpdGlvbmFsQXR0cjUiKSwgdmFsdWUpOworICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbmRpdGlvbmFsQXR0cjUiKSwgdmFs
dWUpOwogfQogCiAjZW5kaWYKQEAgLTI3MDEsOCArMjcwMSw4IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJh
c2VPYmplCiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2Jq
ZWN0KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2FzdGVk
VGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImNvbmRpdGlvbmFs
QXR0cjYiKSwgdmFsdWUpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
CisgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgImNvbmRpdGlvbmFsQXR0cjYiKSwgdmFsdWUpOwogfQogCiAjZW5kaWYKQEAg
LTI4MzksOCArMjgzOSw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jCiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1
dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBvYmplY3QuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXIoZXhlYywgInJlcGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVlKTsKKyAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBvYmplY3QKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKSwg
dmFsdWUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmluZGV4IDkw
MDEwMTM4YWI0NmNlN2Q5NzUzY2JmZjI5NWU1M2NkZmFjZDBiNWEuLjA5MDVkZTE5N2U1NTYxMjhk
NTIyNWE2NWQ0MTIzZTY4ZDk2MmY4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0
LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGJvb2wgX05QTl9FbnVtZXJhdGUoTlBQLCBOUE9iamVj
dCogbywgTlBJZGVudGlmaWVyKiogaWRlbnRpZmllciwgdWludDMyX3QqIGNvdW50CiAgICAgICAg
IEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0eU5hbWVzKGV4ZWMpOwogCi0gICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSgpLT5nZXRQ
cm9wZXJ0eU5hbWVzKG9iai0+aW1wLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPmdldFByb3Bl
cnR5TmFtZXMob2JqLT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwogICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgcmVhbGx5IGNhbGwgTlBOX01lbUFsbG9jIGJ1dCB0aGF0J3MgaW4gV2Vi
S2l0CiAgICAgICAgIE5QSWRlbnRpZmllciogaWRlbnRpZmllcnMgPSBzdGF0aWNfY2FzdDxOUElk
ZW50aWZpZXIqPihtYWxsb2Moc2l6ZW9mKE5QSWRlbnRpZmllcikgKiBzaXplKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAppbmRleCA3NzRmZGZjM2Y0ZWY5NTNlZmQ3YmQ2ZmQ5
Njc2ZjY0ODdlODk5MDc2Li5kZjkwOWRjZTVlYWQ5Mzg1OGUwMjMwOWNkODJkYzVhNzMyMzk1ZWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKQEAgLTE0NCw3ICsxNDQsNyBA
QCBTdHJpbmcgY29udmVydE5QU3RyaW5nVG9VVEYxNihjb25zdCBOUFN0cmluZyogc3RyaW5nKQog
CiBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgTlBVVEY4KiBuYW1lKQogewotICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIGNvbnZl
cnRVVEY4VG9VVEYxNldpdGhMYXRpbjFGYWxsYmFjayhuYW1lLCAtMSkpOworICAgIHJldHVybiBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGNvbnZlcnRVVEY4VG9VVEYxNldpdGhMYXRpbjFG
YWxsYmFjayhuYW1lLCAtMSkpOwogfQogCiB9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbQppbmRleCBjZDM0ZTVmMTIwMmQ3ZjNhZGJkYzE4MzA5ODdlZjg2YmFk
ZTZjYzEzLi41Nzg5MTU4OTM5YTJhZjdiOTJmYWI5MGFmODRhYWJlOTVhZWY3ZTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yNjgsNyArMjY4LDcg
QEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkKIEpTVmFsdWUgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpk
ZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlKQogewogICAgIGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCog
dGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihvYmplY3Qp
OwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5faW5zdGFuY2UtPmdldFZhbHVlT2ZVbmRlZmluZWRG
aWVsZChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHRoaXNPYmplY3QtPm1faXRlbSkpOworICAgIHJl
dHVybiB0aGlzT2JqZWN0LT5faW5zdGFuY2UtPmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChleGVj
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPm1faXRlbSkpOwogfQog
CiBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IDAyMjIxOTA1YzQw
ZTZlZGZlZDU3OTk5ZWIyMzVmNTg5MWE3YTJlMDguLmM3MTNmZmE0ZTIzMjkzYzY2Y2M2NWNiMjk5
M2RhM2E5MmVlZGE4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAK
QEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElk
ZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwogCi0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoKTsKIAogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJp
bmRpbmdzLmNwcAppbmRleCA5NTczMGM0M2Q3NDA5ODU3YjFiZmQyOTI5NTFjNTVkYjBkY2M1ZGY1
Li5iYWYyNDdkMmRiNmNlN2U3ZWUxMTNhMjEwYjg3Y2MzM2E3MjZhMDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgCiAgICAgICAgIE15T2JqZWN0ICpteU9iamVj
dCA9IChNeU9iamVjdCAqKU5QTl9DcmVhdGVPYmplY3QgKG15RnVuY3Rpb25QdHJzKTsKICAgICAg
ICAgCi0gICAgICAgIGdsb2JhbC5wdXQoZXhlYywgSWRlbnRpZmllcigibXlJbnRlcmZhY2UiKSwg
SW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5zdGFuY2U6OkNMYW5ndWFnZSwgKHZvaWQg
KilteU9iamVjdCkpOworICAgICAgICBnbG9iYWwucHV0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0
KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopbXlPYmplY3QpKTsKICAgICAgICAgCiAgICAg
ICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBj
aGFyICpjb2RlID0gcmVhZEphdmFTY3JpcHRGcm9tRmlsZShhcmd2W2ldKTsKQEAgLTM5NCw3ICsz
OTQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICAgICAgICAg
ICAgIGNoYXIqIG1zZyA9IGV4VmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS5hc2NpaSgp
OwogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChleFZhbC50eXBlKCkgPT0gT2JqZWN0VHlwZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhWYWwpLmdldChleGVj
LElkZW50aWZpZXIoImxpbmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBsaW5l
VmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImxpbmUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlu
ZVZhbC50eXBlKCkgPT0gTnVtYmVyVHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
aW5lbm8gPSBpbnQobGluZVZhbC50b051bWJlcihleGVjKSk7CiAgICAgICAgICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0gYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCmluZGV4IGJmYWNmMjEwNzRhMWVl
ODU3MjIzNmU1YWFhYzEyYzVkOWU0YzI3NzAuLjM1MzJiMGE2ODlhYmNkNmQyZDdlMTM1YjE3YjBh
YzY4NTU0ZTM2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGlu
Z3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQpAQCAtMjQ4
LDcgKzI0OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgCiAg
ICAgICAgIE15Rmlyc3RJbnRlcmZhY2UgKm15SW50ZXJmYWNlID0gW1tNeUZpcnN0SW50ZXJmYWNl
IGFsbG9jXSBpbml0XTsKICAgICAgICAgCi0gICAgICAgIGdsb2JhbC5wdXQoZXhlYywgSWRlbnRp
ZmllcigibXlJbnRlcmZhY2UiKSwgSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5zdGFu
Y2U6Ok9iamVjdGl2ZUNMYW5ndWFnZSwgKHZvaWQgKilteUludGVyZmFjZSkpOworICAgICAgICBn
bG9iYWwucHV0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm15SW50ZXJmYWNl
IiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmplY3RpdmVDTGFu
Z3VhZ2UsICh2b2lkICopbXlJbnRlcmZhY2UpKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50
IGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyICpjb2RlID0g
cmVhZEphdmFTY3JpcHRGcm9tRmlsZShhcmd2W2ldKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm1z
ZyA9IGV4VmFsLnRvU3RyaW5nKGV4ZWMpLmFzY2lpKCk7CiAgICAgICAgICAgICAgICAgICAgIGlu
dCBsaW5lbm8gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4VmFsLnR5cGUoKSA9PSBP
YmplY3RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBsaW5lVmFsID0gT2Jq
ZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsSWRlbnRpZmllcigibGluZSIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwgPSBPYmplY3Q6OmR5bmFtaWNDYXN0
KGV4VmFsKS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGluZSIpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lVmFsLnR5cGUoKSA9PSBOdW1iZXJUeXBl
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubyA9IGludChsaW5lVmFsLnRvTnVt
YmVyKGV4ZWMpKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApp
bmRleCA1ZTNjMzRiYjU1YmVjY2MxMjgyNDU4NDEwZTM5ZWNhNWI1Y2MyOWM4Li4zY2VjYTlmMWM2
MWM2MTM4MjY3ZDJhOWMyMjJjODZmYTQwOGMxMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApA
QCAtNDgsMTMgKzQ4LDEzIEBACiAKIHN0YXRpYyBib29sIGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYg
ZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIFRyaWdnZXImIHRyaWdnZXIpCiB7Ci0gICAgSlNW
YWx1ZSB0cmlnZ2VyT2JqZWN0ID0gcnVsZU9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4
ZWMsICJ0cmlnZ2VyIikpOworICAgIEpTVmFsdWUgdHJpZ2dlck9iamVjdCA9IHJ1bGVPYmplY3Qu
Z2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAidHJpZ2dlciIpKTsKICAg
ICBpZiAoIXRyaWdnZXJPYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8fCAhdHJpZ2dlck9i
amVjdC5pc09iamVjdCgpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxpZCB0cmlnZ2Vy
IG9iamVjdC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEpTVmFsdWUg
dXJsRmlsdGVyT2JqZWN0ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4
ZWMsICJ1cmwtZmlsdGVyIikpOworICAgIEpTVmFsdWUgdXJsRmlsdGVyT2JqZWN0ID0gdHJpZ2dl
ck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ1cmwtZmls
dGVyIikpOwogICAgIGlmICghdXJsRmlsdGVyT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0aW9uKCkg
fHwgIXVybEZpbHRlck9iamVjdC5pc1N0cmluZygpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygi
SW52YWxpZCB1cmwtZmlsdGVyIG9iamVjdC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NjcsNyArNjcsNyBAQCBzdGF0aWMgYm9vbCBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpT
T2JqZWN0JiBydWxlT2JqZWN0LCBUcmlnZ2VyJiB0cmlnZ2VyKQogICAgIH0KICAgICB0cmlnZ2Vy
LnVybEZpbHRlciA9IHVybEZpbHRlcjsKIAotICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2FzZU9iamVj
dCA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidXJsLWZpbHRl
ci1pcy1jYXNlLXNlbnNpdGl2ZSIpKTsKKyAgICBKU1ZhbHVlIHVybEZpbHRlckNhc2VPYmplY3Qg
PSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywg
InVybC1maWx0ZXItaXMtY2FzZS1zZW5zaXRpdmUiKSk7CiAgICAgaWYgKHVybEZpbHRlckNhc2VP
YmplY3QgJiYgIWV4ZWMuaGFkRXhjZXB0aW9uKCkgJiYgdXJsRmlsdGVyQ2FzZU9iamVjdC5pc0Jv
b2xlYW4oKSkKICAgICAgICAgdHJpZ2dlci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUgPSB1cmxG
aWx0ZXJDYXNlT2JqZWN0LnRvQm9vbGVhbigmZXhlYyk7CiAKQEAgLTc2LDEzICs3NiwxMyBAQCBz
dGF0aWMgYm9vbCBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2Jq
ZWN0LCBUcmlnZ2VyJiB0cmlnZ2VyKQogCiBzdGF0aWMgYm9vbCBsb2FkQWN0aW9uKEV4ZWNTdGF0
ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIEFjdGlvbiYgYWN0aW9uKQogewotICAgIEpT
VmFsdWUgYWN0aW9uT2JqZWN0ID0gcnVsZU9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4
ZWMsICJhY3Rpb24iKSk7CisgICAgSlNWYWx1ZSBhY3Rpb25PYmplY3QgPSBydWxlT2JqZWN0Lmdl
dCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgImFjdGlvbiIpKTsKICAgICBp
ZiAoIWFjdGlvbk9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFhY3Rpb25PYmplY3Qu
aXNPYmplY3QoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkludmFsaWQgYWN0aW9uIG9iamVj
dC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEpTVmFsdWUgdHlwZU9i
amVjdCA9IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ0eXBlIikp
OworICAgIEpTVmFsdWUgdHlwZU9iamVjdCA9IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ0eXBlIikpOwogICAgIGlmICghdHlwZU9iamVjdCB8
fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICF0eXBlT2JqZWN0LmlzU3RyaW5nKCkpIHsKICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIHVybC1maWx0ZXIgb2JqZWN0LiIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBib29sIGxvYWRBY3Rpb24oRXhl
Y1N0YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgQWN0aW9uJiBhY3Rpb24pCiAgICAg
ZWxzZSBpZiAoYWN0aW9uVHlwZSA9PSAiYmxvY2stY29va2llcyIpCiAgICAgICAgIGFjdGlvbiA9
IEFjdGlvblR5cGU6OkJsb2NrQ29va2llczsKICAgICBlbHNlIGlmIChhY3Rpb25UeXBlID09ICJj
c3MtZGlzcGxheS1ub25lIikgewotICAgICAgICBKU1ZhbHVlIHNlbGVjdG9yID0gYWN0aW9uT2Jq
ZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigmZXhlYywgInNlbGVjdG9yIikpOworICAgICAgICBK
U1ZhbHVlIHNlbGVjdG9yID0gYWN0aW9uT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmZXhlYywgInNlbGVjdG9yIikpOwogICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IGV4
ZWMuaGFkRXhjZXB0aW9uKCkgfHwgIXNlbGVjdG9yLmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiY3NzLWRpc3BsYXktbm9uZSBhY3Rpb24gdHlwZSByZXF1aXJlcyBhIHNl
bGVjdG9yIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA3MThjNjRkZjc5MThkMGVlZWY5NWU1MzRmYzk2MThk
Mjc4Y2U1MDVlLi41OTkzYjk0Mjk5ZGI5MDI3Y2RmOTdkN2Q0YjA5MzEzODliZjA1ZjM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM3MDYsNyArMzcwNiw3
IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udHJvbGxlckpTVmFsdWUoSlNDOjpFeGVjU3RhdGUm
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0JiBnCiAgICAgaWYgKCFtZWRpYUpTV3JhcHBlck9iamVj
dCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAgICAgCi0gICAgSlNDOjpJZGVudGlm
aWVyIGNvbnRyb2xzSG9zdCgmZXhlYy52bSgpLCAiY29udHJvbHNIb3N0Iik7CisgICAgSlNDOjpJ
ZGVudGlmaWVyIGNvbnRyb2xzSG9zdCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhl
Yy52bSgpLCAiY29udHJvbHNIb3N0Iik7CiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xzSG9zdEpT
V3JhcHBlciA9IG1lZGlhSlNXcmFwcGVyT2JqZWN0LT5nZXQoJmV4ZWMsIGNvbnRyb2xzSG9zdCk7
CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVs
bCgpOwpAQCAtMzcxNSw3ICszNzE1LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVy
SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3QmIGcKICAgICBp
ZiAoIWNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNO
dWxsKCk7CiAKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbGxlcklEKCZleGVjLnZtKCksICJj
b250cm9sbGVyIik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXJJRCA9IEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy52bSgpLCAiY29udHJvbGxlciIpOwogICAgIEpTQzo6
SlNWYWx1ZSBjb250cm9sbGVySlNXcmFwcGVyID0gY29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0
LT5nZXQoJmV4ZWMsIGNvbnRyb2xsZXJJRCk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwpAQCAtMzc1Nyw3ICszNzU3LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKICAgICAvLyAgICAg
Tm9uZQogICAgIC8vIFJldHVybiB2YWx1ZToKICAgICAvLyAgICAgTm9uZQotICAgIEpTQzo6SlNW
YWx1ZSBtZXRob2RWYWx1ZSA9IGNvbnRyb2xsZXJPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50
aWZpZXIoZXhlYywgInVwZGF0ZUNhcHRpb25Db250YWluZXIiKSk7CisgICAgSlNDOjpKU1ZhbHVl
IG1ldGhvZFZhbHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAidXBkYXRlQ2FwdGlvbkNvbnRhaW5lciIpKTsKICAgICBKU0M6
OkpTT2JqZWN0KiBtZXRob2RPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU09iamVj
dCo+KG1ldGhvZFZhbHVlKTsKICAgICBpZiAoIW1ldGhvZE9iamVjdCkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTg5Myw3ICs1ODkzLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRp
YUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKIAotICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQo
ZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKKyAgICBKU0M6
OkpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CiAgICAgaWYgKGZ1
bmN0aW9uVmFsdWUuaXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNTkx
Niw3ICs1OTE2LDcgQEAgc3RhdGljIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yUHJvcGVydHkoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBjb250cm8KIHsKICAgICBKU0M6OlB1dFBy
b3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3QoY29udHJvbGxlclZhbHVlKTsKICAgICBKU0M6OkpTT2Jq
ZWN0KiBjb250cm9sbGVyT2JqZWN0ID0gY29udHJvbGxlclZhbHVlLnRvT2JqZWN0KGV4ZWMpOwot
ICAgIGNvbnRyb2xsZXJPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChjb250cm9sbGVyT2JqZWN0
LCBleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgInBhZ2VTY2FsZUZhY3RvciIpLCBKU0M6Ompz
TnVtYmVyKHBhZ2VTY2FsZUZhY3RvciksIHByb3BlcnR5U2xvdCk7CisgICAgY29udHJvbGxlck9i
amVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGNvbnRyb2xsZXJPYmplY3QsIGV4ZWMsIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAicGFnZVNjYWxlRmFjdG9yIiksIEpTQzo6anNOdW1i
ZXIocGFnZVNjYWxlRmFjdG9yKSwgcHJvcGVydHlTbG90KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCkBAIC01
OTQ1LDcgKzU5NDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNo
YWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKICAgICAvLyBSZXR1cm4gdmFsdWU6CiAgICAgLy8g
ICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBjcmVhdGVkIG1lZGlhIGNvbnRyb2xsZXIgaW5zdGFuY2Uu
CiAKLSAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4
ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CisgICAgSlNDOjpK
U1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0ZUNvbnRyb2xzIikpOwogICAgIGlmIChmdW5j
dGlvblZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTk3
Myw3ICs1OTczLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFk
b3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKICAgICAvLyBDb25uZWN0IHRoZSBNZWRpYSwgTWVk
aWFDb250cm9sbGVySG9zdCwgYW5kIENvbnRyb2xsZXIgc28gdGhlIEdDIGtub3dzIGFib3V0IHRo
ZWlyIHJlbGF0aW9uc2hpcAogICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhSlNXcmFwcGVyT2JqZWN0
ID0gbWVkaWFKU1dyYXBwZXIudG9PYmplY3QoZXhlYyk7Ci0gICAgSlNDOjpJZGVudGlmaWVyIGNv
bnRyb2xzSG9zdCgmZXhlYy0+dm0oKSwgImNvbnRyb2xzSG9zdCIpOworICAgIEpTQzo6SWRlbnRp
ZmllciBjb250cm9sc0hvc3QgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZt
KCksICJjb250cm9sc0hvc3QiKTsKICAgICAKICAgICBBU1NFUlQoIW1lZGlhSlNXcmFwcGVyT2Jq
ZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBjb250cm9sc0hvc3QpKTsKIApAQCAtNTk4Myw3ICs1OTgz
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNo
YWRvd1Jvb3QqIHJvb3QpCiAgICAgaWYgKCFtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVj
dCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sbGVy
KCZleGVjLT52bSgpLCAiY29udHJvbGxlciIpOworICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9s
bGVyID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLT52bSgpLCAiY29udHJvbGxl
ciIpOwogCiAgICAgQVNTRVJUKCFjb250cm9sbGVyT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBj
b250cm9sbGVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IDA5YmMxNjU2ZTg2Y2ViNDQ0NTYwMWQwOWJiNDcwYTcyY2ViYzBjOWMu
LmYwMGVlNmM1MjQwOTk1ZDM0YjZjOWI1ZmViOTljZGZlOWYzNzEzY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMzk1LDcgKzM5NSw3
IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9v
dChTaGFkb3dSb290KiByb290KQogICAgIGFyZ0xpc3QuYXBwZW5kKEpTQzo6anNCb29sZWFuKCFt
X3NuYXBzaG90SW1hZ2UpKTsKIAogICAgIC8vIEl0IGlzIGV4cGVjdGVkIHRoZSBKUyBmaWxlIHBy
b3ZpZGVzIGEgY3JlYXRlT3ZlcmxheShzaGFkb3dSb290LCB0aXRsZSwgc3VidGl0bGUpIGZ1bmN0
aW9uLgotICAgIEpTQzo6SlNPYmplY3QqIG92ZXJsYXkgPSBnbG9iYWxPYmplY3QtPmdldChleGVj
LCBKU0M6OklkZW50aWZpZXIoZXhlYywgImNyZWF0ZU92ZXJsYXkiKSkudG9PYmplY3QoZXhlYyk7
CisgICAgSlNDOjpKU09iamVjdCogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlT3ZlcmxheSIpKS50b09iamVj
dChleGVjKTsKICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwogICAgIEpTQzo6Q2FsbFR5cGUg
Y2FsbFR5cGUgPSBvdmVybGF5LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvdmVybGF5LCBj
YWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGVOb25lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IDAy
ZTNmNDllZjdjODFmZjhhNzA0MzE4NGI2NDBjMDU4ZTZmNmQ2OTcuLmI1MmQxZTYyYTU2NmI5OTZk
Y2Q5MmFjOTRkNGEzMGYyNDZiYmM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBpbmplY3RJ
bnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29u
dGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChp
czxEb2N1bWVudD4oKnNjcmlwdENvbnRleHQpKQotICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIEludGVybmFsczo6aW50ZXJuYWxzSWQp
LCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW50ZXJuYWxzOjpjcmVhdGUoZG93bmNhc3Q8RG9j
dW1lbnQ+KHNjcmlwdENvbnRleHQpKSkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIEludGVybmFsczo6aW50
ZXJuYWxzSWQpLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW50ZXJuYWxzOjpjcmVhdGUoZG93
bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdENvbnRleHQpKSkpOwogfQogCiB2b2lkIHJlc2V0SW50ZXJu
YWxzT2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRl
eCA5Y2Q2NTVjOWY3MTA1MzVhOWRmMmFmNDU3ZDcwNDQ2YTZkOWI2ZTY3Li4zNDQxZTRmYjEzNzhk
OTM4NzU2NDU2ZWI5NTlkNWRmZDExZjhiYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAt
NjI3LDcgKzYyNyw3IEBAIHN0YXRpYyBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tSWRlbnRpZmll
clJlcChJZGVudGlmaWVyUmVwKiBpZGVudGlmaWVyKQogICAgIEFTU0VSVChpZGVudGlmaWVyLT5p
c1N0cmluZygpKTsKICAgCiAgICAgY29uc3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5n
KCk7ICAgIAotICAgIHJldHVybiBJZGVudGlmaWVyKCZKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSwg
U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHIsIHN0cmxlbihzdHIpKSk7Cisg
ICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJkpTRE9NV2luZG93Ojpjb21tb25WTSgp
LCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKTsK
IH0KIAoga2Vybl9yZXR1cm5fdCBXS1BDSW52b2tlKG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVp
bnQzMl90IHBsdWdpbklELCB1aW50MzJfdCByZXF1ZXN0SUQsIHVpbnQzMl90IG9iamVjdElELCB1
aW50NjRfdCBzZXJ2ZXJJZGVudGlmaWVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmlu
ZGV4IGNhZGU5ZTFlOWZkZjdiNmY2NDEwODVkYjQ3MDNhYjg0MzM4NTNhNmQuLjNiOThmZDRlODcz
ZDAwZjE3OGZhOTQ4OTU5ZmE0ODFlYjgxMWZkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0KQEAgLTEyMzEsNyArMTIzMSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5OjplbnVtZXJhdGUodWludDMyX3Qgb2JqZWN0SUQsIGRhdGFfdCYgcmVzdWx0RGF0CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVy
dHlOYW1lcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5Kj4gYXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggMGRmMGRlYzBjMjQ3OGYw
ZmIxZmU4OGM2NDg5MzBiMmFhODJmMGYwMi4uNzUxYjE2YWRjYjAzZWE5ZTNjOTYxMzkwY2FjNGVh
ODQzYmEwZGQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
UHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Q
cm94eUluc3RhbmNlLm1tCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQcm94eUluc3RhbmNlOjpn
ZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIG5hbWVB
cnIKIAogICAgICAgICBpZiAoaWRlbnRpZmllci0+aXNTdHJpbmcoKSkgewogICAgICAgICAgICAg
Y29uc3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5nKCk7Ci0gICAgICAgICAgICBuYW1l
QXJyYXkuYWRkKElkZW50aWZpZXIoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBTdHJpbmc6OmZy
b21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKSk7CisgICAgICAgICAg
ICBuYW1lQXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoJkpTRE9NV2luZG93Ojpjb21t
b25WTSgpLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0
cikpKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZpZXItPm51bWJlcigpKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwCmluZGV4IDFjZWQyOTNlYjhjY2M3N2QzNzA5YjliZDM5ODA4Y2MzOTgxMjczNzcuLmZk
YmU4MWE4ZTBiZTk3Njk0OTlhYzliMmQzZTBmYTMxZGJiNTU4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgICAgICAg
ICAgY29uc3QgY2hhciogc3RyaW5nID0gaWRlbnRpZmllclJlcC0+c3RyaW5nKCk7CiAgICAgICAg
ICAgICBpbnQgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0
aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5ndGgpLmltcGwoKSk7CisgICAgICAgICAgICBpZGVudGlm
aWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmllclJlcC0+bnVt
YmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXggMGQxNjY3NGU1YzE1ZjQ3MTcxODU0M2Qy
NWNhNGYzMTA5YzA1MmQyMi4uYTY1Yzg5MzNmY2UwY2I4MGJkMDk2Yzc2NDc2OGMwMmMxMDhmYzA3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgSWRlbnRpZmll
ciBpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVy
UmVwKiBpZAogICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IGlkZW50aWZpZXJSZXAtPnN0cmluZygp
OwogICAgIGludCBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKIAotICAgIHJldHVybiBJZGVudGlm
aWVyKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5n
dGgpLmltcGwoKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3Ry
aW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkpOwogfQogCiBi
b29sIE5QSlNPYmplY3Q6Omhhc01ldGhvZChOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKQEAgLTI0
MCw3ICsyNDAsNyBAQCBib29sIE5QSlNPYmplY3Q6OmVudW1lcmF0ZShOUElkZW50aWZpZXIqKiBp
ZGVudGlmaWVycywgdWludDMyX3QqIGlkZW50aWZpZXJDb3VudAogICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsK
LSAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG1fanNPYmpl
Y3QuZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OworICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09i
amVjdC5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgIE5QSWRlbnRpZmllciogbmFtZUlkZW50aWZpZXJz
ID0gbnBuTWVtTmV3QXJyYXk8TlBJZGVudGlmaWVyPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNjg2Mjk5ODI0MWQyNzc1MzYxM2IyZjk4ZWExY2Q5MzQxZjlmMzEyLi40MTU3NjU2
YzA2NWZiYzc3MDFlNDc1ZWZjNTVhMTRlMDUzOGQwOTY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTUtMDMtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL09iamVjdC1nZXRP
d25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMv
T2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanM6CisKIDIwMTUtMDMtMDkgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEVGTCBn
YXJkZW5pbmcgb24gOXRoIE1hci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL09iamVjdC1n
ZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL09iamVjdC1n
ZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAppbmRleCBmZmM2OTMwMDUwYjZiZGE2MmM1
M2I1MDYxMjI3NWQ0ODk4MzFhZDg1Li42OGI3NWU1YTI3NmUzYTkwZTkyOTdiNWRlODRiMTUyZjM2
NGFkZTFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlO
YW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3Bl
cnR5TmFtZXMtZXhwZWN0ZWQudHh0CkBAIC00MCw3ICs0MCw3IEBAIFBBU1MgZ2V0U29ydGVkT3du
UHJvcGVydHlOYW1lcyhkZWNvZGVVUkkpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQogUEFTUyBnZXRT
b3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKGRlY29kZVVSSUNvbXBvbmVudCkgaXMgWydsZW5ndGgnLCAn
bmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZW5jb2RlVVJJKSBpcyBbJ2xl
bmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhlbmNvZGVVUklD
b21wb25lbnQpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0
eU5hbWVzKE9iamVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQ
cm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blBy
b3BlcnR5TmFtZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVu
JywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lv
bnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVz
KE9iamVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0
eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5
TmFtZXMnLCAnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lzRXh0
ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1l
JywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10KIFBBU1MgZ2V0U29y
dGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBlKSBpcyBbJ19fZGVmaW5lR2V0dGVy
X18nLCAnX19kZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdldHRlcl9fJywgJ19fbG9va3VwU2V0
dGVyX18nLCAnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ2hhc093blByb3BlcnR5JywgJ2lz
UHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAndG9Mb2NhbGVTdHJpbmcnLCAn
dG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRnVu
Y3Rpb24pIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10KIFBBU1MgZ2V0U29ydGVk
T3duUHJvcGVydHlOYW1lcyhGdW5jdGlvbi5wcm90b3R5cGUpIGlzIFsnYXBwbHknLCAnYmluZCcs
ICdjYWxsJywgJ2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICduYW1lJywgJ3RvU3RyaW5nJ10KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVy
dHlOYW1lcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJv
cGVydHlOYW1lcy5qcwppbmRleCBiNDI0YjA1ZTRkODNjMmE5YTZiYWUyYTlkMzRiMzQzZWU2MDk4
MTE0Li5mYmQ2NWRkM2FjOTdjZDhhN2QwZWRhYzQzOWZlZDdkNzgzZTAxMGQ1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMu
anMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0
eU5hbWVzLmpzCkBAIC00OCw3ICs0OCw3IEBACiAgICAgImVuY29kZVVSSSI6ICJbJ2xlbmd0aCcs
ICduYW1lJ10iLAogICAgICJlbmNvZGVVUklDb21wb25lbnQiOiAiWydsZW5ndGgnLCAnbmFtZSdd
IiwKIC8vIEJ1aWx0LWluIEVDTUEgb2JqZWN0cwotICAgICJPYmplY3QiOiAiWydjcmVhdGUnLCAn
ZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0UHJvdG90eXBlT2Yn
LCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3Ro
JywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXSIsCisg
ICAgIk9iamVjdCI6ICJbJ2NyZWF0ZScsICdkZWZpbmVQcm9wZXJ0aWVzJywgJ2RlZmluZVByb3Bl
cnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCAnZ2V0T3duUHJvcGVy
dHlOYW1lcycsICdnZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNF
eHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25h
bWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXSIsCiAgICAgIk9i
amVjdC5wcm90b3R5cGUiOiAiWydfX2RlZmluZUdldHRlcl9fJywgJ19fZGVmaW5lU2V0dGVyX18n
LCAnX19sb29rdXBHZXR0ZXJfXycsICdfX2xvb2t1cFNldHRlcl9fJywgJ19fcHJvdG9fXycsICdj
b25zdHJ1Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3BlcnR5
SXNFbnVtZXJhYmxlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXSIs
CiAgICAgIkZ1bmN0aW9uIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAogICAg
ICJGdW5jdGlvbi5wcm90b3R5cGUiOiAiWydhcHBseScsICdiaW5kJywgJ2NhbGwnLCAnY29uc3Ry
dWN0b3InLCAnbGVuZ3RoJywgJ25hbWUnLCAndG9TdHJpbmcnXSIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248642</attachid>
            <date>2015-03-14 00:27:12 -0700</date>
            <delta_ts>2015-03-14 06:51:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150314162644.patch</filename>
            <type>text/plain</type>
            <size>278429</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YzM1ZjNjYjhjZGRhZTQ4MmFmYzNhMTNkMzE3MmQ2YTI4N2MxZmE0Li44NDdkOGJjMjMzNGMxNzk3
YTI4OTdlYmQzNmY5ZjkxNTlmNGI1YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NTAgQEAKKzIwMTUtMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGlucy9gLCB0aGV5IHNob3VsZCBub3QgYmUgZXhwb3NlZC4KKyAgICAgICAgVG8g
ZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIHRoZSB1c3VhbCBzeW1ib2xzLCBjaGVja2luZyB0aGUgdGFy
Z2V0IGBTdHJpbmdJbXBsKmAgaXMgYSBub3QgcHJpdmF0ZSBuYW1lCisgICAgICAgIGJlZm9yZSBh
ZGRpbmcgaXQgaW50byBQcm9wZXJ0eU5hbWVBcnJheS4KKworICAgICAgICBUbyBjaGVjayB0aGUg
dGFyZ2V0IGBTdHJpbmdJbXBsKmAgaXMgYSBwcml2YXRlIG5hbWUsIHdlIGxldmVyYWdlIHByaXZh
dGVUb1B1YmxpYyBtYXAgaW4gYEJ1aWx0aW5OYW1lc2AKKyAgICAgICAgc2luY2UgYWxsIHByaXZh
dGUgc3ltYm9scyBhcmUgaGVsZCBpbiB0aGlzIG1hcC4KKworICAgICAgICBUbyBjbGVhbiB1cCBg
U3RyaW5nSW1wbGAsIHdlIGludHJvZHVjZSBgU3RyaW5nS2luZGAgaW50byBgU3RyaW5nSW1wbGAu
IFRoZXJlJ3MgMyBraW5kcworICAgICAgICAxLiBTdHJpbmdOb3JtYWwgKG5vbi1hdG9taWMsIG5v
bi1zeW1ib2wpCisgICAgICAgIDIuIFN0cmluZ0F0b21pYyAoYXRvbWljLCBub24tc3ltYm9sKQor
ICAgICAgICAzLiBTdHJpbmdTeW1ib2wgKG5vbi1hdG9taWMsIHN5bWJvbCkKKyAgICAgICAgVGhl
eSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBBbmQgKGF0b21pYywgc3ltYm9sKSBjYXNlIHNob3Vs
ZCBub3QgZXhpc3QuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEuIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzCisgICAgICAgIDIuIEluY2x1ZGUvRXhjbHVkZSBTeW1ib2xzCisgICAgICAgIDMuIElu
Y2x1ZGUvRXhjbHVkZSBKU09iamVjdCBwcm9wZXJ0eSBuYW1lcworICAgICAgICBJbiB0aGUgYSBs
b3Qgb2YgY29kZSwgd2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBh
IGxvdCBvZiBjYWxsZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1l
QXJyYXlgIGRvZXNuJ3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25z
ZXJ2YXRpdmUgYXNzdW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAg
IEluIHRoZSBhIGxvdCBvZiBwbGFjZXMsIGBJZGVudGlmaWVyKFZNKi9FeGVjU3RhdGUqLCBTdHJp
bmdJbXBsKilgIGNvbnN0cnVjdG9yIGlzIHVzZWQuCisgICAgICAgIEhvd2V2ZXIsIGl0J3MgYW1i
aWd1b3VzIGJlY2F1c2UgYFN0cmluZ0ltcGwqYCBoYXMgMiBkaWZmZXJlbnQgbWVhbmluZ3MuCisg
ICAgICAgIDEpIG5vcm1hbCBzdHJpbmcsIGl0IGlzIHJlcGxhY2FibGUgd2l0aCBgV1RGU3RyaW5n
YCBhbmQKKyAgICAgICAgMikgYHVpZGAsIHdoaWNoIGhvbGRzIGBpc1N5bWJvbGAgaW5mb3JtYXRp
b24gdG8gcmVwcmVzZW50IFN5bWJvbHMuCisgICAgICAgIFNvIHdlIGRyb3BwZWQgSWRlbnRpZmll
ciBjb25zdHJ1Y3RvcnMgZm9yIHN0cmluZ3MgYW5kIGluc3RlYWQsIGludHJvZHVjZWQgMiBmYWN0
b3J5IGZ1bmN0aW9ucy4KKyAgICAgICAgKyBgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSovRXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJilgLgorICAgICAgICAgICAgSnVzdCBjb25zdHJ1Y3QgSWRl
bnRpZmllciBmcm9tIHN0cmluZ3MuIFRoZSBzeW1ib2wtbmVzcyBvZiBTdHJpbmdJbXBsKiBpcyBu
b3Qga2VwdC4KKyAgICAgICAgKyBgSWRlbnRpZmllcjo6ZnJvbVVpZChWTSovRXhlY1N0YXRlKiwg
U3RyaW5nSW1wbCopYC4KKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgMikg
YHVpZGAuIFNvIHN5bWJvbC1uZXNzIG9mIGBTdHJpbmdJbXBsKmAgaXMga2VwdC4KKworICAgICAg
ICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb24p
OgorICAgICAgICAoSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL09w
YXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUp
OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChK
U0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6
OkJ1aWx0aW5OYW1lcyk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFt
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAg
ICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5
Q291bnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dUeXBlRXJyb3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVk
ZWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToK
KyAgICAgICAgKiBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpEZXNpcmVkSWRlbnRpZmllcnM6OnJlYWxseUFkZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChJbnNwZWN0b3I6OmNvbnN0
cnVjdEludGVybmFsUHJvcGVydHkpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2Ny
aXB0SG9zdDo6d2Vha01hcEVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVk
U2NyaXB0SG9zdDo6aXRlcmF0b3JFbnRyaWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGluc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0
cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbik6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGV4cGxjaXRseSBj
aGVjayBgaXNTeW1ib2woKWAgaW4gdGhlIGNhbGxlciBzaWRlLiBXZSBjYW4ganVzdCB1c2UgYElk
ZW50aWZpZXI6OmZyb21VaWRgLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2Jh
bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRGdW5j
dGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmFkZENvbnN0cnVjdGFibGVGdW5jdGlvbik6
CisgICAgICAgIChmdW5jdGlvblJ1bik6CisgICAgICAgIChydW5XaXRoU2NyaXB0cyk6CisgICAg
ICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBl
cmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjphZGRWYXIpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpjcmVhdGVCaW5kaW5nUGF0dGVybik6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ckFyZW5hLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VJZGVudGlmaWVyTENoYXJGcm9t
VUNoYXIpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VOdW1lcmljSWRlbnRp
Zmllcik6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpB
cmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1B1c2gpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NvcnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21t
b25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25J
ZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmg6CisgICAgICAg
IChKU0M6OkVudW1lcmF0aW9uTW9kZTo6RW51bWVyYXRpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6
RW51bWVyYXRpb25Nb2RlOjpzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKToKKyAgICAg
ICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpzaG91bGRJbmNsdWRlU3ltYm9s
cyk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6Y3JlYXRlVGhhdFNraXBzSlNPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6c2hvdWxkRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjptb2RlVGhhdFNraXBzSlNPYmplY3QpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjphZGRFcnJvcklu
Zm8pOgorICAgICAgICAoSlNDOjpoYXNFcnJvckluZm8pOgorICAgICAgICAqIHJ1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxl
RXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZnJvbSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpJZGVudGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVVpZCk6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pT
Q2FsbGVlLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnJ1bnRpbWVGbGFncyk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldENsYXNzUHJvcGVydHlOYW1lcyk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU09iamVj
dC5oOgorICAgICAgICAoSlNDOjptYWtlSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY1JhY2UpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNBbGwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OnN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpn
ZW5lcmljUHJvcGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Zy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9JZGVudGlmaWVyKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRh
YmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRp
bWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5
cGU+Ojp0cnlKU09OUFBhcnNlKToKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlw
ZT46Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAg
ICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRl
cmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBJdGVyYXRvclByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93
blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yS2V5cyk6
CisgICAgICAgIChKU0M6OmRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZSk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQpOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5h
bWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxl
Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmZpbmQpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVRhYmxlOjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6UHJvcGVydHlOYW1lKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lOjph
c0luZGV4KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVudGltZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6YWRkS25v
d25VbmlxdWUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6
OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldEdlbmVy
aWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6U2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlNl
dFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjp0aHJvd0V4Y2VwdGlvbik6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanM6IEFk
ZGVkLgorICAgICAgICAoZm9ySW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wtZGVm
aW5lLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTeW1ib2wpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzOiBBZGRlZC4KKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLXdpdGgtanNvbi5qczogQWRkZWQuCisKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICog
QVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9PcGFxdWVK
U1N0cmluZy5jcHA6CisgICAgICAgIChPcGFxdWVKU1N0cmluZzo6aWRlbnRpZmllcik6CisgICAg
ICAgICogYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0
VmFsdWUuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6anNUb0luc3BlY3RvclZhbHVlKToKKyAg
ICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKToKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpCdWls
dGluTmFtZXMpOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OmlzUHJpdmF0ZU5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChK
U0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93VHlwZUVycm9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAg
ICAgICogZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
RGVzaXJlZElkZW50aWZpZXJzOjpyZWFsbHlBZGQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpmdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpjb25zdHJ1Y3RJ
bnRlcm5hbFByb3BlcnR5KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhv
c3Q6OndlYWtNYXBFbnRyaWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlw
dEhvc3Q6Oml0ZXJhdG9yRW50cmllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dHJhY3RT
b3VyY2VJbmZvcm1hdGlvbkZyb21FeGNlcHRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmFkZEZ1bmN0aW9uKToKKyAgICAg
ICAgKEdsb2JhbE9iamVjdDo6YWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKToKKyAgICAgICAgKGZ1
bmN0aW9uUnVuKToKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKiBsbGludC9M
TEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAq
IHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFkZFZhcik6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNy
ZWF0ZUJpbmRpbmdQYXR0ZXJuKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAg
ICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlSWRlbnRpZmllcik6CisgICAgICAgIChK
U0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcik6CisgICAg
ICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKToKKyAgICAg
ICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUHVz
aCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU29ydCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJz
OjpDb21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpp
c1ByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6Cisg
ICAgICAgICogcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaDoKKyAgICAgICAgKEpTQzo6RW51bWVy
YXRpb25Nb2RlOjpFbnVtZXJhdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1v
ZGU6OnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpFbnVt
ZXJhdGlvbk1vZGU6OnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZEluY2x1ZGVTeW1ib2xzKToKKyAgICAgICAg
KEpTQzo6RW51bWVyYXRpb25Nb2RlOjpjcmVhdGVUaGF0U2tpcHNKU09iamVjdCk6CisgICAgICAg
IChKU0M6OnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpzaG91bGRFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6c2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Om1vZGVUaGF0U2tpcHNKU09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmFkZEVycm9ySW5mbyk6CisgICAgICAg
IChKU0M6Omhhc0Vycm9ySW5mbyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6Oklk
ZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50
aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tVWlkKToK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyk6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwOgorICAgICAg
ICAoSlNDOjpKU0FycmF5QnVmZmVyOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5QnVmZmVyVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wSW5Db250
ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
cnVudGltZUZsYWdzKToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlaWZ5U3Rh
dGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEdlbmVy
aWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZSk6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0FsbCk6CisgICAgICAgICog
cnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6c3RydWN0
dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAg
IChKU0M6OkpTU3RyaW5nOjp0b0lkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnRyeUpTT05Q
UGFyc2UpOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6bWFrZUlkZW50
aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnJlaWZ5
U3RhdGljUHJvcGVydGllcyk6CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdE1hcCk6CisgICAgICAgICogcnVudGltZS9NYXBJdGVy
YXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcEl0ZXJhdG9yUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpNYXRoT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6Ok51bWJlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlTeW1ib2xzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToK
KyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToK
KyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9Qcml2YXRlTmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFt
ZTo6UHJpdmF0ZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZCk6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OmdldCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWUuaDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlOYW1lOjpQcm9wZXJ0eU5hbWUpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eU5hbWU6OnB1YmxpY05hbWUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OmFz
SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwOgorICAgICAg
ICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6YWRkKToKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5TmFtZUFycmF5Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGRLbm93
blVuaXF1ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6
Z2V0UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJp
Y1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0
b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNG
cm9tU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnRocm93RXhjZXB0
aW9uKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdFdlYWtNYXApOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9vYmplY3Qt
Z2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvckluKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qczogQWRkZWQuCisg
ICAgICAgICh0ZXN0U3ltYm9sKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwt
YW5kLWZyZWV6ZS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRo
LWpzb24uanM6IEFkZGVkLgorCiAyMDE1LTAzLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBDTWFrZSBvbiBN
YWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDYxYjA2ZmFhNjRkMjQ3MzY5NmIzMGNhOGIzZjBkYTJkMDI1OTQ1MDMuLjg1NDg3
ODQwNmM4NTk1YTNmY2RlZDkxMzRlZGM3MTZiZTNiMjk2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAK
KzIwMTUtMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU3RyaW5n
S2luZCBpbnRvIGBTdHJpbmdJbXBsYC4gVGhlcmUncyAzIGtpbmRzCisgICAgICAgIDEuIFN0cmlu
Z05vcm1hbCAobm9uLWF0b21pYywgbm9uLXN5bWJvbCkKKyAgICAgICAgMi4gU3RyaW5nQXRvbWlj
IChhdG9taWMsIG5vbi1zeW1ib2wpCisgICAgICAgIDMuIFN0cmluZ1N5bWJvbCAobm9uLWF0b21p
Yywgc3ltYm9sKQorICAgICAgICBUaGV5IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJp
bmc6OmFkZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpmaW5kU2xvd0Nh
c2UpOgorICAgICAgICBXaGVuIHJlZ2lzdGVyaW5nIGEgc3RyaW5nIGludG8gQXRvbWljU3RyaW5n
VGFibGUsCisgICAgICAgIGl0IHNob3VsZCBub3QgYmUgYSBzeW1ib2wgc3RyaW5nCisgICAgICAg
IGJlY2F1c2Ugc3ltYm9sIGFuZCBhdG9taWMgdHlwZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4K
KyAgICAgICAgV2hlbiBhIHN5bWJvbCBzdHJpbmcgY29tZXMsIHdlIGV4dHJhY3QgYW4gb3duZXIg
c3RyaW5nCisgICAgICAgIGZyb20gYSBzeW1ib2wgc3RyaW5nIGJ5IHVzaW5nIGBTdHJpbmdJbXBs
OjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKWAuCisgICAgICAgIEl0IGFsd2F5cyBzdWNj
ZWVkcyBiZWNhdXNlIGEgc3ltYm9sIChub24gZW1wdHkpIHN0cmluZworICAgICAgICBpcyBhbHdh
eXMgQnVmZmVyU3Vic3RyaW5nIGFuZCBoYXMgYW4gb3duZXIgc3RyaW5nLgorICAgICAgICBFbXB0
eSBzeW1ib2wgc3RyaW5nIGRvZXNuJ3QgaGF2ZSBhbiBvd25lciBzdHJpbmcuCisgICAgICAgIFRo
aXMgY2FzZSBpcyBmaWx0ZXJlZCBieSBgIXN0cmluZy5sZW5ndGgoKWAgZ3VhcmQuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5n
OjphZGQpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZFdpdGhTdHJpbmdUYWJsZVBy
b3ZpZGVyKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6flN0cmluZ0ltcGwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpj
cmVhdGVTeW1ib2wpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWUpOiBE
ZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6
U3RyaW5nSW1wbDo6U3RyaW5nSW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0
ZVN5bWJvbEVtcHR5KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKToK
KyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmxhZ0lzU3ltYm9sKToKKyAgICAgICAgKFdURjo6
U3RyaW5nSW1wbDo6bWFza1N0cmluZ0tpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpz
dHJpbmdLaW5kKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aXNTeW1ib2wpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdJbXBsOjppc0F0b21pYyk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OnNldElzQXRvbWljKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZXh0cmFjdEZvbGRlZFN0
cmluZ0luU3ltYm9sKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1w
dHkpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNVbmlxdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjppc1VuaXF1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHA6CisgICAgICAgIChXVEY6OlN0cmlu
Z0ltcGw6Omhhc2hBbmRGbGFnc0ZvclN5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
Omhhc2hBbmRGbGFnc0ZvclVuaXF1ZSk6IERlbGV0ZWQuCisKIDIwMTUtMDMtMTMgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgVENTcGluTG9jayB3aXRo
IGEgbmV3IFdURjo6U3BpbkxvY2sgYmFzZWQgb24gV1RGOjpBdG9taWMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDU5ZDYyYjA4MGRmMTgwMmJlZTE4ZWU5Mjk4ZmU4ZGIwZmJmNjBmMS4uYjg3YWZkZGI1MDg5MDJm
YmEzMjJhZDA0MzkwMGQzZTU5YWRkZDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAor
MjAxNS0wMy0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nIGFuZCBJZGVudGlmaWVyOjpmcm9tVWlkLgorCisgICAgICAgIFRlc3RzOiBqcy9v
YmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5
bWJvbC1kZWZpbmUtcHJvcGVydHkuaHRtbAorICAgICAgICAgICAgICAganMvc3ltYm9sLXNlYWwt
YW5kLWZyZWV6ZS5odG1sCisgICAgICAgICAgICAgICBqcy9zeW1ib2wtd2l0aC1qc29uLmh0bWwK
KworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVS
ZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3du
UHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0SlNMaXN0ZW5lckZ1bmN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlND
cnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEhhc2hBbGdvcml0aG0pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRKU0FycmF5RnJvbUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U3RyaW5nRnJv
bUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9vbGVhbkZyb21KU09OKToKKyAgICAgICAg
KFdlYkNvcmU6OmFkZFRvSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEpTT05Gb3JSU0FD
b21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEJvb2xUb0pTT04pOgorICAgICAgICAo
V2ViQ29yZTo6YWRkVXNhZ2VzVG9KU09OKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNS
ZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ01hcEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmluZ01hcDo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlZmluZU93blByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpYWxvZ0hhbmRsZXI6OnJldHVyblZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRB
Y2NlbGVyYXRpb25Bcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkUm90YXRpb25SYXRl
QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQWNjZWxlcmF0aW9uT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJvdGF0aW9uUmF0ZU9iamVjdCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGljdGlv
bmFyeTo6dHJ5R2V0UHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhbGxIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OmFs
bCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6c2V0QWxsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9w
dWxhdGVDb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVu
dExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6Omlu
aXRpYWxpemVKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJD
b25kaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyQ29uZGl0aW9uOjph
Y2NlcHROb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVt
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEludGVybmFsU2xvdFRvT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEludGVybmFsU2xv
dEZyb21PYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRHbG9iYWxPYmplY3Q6OnJlbW92ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6
Q2xvbmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6d3Jp
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0
T2JqZWN0IGNhbGxXZWJTY3JpcHRNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKC1b
V2ViU2NyaXB0T2JqZWN0IHNldFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0
T2JqZWN0IHZhbHVlRm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgcmVtb3Zl
V2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgaGFzV2ViU2NyaXB0
S2V5Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0
dHI0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyNUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjZDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpS
ZXBsYWNlYWJsZUF0dHJpYnV0ZSk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoK
KyAgICAgICAgKF9OUE5fRW51bWVyYXRlKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX3V0aWxpdHku
Y3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6aWRlbnRpZmllckZyb21OUElkZW50aWZpZXIp
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHA6
CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBicmlkZ2UvdGVzdGJpbmRpbmdzLm1tOgorICAg
ICAgICAobWFpbik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6bG9hZFRy
aWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmxvYWRBY3Rpb24p
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QpOgorICAgICAgICAqIHRlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6
aW5qZWN0SW50ZXJuYWxzT2JqZWN0KToKKwogMjAxNS0wMy0xMyAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMgQ01h
a2Ugb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDI2MzRmZDU0N2Y5NjYxNjU0MzY3Y2M0YjUx
YjM5MmRiMDhkNTM2NTUuLjM1NGNhYmEyMjZjYjk0OWM1YTMwOGRiZGVhY2Y3YmQ4MzcxMjNiOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wMy0xNCAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nIGFuZCBJZGVudGlm
aWVyOjpmcm9tVWlkLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5I
b3N0UHJveHkubW06CisgICAgICAgIChpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXApOgorICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUpOgor
ICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJL
aXQ6OlByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMpOgorCiAyMDE1LTAzLTEzICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTgxNDgzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYwZjU3NGU1OTE5ODBlOGI5ZTcz
ZTFkNWU1MDQ3YzBjOWM2MmRmOTguLjc5ZDg5YTFhZGYxNGJiZTUyYjQwOWJlMzQxNDFjYzBiZjYx
N2VkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wMy0xNCAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nIGFuZCBJZGVudGlm
aWVyOjpmcm9tVWlkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVj
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDMtMTMgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9n
cmVzcyB0b3dhcmRzIENNYWtlIG9uIE1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggOGNiZjBmZjQ5MDIyMmEz
NjkwNTNiZjcxZjYzZDZkNDRlZTI1ZTNiMy4uMjJhZmU0OGZiOGNjMzYxZmU2MTQwODliZTJlMTg5
M2JhZmJlNTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUxOCw4ICs1MTgsMTAgQEAKICAgICAgICAgICAg
IGZvciAoaXRlcmF0b3IgaXQgPSBzdGF0aWNWYWx1ZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwog
ICAgICAgICAgICAgICAgIFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdldCgp
OwotICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnktPmF0
dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBuYW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKGVu
dHJ5LT5nZXRQcm9wZXJ0eSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygp
KSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW5hbWUtPmlzU3ltYm9sKCkpOworICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZyhuYW1lKSkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICAKQEAgLTUyOSw4ICs1MzEsMTAgQEAKICAgICAgICAgICAgIGZv
ciAoaXRlcmF0b3IgaXQgPSBzdGF0aWNGdW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwog
ICAgICAgICAgICAgICAgIFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdl
dCgpOwotICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyht
b2RlKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihl
eGVjLCBuYW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMoKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW5hbWUtPmlzU3lt
Ym9sKCkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhuYW1lKSkpOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAKaW5kZXggMjM0ZDI0ODhmZjg5MGI4YmVlNjk3ZWY1NWFhNjgwMzgwYTE4
MWE0Mi4uNTkwYTUzNzAxNjk5NTJiMTI5ZjBhMzQ0NjRjZDRhNWU4ZWYzZWE0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmlu
Z1JlZiBuYW1lLCB1bnNpZ25lZCBwYQogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAK
ICAgICBzdGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIp
OwotICAgIElkZW50aWZpZXIgbmFtZUlEID0gbmFtZSA/IG5hbWUtPmlkZW50aWZpZXIoJmV4ZWMt
PnZtKCkpIDogSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7CisgICAgSWRlbnRpZmllciBu
YW1lSUQgPSBuYW1lID8gbmFtZS0+aWRlbnRpZmllcigmZXhlYy0+dm0oKSkgOiBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJhbm9ueW1vdXMiKTsKICAgICAKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJDb3Vu
dDsgaSsrKQpAQCAtNjk4LDcgKzY5OCw3IEBAIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgSlNPYmpl
Y3RDb3B5UHJvcGVydHlOYW1lcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgICAg
SlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTUHJvcGVydHlOYW1lQXJy
YXlSZWYgcHJvcGVydHlOYW1lcyA9IG5ldyBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5KHZtKTsK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBhcnJheSh2bSk7Ci0gICAganNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmdldFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVy
dHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGFycmF5LnNpemUoKTsKICAg
ICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAppbmRleCAyMmMxNjIz
MGM3YzFkMzY5MTFjN2Q1ODljZTUwZjA5NDI4N2ExZDllLi43ZjllZGI0MTM2ZTI3NDk5NzQ3ZDI5
NmQyZjFhMmRjNDg5YjA0NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L09wYXF1ZUpTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1
ZUpTU3RyaW5nLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+CiAKQEAgLTY5LDkgKzcwLDkgQEAgSWRlbnRpZmllciBPcGFxdWVKU1N0cmluZzo6aWRl
bnRpZmllcihWTSogdm0pIGNvbnN0CiAgICAgICAgIHJldHVybiBJZGVudGlmaWVyKElkZW50aWZp
ZXI6OkVtcHR5SWRlbnRpZmllcik7CiAKICAgICBpZiAobV9zdHJpbmcuaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpLCBtX3N0cmlu
Zy5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBt
X3N0cmluZy5jaGFyYWN0ZXJzOCgpLCBtX3N0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4g
SWRlbnRpZmllcih2bSwgbV9zdHJpbmcuY2hhcmFjdGVyczE2KCksIG1fc3RyaW5nLmxlbmd0aCgp
KTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbV9zdHJpbmcuY2hhcmFj
dGVyczE2KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAogY29uc3QgVUNoYXIqIE9wYXF1ZUpT
U3RyaW5nOjpjaGFyYWN0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggMmRmNzg3NjQxMGU3OGNmOWZhYmYy
NDE3ODZlNjAyNDJmZTRlZWUwOS4uZjNhMjIzOGViYTk4ZmMxMjgyN2I4MWRlZjJjODBjNjMxNGNl
MDVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFNjcmlwdENhbGxBcmd1
bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGJvb2wgYXJndW1lbnQpCiAKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhtX2V4ZWMpOwogCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3Qt
PmdldChtX2V4ZWMsIElkZW50aWZpZXIobV9leGVjLCBtX25hbWUpKTsKKyAgICBKU1ZhbHVlIGZ1
bmN0aW9uID0gdGhpc09iamVjdC0+Z2V0KG1fZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyht
X2V4ZWMsIG1fbmFtZSkpOwogICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAg
ICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7CiAgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1
ZS5jcHAKaW5kZXggNzZhN2IxMTFhOGQ4NzdhNjc5YjVjOGI4ZTg5NmUxYTdiMWI2YjhhYy4uNWEw
NWJhODliOWU5MGNhOTQwN2NhM2E4ZWFlNjIwNzQ3MjhhMTJlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAg
Ym9vbCBTY3JpcHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0CiAgICAgICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IGluc3BlY3Rvck9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICAgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIHNjcmlwdFN0YXRl
LCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3Rh
dGUsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5zaXpl
KCk7IGkrKykgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSA9IHByb3BlcnR5
TmFtZXNbaV07CiAgICAgICAgICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdl
dChzY3JpcHRTdGF0ZSwgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDNjOGRhYzUzMmZhZDg1OGNmMzli
ZGI1MzExYzFmMTA3OTAwYjE0ZTcuLjEzN2Q3YTdjMjZiMjRlMjIzYjE1OTBjMWZjM2UwYmQyZWJh
MGNmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwCkBAIC03MSwxMSArNzEsMTEgQEAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29u
c3QgU28KICAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNs
b3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xvc2VkVmFyaWFibGVzKCkpIHsKICAgICAgICAgaWYg
KGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkK
LSAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtl
eXdvcmQuaW1wbCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKGNsb3NlZFZhcmlhYmxlLT5pc1VuaXF1ZSgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV92bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKGNsb3NlZFZhcmlhYmxlLmdldCgpKSk7
CiAgICAgfQogICAgIGJvZHktPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmNyZWF0ZSgmbV92bSwgc291cmNlLCBib2R5LCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5k
ZXggOWI4ODk2Yjk2ODAxNDkxM2Y0NmIzMmM0ODBlMDU3ODk2Mzc5ZGZhNC4uZDdkOTNkYTJjYTE2
NmEzOTRkNDFlMTAyNzEyOGQ5M2NjZDBjNjM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMzEsMTIgKzMxLDE4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogICAgIAotI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBt
XyMjbmFtZSh2bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJv
bShQcml2YXRlTmFtZShBU0NJSUxpdGVyYWwoIlN5bWJvbC4iICNuYW1lKSkpKQotI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsgY29u
c3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7OworI2RlZmluZSBJTklUSUFMSVNF
X0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAjbmFtZSkpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2
YXRlTmFtZSgpKSkKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUpIGNvbnN0IElk
ZW50aWZpZXIgbV8jI25hbWU7IGNvbnN0IElkZW50aWZpZXIgbV8jI25hbWUjI1ByaXZhdGVOYW1l
OwogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUihuYW1lKSBcCiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSMjUHVibGljTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
IyNuYW1lOyB9IFwKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNQcml2YXRlTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNQcml2YXRlTmFtZTsgfQogCisjZGVmaW5lIElOSVRJQUxJ
U0VfQlVJTFRJTl9TWU1CT0xTKG5hbWUpIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1lKSwg
bV8jI25hbWUjI1N5bWJvbChJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKEFTQ0lJTGl0
ZXJhbCgiU3ltYm9sLiIgI25hbWUpKSkpCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xT
KG5hbWUpIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhuYW1lKSBjb25zdCBJZGVudGlmaWVyIG1fIyNu
YW1lIyNTeW1ib2w7CisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xfQUNDRVNTT1IobmFt
ZSkgXAorICAgIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwKKyAg
ICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNTeW1ib2woKSBjb25zdCB7IHJldHVybiBtXyMjbmFt
ZSMjU3ltYm9sOyB9CisKICNkZWZpbmUgSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRS
WShuYW1lKSBtX3ByaXZhdGVUb1B1YmxpY01hcC5hZGQobV8jI25hbWUjI1ByaXZhdGVOYW1lLmlt
cGwoKSwgJm1fIyNuYW1lKTsKICNkZWZpbmUgSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9F
TlRSWShuYW1lKSBtX3B1YmxpY1RvUHJpdmF0ZU1hcC5hZGQobV8jI25hbWUuaW1wbCgpLCAmbV8j
I25hbWUjI1ByaXZhdGVOYW1lKTsKICAgICAKQEAgLTQ4LDIzICs1NCwzMCBAQCBjbGFzcyBCdWls
dGluTmFtZXMgewogICAgICAgICA6IG1fZW1wdHlJZGVudGlmaWVyKGNvbW1vbklkZW50aWZpZXJz
LT5lbXB0eUlkZW50aWZpZXIpCiAgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFU
RV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9CVUlMVElOX05BTUVT
KQorICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dO
X1NZTUJPTChJTklUSUFMSVNFX0JVSUxUSU5fU1lNQk9MUykKICAgICB7CiAgICAgICAgIEpTQ19G
T1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElD
X0VOVFJZKQogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9Q
RVJUWV9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkpCisgICAgICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJ
QUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkpCiAgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKQogICAg
ICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElO
SVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCisgICAgICAgIEpTQ19DT01NT05fUFJJ
VkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJU0VfUFVCTElD
X1RPX1BSSVZBVEVfRU5UUlkpCiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFN0cmlu
Z0ltcGwqIHVpZCkgY29uc3Q7CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImKSBjb25zdDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJikgY29uc3Q7CiAgICAgY29uc3QgSWRlbnRpZmllciYgZ2V0UHVibGljTmFtZShj
b25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgCiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQogICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoREVDTEFSRV9C
VUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NF
U1NPUikKIAogcHJpdmF0ZToKICAgICBJZGVudGlmaWVyIG1fZW1wdHlJZGVudGlmaWVyOwogICAg
IEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMp
CiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShE
RUNMQVJFX0JVSUxUSU5fTkFNRVMpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJT
X0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woREVDTEFSRV9CVUlMVElOX1NZTUJPTFMpCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgY29uc3QgSWRlbnRpZmllciosIElkZW50
aWZpZXJSZXBIYXNoPiBCdWlsdGluTmFtZXNNYXA7CiAgICAgQnVpbHRpbk5hbWVzTWFwIG1fcHVi
bGljVG9Qcml2YXRlTWFwOwogICAgIEJ1aWx0aW5OYW1lc01hcCBtX3ByaXZhdGVUb1B1YmxpY01h
cDsKQEAgLTczLDcgKzg2LDE5IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAjdW5kZWYgREVDTEFS
RV9CVUlMVElOX05BTUVTCiAjdW5kZWYgSU5JVElBTElTRV9CVUlMVElOX05BTUVTCiAjdW5kZWYg
REVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IKKyN1bmRlZiBERUNMQVJFX0JVSUxU
SU5fU1lNQk9MUworI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xTCisjdW5kZWYgREVD
TEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUgorCitpbmxpbmUgYm9vbCBCdWlsdGluTmFtZXM6
OmlzUHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCogdWlkKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGVUb1B1YmxpY01hcC5maW5kKHVpZCkgIT0gbV9wcml2YXRlVG9QdWJsaWNNYXAuZW5kKCk7
Cit9CiAKK2lubGluZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNQcml2YXRlTmFtZShpZGVudC5p
bXBsKCkpOworfQogCiBpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVzOjpnZXRQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKQEAgLTkxLDcgKzEx
Niw3IEBAIGlubGluZSBjb25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVO
YW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjCiAgICAgcmV0dXJuIG1fZW1wdHlJZGVudGlm
aWVyOwogfQogCi0gICAgCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCmluZGV4IDlhOWRi
MGJjNzBiOWYxMzVmNjVkZDJkNzk2ZGU2NTI4OTZhZTBmYjEuLjU3ODBmMDBjNzI4MTRhMzE4NTBl
MWM4MmE1YWRjMmUyZWIyODgzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCkBAIC0xMTgsNyArMTE4LDcg
QEAgY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewogCiAgICAgICAgIHNpemVfdCBjb3Vu
dCA9IDA7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSk7
Ci0gICAgICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9tU3Ry
dWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVBcnJheSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CisgICAgICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9tU3Ry
dWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVB
cnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVy
dHlOYW1lQXJyYXkuZGF0YSgpLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVWZWN0b3Iuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBwcm90b3R5cGUtPmdldERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lVmVjdG9yW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZmFmNWZkOWEyMTQwY2Y0NWVlNWMx
OTFiYjI3MGNlYjJkMDdjNWU2NC4uYmRmNDZjMDI4Y2MxMzM4ZGYxNDI0OTBiZTJmN2EyNzAxZTIx
YTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKAogICAgIFZlY3RvcjxJZGVudGlmaWVyLCAwLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4gdmFyaWFibGVzOwogICAgIHZhcmlhYmxlcy5yZXNlcnZlQ2FwYWNp
dHkobnVtVmFyaWFibGVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVZhcmlhYmxl
czsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCh2YXJTdGFja1tpXS5maXJzdC5pbXBsKCktPmlzQXRv
bWljKCkpOworICAgICAgICBBU1NFUlQodmFyU3RhY2tbaV0uZmlyc3QuaW1wbCgpLT5pc0F0b21p
YygpIHx8IHZhclN0YWNrW2ldLmZpcnN0LmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgICAgIHZh
cmlhYmxlcy5hcHBlbmQodmFyU3RhY2tbaV0uZmlyc3QpOwogICAgIH0KICAgICBjb2RlQmxvY2st
PmFkb3B0VmFyaWFibGVzKHZhcmlhYmxlcyk7CkBAIC0yMzYyLDE0ICsyMzYyLDE0IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BUcnlBbmRFbWl0Q2F0Y2goVHJ5RGF0YSogdHJ5
RGF0YSwgUmVnaXN0ZXJJRCoKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVy
ZW5jZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX3Ro
cm93X3N0YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcihtX3ZtLCBtZXNzYWdlKSkpLT5pbmRl
eCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJp
bmdDb25zdGFudChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0sIG1lc3NhZ2UpKSktPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0cnVlKTsKIH0KIAogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFRocm93VHlwZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllciht
X3ZtLCBtZXNzYWdlKSkpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRk
Q29uc3RhbnRWYWx1ZShhZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1f
dm0sIG1lc3NhZ2UpKSktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmYWxz
ZSk7CiB9CiAKQEAgLTI1MzYsNyArMjUzNiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKCkKICAgICBpZiAoIWlzU3RyaWN0TW9kZSgpKQog
ICAgICAgICByZXR1cm47CiAgICAgZW1pdE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwot
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0
YW50KElkZW50aWZpZXIobV92bSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KSkpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1
ZShhZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0sIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGZhbHNlKTsKIH0KICAgICAKQEAgLTI1NzAsNyArMjU3MCw3IEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IG5ld0xhYmVsU2Nv
cGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1YmplY3QgPSBu
ZXdUZW1wb3JhcnkoKTsKICAgICBlbWl0Tm9kZShzdWJqZWN0LmdldCgpLCBzdWJqZWN0Tm9kZSk7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9y
YXJ5KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1l
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1w
b3JhcnkoKSwgc3ViamVjdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsK
ICAgICB7CiAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0cik7CiAgICAg
ICAgIGVtaXRNb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIHN1YmplY3QuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCmlu
ZGV4IDYwYTQ5NGRkY2Y0YjE1MzgxYWNhZjBjNTgxODk2NDY0ZTdhMmU0M2IuLjY1YzMwMWRiZWUx
NmQzZjc0YjU0MjdiN2EwZjY5MjQ4ODQxYzRlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKQEAgLTczLDcgKzczLDcgQEAg
dm9pZCBEZXNpcmVkSWRlbnRpZmllcnM6OnJlYWxseUFkZChWTSYgdm0sIENvbW1vbkRhdGEqIGNv
bW1vbkRhdGEpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYWRkZWRJZGVudGlmaWVy
cy5zaXplKCk7ICsraSkgewogICAgICAgICBTdHJpbmdJbXBsKiByZXAgPSBtX2FkZGVkSWRlbnRp
ZmllcnNbaV07CiAgICAgICAgIEFTU0VSVChyZXAtPmhhc0F0TGVhc3RPbmVSZWYoKSk7Ci0gICAg
ICAgIGNvbW1vbkRhdGEtPmRmZ0lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKCZ2bSwgcmVw
KSk7CisgICAgICAgIGNvbW1vbkRhdGEtPmRmZ0lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVy
Ojpmcm9tVWlkKCZ2bSwgcmVwKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGQx
NWFmMzIxYTIzYzk1NDVkMmYwZWZlNjAwZDc4NzI3Mzg2NjFmMjYuLjNkMGY2MGVkMTNhZWQyNWMw
MDdmZmFmYmRlZWJhZTQ3NzkwMGY5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xOTYsMjAgKzE5
NiwyMCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHMoRXhl
Y1N0YXRlKiBleGVjKQogCiAgICAgU3RyaW5nIHNjcmlwdElEID0gU3RyaW5nOjpudW1iZXIoc291
cmNlQ29kZS0+cHJvdmlkZXIoKS0+YXNJRCgpKTsKICAgICBKU09iamVjdCogbG9jYXRpb24gPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgInNjcmlwdElkIiksIGpzU3RyaW5nKGV4ZWMsIHNjcmlw
dElEKSk7Ci0gICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJsaW5lTnVtYmVyIiksIGpzTnVtYmVyKGxpbmVOdW1iZXIpKTsKLSAgICBsb2NhdGlvbi0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImNvbHVtbk51bWJlciIpLCBq
c051bWJlcihjb2x1bW5OdW1iZXIpKTsKKyAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNjcmlwdElkIiksIGpzU3RyaW5nKGV4
ZWMsIHNjcmlwdElEKSk7CisgICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lTnVtYmVyIiksIGpzTnVtYmVyKGxpbmVOdW1i
ZXIpKTsKKyAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImNvbHVtbk51bWJlciIpLCBqc051bWJlcihjb2x1bW5OdW1iZXIpKTsK
IAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAg
ICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlv
biIpLCBsb2NhdGlvbik7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAibG9jYXRpb24iKSwgbG9jYXRpb24pOwogCiAgICAgU3Ry
aW5nIG5hbWUgPSBmdW5jdGlvbi0+bmFtZShleGVjKTsKICAgICBpZiAoIW5hbWUuaXNFbXB0eSgp
KQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibmFtZSIpLCBqc1N0
cmluZyhleGVjLCBuYW1lKSk7CiAKICAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSBmdW5jdGlvbi0+
ZGlzcGxheU5hbWUoZXhlYyk7CiAgICAgaWYgKCFkaXNwbGF5TmFtZS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImRpc3Bs
YXlOYW1lIiksIGpzU3RyaW5nKGV4ZWMsIGRpc3BsYXlOYW1lKSk7CisgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImRpc3Bs
YXlOYW1lIiksIGpzU3RyaW5nKGV4ZWMsIGRpc3BsYXlOYW1lKSk7CiAKICAgICAvLyBGSVhNRTog
cHJvdmlkZSBmdW5jdGlvbiBzY29wZSBkYXRhIGluICJzY29wZXNSYXciIHByb3BlcnR5IHdoZW4g
SlNDIHN1cHBvcnRzIGl0LgogICAgIC8vIDxodHRwczovL3dlYmtpdC5vcmcvYi84NzE5Mj4gW0pT
Q10gZXhwb3NlIGZ1bmN0aW9uIChjbG9zdXJlKSBpbm5lciBjb250ZXh0IHRvIGRlYnVnZ2VyCkBA
IC0yMjAsOCArMjIwLDggQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25E
ZXRhaWxzKEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRpYyBKU09iamVjdCogY29uc3RydWN0SW50ZXJu
YWxQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yyk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAi
bmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1lKSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAidmFsdWUiKSwgdmFsdWUpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm5hbWUi
KSwganNTdHJpbmcoZXhlYywgbmFtZSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZhbHVlIiksIHZhbHVlKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zNzQsOCArMzc0LDggQEAgSlNWYWx1ZSBKU0luamVjdGVk
U2NyaXB0SG9zdDo6d2Vha01hcEVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTQXJyYXkq
IGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKICAgICBmb3IgKGF1
dG8gaXQgPSB3ZWFrTWFwLT53ZWFrTWFwRGF0YSgpLT5iZWdpbigpOyBpdCAhPSB3ZWFrTWFwLT53
ZWFrTWFwRGF0YSgpLT5lbmQoKTsgKytpdCkgewogICAgICAgICBKU09iamVjdCogZW50cnkgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJrZXkiKSwgaXQtPmtleSk7Ci0gICAgICAgIGVudHJ5
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAidmFsdWUiKSwgaXQtPnZh
bHVlLmdldCgpKTsKKyAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJrZXkiKSwgaXQtPmtleSk7CisgICAgICAgIGVudHJ5LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUi
KSwgaXQtPnZhbHVlLmdldCgpKTsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMs
IGZldGNoZWQrKywgZW50cnkpOwogICAgICAgICBpZiAobnVtYmVyVG9GZXRjaCAmJiBmZXRjaGVk
ID49IG51bWJlclRvRmV0Y2gpCiAgICAgICAgICAgICBicmVhazsKQEAgLTQyNCw3ICs0MjQsNyBA
QCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppdGVyYXRvckVudHJpZXMoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgSlNPYmplY3QqIGVudHJ5ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAidmFsdWUiKSwgbmV4dFZhbHVlKTsKKyAgICAgICAg
ZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJ2YWx1ZSIpLCBuZXh0VmFsdWUpOwogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhl
YywgaSwgZW50cnkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcApp
bmRleCA0YmZmYWQxZTEwMDBiOTE5YmY1NDhhZmRiNDc1NDYxMjRlMTMwOWZjLi5iMWNlMGExMzhi
YzA1ZjEwMDc3MTU3NWU5YTNiOWI1YzU0NzkwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04oIndlYWtNYXBFbnRyaWVzIiwganNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBFbnRyaWVzLCBEb250RW51bSwgMSk7CiAgICAgSlND
X05BVElWRV9GVU5DVElPTigiaXRlcmF0b3JFbnRyaWVzIiwganNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvbkl0ZXJhdG9yRW50cmllcywgRG9udEVudW0sIDEpOwogCi0gICAgSWRl
bnRpZmllciBldmFsdWF0ZUlkZW50aWZpZXIoJnZtLCAiZXZhbHVhdGUiKTsKKyAgICBJZGVudGlm
aWVyIGV2YWx1YXRlSWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZXZh
bHVhdGUiKTsKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgZXZhbHVhdGVJZGVudGlmaWVyLnN0cmlu
ZygpLCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKTsKICAg
ICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAppbmRleCA1OGJiNjhiMGExZjM4OGYyMWNhZjhi
NWY2MjJjYWQ3N2IyMDc5ZTJkLi40ODI4Mzg2NTI0ZGMyNmFiNDZjODQxMzU2ODMxYzcwZGM2ZTlm
ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNj
cmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCkBAIC02Myw3ICs2Myw3
IEBACiAKICNkZWZpbmUgSlNDX05BVElWRV9OT05fSU5ERVhfQUNDRVNTT1IoanNOYW1lLCBjcHBO
YW1lLCBhdHRyaWJ1dGVzKSBcCiAgICAgeyBcCi0gICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmll
cigmdm0sIGpzTmFtZSk7IFwKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIGpzTmFtZSk7IFwKICAgICAgICAgR2V0dGVyU2V0dGVyKiBh
Y2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOyBcCiAgICAg
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIDAsIGlkZW50aWZpZXIuc3RyaW5nKCksIGNwcE5hbWUpOyBcCiAgICAgICAgIGFjY2Vz
c29yLT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOyBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3Rvcnku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAppbmRleCAyN2RjMDk5YmRiNThiMDc0M2EzYmI2ZTE1YTJkMzBkNTNiMDFiY2IyLi5m
OWY2YzFjNDlhYWE2MDZhMzczMzQ4YjZlMmQ4ZmMyNzBmY2RlOGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHAKQEAgLTExOSwxMSArMTE5LDExIEBAIGNsYXNzIENyZWF0ZVNjcmlwdENhbGxTdGFja0Z1
bmN0b3Igewogc3RhdGljIHZvaWQgZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGV4Y2VwdGlvbk9iamVjdCwgaW50KiBs
aW5lTnVtYmVyLCBpbnQqIGNvbHVtbk51bWJlciwgU3RyaW5nKiBzb3VyY2VVUkwpCiB7CiAgICAg
Ly8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNTA4Nz4gV2ViIEluc3BlY3RvcjogU2hv
dWxkIG5vdCBuZWVkIHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9ucwot
ICAgIEpTVmFsdWUgbGluZVZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCAibGluZSIpKTsKKyAgICBKU1ZhbHVlIGxpbmVWYWx1ZSA9
IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgImxpbmUiKSk7CiAgICAgKmxpbmVOdW1iZXIgPSBsaW5lVmFsdWUgJiYgbGlu
ZVZhbHVlLmlzTnVtYmVyKCkgPyBpbnQobGluZVZhbHVlLnRvTnVtYmVyKGV4ZWMpKSA6IDA7Ci0g
ICAgSlNWYWx1ZSBjb2x1bW5WYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgImNvbHVtbiIpKTsKKyAgICBKU1ZhbHVlIGNvbHVtblZh
bHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAiY29sdW1uIikpOwogICAgICpjb2x1bW5OdW1iZXIgPSBjb2x1bW5W
YWx1ZSAmJiBjb2x1bW5WYWx1ZS5pc051bWJlcigpID8gaW50KGNvbHVtblZhbHVlLnRvTnVtYmVy
KGV4ZWMpKSA6IDA7Ci0gICAgSlNWYWx1ZSBzb3VyY2VVUkxWYWx1ZSA9IGV4Y2VwdGlvbk9iamVj
dC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKTsK
KyAgICBKU1ZhbHVlIHNvdXJjZVVSTFZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic291cmNlVVJMIikpOwog
ICAgICpzb3VyY2VVUkwgPSBzb3VyY2VVUkxWYWx1ZSAmJiBzb3VyY2VVUkxWYWx1ZS5pc1N0cmlu
ZygpID8gc291cmNlVVJMVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIDogQVNDSUlM
aXRlcmFsKCJ1bmRlZmluZWQiKTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNDYxMTY3YWU2
NTQxMGY0MjZkN2U4Nzg0MjA3OGUwMjAwOGE3MTU1NS4uYWY2MTQxYTlkM2Q5MGYxZDhjODliNmQ5
N2M1YTFkZjc5YzllZGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8KICAg
ICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVp
ZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBz
bG90KSk7CiB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cgog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVu
dGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsK
QEAgLTE3OSw3ICsxNzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZQogewogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwotICAgIElkZW50aWZpZXIgaWRlbnQgPSB1aWQtPmlzVW5pcXVlKCkgPyBJZGVudGlmaWVy
Ojpmcm9tKFByaXZhdGVOYW1lKHVpZCkpIDogSWRlbnRpZmllcih2bSwgdWlkKTsKKyAgICBJZGVu
dGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIAogICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBz
bG90KGJhc2VWYWx1ZSk7CkBAIC0yMDYsNyArMjA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YkkKICAgICAKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NU
eXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCBr
ZXkpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBrZXkp
OwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UpOwogICAgIGJvb2wgcmVzdWx0ID0gYXNPYmpl
Y3QoYmFzZSktPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CiAgICAgCkBAIC0y
MzAsNyArMjMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbihF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlMKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBJZGVudGlmaWVyIGlk
ZW50KHZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlk
KHZtLCBrZXkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0
KGJhc2UpLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCkpKTsKIH0KIApAQCAtMjQ3LDcgKzI0Nyw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRl
bnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRl
eHQoKSk7CiAgICAgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI1Nyw3ICsyNTcs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZp
ZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKSwgZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29u
dGV4dCgpKTsKICAgICBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnB1dChleGVjLCBpZGVu
dCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQpAQCAtMjY3LDcgKzI2
Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAg
SWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENv
bnRleHQoKSk7CiAgICAgYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSktPnB1
dERpcmVjdChleGVjLT52bSgpLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSks
IHNsb3QpOwogfQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBmYWxzZSwgZXhl
Yy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGFzT2JqZWN0KEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI4Nyw3ICsyODcsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlU3R1YgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZp
ZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmVTCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBp
ZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50
KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5
cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0s
IHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVp
ZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4o
c3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlU3R1CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlk
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsK
ICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHVi
SW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdAog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAg
SWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFj
Y2Vzc1R5cGUpOwogICAgIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cgog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAg
SWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFj
Y2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwpAQCAtMTM5MSwxMCArMTM5MSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QXJndW1lbnRzTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfCiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIC8vIEhlcmUg
d2UgY2FuIGFzc3VtZSB0aGF0IHRoZSBhcmd1bWVybnRzIHdlcmUgY3JlYXRlZC4gQmVjYXVzZSBv
dGhlcndpc2UgdGhlIEpJVCBjb2RlIHdvdWxkCiAgICAgLy8gaGF2ZSBub3QgbWFkZSB0aGlzIGNh
bGwuCi0gICAgSWRlbnRpZmllciBpZGVudCgmdm0sICJsZW5ndGgiKTsKICAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIpLmpzVmFsdWUoKTsK
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBzbG90KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYTEwNmM4ZDNkNGM2
MzY2MjQyMTI3ZTljODE1MzRjYTIzNGMxZGNhYy4uNTdlNzc2ZGIyNDdhZGMxZmJkNDYwMTQ1ODM5
YWU4YTc4NTQxMDU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTYxNSwxMSArNjE1LDExIEBA
IGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZ2V0RWxlbWVudCIsIGZ1bmN0aW9uR2V0RWxlbWVudCwgMSk7CiAgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0RWxlbWVudFJvb3QiLCBmdW5jdGlvblNldEVsZW1lbnRS
b290LCAyKTsKICAgICAgICAgCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0
aGlzLCBJZGVudGlmaWVyKCZ2bSwgIkRGR1RydWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1Ry
dWVJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgIk9TUkV4aXQiKSwgMCwg
ZnVuY3Rpb25VbmRlZmluZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVu
Y3Rpb24pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRp
Zmllcigmdm0sICJpc0ZpbmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlMiwgSXNGaW5hbFRpZXJJ
bnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgInByZWRpY3RJbnQzMiIpLCAw
LCBmdW5jdGlvblVuZGVmaW5lZDIsIFNldEludDMySGVhcFByZWRpY3Rpb25JbnRyaW5zaWMsIERv
bnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgImZpYXRJbnQ1MiIpLCAwLCBmdW5jdGlvbklkZW50
aXR5LCBGaWF0SW50NTJJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAg
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgIkRGR1RydWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1RydWVJbnRyaW5zaWMs
IERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk9TUkV4aXQiKSwgMCwg
ZnVuY3Rpb25VbmRlZmluZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVu
Y3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpc0ZpbmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlMiwg
SXNGaW5hbFRpZXJJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgInByZWRpY3RJbnQzMiIpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDIsIFNldEludDMySGVh
cFByZWRpY3Rpb25JbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImZpYXRJbnQ1MiIpLCAwLCBmdW5jdGlvbklkZW50aXR5LCBGaWF0SW50NTJJbnRyaW5z
aWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CiAgICAgICAgIAogICAgICAgICBhZGRGdW5j
dGlvbih2bSwgImVmZmVjdGZ1bDQyIiwgZnVuY3Rpb25FZmZlY3RmdWw0MiwgMCk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAibWFrZU1hc3F1ZXJhZGVyIiwgZnVuY3Rpb25NYWtlTWFzcXVlcmFk
ZXIsIDApOwpAQCAtNjQxLDIwICs2NDEsMjAgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4
KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsK
LSAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50
cyIpLCBhcnJheSk7CisgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogICAgICAgICAKLSAgICAgICAg
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNvbnNvbGUiKSwganNVbmRl
ZmluZWQoKSk7CisgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhn
bG9iYWxFeGVjKCksICJjb25zb2xlIiksIGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAogICAgIHZv
aWQgYWRkRnVuY3Rpb24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyKCZ2bSwgbmFtZSk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBp
ZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRp
Zmllci5zdHJpbmcoKSwgZnVuY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRDb25z
dHJ1Y3RhYmxlRnVuY3Rpb24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyKCZ2bSwgbmFtZSk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZt
LCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRl
bnRpZmllci5zdHJpbmcoKSwgZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5jdGlvbikpOwogICAg
IH0KIH07CkBAIC04ODYsNyArODg2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudChpKSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCi0gICAgICAgIGV4ZWMtPnZt
KCksIElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwg
YXJyYXkpOworICAgICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIEpTVmFs
dWUgZXhjZXB0aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CkBAIC0xMjY3LDcgKzEyNjcs
NyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNjcgogICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVz
XG4iLCByZXR1cm5WYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZh
bHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
aWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKICAgICAgICAgICAgIHByaW50ZigiRXhjZXB0aW9u
OiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2VwdGlvbi50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgICAgIElkZW50aWZpZXIgc3RhY2tJRChnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgInN0YWNrIik7CisgICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKICAg
ICAgICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24uZ2V0KGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKICAgICAgICAgICAgIGlmICghc3Rh
Y2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgICAgIHByaW50ZigiJXNc
biIsIHN0YWNrVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1
ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGFiMDE1MDFiMTI5MTdkOWVlODBl
ZDMxNTIzZjkyNThkYzQ0MmRhMmUuLmVkZmQ2NzAxZGMwZjNkNTkxY2IzNzhkMzk5OGNiN2Q0MmY5
MDRjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0x
NjMsNyArMTYzLDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAg
QVNTRVJUKGJpdHdpc2VfY2FzdDxpbnQqKj4oJnRlc3RWZWN0b3IpWzBdID09IHRlc3RWZWN0b3Iu
YmVnaW4oKSk7CiAjZW5kaWYKIAotICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJp
dEJ1ZmZlciA9PSAzMik7CisgICAgQVNTRVJUKFN0cmluZ0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVm
ZmVyID09IDgpOwogfQogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IGQ3MWEzZWZlNzY4OWRmOWRmNWU4NzllNjNlODI0N2FjODA0ODM5
NTcuLmE5MWU0Njc5MDZiNWFmZmZhNDdkZjdjZWU3YjVlNTJjNmZjMjNlNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAg
LTE3Niw3ICsxNzYsNyBAQCBjb25zdCBGdW5jdGlvbkNvZGUgPSAyCiBjb25zdCBMTEludFJldHVy
blBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAogCiAjIFN0cmluZyBmbGFncy4KLWNvbnN0
IEhhc2hGbGFnczhCaXRCdWZmZXIgPSAzMgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDgK
IAogIyBDb3BpZWQgZnJvbSBQcm9wZXJ0eU9mZnNldC5oCiBjb25zdCBmaXJzdE91dE9mTGluZU9m
ZnNldCA9IDEwMApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRl
eCBkZjNiZTFlOTQxMGZkY2Y1ZWJlYWNjZDg1MTU4NzYwZTVhZjg2ZjM5Li4yMDNiOTc5Yjg4ZjRi
ZjIwODFmOWJkYTI2ODYzOWQ0Y2ExNWU5ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaApAQCAtNTczLDcgKzU3Myw3IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewog
ICAgIHsKICAgICAgICAgaWYgKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRl
bnQpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7Ci0gICAgICAgIEFTU0VSVChpZGVudC0+
aW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKGlkZW50LT5pbXBsKCktPmlzQXRv
bWljKCkgfHwgaWRlbnQtPmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgICAgIG1fc2NvcGUubV92
YXJEZWNsYXJhdGlvbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCppZGVudCwgYXR0cnMpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA3OGZjMzdh
NzdlYmRlNDI5ZDBhY2E0ZmEzNDk4MjdhMjllYzhjMTM0Li43YzE2NDBjYmQ4MGY5NTg4Yjc1ZTIx
NGQ1NTNiOGNiNDE2M2MyZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0yODYsMTAgKzI4NiwxMCBAQAogICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJp
YWJsZXM7CiAgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewotICAg
ICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwg
dmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJp
YWJsZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzY29wZS0+
aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQor
ICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyOjpm
cm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMuaW1wbCgpKQpAQCAtNTE4LDcgKzUxOCw3IEBACiAgICAgQVNTRVJUKCFuYW1lLmlzRW1w
dHkoKSk7CiAgICAgQVNTRVJUKCFuYW1lLmlzTnVsbCgpKTsKICAgICAKLSAgICBBU1NFUlQobmFt
ZS5pbXBsKCktPmlzQXRvbWljKCkpOworICAgIEFTU0VSVChuYW1lLmltcGwoKS0+aXNBdG9taWMo
KSB8fCBuYW1lLmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgaWYgKGRlcHRoKSB7CiAgICAgICAg
IGlmIChraW5kID09IERlY29uc3RydWN0VG9WYXJpYWJsZXMpCiAgICAgICAgICAgICBmYWlsSWZG
YWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVjb25zdHJ1Y3Qg
dG8gYSB2YXJpYWJsZSBuYW1lZCAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXggNDI3Yjg0
Y2RhNTMyMzFhNTQ3MDZmNGNlZmVjM2Q4MWQ3OGI1MGRkYi4uNDBlY2U1M2EwYjY0NGMwODIwNzlj
MjJkZjBmOTQzYmMyNWRiZGEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaApAQCAtNzMsMjAgKzczLDIwIEBACiAgICAgICAgIGlmICghbGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuIHZtLT5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXI7CiAgICAg
ICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikgewotICAg
ICAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywg
bGVuZ3RoKSk7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIHJldHVybiBt
X2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoID09IDEp
IHsKICAgICAgICAgICAgIGlmIChJZGVudGlmaWVyKiBpZGVudCA9IG1fc2hvcnRJZGVudGlmaWVy
c1tjaGFyYWN0ZXJzWzBdXSkKICAgICAgICAgICAgICAgICByZXR1cm4gKmlkZW50OwotICAgICAg
ICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVu
Z3RoKSk7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIG1fc2hvcnRJZGVu
dGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9ICZtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAg
ICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgfQogICAgICAgICBJZGVu
dGlmaWVyKiBpZGVudCA9IG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07CiAgICAg
ICAgIGlmIChpZGVudCAmJiBJZGVudGlmaWVyOjplcXVhbChpZGVudC0+aW1wbCgpLCBjaGFyYWN0
ZXJzLCBsZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuICppZGVudDsKLSAgICAgICAgbV9pZGVu
dGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAg
ICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJh
Y3RlcnMsIGxlbmd0aCkpOwogICAgICAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNb
MF1dID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVy
cy5sYXN0KCk7CiAgICAgfQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgIGlmIChsZW5ndGgg
PT0gMSkgewogICAgICAgICAgICAgaWYgKElkZW50aWZpZXIqIGlkZW50ID0gbV9zaG9ydElkZW50
aWZpZXJzW2NoYXJhY3RlcnNbMF1dKQogICAgICAgICAgICAgICAgIHJldHVybiAqaWRlbnQ7Ci0g
ICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJz
LCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgICAgICAgICAgbV9zaG9y
dElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAg
ICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICB9CkBAIC0xMTYs
NyArMTE2LDcgQEAKICAgICAKICAgICBpbmxpbmUgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmll
ckFyZW5hOjptYWtlTnVtZXJpY0lkZW50aWZpZXIoVk0qIHZtLCBkb3VibGUgbnVtYmVyKQogICAg
IHsKLSAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgU3RyaW5nOjpu
dW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSkpOworICAgICAgICBtX2lkZW50aWZpZXJz
LmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlclRvU3RyaW5n
RUNNQVNjcmlwdChudW1iZXIpKSk7CiAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3Qo
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3Bw
CmluZGV4IDk4NTQ4ZDJhNDFkODZiNzdlNWQ1N2JmNDdmY2NmOTYwZjgyZmE4YjkuLmZkOTAzZTU0
ZDE4MGZkYmNjMmJjODViYzM0ODcyYTM1MmY4YmIzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtMTgwLDEwICsxODAsMTAgQEAgYm9vbCBBcmd1
bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmEKIAogICAgIGlmIChKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9y
UHJpdmF0ZU5hbWUpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5pdGVyYXRvclN5bWJvbCkgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOwotICAgICAgICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNUSU9OKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1lLCBhcmd1bWVudHNGdW5jSXRlcmF0b3Is
IERvbnRFbnVtLCAwKTsKKyAgICAgICAgdGhpc09iamVjdC0+SlNDX05BVElWRV9GVU5DVElPTihl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wsIGFyZ3VtZW50c0Z1bmNJdGVyYXRv
ciwgRG9udEVudW0sIDApOwogICAgICAgICBpZiAoSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQXJndW1lbnRzOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CiAgICAgfQotICAgIGlmIChzaG91bGRJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5jYWxsZWUpOwogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXgg
YWQ4Yjc1OTBkODVlNjU2YTkxMmI0YWE5OTE3NjBmYWQzNjMwNjBiZi4uZmMzNWE5ZmM1MTI4NGMw
NTRkMDBmZGU3ZmY4NmNmZjcwMTkyNDgzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAt
NDMsNyArNDMsNyBAQCB2b2lkIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0g
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVO
YW1lLCBhcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDAp
OworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1i
b2wsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7
CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBhcmd1bWVu
dHNJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlw
ZS5jcHAKaW5kZXggZjc2ODY4YzAzZWE1MzM4MDEwYTJiN2IwNjFmZjBkNDI5MDg1NGJjMi4uYjg2
MjY3NzAxZjQwOTkwNjgyNTU5M2MzZjlkNjQ1YmQxZmEzNmZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAK
QEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnBy
b3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yUHJvdG9G
dW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcnJheUl0ZXJhdG9yUHJvdG9GdW5jSXRlcmF0
b3IsIERvbnRFbnVtLCAwKTsKIH0KIAogYm9vbCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggM2ZkMDM0YTFjMzI4
NDYxYTQ2NWNlNjYyYzA5OGQyM2RlMWI0ODc0ZC4uYzRhNzBkODkzMTVlYTk5YzNmZTM5MGM3NGYy
MDYwYTBjYzFkODlkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci0gICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheVBy
b3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBEb250
RW51bSwgMCk7CiB9CiAKIGJvb2wgQXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTUzMCw3ICs1MzAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMs
IGxlbmd0aCArIG4sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKLSAgICAg
ICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKGV4ZWMsIEpTVmFsdWUoc3RhdGljX2Nhc3Q8
aW50NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhl
eGVjKSk7CisgICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsg
c3RhdGljX2Nhc3Q8aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgICAg
IHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCBzbG90KTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC03MzUsNyArNzM1LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIAogICAgIFBy
b3BlcnR5TmFtZUFycmF5IG5hbWVBcnJheShleGVjKTsKLSAgICB0aGlzT2JqLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqLCBleGVjLCBuYW1lQXJyYXks
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmosIGV4ZWMsIG5hbWVBcnJheSwgRW51
bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmNwcAppbmRleCA1NmRmMzQ1MDI4N2ZmOTk5YTM4ZmNmNGNiNzE1MGU4NjFhNTY0
M2U4Li5hNmQxOTFlNjVkNTM3ZTllMzAxNWZiZGZmOTliZDkxNDkwMGIwZGNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBA
IC0yMiwyNSArMjIsMjggQEAKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogCiAjaW5j
bHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNp
bmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCi0jZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShuYW1lKSAsIG5h
bWUodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNL
ZXl3b3JkKHZtLCAjbmFtZSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUp
ICwgbmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCisjZGVmaW5lIElOSVRJ
QUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgI25hbWUpKQogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5h
bWUjI1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQorI2Rl
ZmluZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1l
cy0+bmFtZSMjU3ltYm9sKCkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVy
cyhWTSogdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCiAgICAgLCBlbXB0eUlkZW50aWZpZXIo
SWRlbnRpZmllcjo6RW1wdHlJZGVudGlmaWVyKQotICAgICwgdW5kZXJzY29yZVByb3RvKHZtLCAi
X19wcm90b19fIikKLSAgICAsIHRoaXNJZGVudGlmaWVyKHZtLCAidGhpcyIpCi0gICAgLCB1c2VT
dHJpY3RJZGVudGlmaWVyKHZtLCAidXNlIHN0cmljdCIpCisgICAgLCB1bmRlcnNjb3JlUHJvdG8o
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fcHJvdG9fXyIpKQorICAgICwgdGhpc0lkZW50
aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRoaXMiKSkKKyAgICAsIHVzZVN0cmlj
dElkZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZSBzdHJpY3QiKSkKICAg
ICAsIG1fYnVpbHRpbk5hbWVzKG5ldyBCdWlsdGluTmFtZXModm0sIHRoaXMpKQogICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBK
U0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BF
UlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShJTklUSUFMSVpFX1BSSVZBVEVfTkFNRSkKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVf
SURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX1NZTUJPTCkKIHsK
IH0KIApAQCAtNDgsNiArNTEsMTYgQEAKIHsKIH0KIAorYm9vbCBDb21tb25JZGVudGlmaWVyczo6
aXNQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVp
bHRpbk5hbWVzLT5pc1ByaXZhdGVOYW1lKHVpZCk7Cit9CisKK2Jvb2wgQ29tbW9uSWRlbnRpZmll
cnM6OmlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5pc1ByaXZhdGVOYW1lKGlkZW50KTsKK30KKwogY29uc3Qg
SWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KSBjb25zdAogewogICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+Z2V0UHJp
dmF0ZU5hbWUoaWRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKaW5kZXggNmYzNGZhOTMwZDNiMTYyODc1ODBiYTQ1ZGQ1YjU3ZDQw
N2VkM2U0Ni4uZTYwMWI3NGRmMzRhMDNlMjcxMDE3MmRkNjc5YzQzY2JjOTdhMjM1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBA
IC0yMzQsNyArMjM0LDYgQEAKICAgICBtYWNybyh1bnNjb3BhYmxlKQogCiAjZGVmaW5lIEpTQ19D
T01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwKLSAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTCht
YWNybykgXAogICAgIG1hY3JvKGl0ZXJhdGVkT2JqZWN0KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVy
YXRvck5leHRJbmRleCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0aW9uS2luZCkgXApAQCAtMjk4
LDcgKzI5NywxMyBAQAogI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJP
UEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFt
ZTsKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlf
TkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwp
CiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xP
QkFMCi0gICAgICAgIAorCisjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9X
RUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNTeW1i
b2w7CisgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05P
V05fU1lNQk9MKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJP
TF9HTE9CQUwpCisjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05P
V05fU1lNQk9MX0dMT0JBTAorCisgICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZShTdHJpbmdJbXBs
KiB1aWQpIGNvbnN0OworICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYpIGNvbnN0OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShj
b25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKaW5kZXggNGRiYWY3YjQxN2RjNzA4ZmJjNmM3
MjUwOWYxOWY1NDRmMDFiOTZiZC4uZWRhMmNiMTRiNTU5NDczMDZmMzMwNDQ0Yjg5YzQwZTJjNzg0
YzBhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRp
b25Nb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25N
b2RlLmgKQEAgLTI4LDYzICsyOCw1MiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBFbnVt
ZXJhdGlvbk1vZGUgewotICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCi0gICAgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdCwKLSAgICBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzLAotICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3QK
LX07CitjbGFzcyBFbnVtZXJhdGlvbk1vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2ZsYWdJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzID0gMXUgPDwgMDsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnU2tpcEpTT2JqZWN0ID0gMXUgPDwgMTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnSW5jbHVkZVN5bWJvbHMgPSAxdSA8PCAyOworCisg
ICAgZW51bSBFbnVtZXJhdGlvbk1vZGVSZXByZXNlbnRhdGlvblRhZyA6IHVuc2lnbmVkIHsKKyAg
ICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyA9IDAsCisgICAgICAgIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyA9IHNfZmxhZ0luY2x1ZGVTeW1ib2xzLAor
ICAgICAgICBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzID0gc19mbGFnSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcywKKyAgICAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVT
eW1ib2xzID0gc19mbGFnSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyB8IHNfZmxhZ0luY2x1ZGVT
eW1ib2xzLAorICAgIH07CisKKyAgICBFbnVtZXJhdGlvbk1vZGUoRW51bWVyYXRpb25Nb2RlUmVw
cmVzZW50YXRpb25UYWcgdGFnKQorICAgICAgICA6IG1fZmxhZ3ModGFnKQorICAgIHsKKyAgICB9
CiAKLWlubGluZSBib29sIHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoRW51bWVyYXRp
b25Nb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzOgotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNr
aXBKU09iamVjdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGJvb2wgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mbGFncyAmIHNfZmxhZ0luY2x1ZGVEb250
RW51bVByb3BlcnRpZXM7CiAgICAgfQotfQogCi1pbmxpbmUgYm9vbCBzaG91bGRFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9k
ZSkgewotICAgIGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNlIEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHNob3VsZElu
Y2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICEobV9mbGFncyAmIHNfZmxhZ1NraXBKU09iamVjdCk7CiAgICAgfQotfQogCi1pbmxpbmUgYm9v
bCBzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKEVudW1lcmF0aW9uTW9kZSBtb2Rl
KQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllczoKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVj
dDoKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHNob3VsZEluY2x1ZGVTeW1ib2xzKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZsYWdzICYgc19mbGFnSW5jbHVkZVN5bWJvbHM7
CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
IAotaW5saW5lIEVudW1lcmF0aW9uTW9kZSBtb2RlVGhhdFNraXBzSlNPYmplY3QoRW51bWVyYXRp
b25Nb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
c0FuZFNraXBKU09iamVjdDsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0g
ICAgICAgIHJldHVybiBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0Owot
ICAgIGNhc2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICBj
YXNlIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJl
dHVybiBtb2RlOworICAgIHN0YXRpYyBFbnVtZXJhdGlvbk1vZGUgY3JlYXRlVGhhdFNraXBzSlNP
YmplY3QoRW51bWVyYXRpb25Nb2RlIG1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gRW51bWVy
YXRpb25Nb2RlKG1vZGUubV9mbGFncyB8IHNfZmxhZ1NraXBKU09iamVjdCk7CiAgICAgfQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBtb2RlOwotfQorCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IEVudW1lcmF0aW9uTW9kZSh1bnNpZ25lZCBmbGFncykKKyAgICAgICAgOiBt
X2ZsYWdzKGZsYWdzKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2ZsYWdzOworfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmNwcAppbmRleCA5MzBiNmZhZjZiYzFmYzY1ZGU5ZTYxYTFmYzdlNjJhOWU1ZmM2ODBlLi4zNjE1
NmExZTA1MTY4MWY1Y2ViNTYxODJiNmU0ZWI5NDI5YjhmNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0xMzcsMTcgKzEzNywxNyBAQCBKU09iamVjdCogYWRk
RXJyb3JJbmZvKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5l
LCBjb25zdCBTbwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMID0gc291cmNlLnByb3ZpZGVy
KCktPnVybCgpOwogCiAgICAgaWYgKGxpbmUgIT0gLTEpCi0gICAgICAgIGVycm9yLT5wdXREaXJl
Y3QoKnZtLCBJZGVudGlmaWVyKHZtLCBsaW5lUHJvcGVydHlOYW1lKSwganNOdW1iZXIobGluZSks
IFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBsaW5lUHJvcGVydHlOYW1lKSwganNOdW1iZXIobGlu
ZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkp
Ci0gICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVyKHZtLCBzb3VyY2VVUkxQ
cm9wZXJ0eU5hbWUpLCBqc1N0cmluZyh2bSwgc291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250RGVs
ZXRlKTsKKyAgICAgICAgZXJyb3ItPnB1dERpcmVjdCgqdm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHNvdXJjZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKHZtLCBzb3VyY2VVUkwpLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIHJldHVybiBlcnJvcjsKIH0KIAogCiBib29sIGhh
c0Vycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikKIHsKLSAgICByZXR1
cm4gZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgbGluZVByb3BlcnR5
TmFtZSkpCi0gICAgICAgIHx8IGVycm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4
ZWMsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBlcnJvci0+aGFzUHJvcGVy
dHkoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBsaW5lUHJvcGVydHlOYW1lKSkK
KyAgICAgICAgfHwgZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgc291cmNlVVJMUHJvcGVydHlOYW1lKSk7CiB9CiAKIEpTT2JqZWN0KiB0aHJvd1R5
cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDEwNWFhZWY3ZjA5YWFlMTUyYjg1ZjMy
MDhiMTRiYmY5MGExZjVhYzMuLjU0OTVkOTM3NWRkYjU0YTQ0NGU4YTUwMWI2ZjZiMDcyMjM1NjUw
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCkBAIC04MSw4ICs4MSw3IEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVVu
ZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkKIHsKLSAgICAKLSAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc1VuaXF1ZSgpKSB7CisgICAg
aWYgKGlkZW50LmltcGwoKS0+aXNTeW1ib2woKSAmJiBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQ
cml2YXRlTmFtZShpZGVudCkpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygi
Q2FuJ3QgZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdl
dFB1YmxpY05hbWUoaWRlbnQpLnN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVSZWZl
cmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggMDEzMmQwZTc1MjhlYTM2M2I4YzMxMzZlY2U1YjAw
OGM1MzlhMzhlZi4uZjdkZTlmZTk2YzEwNTBlZjZlNDJiOTI1YTI4YjBlYTY3ZTZhZGNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMzgsMjMgKzM4
LDYgQEAgY2xhc3MgSWRlbnRpZmllciB7CiAgICAgZW51bSBFbXB0eUlkZW50aWZpZXJGbGFnIHsg
RW1wdHlJZGVudGlmaWVyIH07CiAgICAgSWRlbnRpZmllcihFbXB0eUlkZW50aWZpZXJGbGFnKSA6
IG1fc3RyaW5nKFN0cmluZ0ltcGw6OmVtcHR5KCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+
aXNBdG9taWMoKSk7IH0KIAotICAgIC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRl
cmFscy4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+Ci0gICAgSWRlbnRp
ZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJz
Q291bnRdKSA6IG1fc3RyaW5nKGFkZChleGVjLCBjaGFyYWN0ZXJzKSkgeyBBU1NFUlQobV9zdHJp
bmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3Rl
cnNDb3VudD4KLSAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMp
W2NoYXJhY3RlcnNDb3VudF0pIDogbV9zdHJpbmcoYWRkKHZtLCBjaGFyYWN0ZXJzKSkgeyBBU1NF
UlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotCi0gICAgSWRlbnRpZmllcihFeGVj
U3RhdGUqLCBBdG9taWNTdHJpbmdJbXBsKik7Ci0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUqLCBj
b25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
aW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZChleGVjLCByZXApKSB7IEFTU0VSVChtX3N0cmlu
Zy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQoZXhlYywgcy5pbXBsKCkpKSB7IEFTU0VS
VChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIDogSWRlbnRpZmllcihleGVjLCBBdG9taWNTdHJpbmco
cykpIHsgfQotCi0gICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVu
Z3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1w
bCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBVQ2hhciog
cywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1f
c3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKFZNKiB2bSwgU3Ry
aW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZCh2bSwgcmVwKSkgeyBBU1NFUlQobV9zdHJpbmcu
aW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBTdHJp
bmcmIHMpIDogbV9zdHJpbmcoYWRkKHZtLCBzLmltcGwoKSkpIHsgQVNTRVJUKG1fc3RyaW5nLmlt
cGwoKS0+aXNBdG9taWMoKSk7IH0KLQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmc7IH0KICAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KG1fc3RyaW5nLmltcGwoKSk7
IH0KIApAQCAtNjMsMTIgKzQ2LDMzIEBAIGNsYXNzIElkZW50aWZpZXIgewogICAgIENTdHJpbmcg
YXNjaWkoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5hc2NpaSgpOyB9CiAgICAgQ1N0cmluZyB1
dGY4KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudXRmOCgpOyB9CiAKLSAgICBzdGF0aWMgSWRl
bnRpZmllciBmcm9tKGNvbnN0IFByaXZhdGVOYW1lJiBuYW1lKQotICAgIHsKLSAgICAgICAgSWRl
bnRpZmllciByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3N0cmluZyA9IG5hbWUudWlkKCk7Ci0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICAgIC8vIFRoZXJlJ3MgMiBmdW5jdGlvbnMg
dG8gY29uc3RydWN0IElkZW50aWZpZXIgZnJvbSBzdHJpbmcsICgxKSBmcm9tU3RyaW5nIGFuZCAo
MikgZnJvbVVpZC4KKyAgICAvLyBUaGV5IGhhdmUgZGlmZmVyZW50IG1lYW5pbmdzIGluIGtlZXBp
bmcgb3IgZGlzY2FyZGluZyBzeW1ib2wtbmVzcyBvZiBzdHJpbmdzLgorICAgIC8vICgxKTogZnJv
bVN0cmluZworICAgIC8vIEp1c3QgY29uc3RydWN0IElkZW50aWZpZXIgZnJvbSBzdHJpbmcuIFN0
cmluZyBoZWxkIGJ5IElkZW50aWZpZXIgaXMgYWx3YXlzIGF0b21pemVkLgorICAgIC8vIFN5bWJv
bC1uZXNzIG9mIFN0cmluZ0ltcGwqLCB3aGljaCByZXByZXNlbnRzIHRoYXQgdGhlIHN0cmluZyBp
cyBpbnRlZGVkIHRvIGJlIHVzZWQgZm9yIEVTNiBTeW1ib2xzLCBpcyBkaXNjYXJkZWQuCisgICAg
Ly8gU28gYSBjb25zdHJ1Y3RlZCBJZGVudGlmaWVyIG5ldmVyIHJlcHJlc2VudHMgYSBzeW1ib2wu
CisgICAgLy8gKDIpOiBmcm9tVWlkCisgICAgLy8gYFN0cmluZ0ltcGwqIHVpZGAgcmVwcmVzZW50
cyBldGhlciBTdHJpbmcgb3IgU3ltYm9sIHByb3BlcnR5LgorICAgIC8vIGZyb21VaWQga2VlcHMg
c3ltYm9sLW5lc3Mgb2YgcHJvdmlkZWQgU3RyaW5nSW1wbCogd2hpbGUgZnJvbVN0cmluZyBkaXNj
YXJkcyBpdC4KKyAgICAvLyBVc2UgZnJvbVVpZCB3aGVuIGNvbnN0cnVjdGluZyBJZGVudGlmaWVy
IGZyb20gU3RyaW5nSW1wbCogd2hpY2ggbWF5IHJlcHJlc2VudCBzeW1ib2xzLgorCisgICAgLy8g
T25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgIHRlbXBsYXRlPHVuc2ln
bmVkIGNoYXJhY3RlcnNDb3VudD4KKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZN
KiwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pOworICAgIHRlbXBs
YXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
U3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291
bnRdKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgTENoYXIq
LCBpbnQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29u
c3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5n
KFZNKiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhF
eGVjU3RhdGUqLCBBdG9taWNTdHJpbmdJbXBsKik7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJv
bVN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBzdGF0aWMgSWRl
bnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRp
YyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOworCisgICAg
c3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChWTSosIFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbVVpZChFeGVjU3RhdGUqLCBTdHJpbmdJbXBsKiB1aWQpOworICAg
IHN0YXRpYyBJZGVudGlmaWVyIGZyb21VaWQoY29uc3QgUHJpdmF0ZU5hbWUmKTsKIAogICAgIHN0
YXRpYyBJZGVudGlmaWVyIGNyZWF0ZUxDaGFyRnJvbVVDaGFyKFZNKiB2bSwgY29uc3QgVUNoYXIq
IHMsIGludCBsZW5ndGgpIHsgcmV0dXJuIElkZW50aWZpZXIodm0sIGFkZDgodm0sIHMsIGxlbmd0
aCkpOyB9CiAKQEAgLTEwNSw2ICsxMDksMjAgQEAgY2xhc3MgSWRlbnRpZmllciB7CiBwcml2YXRl
OgogICAgIFN0cmluZyBtX3N0cmluZzsKIAorICAgIC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0
cmluZyBsaXRlcmFscy4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+Cisg
ICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJz
Q291bnRdKSA6IG1fc3RyaW5nKGFkZCh2bSwgY2hhcmFjdGVycykpIHsgQVNTRVJUKG1fc3RyaW5n
LmltcGwoKS0+aXNBdG9taWMoKSk7IH0KKworICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBM
Q2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNT
RVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KKyAgICBJZGVudGlmaWVyKFZNKiB2
bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5n
dGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CisgICAgSWRlbnRp
ZmllcihFeGVjU3RhdGUqLCBBdG9taWNTdHJpbmdJbXBsKik7CisgICAgSWRlbnRpZmllcihFeGVj
U3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29u
c3QgU3RyaW5nJiBzdHJpbmcpIDogbV9zdHJpbmcoYWRkKHZtLCBzdHJpbmcuaW1wbCgpKSkgeyBB
U1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorICAgIElkZW50aWZpZXIoVk0q
IHZtLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRkKHZtLCByZXApKSB7IEFTU0VSVCht
X3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CisKKyAgICBlbnVtIFVuaXF1ZUlkZW50aWZp
ZXJGbGFnIHsgVW5pcXVlSWRlbnRpZmllciB9OworICAgIElkZW50aWZpZXIoVW5pcXVlSWRlbnRp
ZmllckZsYWcsIFN0cmluZ0ltcGwqIHVpZCkgOiBtX3N0cmluZyh1aWQpIHsgQVNTRVJUKG1fc3Ry
aW5nLmltcGwoKS0+aXNTeW1ib2woKSk7IH0KKwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMkZyb21DaGFy
YWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wm
IG9rKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggNzQ3MmQ4NDdkNzViMzAzZTY0NTRmMDZkNjllZDZmYzVlZTY5MjNhYy4u
NDA2MjIxYTYzYWFkOTY1ZjQ3MzBlNDY4ODM0NzM2N2MzYjI2NzA0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0zNyw3ICsz
Nyw3IEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgQXRv
bWljU3RyaW5nSW1wbCogc3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICBjaGVja0N1cnJlbnRB
dG9taWNTdHJpbmdUYWJsZShleGVjKTsKICAgICBpZiAoc3RyaW5nKQotICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFzdHJpbmctPmxlbmd0aCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21p
Y1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90
aGVyIHRocmVhZCEiKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLT5sZW5n
dGgoKSB8fCBzdHJpbmctPmlzU3ltYm9sKCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3Ry
aW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIg
dGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAjZW5kaWYKQEAgLTQ5
LDcgKzQ5LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tD
dXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhlYyk7CiAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkp
Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBBdG9taWNT
dHJpbmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9taWMg
c3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgc3RyaW5nLmltcGwoKS0+aXNTeW1ib2woKSB8
fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRo
ZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAjZW5kaWYKQEAgLTcwLDYgKzcwLDcwIEBAIGlubGluZSBJ
ZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5n
JiBzdHJpbmcpCiAgICAgcmV0dXJuICpBdG9taWNTdHJpbmc6OmFkZFdpdGhTdHJpbmdUYWJsZVBy
b3ZpZGVyKCp2bSwgcik7CiB9CiAKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21V
aWQoVk0qIHZtLCBTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgaWYgKCF1aWQgfHwgIXVpZC0+aXNT
eW1ib2woKSkKKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHVpZCk7CisgICAgcmV0dXJu
IElkZW50aWZpZXIoVW5pcXVlSWRlbnRpZmllciwgdWlkKTsKK30KKworaW5saW5lIElkZW50aWZp
ZXIgSWRlbnRpZmllcjo6ZnJvbVVpZChFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHVpZCkK
K3sKKyAgICByZXR1cm4gZnJvbVVpZCgmZXhlYy0+dm0oKSwgdWlkKTsKK30KKworaW5saW5lIElk
ZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVVpZChjb25zdCBQcml2YXRlTmFtZSYgbmFtZSkKK3sK
KyAgICByZXR1cm4gSWRlbnRpZmllcihVbmlxdWVJZGVudGlmaWVyLCBuYW1lLnVpZCgpKTsKK30K
KwordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgoraW5saW5lIElkZW50aWZpZXIg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSogdm0sIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtj
aGFyYWN0ZXJzQ291bnRdKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJz
KTsKK30KKwordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgoraW5saW5lIElkZW50
aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIg
KCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKQoreworICAgIHJldHVybiBJZGVudGlmaWVy
KCZleGVjLT52bSgpLCBjaGFyYWN0ZXJzKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhWTSogdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKQorewor
ICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBzLCBsZW5ndGgpOworfQorCitpbmxpbmUgSWRlbnRp
ZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBs
ZW5ndGgpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHMsIGxlbmd0aCk7Cit9CisKK2lu
bGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBTdHJp
bmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgc3RyaW5nLmltcGwoKSk7
Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcigm
ZXhlYy0+dm0oKSwgc3RyaW5nLmltcGwoKSk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBBdG9taWNTdHJpbmdJbXBsKiBhdG9t
aWNTdHJpbmcpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgYXRvbWljU3RyaW5nKTsK
K30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgYXRvbWljU3RyaW5nKQoreworICAgIHJldHVybiBJ
ZGVudGlmaWVyKGV4ZWMsIGF0b21pY1N0cmluZyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKQorewor
ICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIEF0b21pY1N0cmluZyhzKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSWRlbnRpZmllcklubGluZXNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAyMGQ0OWRiOGJhMmUyYzU4NTUw
NjY3NDllZjlkZjUxNTU0MTU3NjgxLi5jMWIwNGE2ZTIyZWQyOGEyZjkzZDIzMGQ1NjNjMzA4ZTYy
NmUxMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAt
MjI2LDcgKzIyNiw3IEBAIHZvaWQgSlNBcnJheTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiB7CiAgICAgSlNBcnJheSog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKIAotICAgIGlmIChzaG91bGRJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKICAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCBj
MWNhZDEwNWM3ZTBkNWFkN2VmZDI5NmEzYmVmMDY5NmM5NWY2MDA3Li41YjY2YzQ0ZjNlODE4NDI1
MDA4YjYwYWVkNDI2MTNhYmM3ZTE4ZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSlNBcnJh
eUJ1ZmZlcjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAogewogICAgIEpTQXJyYXlCdWZm
ZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KG9iamVjdCk7CiAgICAgCi0g
ICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1v
ZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBhcnJheS5hZGQo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5ndGgpOwogICAgIAogICAgIEJhc2U6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5j
cHAKaW5kZXggMGExMTZjMDYwNzhiZDgwMDNiNmRmMjllNzM1MjViOGFjYTRlMTQ2NS4uNjA3ZTM0
ODE2YmUyNjY3ZjU4ZTYxZDVlOTZmMWQ0ZTZhZDIxYzNkNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMjAxLDcgKzIw
MSw3IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cygKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVm
ZmVyVmlldyo+KG9iamVjdCk7CiAgICAgCiAgICAgLy8gbGVuZ3RoL2J5dGVPZmZzZXQvYnl0ZUxl
bmd0aCBhcmUgRG9udEVudW0sIGF0IGxlYXN0IGluIEZpcmVmb3guCi0gICAgaWYgKHNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAgICBpZiAobW9kZS5zaG91bGRJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5ieXRlT2Zmc2V0KTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5ieXRlTGVuZ3RoKTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5idWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAppbmRleCA0ODc1NmJhM2IzM2Y2Y2RlODkwNGUwMWY3ZjdiMDkzNGRkM2UwYWQ3Li43ZDYx
Y2EyZDkwMjFkODBjN2UyYzk2NzBkZmRiMjE1NjcwY2UyNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjMzLDggKzIzMyw4IEBAIHZvaWQg
SlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogICAgICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAoYXRvbWljKSIpOwogICAgICAgICAgICAgICAgIGlmIChpbXBsLT5p
c0F0b21pYygpKQogICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAoaWRlbnRpZmllciki
KTsKLSAgICAgICAgICAgICAgICBpZiAoaW1wbC0+aXNVbmlxdWUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50KCIgKHVuaXF1ZSkiKTsKKyAgICAgICAgICAgICAgICBpZiAoaW1wbC0+
aXNTeW1ib2woKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKHN5bWJvbCkiKTsK
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG91dC5wcmludCgiICh1bnJlc29s
dmVkKSIpOwogICAgICAgICAgICAgb3V0LnByaW50KCI6ICIsIGltcGwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKaW5kZXggZGVkOGM4NTgwYjBhYzM1ZDRkOTc3MTZh
MDBhZGYwODBkY2I2ZTJlZS4uMzJhY2FkNTIwZDViNDAzYmQxNDcyMWJhYmZlNjlmNDI0MmU1OGVm
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCkBAIC0xMDEsNyAr
MTAxLDcgQEAgY2xhc3MgSlNDYWxsZWUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qgewog
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEVudW1lcmF0aW9uTW9k
ZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyB2b2lkIHB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCmluZGV4IDg1MWI2NmYxNWIzNjYwNzM1NjIzNjkyMDU3N2U4MWE3NjhkMWQ1NWIuLjVi
ZWM4NTg5OTkxNTYyYThlMjRkODAyNjc4ZGIwYTEyZTc2NmFiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgYm9v
bCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU4KIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTRnVu
Y3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYg
KCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIHNob3VsZEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKCkgJiYgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KCkpIHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgLy8gTWFrZSBzdXJl
IHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0
aGlzT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApp
bmRleCBiZTBiZGM3ODQyZjk3MzNjNzZiMDY0NDNiZGEzNjYxNDE4ZWE1OTk3Li4zNGVkNDA4YjVk
MWIwODFmZmI0YjRjOWFhZjg2OWM1ZmE0OWQ0NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xMzgsNyArMTM4LDcgQEAgY2xhc3MgSlNGdW5jdGlv
biA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIGNyZWF0
ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBhY2l0eSk7CiAK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
c3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA0MDFiOGRhMmQ4NDQ3NjJl
NWEzY2U2Y2FmYmZlZDM2MDI5NDBmN2ZjLi4yNDM3NGY2MGZjMTgyMjc4NzI5ZDA2M2FjYzFhODFi
MTBmNzFiODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNDE1LDcgKzQxNSw3
IEBACiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwogICAgIAotICAgIGlmIChzaG91bGRJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpOwogICAgIAogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggN2EwYjc1OTQyOWE5N2M0
MTU1MTRmMzhlMzg5OGRjZjhjYjY4OGEzNi4uOWNhZDllNDRhYmRkODg2ZmViMzZjMmI3YmVlOWE4
OTE4YWVkNGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoVk0mIHZtKQogICAgIAogICAgIC8vIENvbnN0cnVjdG9ycwogICAgIAotICAgIE9iamVjdENv
bnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2JqZWN0
Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKICAg
ICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwog
ICAgIEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAg
ICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpKTsKQEAgLTQxMCw3ICs0MTAs
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICBmb3IgKHVu
c2lnbmVkIHR5cGVkQXJyYXlJbmRleCA9IE5VTUJFUl9PRl9UWVBFRF9BUlJBWV9UWVBFUzsgdHlw
ZWRBcnJheUluZGV4LS07KSB7CiAgICAgICAgIG1fdHlwZWRBcnJheXNbdHlwZWRBcnJheUluZGV4
XS5wcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5SW5kZXhd
LCBEb250RW51bSk7Ci0gICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyKGV4ZWMsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XS0+bmFt
ZShleGVjKSksIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVu
dW0pOworICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0t
Pm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0sIERv
bnRFbnVtKTsKICAgICB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogYnVpbHRpbkxvZyA9IEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlm
aWVyLnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZyk7CkBAIC00NDYsNyArNDQ2LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgQ29uc29sZVByb3RvdHlwZSog
Y29uc29sZVByb3RvdHlwZSA9IENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQ29u
c29sZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpOwogICAgIG1fY29uc29sZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQ29uc29s
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBjb25zb2xlUHJvdG90eXBlKSk7CiAgICAgSlND
b25zb2xlKiBjb25zb2xlT2JqZWN0ID0gSlNDb25zb2xlOjpjcmVhdGUodm0sIG1fY29uc29sZVN0
cnVjdHVyZS5nZXQoKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXIoZXhlYywgImNvbnNvbGUiKSwgY29uc29sZU9iamVjdCwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJjb25zb2xlIiksIGNvbnNvbGVPYmplY3QsIERvbnRFbnVtKTsKIAogICAgIHJlc2V0UHJvdG90
eXBlKHZtLCBwcm90b3R5cGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA5MDM1NDZiMDc0YTFjMTI3YzdlOTlhYjQxOWQ3NzJm
ODMxZWIyMWM1Li4wODFlM2RkNjk0NWRkZGE4OTNjN2Q2Y2EwNWRmMTdjZmZjOTEzYjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTMw
Niw2ICszMDYsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKIAogICAgIGJvb2wgaGFzRGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBt
X2RlYnVnZ2VyOyB9CiAgICAgYm9vbCBoYXNQcm9maWxlcigpIGNvbnN0IHsgcmV0dXJuIGdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUHJvZmlsaW5nKHRoaXMpOyB9CisgICAgY29u
c3QgUnVudGltZUZsYWdzJiBydW50aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3J1bnRpbWVG
bGFnczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgSlNH
bG9iYWxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSogPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmNwcAppbmRleCA4NDAzN2EzNDVmOTllODUwMGJmNmQwNTZhNTE4NDlk
YzE5YjU2ZmEwLi4wM2M3ZTM0NmUyN2ZlODlkNzJlMWUyMDliN2ZmNmNlZTJjNGE5MzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwCkBAIC0xMTQsMTEgKzExNCwxNyBAQCB2b2lkIEpTTGV4aWNhbEVudmlyb25tZW50
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YQog
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1ib2xUYWJs
ZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0
aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1i
b2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJl
Z2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKGl0LT52YWx1
ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSAmJiAhc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyhtb2RlKSkKKyAgICAgICAgICAgIGlmIChpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygp
ICYgRG9udEVudW0gJiYgIW1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5p
c1ZhbGlkKGl0LT52YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFtb2RlLnNob3VsZEluY2x1ZGVTeW1ib2xzKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIGlmIChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRl
TmFtZShpdC0+a2V5LmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
VWlkKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KICAgICAvLyBTa2lw
IHRoZSBKU0Vudmlyb25tZW50UmVjb3JkIGltcGxlbWVudGF0aW9uIG9mIGdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0
LmNwcAppbmRleCBiZGI4MjFjZGY1NjQ4MGQ2OGRjMWM0ZGEyZWQwNTZjYjU1ODFlMWE5Li5jODk4
YTM0Mjg1OTViNmQxMTkzMmMwZWE4ZTBkOWI4MGYxYmEzNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNDkwLDcgKzQ5MCw3IEBAIGJvb2wg
U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJp
bmdpZmllciwgU3RyaW5nQnVpCiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzID0gc3Ry
aW5naWZpZXIubV9hcnJheVJlcGxhY2VyUHJvcGVydHlOYW1lcy5kYXRhKCk7CiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBvYmplY3RQcm9wZXJ0
eU5hbWVzKGV4ZWMpOwotICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG1fb2JqZWN0LmdldCgpLCBleGVjLCBvYmplY3RQcm9wZXJ0eU5h
bWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBtX29iamVj
dC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQoKSwgZXhl
Yywgb2JqZWN0UHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMgPSBvYmplY3RQcm9w
ZXJ0eU5hbWVzLnJlbGVhc2VEYXRhKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3Np
emUgPSBtX3Byb3BlcnR5TmFtZXMtPnByb3BlcnR5TmFtZVZlY3RvcigpLnNpemUoKTsKQEAgLTcw
Nyw3ICs3MDcsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1
bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0KTsKICAg
ICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAgICAg
ICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBt
X2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
KyAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6
OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
b2JqZWN0U3RhcnRWaXNpdE1lbWJlcjoKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGRiMmE3MjJjYmE4ODVj
ODA4NmRlYjc5MGMyYzI4NTczNzRmNmY3OTkuLmVkMTNlYTBhOGJlM2IzNTI5YWIyNmQ4NDMxNjJj
MzA0M2NlZjQ5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKQEAgLTc4LDggKzc4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0
ZXIgIT0gdGFibGUtPmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmICgoIShpdGVyLT5h
dHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyhtb2RlKSkgJiYgISgoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pICYm
IGRpZFJlaWZ5KSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
KCZ2bSwgaXRlci5rZXkoKSkpOworICAgICAgICAgICAgaWYgKCghKGl0ZXItPmF0dHJpYnV0ZXMo
KSAmIERvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkg
JiYgISgoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5
KSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgaXRlci5rZXkoKSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTUxOCw3ICsx
NTE4LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUEKIAogdm9pZCBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBp
ZiAoIXNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMobW9kZSkpIHsKKyAgICBpZiAo
IW1vZGUuc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcygpKSB7CiAgICAgICAgIC8v
IFdlIHN0aWxsIGhhdmUgdG8gZ2V0IG5vbi1pbmRleGVkIHByb3BlcnRpZXMgZnJvbSBhbnkgc3Vi
Y2xhc3NlcyBvZiBKU09iamVjdCB0aGF0IGhhdmUgdGhlbS4KICAgICAgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1NzIsNyAr
MTU3Miw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7
CiAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBpZiAo
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSB8fCAhKGl0LT52YWx1ZS5hdHRy
aWJ1dGVzICYgRG9udEVudW0pKQorICAgICAgICAgICAgICAgIGlmIChtb2RlLnNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMoKSB8fCAhKGl0LT52YWx1ZS5hdHRyaWJ1dGVzICYgRG9udEVu
dW0pKQogICAgICAgICAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaXQtPmtleSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0x
NTk0LDcgKzE1OTQsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcgogewogICAgIGdldENsYXNz
UHJvcGVydHlOYW1lcyhleGVjLCBvYmplY3QtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlLCBvYmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSk7CiAKLSAgICBpZiAoIXNob3Vs
ZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMobW9kZSkpCisgICAgaWYgKCFtb2RlLnNob3Vs
ZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNjc5LDcgKzE2NzksNyBAQCB2b2lkIEpTT2Jq
ZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAgICAgICBmb3IgKGF1dG8gaXRlciA9IGhh
c2hUYWJsZS0+YmVnaW4oKTsgaXRlciAhPSBoYXNoVGFibGUtPmVuZCgpOyArK2l0ZXIpIHsKICAg
ICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKLSAg
ICAgICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpLCBpdGVyLnZhbHVlKCksIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLmtleSgp
KSwgc2xvdCk7CisgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaXRlci52YWx1ZSgpLCB0aGlzLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgaXRlci5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0yODAwLDcgKzI4MDAsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogdm9pZCBKU09iamVj
dDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGVUaGF0U2tpcHNKU09iamVjdChtb2RlKSk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGU6OmNyZWF0ZVRoYXRTa2lwc0pTT2JqZWN0KG1vZGUpKTsKIAogICAgIGlmIChvYmpl
Y3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAzZjVlMjVkMTViMDNlNjBkNTc4YzgzNGMz
ZmQ1MDkyNzY4YWRhMGQ0Li43ODY3NzVhMGRjNDljMTIzMDdkYWY0NTIyMTZhYjc4MzRlMWFiODdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE1NTQsNyAr
MTU1NCw3IEBAIGlubGluZSBpbnQgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQogCiBBTFdBWVNfSU5MSU5FIElkZW50aWZpZXIgbWFrZUlkZW50aWZpZXIoVk0mIHZt
LCBjb25zdCBjaGFyKiBuYW1lKQogewotICAgIHJldHVybiBJZGVudGlmaWVyKCZ2bSwgbmFtZSk7
CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBuYW1lKTsKIH0KIAogQUxX
QVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCBhZmRmYzI3ZDIwYTg2NWEzNDNhZjIxZDVjNzQ4OGRj
NDM2NWIxNzE1Li5iOGE1YWRhZTk4N2U0MDM3ZDY1NWUwYTNmNmFkMDI4Zjg0MWUyNmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3Ry
dWN0b3IuY3BwCkBAIC0zMTcsNyArMzE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSYWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1By
b21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBqc0Nhc3Q8SlNQcm9taXNlRGVmZXJyZWQqPihkZWZl
cnJlZFZhbHVlKTsKIAogICAgIC8vIDQuIExldCAnaXRlcmF0b3InIGJlIHRoZSByZXN1bHQgb2Yg
Y2FsbGluZyBHZXRJdGVyYXRvcihpdGVyYWJsZSkuCi0gICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0
aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0
ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFicnVwdFJlamVjdGlv
bihleGVjLCBkZWZlcnJlZCkpOwogCkBAIC00ODAsNyArNDgwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNBbGwoRXhlY1N0YXRlKiBleGVj
KQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IGpzQ2FzdDxKU1Byb21pc2VEZWZl
cnJlZCo+KGRlZmVycmVkVmFsdWUpOwogCiAgICAgLy8gNC4gTGV0ICdpdGVyYXRvcicgYmUgdGhl
IHJlc3VsdCBvZiBjYWxsaW5nIEdldEl0ZXJhdG9yKGl0ZXJhYmxlKS4KLSAgICBKU1ZhbHVlIGl0
ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFi
bGUuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYWJy
dXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXggZWUx
OGFiZjZlYjNmMzJjZmMwMTI5MWViMTQ0NzQwZWY3OGE5NmExYy4uMGI5ZTczOWY1YTcwMzk2OWE1
NDA2M2VmMDkzZDU3NTNiODAyMzI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKQEAgLTExMyw3ICsxMTMs
NyBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBzdHJ1Y3R1cmVQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICByZXR1cm4gSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpjcmVhdGUodm0pOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVy
dHlOYW1lcyhleGVjKTsKLSAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFN0cnVjdHVyZVBy
b3BlcnR5TmFtZXMoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRTdHJ1Y3R1cmVQcm9wZXJ0
eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVu
dW1lcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJl
LCBwcm9wZXJ0eU5hbWVzKTsKICAgICBpZiAoc3RydWN0dXJlLT5jYW5DYWNoZVN0cnVjdHVyZVBy
b3BlcnR5TmFtZUVudW1lcmF0b3IoKSkKQEAgLTE0Miw5ICsxNDIsOSBAQCBpbmxpbmUgSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKiBnZW5lcmljUHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3Rh
dGUqIGV4ZWMsCiAgICAgLy8gdGhlIG5ldyBnZW5lcmljIFByb3BlcnR5TmFtZUFycmF5IGFuZCBm
YWlsaW5nIGJlY2F1c2Ugd2UndmUgYWxyZWFkeSB2aXNpdGVkIHRoZW0uCiAgICAgU3RydWN0dXJl
KiBjYWNoZWRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVFbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmUo
dm0pOwogICAgIGlmIChzdHJ1Y3R1cmUgPT0gY2FjaGVkU3RydWN0dXJlICYmIHN0cnVjdHVyZS0+
Y2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHkoKSAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obGVu
Z3RoKSA9PSBiYXNlLT5nZXRBcnJheUxlbmd0aCgpKQotICAgICAgICBiYXNlLT5tZXRob2RUYWJs
ZSh2bSktPmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2
bSktPmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZWxzZQotICAg
ICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMoYmFzZSwgZXhlYywg
cHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIGJhc2Ut
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIAog
ICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIHN0cnVjdHVyZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDI4MWFlNDYyMDM5MjA0YjQ1Mjhi
NGVhNTExYzA3NWM2ZTg1ZWZiZDkuLmMxYWYwY2FlMWM2MjNiMzYyY2Y0ZGIzNjJiNWM5NTQ5NWU4
Yzc0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtNDY3
LDcgKzQ2Nyw3IEBAIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKFZNKiB2bSwg
U3RyaW5nJiYgcykKIAogQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpTU3RyaW5nOjp0b0lkZW50
aWZpZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIHJldHVybiBJZGVudGlmaWVyKGV4
ZWMsIHRvQXRvbWljU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCB0b0F0b21pY1N0cmluZyhleGVjKSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgQXRv
bWljU3RyaW5nIEpTU3RyaW5nOjp0b0F0b21pY1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuY3BwCmluZGV4IGI4ZmIyMjgyYWZhZTg3ZWNjNDExMDI0NWNlOWJiODczZTk1MGYwZmYu
LjcxNGMxYTBmY2I5MTQzMGI2ZDRkNDQzN2Y3YjVkYzkzYWI3MTZhYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCkBA
IC02MSwxMCArNjEsMTUgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsK
ICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3lt
Ym9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6
aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1VuaXF1ZSgpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdl
dEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKG1vZGUpKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIo
ZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0
dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghbW9kZS5zaG91bGRJbmNsdWRlU3ltYm9scygpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRlTmFtZShpdC0+a2V5LmdldCgpKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGl0LT5r
ZXkuZ2V0KCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggZjZm
NWZlMTczYzcwNGVkZTBmNjUzYjY4MzhlMDk4MDZjYTQ0MmViNy4uZDQ1NDRhNGY2ZjI2Y2FhOGMz
ODQ1ZGFmMGZjYWZlNzMyMzI4YmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTU3LDE3ICs1NywxNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNKU09OV2hpdGVTcGFjZShjb25zdCBDaGFyVHlwZSYgYykKICAgICBkbyB7CiAgICAg
ICAgIFZlY3RvcjxKU09OUFBhdGhFbnRyeT4gcGF0aDsKICAgICAgICAgLy8gVW5ndWFyZGVkIG5l
eHQgdG8gc3RhcnQgb2ZmIHRoZSBsZXhlcgotICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSBJZGVu
dGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4
ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7Cisg
ICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+
dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4o
KS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKICAgICAgICAgSlNPTlBQYXRo
RW50cnkgZW50cnk7CiAgICAgICAgIGlmIChuYW1lID09IG1fZXhlYy0+dm0oKS5wcm9wZXJ0eU5h
bWVzLT52YXJLZXl3b3JkKSB7CiAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9r
SWRlbnRpZmllcikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBl
bnRyeS5tX3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVEZWNsYXJlOwotICAgICAgICAgICAgZW50
cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1
cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIu
Y3VycmVudFRva2VuKCkuc3RhcnQpOworICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRU
b2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVu
dFRva2VuKCkuc3RhcnQpOwogICAgICAgICAgICAgcGF0aC5hcHBlbmQoZW50cnkpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgZW50cnkubV90eXBlID0gSlNPTlBQYXRoRW50cnlUeXBl
RG90OwotICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcigmbV9l
eGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRU
b2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOworICAgICAgICAgICAg
ZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52
bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigp
LmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOwogICAgICAgICAgICAgcGF0aC5h
cHBlbmQoZW50cnkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2V4ZWMtPnZtKCkua2V5d29y
ZHMtPmlzS2V5d29yZChlbnRyeS5tX3BhdGhFbnRyeU5hbWUpKQpAQCAtOTQsNyArOTQsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNKU09OV2hpdGVTcGFjZShjb25zdCBDaGFyVHlwZSYgYykKICAg
ICAgICAgICAgICAgICBlbnRyeS5tX3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVEb3Q7CiAgICAg
ICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0lkZW50aWZpZXIpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBlbnRyeS5tX3BhdGhF
bnRyeU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2Vu
KCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9r
ZW4oKS5zdGFydCk7CisgICAgICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigp
LnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2Vu
KCkuc3RhcnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FzZSBUb2tMUGFyZW46IHsKQEAgLTEzNSwxNyArMTM1LDE3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENoYXJUeXBlJiBjKQogICAgIGlmICghbGVu
Z3RoKQogICAgICAgICByZXR1cm4gbV9leGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRl
bnRpZmllcjsKICAgICBpZiAoY2hhcmFjdGVyc1swXSA+PSBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0
ZXIpCi0gICAgICAgIHJldHVybiBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMs
IGxlbmd0aCk7CisgICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMt
PnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAKICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAg
ICAgICAgaWYgKCFtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwotICAg
ICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4
ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgICAgIG1fc2hvcnRJZGVudGlmaWVy
c1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwg
Y2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIG1fc2hvcnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXTsKICAgICB9CiAgICAgaWYgKCFtX3JlY2VudElkZW50aWZpZXJzW2NoYXJh
Y3RlcnNbMF1dLmlzTnVsbCgpICYmIElkZW50aWZpZXI6OmVxdWFsKG1fcmVjZW50SWRlbnRpZmll
cnNbY2hhcmFjdGVyc1swXV0uaW1wbCgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKQogICAgICAgICBy
ZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKLSAgICBtX3JlY2VudElk
ZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpOworICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0g
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0
aCk7CiAgICAgcmV0dXJuIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07CiB9CiAK
QEAgLTE1NSwxNyArMTU1LDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNl
KGNvbnN0IENoYXJUeXBlJiBjKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbV9l
eGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcjsKICAgICBpZiAoY2hhcmFj
dGVyc1swXSA+PSBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXIpCi0gICAgICAgIHJldHVybiBJZGVu
dGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgICAgIHJldHVy
biBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0
aCk7CiAKICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgaWYgKCFtX3Nob3J0SWRlbnRp
ZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gbV9zaG9y
dElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwotICAgICAgICBtX3Nob3J0SWRlbnRpZmllcnNb
Y2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxl
bmd0aCk7CisgICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKICAgICB9CiAg
ICAgaWYgKCFtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dLmlzTnVsbCgpICYmIElk
ZW50aWZpZXI6OmVxdWFsKG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaW1wbCgp
LCBjaGFyYWN0ZXJzLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVy
c1tjaGFyYWN0ZXJzWzBdXTsKLSAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1d
ID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIG1f
cmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgcmV0dXJuIG1fcmVjZW50
SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmgKaW5kZXggYjdlY2JiMTkwYTA0YjUwOWQ5MDQxMGZmYzRjYzMyZGQwMzk0ODBm
YS4uYThhMzM2N2Y1M2ZhNmM1MThiOWRhMWU1ZGU3N2Y0OTAwZTljZmJkMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTI5Myw3ICsyOTMsNyBAQCBpbmxpbmUgdm9p
ZCByZWlmeVN0YXRpY1Byb3BlcnRpZXMoVk0mIHZtLCBjb25zdCBIYXNoVGFibGVWYWx1ZSAoJnZh
bHVlcylbbnVtYmVyTwogICAgICAgICBpZiAoIXZhbHVlLm1fa2V5KQogICAgICAgICAgICAgY29u
dGludWU7ICAgICAgICAgICAgICAgIAogCi0gICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1l
KCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlLm1fa2V5KSwgc3RybGVu
KHZhbHVlLm1fa2V5KSk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPih2YWx1
ZS5tX2tleSksIHN0cmxlbih2YWx1ZS5tX2tleSkpOwogICAgICAgICBpZiAodmFsdWUuYXR0cmli
dXRlcygpICYgQnVpbHRpbikgewogICAgICAgICAgICAgdGhpc09iai5wdXREaXJlY3RCdWlsdGlu
RnVuY3Rpb24odm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgdmFsdWUu
YnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgdmFsdWUuYXR0cmlidXRlcygpKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGFiNTU4Mzk0OTBiOGVmYzAwMjE2ZWMyZDllZjFkMmRmYTkxYjM2Yjcu
LmZhZDUyYzA1NjA0OGUxOGI3ZWVjNDk4ZmYxNDk1M2ZkOTBmY2ZlZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBl
Tm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
KSk7CiAKLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUg
aXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCmlu
ZGV4IDgwNjdjYjIwZjBjMzdkNjZhNzc4YmU5ZDFlZjZhZmRiM2M2ZGU4MjguLmNhN2RjMDhmMjhl
MGY2NmZiZDZlYmJhZjVkOGI2OGFiNGU4ZmQ2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgdm9pZCBNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkp
KTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBNYXBJ
dGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIE1hcEl0ZXJhdG9y
UHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0
LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCmluZGV4IDZkN2ExMWQ4ZmJiYjRlMTVhNDMxNmZlNTg4MWFkMGQ3MTQw
NTA5MDguLmE2OTkwMGY4YTNiMWVmM2U1YjU3NWQxZmY4M2NkNDFlZmFhMDBlOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtNjgsNyAr
NjgsNyBAQCB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+a2V5cywgbWFwUHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLCBtYXBQcm90b0Z1bmNWYWx1
ZXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmVudHJpZXMsIG1hcFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKLSAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIG1h
cFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBE
b250RW51bSwgMCk7CiAKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+
c2l6ZS5zdHJpbmcoKSwgbWFwUHJvdG9GdW5jU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDI4ZmY1YzhkOTI3OWVlNTllNWIxMWU3NTFi
OTliNTRiMmY2ZjAzOTQuLjUxNTZlZDJlZmQ1ZjAwNDEyZmMyNzA0NjcwYWQ4ZGFiM2ZiMjc4ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCkBAIC04
Nyw0OSArODcsNDkgQEAgdm9pZCBNYXRoT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkUiKSwganNOdW1iZXIoZXhwKDEuMCkpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE4yIiksIGpzTnVtYmVyKGxvZygyLjApKSwg
RG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkxOMTAiKSwganNOdW1iZXIobG9nKDEwLjAp
KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkxPRzJFIiksIGpzTnVtYmVyKDEuMCAv
IGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkxPRzEwRSIpLCBqc051
bWJlcigwLjQzNDI5NDQ4MTkwMzI1MTgpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25s
eSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAi
UEkiKSwganNOdW1iZXIocGlEb3VibGUpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25s
eSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAi
U1FSVDFfMiIpLCBqc051bWJlcihzcXJ0KDAuNSkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBS
ZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIo
JnZtLCAiU1FSVDIiKSwganNOdW1iZXIoc3FydCgyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgUmVhZE9ubHkpOwotCi0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImFicyIpLCAxLCBtYXRoUHJv
dG9GdW5jQWJzLCBBYnNJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcigmdm0sICJhY29zIiksIDEsIG1hdGhQcm90b0Z1bmNBQ29zLCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImFzaW4iKSwgMSwg
bWF0aFByb3RvRnVuY0FTaW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIoJnZtLCAiYXRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbiwgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhY29z
aCIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvc2gsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXNpbmgiKSwgMSwgbWF0aFByb3RvRnVuY0FT
aW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
KCZ2bSwgImF0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNBVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhdGFuMiIpLCAyLCBtYXRo
UHJvdG9GdW5jQVRhbjIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXIoJnZtLCAiY2JydCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2JydCwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJjZWlsIiks
IDEsIG1hdGhQcm90b0Z1bmNDZWlsLCBDZWlsSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9u
KTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiY29zIiksIDEsIG1hdGhQcm90b0Z1bmNDb3MsIENv
c0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwg
ImNvc2giKSwgMSwgbWF0aFByb3RvRnVuY0Nvc2gsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiZXhwIiksIDEsIG1hdGhQcm90b0Z1bmNF
eHAsIEV4cEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
KCZ2bSwgImV4cG0xIiksIDEsIG1hdGhQcm90b0Z1bmNFeHBtMSwgTm9JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJmbG9vciIpLCAxLCBtYXRo
UHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIoJnZtLCAiZnJvdW5kIiksIDEsIG1hdGhQcm90b0Z1bmNGcm91bmQsIEZS
b3VuZEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2
bSwgImh5cG90IiksIDIsIG1hdGhQcm90b0Z1bmNIeXBvdCwgTm9JbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJsb2ciKSwgMSwgbWF0aFByb3Rv
RnVuY0xvZywgTG9nSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIoJnZtLCAibG9nMTAiKSwgMSwgbWF0aFByb3RvRnVuY0xvZzEwLCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImxvZzFwIiksIDEs
IG1hdGhQcm90b0Z1bmNMb2cxcCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcigmdm0sICJsb2cyIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cyLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgIm1h
eCIpLCAyLCBtYXRoUHJvdG9GdW5jTWF4LCBNYXhJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJtaW4iKSwgMiwgbWF0aFByb3RvRnVuY01pbiwg
TWluSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZt
LCAicG93IiksIDIsIG1hdGhQcm90b0Z1bmNQb3csIFBvd0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInJhbmRvbSIpLCAwLCBtYXRoUHJvdG9G
dW5jUmFuZG9tLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgInJvdW5kIiksIDEsIG1hdGhQcm90b0Z1bmNSb3VuZCwgUm91bmRJbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJzaWduIiks
IDEsIG1hdGhQcm90b0Z1bmNTaWduLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNpbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2luLCBTaW5J
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJz
aW5oIiksIDEsIG1hdGhQcm90b0Z1bmNTaW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNxcnQiKSwgMSwgbWF0aFByb3RvRnVuY1Nx
cnQsIFNxcnRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cigmdm0sICJ0YW4iKSwgMSwgbWF0aFByb3RvRnVuY1RhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJ0YW5oIiksIDEsIG1hdGhQcm90
b0Z1bmNUYW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgInRydW5jIiksIDEsIG1hdGhQcm90b0Z1bmNUcnVuYywgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJpbXVsIiksIDEs
IG1hdGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJFIiksIGpzTnVtYmVyKGV4cCgxLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwg
UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgIkxOMiIpLCBqc051bWJlcihsb2coMi4wKSksIERvbnREZWxldGUg
fCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJMTjEwIiksIGpzTnVtYmVyKGxvZygxMC4w
KSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJMT0cyRSIpLCBq
c051bWJlcigxLjAgLyBsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJMT0cxMEUiKSwganNOdW1iZXIoMC40MzQyOTQ0ODE5MDMyNTE4KSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlBJIiksIGpzTnVtYmVyKHBpRG91
YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlNRUlQxXzIi
KSwganNOdW1iZXIoc3FydCgwLjUpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgIlNRUlQyIiksIGpzTnVtYmVyKHNxcnQoMi4wKSksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKKworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJh
YnMiKSwgMSwgbWF0aFByb3RvRnVuY0FicywgQWJzSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYWNvcyIpLCAxLCBtYXRo
UHJvdG9GdW5jQUNvcywgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhc2luIiksIDEsIG1hdGhQcm90b0Z1bmNBU2lu
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImF0YW4iKSwgMSwgbWF0aFByb3RvRnVuY0FUYW4sIE5vSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiYWNvc2giKSwgMSwgbWF0aFByb3RvRnVuY0FDb3NoLCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFzaW5oIiks
IDEsIG1hdGhQcm90b0Z1bmNBU2luaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhdGFuaCIpLCAxLCBtYXRoUHJv
dG9GdW5jQVRhbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYXRhbjIiKSwgMiwgbWF0aFByb3RvRnVuY0FUYW4y
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImNicnQiKSwgMSwgbWF0aFByb3RvRnVuY0NicnQsIE5vSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiY2VpbCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2VpbCwgQ2VpbEludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvcyIpLCAx
LCBtYXRoUHJvdG9GdW5jQ29zLCBDb3NJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb3NoIiksIDEsIG1hdGhQcm90b0Z1
bmNDb3NoLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4cCIpLCAxLCBtYXRoUHJvdG9GdW5jRXhwLCBFeHBJbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJleHBtMSIpLCAxLCBtYXRoUHJvdG9GdW5jRXhwbTEsIE5vSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZmxv
b3IiKSwgMSwgbWF0aFByb3RvRnVuY0Zsb29yLCBGbG9vckludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImZyb3VuZCIpLCAx
LCBtYXRoUHJvdG9GdW5jRnJvdW5kLCBGUm91bmRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJoeXBvdCIpLCAyLCBtYXRo
UHJvdG9GdW5jSHlwb3QsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibG9nIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cs
IExvZ0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImxvZzEwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxMCwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJsb2cxcCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMXAsIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibG9nMiIp
LCAxLCBtYXRoUHJvdG9GdW5jTG9nMiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJtYXgiKSwgMiwgbWF0aFByb3Rv
RnVuY01heCwgTWF4SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibWluIiksIDIsIG1hdGhQcm90b0Z1bmNNaW4sIE1pbklu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgInBvdyIpLCAyLCBtYXRoUHJvdG9GdW5jUG93LCBQb3dJbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJyYW5k
b20iKSwgMCwgbWF0aFByb3RvRnVuY1JhbmRvbSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJyb3VuZCIpLCAxLCBt
YXRoUHJvdG9GdW5jUm91bmQsIFJvdW5kSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAic2lnbiIpLCAxLCBtYXRoUHJvdG9G
dW5jU2lnbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJzaW4iKSwgMSwgbWF0aFByb3RvRnVuY1NpbiwgU2luSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAic2luaCIpLCAxLCBtYXRoUHJvdG9GdW5jU2luaCwgTm9JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzcXJ0
IiksIDEsIG1hdGhQcm90b0Z1bmNTcXJ0LCBTcXJ0SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidGFuIiksIDEsIG1hdGhQ
cm90b0Z1bmNUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jVGFuaCwg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJ0cnVuYyIpLCAxLCBtYXRoUHJvdG9GdW5jVHJ1bmMsIE5vSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiaW11bCIpLCAxLCBtYXRoUHJvdG9GdW5jSU11bCwgSU11bEludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5j
dGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAppbmRleCAzY2ZlOTQx
MTZmYTA2MWJjYjVhMjEyNzE2NWE0ZDAxNDg0MTcyZjVkLi45NWE4ZGNhOTA4ZmE1YjdmZWExNTkx
Mjk1MTA5MTcyNDNhYjdjMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCkBAIC01OSwyMSArNTksMjEgQEAgdm9pZCBOdW1i
ZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOdW1iZXJQcm90b3R5cGUqIG51
bWJlclByb3RvdHlwZSkKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3Rvcgog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJFUFNJTE9O
IiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigp
KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk1BWF9WQUxVRSIpLCBqc0RvdWJsZU51
bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJl
YWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigm
dm0sICJNSU5fVkFMVUUiKSwganNEb3VibGVOdW1iZXIoNUUtMzI0KSwgRG9udERlbGV0ZSB8IERv
bnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyKCZ2bSwgIk1BWF9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIoOTAwNzE5
OTI1NDc0MDk5MS4wKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk1JTl9TQUZFX0lO
VEVHRVIiKSwganNEb3VibGVOdW1iZXIoLTkwMDcxOTkyNTQ3NDA5OTEuMCksIERvbnREZWxldGUg
fCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcigmdm0sICJORUdBVElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcigt
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udERlbGV0ZSB8IERv
bnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyKCZ2bSwgIlBPU0lUSVZFX0lORklOSVRZIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnREZWxldGUgfCBEb250RW51
bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRp
Zmllcigmdm0sICJOYU4iKSwganNOYU4oKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9u
bHkpOwotCi0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
bnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJpc0Zpbml0
ZSIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0Zpbml0ZSwgTm9JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZt
LCAiaXNJbnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlciwgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElk
ZW50aWZpZXIoJnZtLCAiaXNOYU4iKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNOYU4sIE5v
SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgp
LCBJZGVudGlmaWVyKCZ2bSwgImlzU2FmZUludGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JG
dW5jSXNTYWZlSW50ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAicGFyc2VGbG9hdCIpLCAxLCBn
bG9iYWxGdW5jUGFyc2VGbG9hdCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAicGFyc2VJbnQiKSwgMSwg
Z2xvYmFsRnVuY1BhcnNlSW50LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiRVBTSUxPTiIpLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmVwc2lsb24oKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJNQVhfVkFMVUUiKSwganNEb3VibGVOdW1iZXIoMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTUlOX1ZBTFVFIiksIGpz
RG91YmxlTnVtYmVyKDVFLTMyNCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJNQVhfU0FGRV9JTlRFR0VSIiksIGpzRG91YmxlTnVtYmVyKDkwMDcxOTkyNTQ3NDA5
OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNSU5fU0FG
RV9JTlRFR0VSIiksIGpzRG91YmxlTnVtYmVyKC05MDA3MTk5MjU0NzQwOTkxLjApLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTkVHQVRJVkVfSU5GSU5JVFkiKSwg
anNEb3VibGVOdW1iZXIoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSks
IERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJQT1NJVElWRV9JTkZJ
TklUWSIpLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTmFOIiks
IGpzTmFOKCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKworICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNGaW5pdGUiKSwg
MSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNGaW5pdGUsIE5vSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgImlzSW50ZWdlciIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0ludGVnZXIs
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzTmFOIiksIDEsIG51bWJlckNvbnN0
cnVjdG9yRnVuY0lzTmFOLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90
eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpc1NhZmVJ
bnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIsIE5vSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBhcnNlRmxvYXQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNl
RmxvYXQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBhcnNlSW50IiksIDEsIGds
b2JhbEZ1bmNQYXJzZUludCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwogfQog
CiAvLyBFQ01BIDE1LjcuMQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwMmU1NzUyODllMTZjZGMxNmEwYmJhMzQ5Nzg1
ZjJlMjdlZjE3ZGQuLmQ0YjNkODMzZTg3NzE5OTA3MjM0YjkyZjZlOWE0NTU4MGZlMmEzOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9y
LmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0
YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKik7CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGll
cyhFeGVjU3RhdGUqKTsKQEAgLTg0LDEzICs4NiwxNiBAQAogewogfQogCi12b2lkIE9iamVjdENv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE9iamVjdFByb3RvdHlwZSogb2JqZWN0
UHJvdG90eXBlKQordm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFBy
b3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgSWRlbnRpZmllcigmdm0s
ICJPYmplY3QiKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG9iamVj
dFByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgLy8gRUNNQSAxNS4yLjMu
MQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOwogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKworICAgIGlmIChnbG9i
YWxPYmplY3QtPnJ1bnRpbWVGbGFncygpLmlzU3ltYm9sRW5hYmxlZCgpKQorICAgICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5U3ltYm9scywgRG9udEVudW0sIDEpOwogfQogCiBib29sIE9iamVjdENv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCkBA
IC0yMDYsNyArMjExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGUKICAgICBpZiAoIWV4ZWMt
PmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIHByb3BlcnR5
IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CiAgICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBhc09iamVjdChleGVjLT5hcmd1bWVu
dCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2Jq
ZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVu
dCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4
ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBAIC0yMTUsMTIg
KzIyMCwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
R2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogfQogCiAvLyBGSVhNRTogVXNlIHRo
ZSBlbnVtZXJhdGlvbiBjYWNoZS4KK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0
ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsK
KyAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOworICAgIGFzT2JqZWN0KGV4
ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5
TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVt
ZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7
CisgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAg
IHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKKyAgICAgICAgQXRvbWljU3RyaW5n
SW1wbCogaW1wbCA9IHByb3BlcnRpZXNbaV0uaW1wbCgpOworICAgICAgICBpZiAoaW1wbC0+aXNT
eW1ib2woKSkKKyAgICAgICAgICAgIG5hbWVzLT5wdXNoKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4
ZWMtPnZtKCksIGltcGwpKTsKKyAgICB9CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuYW1l
cyk7Cit9CisKKy8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZXF1ZXN0ZWQga2V5cyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwog
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QoZXhl
Yy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhl
Yy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIGtleXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5z
aXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBA
IC0zMzEsNyArMzUzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRpYyBKU1ZhbHVlIGRl
ZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBKU09iamVj
dCogcHJvcGVydGllcykKIHsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4
ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlO
YW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3QocHJvcGVydGll
cyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0
KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgc2l6ZV90IG51bVBy
b3BlcnRpZXMgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsKICAgICBWZWN0b3I8UHJvcGVydHlEZXNj
cmlwdG9yPiBkZXNjcmlwdG9yczsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtYXJrQnVmZmVy
OwpAQCAtMzk4LDcgKzQyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JTZWFsKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5h
bWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIFByb3BlcnR5
TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZv
ciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUg
dGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0
aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDM1LDcgKzQ1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjKQogCiAgICAg
Ly8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3Bl
cnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMs
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBF
bnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9s
cyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRp
ZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAv
LyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVy
dHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00ODMsNyArNTA1LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1l
IFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5n
IHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAt
NTEzLDcgKzUzNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1l
ZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVy
dGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5j
bHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBQcm9wZXJ0eU5h
bWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3Ig
KFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdp
bigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRo
ZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhv
ZCBvZiBPIHdpdGggUC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oCmluZGV4IDEyNTI3ODFhNWU4OTAwNjllYTdkOTAxMzBmZjMxZWU5ZTkw
ZDM4ZDUuLmJiMDY3YjE1NTVmZTA5ODYxYmVhNDJkMTkyYWE5NmFmMzdjMzAyYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAt
MzMsMTAgKzMzLDEwIEBAIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwog
Ci0gICAgc3RhdGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCisgICAgc3RhdGlj
IE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90
b3R5cGUpCiAgICAgewogICAgICAgICBPYmplY3RDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmplY3RDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIE9i
amVjdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwotICAgICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIG9iamVjdFByb3RvdHlwZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5m
aW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBvYmplY3RQcm90b3R5cGUpOwogICAgICAg
ICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQogCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIE9i
amVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIH0KIAogcHJv
dGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBPYmplY3RQcm90b3R5cGUqKTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBPYmplY3RQcm90
b3R5cGUqKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFn
czsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFt
ZS5oCmluZGV4IDIxNDE2NDQ2NjQ1YzdmZmYwM2Y3YzgyZDE3ODczOWFkNTYwOGJmNjQuLmNjY2Nj
MzlmYTkzOTEzYjNmYTYxYzc1MGU2OGRjNzI5MTZlNWI3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAtMzMsMTkgKzMzLDE5IEBACiBjbGFzcyBQ
cml2YXRlTmFtZSB7CiBwdWJsaWM6CiAgICAgUHJpdmF0ZU5hbWUoKQotICAgICAgICA6IG1faW1w
bChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVFbXB0eSgpKQorICAgICAgICA6IG1faW1wbChTdHJp
bmdJbXBsOjpjcmVhdGVTeW1ib2xFbXB0eSgpKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW1w
bC0+aXNVbmlxdWUoKSk7Ci0gICAgfQotICAgIFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24pCi0gICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNj
cmlwdGlvbi5pbXBsKCkpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUo
KSk7CiAgICAgfQorCiAgICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCogdWlkKQog
ICAgICAgICA6IG1faW1wbCh1aWQpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1Vu
aXF1ZSgpKTsKKyAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNTeW1ib2woKSk7CisgICAgfQorCisg
ICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKKyAgICAg
ICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sKGRlc2NyaXB0aW9uLmltcGwoKSkp
CisgICAgewogICAgIH0KIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIHVpZCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihtX2ltcGwuZ2V0KCkpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aAppbmRleCAwMzcwYTM1NDhkYTk4NmQwNDExMzEzZTA0ZGFjMmQxNWM2YmEwOTA0Li43NTRkYTJk
OGU4MTU1NTRiNzdiNjhmZTNlNTJmYzRjODIyZDMwMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTI3MSw3ICsy
NzEsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVydHlUYWJs
ZTo6ZW5kKCkgY29uc3QKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yIFByb3Bl
cnR5VGFibGU6OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQogewogICAgIEFTU0VSVChrZXkpOwot
ICAgIEFTU0VSVChrZXktPmlzQXRvbWljKCkgfHwga2V5LT5pc1VuaXF1ZSgpKTsKKyAgICBBU1NF
UlQoa2V5LT5pc0F0b21pYygpIHx8IGtleS0+aXNTeW1ib2woKSk7CiAgICAgdW5zaWduZWQgaGFz
aCA9IGtleS0+ZXhpc3RpbmdIYXNoKCk7CiAgICAgdW5zaWduZWQgc3RlcCA9IDA7CiAKQEAgLTMw
NSw3ICszMDUsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6ZmluZF9pdGVyYXRvciBQcm9wZXJ0
eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpW
YWx1ZVR5cGUqIFByb3BlcnR5VGFibGU6OmdldChjb25zdCBLZXlUeXBlJiBrZXkpCiB7CiAgICAg
QVNTRVJUKGtleSk7Ci0gICAgQVNTRVJUKGtleS0+aXNBdG9taWMoKSB8fCBrZXktPmlzVW5pcXVl
KCkpOworICAgIEFTU0VSVChrZXktPmlzQXRvbWljKCkgfHwga2V5LT5pc1N5bWJvbCgpKTsKIAog
ICAgIGlmICghbV9rZXlDb3VudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCmluZGV4IDMwNzRjNzJlMTA3MDEz
M2I5N2IwM2IxZGZmNGE0M2RlMTMyZmMwYTYuLjY1NWU3NGQ2MmFjMzYxMjBhMTk2MWFiZDcwMTFm
ZjZiZWM1MjE1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TmFtZS5oCkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAgICAgUHJvcGVy
dHlOYW1lKEF0b21pY1N0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSkKICAgICAgICAgOiBtX2ltcGwo
cHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9pbXBsLT5p
c0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9pbXBsLT5pc0F0b21pYygp
IHx8IG1faW1wbC0+aXNTeW1ib2woKSk7CiAgICAgfQogCiAgICAgUHJvcGVydHlOYW1lKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKQEAgLTkzLDggKzkzLDcgQEAgY2xhc3MgUHJvcGVy
dHlOYW1lIHsKICAgICAgICAgOiBtX2ltcGwoc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+
KHByb3BlcnR5TmFtZS51aWQoKSkpCiAgICAgewogICAgICAgICBBU1NFUlQobV9pbXBsKTsKLSAg
ICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwt
PmlzQXRvbWljKCkpOworICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1N5bWJvbCgpKTsKICAgICB9
CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQoKSBjb25zdApAQCAtMTA0LDE0ICsxMDMsMTQg
QEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIHB1YmxpY05h
bWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+aXNVbmlxdWUoKSA/IG51
bGxwdHIgOiBtX2ltcGw7CisgICAgICAgIHJldHVybiAoIW1faW1wbCB8fCBtX2ltcGwtPmlzU3lt
Ym9sKCkpID8gbnVsbHB0ciA6IG1faW1wbDsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgdWlu
dDMyX3QgTm90QW5JbmRleCA9IFVJTlRfTUFYOwogCiAgICAgdWludDMyX3QgYXNJbmRleCgpCiAg
ICAgewotICAgICAgICByZXR1cm4gbV9pbXBsID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2lt
cGwpIDogTm90QW5JbmRleDsKKyAgICAgICAgcmV0dXJuIChtX2ltcGwgJiYgIW1faW1wbC0+aXNT
eW1ib2woKSkgPyB0b1VJbnQzMkZyb21TdHJpbmdJbXBsKG1faW1wbCkgOiBOb3RBbkluZGV4Owog
ICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcApp
bmRleCA0NDc1Yjg5OGE5NzQ5NzdjZTY4ZTQ3NTlkY2FkMDZiZDZhMDQ4MzczLi4wMThhMDdmMWVh
NjcwNjU0NzJmNDhlOWVjY2U0ZDc3M2IwZWE2MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCkBAIC0zMSw5ICszMSw5IEBA
CiAKIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQog
ewotICAgIEFTU0VSVCghaWRlbnRpZmllciB8fCBpZGVudGlmaWVyID09IFN0cmluZ0ltcGw6OmVt
cHR5KCkgfHwgaWRlbnRpZmllci0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUKCFpZGVudGlmaWVy
IHx8ICghbV92bS0+cHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShpZGVudGlmaWVyKSAmJiAo
aWRlbnRpZmllciA9PSBTdHJpbmdJbXBsOjplbXB0eSgpIHx8IGlkZW50aWZpZXItPmlzQXRvbWlj
KCkgfHwgaWRlbnRpZmllci0+aXNTeW1ib2woKSkpKTsKICAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkgewotICAgICAgICB1aW50MzJfdCBpbmRleCA9IFByb3BlcnR5TmFtZShJZGVudGlmaWVyKG1f
dm0sIGlkZW50aWZpZXIpKS5hc0luZGV4KCk7CisgICAgICAgIHVpbnQzMl90IGluZGV4ID0gUHJv
cGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgaWRlbnRpZmllcikpLmFzSW5kZXgo
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChpbmRleCwgaW5kZXggPT0gUHJvcGVydHlOYW1lOjpO
b3RBbkluZGV4IHx8IGluZGV4ID49IG1fcHJldmlvdXNseUVudW1lcmF0ZWRMZW5ndGgpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmgKaW5kZXggOTk0ZjA5YzkwNTQwMTFlNDFiMjMzOGY5ZDA1MDRiMmQ0OWJmZjM5YS4uODlm
Y2JkZWNmN2U4MWNlMjM1ZDRiMTAzZTU5NDY5Yzk4MTFhN2M1YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCkBAIC05OCw3ICs5OCw3
IEBAIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5IHsKICAgICB2b2lkIGFkZEtub3duVW5pcXVlKFN0
cmluZ0ltcGwqIGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX3NldC0+YWRkKGlkZW50aWZp
ZXIpOwotICAgICAgICBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlm
aWVyKG1fdm0sIGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0
b3IoKS5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBpZGVudGlmaWVyKSk7CiAgICAg
fQogCiAgICAgSWRlbnRpZmllciYgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX2Rh
dGEtPnByb3BlcnR5TmFtZVZlY3RvcigpW2ldOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDVlODBmNWNkYzE1YTU2
ZjJjNjYyYjUzNGI1ZDJkZGRiNWJmZTk5Mi4uZWUxZDhiM2ZjNjlmOTQzYjk0YTUyNTljZjdjMTg2
Y2FjNjM3M2Y3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcApAQCAtOTEsNyArOTEsNyBAQAogCiB2b2lkIFJlZ0V4cENvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJv
dG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwg
IlJlZ0V4cCIpLnN0cmluZygpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgcmVnRXhw
UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKICAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7CiAKICAgICAvLyBFQ01BIDE1LjEwLjUuMSBSZWdFeHAucHJvdG90eXBlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0ZDlk
MGIyN2U0ZDBjOGM5MWY5ZmViNDVhMWQ1NGU1OTVkMzNkNTE5Li41NDlhM2EyZjlhNzRjM2ExYTlk
YzcwMDEwNDEyZmE0NzlkOTFhODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTEwNSwyMSArMTA1LDIxIEBAIGJvb2wgUmVnRXhwT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByCiAKIHZvaWQgUmVnRXhwT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKHNob3VsZElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKICAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogdm9pZCBS
ZWdFeHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUpCiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkp
CisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKICAg
ICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sYXN0SW5kZXgpOwogICAgIEJhc2U6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDIzYTZiZDVlYmFkZjli
OTJiNWU1YmJmZGE0NzE2YjgyOTBmMjU4MS4uZmI5N2I2ZDlmYTBkMGVlNjNhMWQ1MmE5ODg3ZWM3
NzY5OGY3NTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENv
bnN0cnVjdG9yLmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChhZGRlckZ1
bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKIAotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5j
dGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQ
cml2YXRlTmFtZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggNTI2MWJmM2NhY2MxZDRlMGU0NTc1NTFhMDIy
ZGU2N2M5MTk0ZGZmOS4uZjFiOGI3OTQ4MTE4OTA5M2EwMWE2MmM1ODYxNGRkOWRlZWQ4ZjM2OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFNldEl0ZXJhdG9yUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90
b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yUHJpdmF0ZU5hbWUsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBE
b250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVt
LCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIFNl
dEl0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5kZXggNmE2YzQ5YjQ4
ZTBjNmE5MGM5MzA3Njk5ZDhjZDc5YjRjOTVkMmM1MS4uNzY4MjZhZGU1ZDA0NGIwOWM0ZjUzOGY4
YjFiODcwNDhkODIyMzg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRQcm90b3R5cGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlND
X05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCBzZXRQcm90b0Z1bmNLZXlz
LCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT52YWx1ZXMsIHNldFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgc2V0UHJvdG9GdW5jRW50cmll
cywgRG9udEVudW0sIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2ws
IHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKIAogICAgIEdldHRlclNldHRlciogYWNj
ZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAw
LCB2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLnN0cmluZygpLCBzZXRQcm90b0Z1bmNTaXplKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmNwcAppbmRleCA1M2UwY2NiMzE0NGYzOTU5NmU2NDU1ZWE3YjMyZjc1NzBiYmYx
YWRiLi40NjhiNzJkMGZjYTc0ZjkyNDc1MjExYmM0MWQ5YWVmMGM1OWY3NmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAg
QVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5
cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yUHJpdmF0ZU5hbWUsIHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlSXRlcmF0b3IsIERvbnRF
bnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCBzdHJpbmdJdGVyYXRvclByb3RvdHlwZUl0ZXJhdG9yLCBEb250RW51bSwgMCk7
CiB9CiAKIGJvb2wgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDUwMDFiY2M0ZTFiN2UzNzkzZWQyNmUxNDIwYTgwYTYw
NDY4ZTEzYzYuLmFiMzk0OWUwN2UzM2UxYTE5Zjc1MzU5ZjI5OTgxYTIxNDlhZjBiZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTUw
LDcgKzE1MCw3IEBAIHZvaWQgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAgaW50IHNpemUgPSB0aGlz
T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmxlbmd0aCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIGkpKTsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2Rl
KSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGFlYTU5MjY5NTIyYjg1OTg4OTRjNDdlZTVk
NDlhNGViYzYyZDIxMzMuLmNhNjJjNDFiMGYzNTg5NjkxNmQxYzYyNWQ3YzM0MGZhNGRmMjQ5MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyCiAgICAgSlND
X05BVElWRV9GVU5DVElPTigic3RhcnRzV2l0aCIsIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgs
IERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJlbmRzV2l0aCIsIHN0cmlu
Z1Byb3RvRnVuY0VuZHNXaXRoLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
TigiaW5jbHVkZXMiLCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcywgRG9udEVudW0sIDApOwotICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFt
ZSwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBzdHJpbmdQcm90b0Z1
bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogCiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+Y2hhckNvZGVBdFByaXZhdGVOYW1lLCBzdHJpbmdQcm90
b0Z1bmNDaGFyQ29kZUF0LCBEb250RW51bSwgMSwgQ2hhckNvZGVBdEludHJpbnNpYyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDg2OWNiYzU3
YzIwNjlmYWMyNDE4OGUxMGY1MDE1NWNmYzVhYmY5NzguLjliMTBmNzkzODVmYzU1ZDczOThlY2E0
NDg0Y2IwMjM4NGE3OWU0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcApAQCAtOTQ4LDcgKzk0OCwxMyBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVy
dHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydAog
ICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHByb3BlcnR5VGFibGUoKS0+ZW5kKCk7
CiAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gcHJvcGVydHlUYWJsZSgp
LT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChoYXNOb25F
bnVtZXJhYmxlUHJvcGVydGllcygpIHx8ICEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSk7
Ci0gICAgICAgIGlmICghaXRlci0+a2V5LT5pc1VuaXF1ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0
ZXMgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkp
IHsKKyAgICAgICAgaWYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBtb2RlLnNo
b3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgeworICAgICAgICAgICAgaWYgKGl0ZXIt
PmtleS0+aXNTeW1ib2woKSkgeworICAgICAgICAgICAgICAgIGlmICghbW9kZS5zaG91bGRJbmNs
dWRlU3ltYm9scygpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShpdGVyLT5rZXkpKQorICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChrbm93blVuaXF1ZSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZEtub3duVW5p
cXVlKGl0ZXItPmtleSk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTljZTY4NjI3NGZk
NzczOTI4ZGRkNTlmZjFmOWNhZjRlZWJlMjExZS4uYWE5NGZhMzFmMWEwOTViZTM4ODRjNDE3ODAy
NDRiNzE4OGIzMDI4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtNDQsNyArNDQsNyBAQAogfQogCiAjZGVmaW5lIElO
SVRJQUxJWkVfV0VMTF9LTk9XTl9TWU1CT0xTKG5hbWUpIFwKLSAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICNuYW1lKSwgU3ltYm9sOjpjcmVhdGUodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUjI1ByaXZhdGVOYW1lLmltcGwoKSksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICNuYW1lKSwgU3ltYm9sOjpjcmVhdGUodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUjI1N5bWJvbC5pbXBsKCkpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CiAKIHZvaWQgU3ltYm9sQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU3ltYm9sUHJvdG90eXBlKiBwcm90b3R5cGUpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKaW5kZXggZThmYzBlMzIwYjVjYTNhZTEzM2JhOGY0NmFhNThlYzU5
YzdlMWQyOC4uZTk4MGZiZjk5ZmJlMjYzNzhhZDliZWQzZjAzOGNlZTE3YzhmN2I3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjU0LDEwICs2NTQsMTAgQEAgSlNWYWx1
ZSBWTTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKQogICAg
ICAgICB1bnNpZ25lZCBsaW5lOwogICAgICAgICB1bnNpZ25lZCBjb2x1bW47CiAgICAgICAgIHN0
YWNrRnJhbWUuY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKLSAgICAgICAgZXhj
ZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXIodGhpcywgImxpbmUiKSwganNOdW1i
ZXIobGluZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7Ci0gICAgICAgIGV4Y2VwdGlvbi0+cHV0
RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyKHRoaXMsICJjb2x1bW4iKSwganNOdW1iZXIoY29sdW1u
KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3Qo
KnRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodGhpcywgImxpbmUiKSwganNOdW1iZXIobGlu
ZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0
KCp0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHRoaXMsICJjb2x1bW4iKSwganNOdW1iZXIo
Y29sdW1uKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKICAgICAgICAgaWYgKCFzdGFja0ZyYW1l
LnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgq
dGhpcywgSWRlbnRpZmllcih0aGlzLCAic291cmNlVVJMIiksIGpzU3RyaW5nKHRoaXMsIHN0YWNr
RnJhbWUuc291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgICAgIGV4
Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHRoaXMsICJz
b3VyY2VVUkwiKSwganNTdHJpbmcodGhpcywgc3RhY2tGcmFtZS5zb3VyY2VVUkwpLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOwogICAgIH0KICAgICBpZiAoZXhjZXB0aW9uLT5pc0Vycm9ySW5zdGFu
Y2UoKSAmJiBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0aW9uKS0+YXBwZW5kU291
cmNlVG9NZXNzYWdlKCkpIHsKICAgICAgICAgRmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3RvciBmdW5jdG9yKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDlhZmYwMzUxMDAwNjg5YWY4
ZTdhYjg0M2I3MjFiYTRlODE1MDJiZS4uMjNjNDMzMzBkNjJlZjA5NzI3ZmY2YjkxMjQ1NmE1MDQw
NGRhNzhhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoRXhlY1N0YXRlKiBleGVjKQogICAgIGlm
IChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKIAotICAgIEpTVmFsdWUgaXRl
cmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
aXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRl
cmFibGUuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJv
bHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDBlOTNkOGIyNDc5ZGU5MmFkOTYwZTc1YjQyZTc5MWZkOTI1ZjE2
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
b2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcwpAQCAtMCwwICsxLDM1IEBACisvLyBU
aGlzIHRlc3RzIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMuCisKK3ZhciBnbG9iYWwgPSAo
RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSk7CisKKy8vIHByaXZhdGUgbmFtZXMgZm9yIHByaXZp
bGVnZWQgY29kZSBzaG91bGQgbm90IGJlIGV4cG9zZWQuCitpZiAoT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scyhnbG9iYWwpLmxlbmd0aCAhPT0gMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2
YWx1ZSAiICsgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhnbG9iYWwpLmxlbmd0aDsKKwor
dmFyIG9iamVjdCA9IHt9OwordmFyIHN5bWJvbCA9IFN5bWJvbCgiQ29jb2EiKTsKK29iamVjdFtz
eW1ib2xdID0gIkNhcHB1Y2Npbm8iOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aDsKK2lmIChPYmplY3QuZ2V0T3du
UHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoICE9PSAxKQorICAgIHRocm93ICJFcnJvcjog
YmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3Ro
OworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSAhPT0gc3ltYm9s
KQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0LmdldE93blBy
b3BlcnR5U3ltYm9scyhvYmplY3QpWzBdKTsKKworZnVuY3Rpb24gZm9ySW4ob2JqKSB7CisgICAg
dmFyIGFycmF5ID0gW107CisgICAgLy8gU3ltYm9sIHNob3VsZCBub3QgYmUgZW51bWVyYXRlZC4K
KyAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBhcnJheS5wdXNoKGtleSk7CisgICAgcmV0dXJuIGFy
cmF5OworfQorCitpZiAoZm9ySW4ob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVy
cm9yOiBiYWQgdmFsdWUgIiArIGZvckluKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5rZXlz
KG9iamVjdCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBP
YmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aDsKKworZGVsZXRlIG9iamVjdFtzeW1ib2xdOworaWYg
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoICE9PSAwKQorICAgIHRo
cm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QpLmxlbmd0aDsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVu
Z3RoICE9PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3du
UHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJhYzNlYzA1ZjgwNmUzNzI1NzczNjI0ODI2MTk4MTUyMzBiNmIzZGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1k
ZWZpbmUtcHJvcGVydHkuanMKQEAgLTAsMCArMSwzMyBAQAorLy8gVGhpcyB0ZXN0cyBPYmplY3Qu
Y3JlYXRlLCBPYmplY3QuZGVmaW5lUHJvcGVydHksIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIHdv
cmsgd2l0aCBTeW1ib2wuCisKK2Z1bmN0aW9uIHRlc3RTeW1ib2wob2JqZWN0KSB7CisgICAgaWYg
KCFvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBvYmplY3QgZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVyYXRvciI7CisgICAgaWYgKG9i
amVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZShTeW1ib2wuaXRlcmF0b3IpKQorICAgICAgICB0aHJv
dyAiRXJyb3I6IFN5bWJvbC5pdGVyYXRvciBpcyBkZWZpbmVkIGFzIGVudW1lcmFibGUiOworICAg
IGlmIChKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVj
dCwgU3ltYm9sLml0ZXJhdG9yKSkgIT09ICd7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJl
bnVtZXJhYmxlIjpmYWxzZSwiY29uZmlndXJhYmxlIjpmYWxzZX0nKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCBwcm9wZXJ0eSBkZXNjcmlwdG9yICIgKyBKU09OLnN0cmluZ2lmeShPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSk7CisgICAg
aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggIT09IDEpCisg
ICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMob2JqZWN0KS5sZW5ndGg7CisgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMo
b2JqZWN0KVswXSAhPT0gU3ltYm9sLml0ZXJhdG9yKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCB2YWx1ZSAiICsgU3RyaW5nKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVsw
XSk7Cit9CisKK3ZhciBvYmplY3QgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5wcm90b3R5cGUsIHsK
KyAgICBbU3ltYm9sLml0ZXJhdG9yXTogeworICAgICAgICB2YWx1ZTogNDIKKyAgICB9Cit9KTsK
K3Rlc3RTeW1ib2wob2JqZWN0KTsKKwordmFyIG9iamVjdCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0
aWVzKHt9LCB7CisgICAgW1N5bWJvbC5pdGVyYXRvcl06IHsKKyAgICAgICAgdmFsdWU6IDQyCisg
ICAgfQorfSk7Cit0ZXN0U3ltYm9sKG9iamVjdCk7CisKK3ZhciBvYmplY3QgPSBPYmplY3QuZGVm
aW5lUHJvcGVydHkoe30sIFN5bWJvbC5pdGVyYXRvciwgeworICAgIHZhbHVlOiA0MgorfSk7Cit0
ZXN0U3ltYm9sKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY1
MDdjZDllZTUzYzUxYjJjMjE5YzcyOGM0ZDNjNTVlZGQ3N2M1YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6
ZS5qcwpAQCAtMCwwICsxLDI2IEBACisvLyBUaGlzIHRlc3RzIE9iamVjdC5zZWFsIGFuZCBPYmpl
Y3QuZnJlZXplIGFmZmVjdCBvbiBTeW1ib2wgcHJvcGVydGllcy4KKwordmFyIG9iamVjdCA9IHsK
KyAgICBbU3ltYm9sLml0ZXJhdG9yXTogNDIKK307CisKK2lmICghb2JqZWN0Lmhhc093blByb3Bl
cnR5KFN5bWJvbC5pdGVyYXRvcikpCisgICAgdGhyb3cgIkVycm9yOiBvYmplY3QgZG9lc24ndCBo
YXZlIFN5bWJvbC5pdGVyYXRvciI7CitpZiAoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpICE9PSAneyJ2YWx1ZSI6
NDIsIndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOnRydWV9
JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBwcm9wZXJ0eSBkZXNjcmlwdG9yICIgKyBKU09OLnN0
cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0
ZXJhdG9yKSk7CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0
aCAhPT0gMSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgT2JqZWN0LmdldE93blBy
b3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aDsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKG9iamVjdClbMF0gIT09IFN5bWJvbC5pdGVyYXRvcikKKyAgICB0aHJvdyAiRXJyb3I6
IGJhZCB2YWx1ZSAiICsgU3RyaW5nKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0
KVswXSk7CisKK09iamVjdC5zZWFsKG9iamVjdCk7CitpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0
eShTeW1ib2wuaXRlcmF0b3IpKQorICAgIHRocm93ICJFcnJvcjogb2JqZWN0IGRvZXNuJ3QgaGF2
ZSBTeW1ib2wuaXRlcmF0b3IiOworaWYgKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAhPT0gJ3sidmFsdWUiOjQy
LCJ3cml0YWJsZSI6dHJ1ZSwiZW51bWVyYWJsZSI6dHJ1ZSwiY29uZmlndXJhYmxlIjpmYWxzZX0n
KQorICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2NyaXB0b3IgIiArIEpTT04uc3Ry
aW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRl
cmF0b3IpKTsKKworT2JqZWN0LmZyZWV6ZShvYmplY3QpOworaWYgKCFvYmplY3QuaGFzT3duUHJv
cGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICB0aHJvdyAiRXJyb3I6IG9iamVjdCBkb2Vzbid0
IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsKK2lmIChKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgIT09ICd7InZhbHVl
Ijo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOmZh
bHNlfScpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcHJvcGVydHkgZGVzY3JpcHRvciAiICsgSlNP
Ti5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJv
bC5pdGVyYXRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9zeW1ib2wtd2l0aC1qc29uLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9zeW1ib2wtd2l0aC1qc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMDNkNWQ1YTExZDQ4MmFhZjYw
MzhjYzBhNDdmOTcxOWM1ZDlmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMKQEAgLTAsMCArMSwxNCBAQAor
Ly8gVGhpcyB0ZXN0cyBKU09OIGNvcnJlY3RseSBiZWhhdmVzIHdpdGggU3ltYm9sLgorCitpZiAo
SlNPTi5zdHJpbmdpZnkoU3ltYm9sKCdDb2NvYScpKSAhPT0gdW5kZWZpbmVkKQorICAgIHRocm93
ICJFcnJvcjogYmFkIHZhbHVlICIgKyBKU09OLnN0cmluZ2lmeShTeW1ib2woJ0NvY29hJykpOwor
Cit2YXIgb2JqZWN0ID0ge307Cit2YXIgc3ltYm9sID0gU3ltYm9sKCJDb2NvYSIpOworb2JqZWN0
W3N5bWJvbF0gPSA0MjsKK29iamVjdFsnQ2FwcHVjY2lubyddID0gNDI7CitpZiAoSlNPTi5zdHJp
bmdpZnkob2JqZWN0KSAhPT0gJ3siQ2FwcHVjY2lubyI6NDJ9JykKKyAgICB0aHJvdyAiRXJyb3I6
IGJhZCB2YWx1ZSAiICsgSlNPTi5zdHJpbmdpZnkob2JqZWN0KTsKKworaWYgKEpTT04uc3RyaW5n
aWZ5KG9iamVjdCwgWyBTeW1ib2woJ0NvY29hJykgXSkgIT09ICJ7fSIpCisgICAgdGhyb3cgIkVy
cm9yOiBiYWQgdmFsdWUgIiArIEpTT04uc3RyaW5naWZ5KG9iamVjdCwgWyBTeW1ib2woJ0NvY29h
JykgXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggMTk2MzljYWIzMTRm
OTY4YTE1ZDcyZTY3OTQ1YmYwZDk2YThmYmE5MS4uZmE3ZTQzNDdhMTIzYmY2YjE3NWIwNmEzOGM1
ZTljYTIyYjhlZDQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtNDAz
LDYgKzQwMyw5IEBAIHN0cnVjdCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvciB7
CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAqU3RyaW5nSW1wbDo6
ZW1wdHkoKTsKIAorICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIGFk
ZChzdHJpbmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKCkpOworCiAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJpbmcgc2hvdWxkIG5vdCBo
aXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkgYXRvbWljLiIpOwogCiAg
ICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwpAQCAtNDIxLDYgKzQyNCw5IEBAIHN0
cnVjdCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvciB7CiAgICAgaWYgKCFzdHJp
bmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAqU3RyaW5nSW1wbDo6ZW1wdHkoKTsKIAorICAg
IGlmIChzdHJpbmcuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIGFkZChzdHJpbmdUYWJsZSwg
c3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpKTsKKwogICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5nIHNob3VsZCBub3QgaGl0
IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGF0b21pYy4iKTsKIAogICAg
IEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKQEAgLTUwMyw2ICs1MDksMTIgQEAgQXRv
bWljU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjpmaW5kU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3Ry
aW5nKQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRv
bWljU3RyaW5nSW1wbHMgc2hvdWxkIHJldHVybiBmcm9tIHRoZSBmYXN0IGNhc2UuIik7CiAKKyAg
ICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21p
Y1N0cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsKKworICAgIGlmIChzdHJpbmcuaXNT
eW1ib2woKSkKKyAgICAgICAgcmV0dXJuIGZpbmQoJnN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5n
SW5TeW1ib2woKSk7CisKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CiAgICAg
SGFzaFNldDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0cmluZ1RhYmxlID0gc3RyaW5nVGFibGUoKTsK
ICAgICBhdXRvIGl0ZXJhdG9yID0gYXRvbWljU3RyaW5nVGFibGUuZmluZCgmc3RyaW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IGJhZTlkMzYyZDI3NTFlNWE3M2NlMGIxYjdl
MmE0MTFiMDE4MzdmMzMuLjYwOWNmNzMxZDI3YmZjMDY3OGQ2YzY5ODNjNGNiMDhiNmEyMjkxM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaApAQCAtMTgzLDExICsxODMsOSBAQCBjbGFz
cyBBdG9taWNTdHJpbmcgewogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmUHRy
PFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQo
U3RyaW5nSW1wbCogc3RyaW5nKQogICAgIHsKLSAgICAgICAgaWYgKCFzdHJpbmcgfHwgc3RyaW5n
LT5pc0F0b21pYygpKSB7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcg
fHwgIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5pc1VuaXF1ZSgpIHx8IGlzSW5BdG9taWNT
dHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhl
ciB0aHJlYWQhIik7CisgICAgICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0
cmluZzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoKnN0cmluZyk7Cisg
ICAgICAgIHJldHVybiBhZGQoKnN0cmluZyk7CiAgICAgfQogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZEZyb21MaXRlcmFsRGF0YShjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogI2lmIFVTRShDRikKQEAgLTE5NywxMSAr
MTk1LDkgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJp
bmdUYWJsZVByb3ZpZGVyPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxTdHJpbmdJ
bXBsPiBhZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcihTdHJpbmdUYWJsZVByb3ZpZGVyJiBzdHJp
bmdUYWJsZVByb3ZpZGVyLCBTdHJpbmdJbXBsKiBzdHJpbmcpCiAgICAgewotICAgICAgICBpZiAo
IXN0cmluZyB8fCBzdHJpbmctPmlzQXRvbWljKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoIXN0cmluZyB8fCAhc3RyaW5nLT5sZW5ndGgoKSB8fCBzdHJpbmctPmlzVW5pcXVl
KCkgfHwgaXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBj
b21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAg
ICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhZGRTbG93
Q2FzZSgqc3RyaW5nVGFibGVQcm92aWRlci5hdG9taWNTdHJpbmdUYWJsZSgpLCAqc3RyaW5nKTsK
KyAgICAgICAgcmV0dXJuIGFkZCgqc3RyaW5nVGFibGVQcm92aWRlci5hdG9taWNTdHJpbmdUYWJs
ZSgpLCAqc3RyaW5nKTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0yMTMsNyAr
MjA5LDI1IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAgQXRvbWljU3RyaW5nKEFTQ0lJTGl0
ZXJhbCk7CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgCisKKyAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICB7Cisg
ICAgICAgIGlmIChzdHJpbmcuaXNBdG9taWMoKSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZSgmc3RyaW5n
KSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAg
ICAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYWRkU2xv
d0Nhc2Uoc3RyaW5nKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gYWRkKEF0b21pY1N0cmluZ1RhYmxlJiBzdHJpbmdUYWJsZSwgU3RyaW5nSW1wbCYg
c3RyaW5nKQorICAgIHsKKyAgICAgICAgaWYgKHN0cmluZy5pc0F0b21pYygpKSB7CisgICAgICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgaXNJbkF0b21pY1N0
cmluZ1RhYmxlKCZzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhl
ciB0aHJlYWQhIik7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBhZGRTbG93Q2FzZShzdHJpbmdUYWJsZSwgc3RyaW5nKTsKKyAgICB9CisKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRTbG93Q2Fz
ZShTdHJpbmdJbXBsJik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gYWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmLCBTdHJpbmdJbXBsJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDBiNzc0OWFmOGY5MmZiZTY1OTY0ZGNj
ODNkZTFjZWM1ODczYzA5MmYuLjU3NmQyYWExYzlmZGVkOTRjMWRjM2Y0MDViNzA1MTdmNTk5NTAw
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZv
aWQgU3RyaW5nU3RhdHM6OnByaW50U3RhdHMoKQogCiAgICAgU1RSSU5HX1NUQVRTX1JFTU9WRV9T
VFJJTkcoKnRoaXMpOwogCi0gICAgaWYgKGlzQXRvbWljKCkgJiYgbGVuZ3RoKCkgJiYgIWlzVW5p
cXVlKCkpCisgICAgaWYgKGlzQXRvbWljKCkgJiYgbGVuZ3RoKCkgJiYgIWlzU3ltYm9sKCkpCiAg
ICAgICAgIEF0b21pY1N0cmluZzo6cmVtb3ZlKHRoaXMpOwogCiAgICAgQnVmZmVyT3duZXJzaGlw
IG93bmVyc2hpcCA9IGJ1ZmZlck93bmVyc2hpcCgpOwpAQCAtMjg2LDEzICsyODYsMTQgQEAgdm9p
ZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiAgICAgcmV0dXJu
IGNyZWF0ZShzdHJpbmcsIGxlbmd0aCk7CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpjcmVhdGVVbmlxdWUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApCitSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwKQog
ewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHJlcC0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgp
Ci0gICAgICAgIHJldHVybiBjcmVhdGVVbmlxdWVFbXB0eSgpOworICAgICAgICByZXR1cm4gY3Jl
YXRlU3ltYm9sRW1wdHkoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gc3RyaW5nID0gY3JlYXRlU3Vi
c3RyaW5nU2hhcmluZ0ltcGwocmVwLCAwLCBsZW5ndGgpOwotICAgIHN0cmluZy0+bV9oYXNoQW5k
RmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc3RyaW5nLT5tX2hhc2hBbmRGbGFncyk7Cisg
ICAgQVNTRVJUKCFzdHJpbmctPmlzQXRvbWljKCkpOworICAgIHN0cmluZy0+bV9oYXNoQW5kRmxh
Z3MgPSBoYXNoQW5kRmxhZ3NGb3JTeW1ib2woc3RyaW5nLT5tX2hhc2hBbmRGbGFncyk7CiAgICAg
cmV0dXJuIHN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCA2NjcyMjNl
NmRhNzVkMTJiNTMxNzQ0MTA5MDNhM2IzYTc2MzFhNDc2Li41MTBhMzliMmI3ZDUyMDZiOTE4ZmE1
YzY1ZTIyMzkyNzNhZWM0NWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMTQxLDYg
KzE0MSwyNSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgQnVmZmVyU3Vic3RyaW5nLAog
ICAgIH07CiAKKyAgICAvLyBUaGUgYm90dG9tIDYgYml0cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3Mu
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0NvdW50ID0gNjsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc19mbGFnTWFzayA9ICgxdSA8PCBzX2ZsYWdDb3VudCkgLSAxOworICAg
IENPTVBJTEVfQVNTRVJUKHNfZmxhZ0NvdW50IDw9IFN0cmluZ0hhc2hlcjo6ZmxhZ0NvdW50LCBT
dHJpbmdIYXNoZXJfcmVzZXJ2ZXNfZW5vdWdoX2JpdHNfZm9yX1N0cmluZ0ltcGxfZmxhZ3MpOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdTdHJpbmdLaW5kQ291bnQgPSA0OworCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWMgPSAx
dSA8PCAoc19mbGFnU3RyaW5nS2luZENvdW50KTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbCA9IDF1IDw8IChzX2ZsYWdTdHJpbmdLaW5kQ291
bnQgKyAxKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoTWFza1N0cmluZ0tpbmQg
PSBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljIHwgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5
bWJvbDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZzhCaXRCdWZmZXIgPSAx
dSA8PCAzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29z
dCA9IDF1IDw8IDI7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaE1hc2tCdWZmZXJP
d25lcnNoaXAgPSAoMXUgPDwgMCkgfCAoMXUgPDwgMSk7CisKKyAgICBlbnVtIFN0cmluZ0tpbmQg
eworICAgICAgICBTdHJpbmdOb3JtYWwgPSAwdSwgLy8gbm9uLXN5bWJvbCwgbm9uLWF0b21pYwor
ICAgICAgICBTdHJpbmdBdG9taWMgPSBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljLCAvLyBu
b24tc3ltYm9sLCBhdG9taWMKKyAgICAgICAgU3RyaW5nU3ltYm9sID0gc19oYXNoRmxhZ1N0cmlu
Z0tpbmRJc1N5bWJvbCwgLy8gc3ltYm9sLCBub24tYXRvbWljCisgICAgfTsKKwogICAgIC8vIFVz
ZWQgdG8gY29uc3RydWN0IHN0YXRpYyBzdHJpbmdzLCB3aGljaCBoYXZlIGFuIHNwZWNpYWwgcmVm
Q291bnQgdGhhdCBjYW4gbmV2ZXIgaGl0IHplcm8uCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRo
ZSBzdGF0aWMgc3RyaW5nIHdpbGwgbmV2ZXIgYmUgZGVzdHJveWVkLCB3aGljaCBpcyBpbXBvcnRh
bnQgYmVjYXVzZQogICAgIC8vIHN0YXRpYyBzdHJpbmdzIHdpbGwgYmUgc2hhcmVkIGFjcm9zcyB0
aHJlYWRzICYgcmVmLWNvdW50ZWQgaW4gYSBub24tdGhyZWFkc2FmZSBtYW5uZXIuCkBAIC0xNTAs
NyArMTY5LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3Jl
ZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nKQogICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAg
ICwgbV9kYXRhOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fbGVuZ3RoKSkKLSAg
ICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IHNfaGFzaEZsYWdJ
c0F0b21pYyB8IEJ1ZmZlck93bmVkKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZs
YWc4Qml0QnVmZmVyIHwgU3RyaW5nQXRvbWljIHwgQnVmZmVyT3duZWQpCiAgICAgewogICAgICAg
ICAvLyBFbnN1cmUgdGhhdCB0aGUgaGFzaCBpcyBjb21wdXRlZCBzbyB0aGF0IEF0b21pY1N0cmlu
Z0hhc2ggY2FuIGNhbGwgZXhpc3RpbmdIYXNoKCkKICAgICAgICAgLy8gd2l0aCBpbXB1bml0eS4g
VGhlIGVtcHR5IHN0cmluZyBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgaXMgbmV2ZXIgZW50ZXJlZCBp
bnRvCkBAIC0xNjcsNyArMTg2LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9y
ZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkK
ICAgICAgICAgLCBtX2RhdGE4KHRhaWxQb2ludGVyPExDaGFyPigpKQotICAgICAgICAsIG1faGFz
aEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwpCisgICAgICAg
ICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBC
dWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAg
QVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTE4MCw3ICsxOTksNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsK
ICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KHRhaWxQb2ludGVyPFVDaGFyPigpKQot
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlckludGVybmFsKQorICAgICAgICAsIG1faGFz
aEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fZGF0YTE2KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTE5Myw3ICsy
MTIsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291
bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0
YTgoY2hhcmFjdGVycy5sZWFrUHRyKCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNo
RmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJPd25lZCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhz
X2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAt
MjA2LDcgKzIyNSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQo
c19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAg
ICwgbV9kYXRhMTYoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJ
bnRlcm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJJ
bnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CiAgICAgICAgIEFTU0VS
VChtX2xlbmd0aCk7CkBAIC0yMTgsNyArMjM3LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAg
ICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3Ro
KGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNo
QW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1
ZmZlckludGVybmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwogICAgICAgICBB
U1NFUlQobV9sZW5ndGgpOwpAQCAtMjMxLDcgKzI1MCw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewog
ICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xl
bmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycy5sZWFrUHRyKCkpCi0g
ICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVyT3duZWQpCisgICAgICAgICwgbV9oYXNoQW5k
RmxhZ3MoU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV9kYXRhMTYpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjQ0LDcgKzI2Myw3IEBA
IGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3Jl
bWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFy
YWN0ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwg
QnVmZmVyU3Vic3RyaW5nKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0
QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGlzOEJpdCgpKTsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwpAQCAtMjYxLDcgKzI4
MCw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3Vu
dEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRh
MTYoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJTdWJzdHJpbmcp
CisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5n
KQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2Rh
dGExNik7CkBAIC0yNzMsMTQgKzI5MiwxNCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAg
U1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKICAgICB9CiAK
LSAgICBlbnVtIENyZWF0ZUVtcHR5VW5pcXVlVGFnIHsgQ3JlYXRlRW1wdHlVbmlxdWUgfTsKLSAg
ICBTdHJpbmdJbXBsKENyZWF0ZUVtcHR5VW5pcXVlVGFnKQorICAgIGVudW0gQ3JlYXRlU3ltYm9s
RW1wdHlUYWcgeyBDcmVhdGVTeW1ib2xFbXB0eSB9OworICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3lt
Ym9sRW1wdHlUYWcpCiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQog
ICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgIC8vIFdlIGV4cGVjdCBtX2xlbmd0aCB0byBi
ZSBpbml0aWFsaXplZCB0byAwIGFzIHdlIHVzZSBpdAogICAgICAgICAvLyB0byByZXByZXNlbnQg
YSBudWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgogICAgICAgICAsIG1fZGF0YTgocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Mo
aGFzaEFuZEZsYWdzRm9yVW5pcXVlKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJu
YWwpKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclN5bWJvbChzX2hh
c2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2RhdGE4KTsKIApAQCAtMzc4LDEyICszOTcsMTIgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxUPihyZXN1bHRJbXBsLCBsZW5ndGgpOwog
ICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVV
bmlxdWVFbXB0eSgpCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZVN5bWJvbEVtcHR5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0
cmluZ0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xFbXB0eSkpOwogICAgIH0KIAotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaXF1ZShQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlcCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3ltYm9sKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwKTsK
IAogICAgIC8vIFJlYWxsb2NhdGUgdGhlIFN0cmluZ0ltcGwuIFRoZSBvcmlnaW5hbFN0cmluZyBt
dXN0IGJlIG9ubHkgb3duZWQgYnkgdGhlIFBhc3NSZWZQdHIsCiAgICAgLy8gYW5kIHRoZSBidWZm
ZXIgb3duZXJzaGlwIG11c3QgYmUgQnVmZmVySW50ZXJuYWwuIEp1c3QgbGlrZSB0aGUgaW5wdXQg
cG9pbnRlciBvZiByZWFsbG9jKCksCkBAIC0zOTMsOCArNDEyLDkgQEAgY2xhc3MgU3RyaW5nSW1w
bCB7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9CiAgICAgc3RhdGljIHVuc2ln
bmVkIGZsYWdJczhCaXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQotICAgIHN0
YXRpYyB1bnNpZ25lZCBmbGFnSXNBdG9taWMoKSB7IHJldHVybiBzX2hhc2hGbGFnSXNBdG9taWM7
IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzVW5pcXVlKCkgeyByZXR1cm4gc19oYXNoRmxh
Z0lzVW5pcXVlOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc0F0b21pYygpIHsgcmV0dXJu
IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgZmxh
Z0lzU3ltYm9sKCkgeyByZXR1cm4gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbDsgfQorICAg
IHN0YXRpYyB1bnNpZ25lZCBtYXNrU3RyaW5nS2luZCgpIHsgcmV0dXJuIHNfaGFzaE1hc2tTdHJp
bmdLaW5kOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGRhdGFPZmZzZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoU3RyaW5nSW1wbCwgbV9kYXRhOCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlcj4KQEAgLTQ1NCwxNyArNDc0LDIxIEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0OwogCi0gICAgYm9v
bCBpc1VuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0lz
VW5pcXVlOyB9CisgICAgU3RyaW5nS2luZCBzdHJpbmdLaW5kKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8U3RyaW5nS2luZD4obV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hNYXNrU3RyaW5nS2lu
ZCk7IH0KKyAgICBib29sIGlzU3ltYm9sKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3Mg
JiBzX2hhc2hGbGFnU3RyaW5nS2luZElzU3ltYm9sOyB9CisgICAgYm9vbCBpc0F0b21pYygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21p
YzsgfQogCi0gICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdz
ICYgc19oYXNoRmxhZ0lzQXRvbWljOyB9CiAgICAgdm9pZCBzZXRJc0F0b21pYyhib29sIGlzQXRv
bWljKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1N0YXRpYygpKTsKLSAgICAgICAgQVNTRVJU
KCFpc1VuaXF1ZSgpKTsKLSAgICAgICAgaWYgKGlzQXRvbWljKQotICAgICAgICAgICAgbV9oYXNo
QW5kRmxhZ3MgfD0gc19oYXNoRmxhZ0lzQXRvbWljOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ0lzQXRvbWljOworICAgICAgICBBU1NFUlQo
IWlzU3ltYm9sKCkpOworICAgICAgICBpZiAoaXNBdG9taWMpIHsKKyAgICAgICAgICAgIG1faGFz
aEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7CisgICAgICAgICAgICBB
U1NFUlQoc3RyaW5nS2luZCgpID09IFN0cmluZ0F0b21pYyk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21p
YzsKKyAgICAgICAgICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0gU3RyaW5nTm9ybWFsKTsKKyAg
ICAgICAgfQogICAgIH0KIAogI2lmIFNUUklOR19TVEFUUwpAQCAtNzA2LDYgKzczMCwxNiBAQCBj
bGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgY29u
c3QgVUNoYXIgbGF0aW4xQ2FzZUZvbGRUYWJsZVsyNTZdOwogCisgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIFN0cmluZ0ltcGwmIGV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpCisgICAgewor
ICAgICAgICBBU1NFUlQobGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQoaXNTeW1ib2woKSk7Cisg
ICAgICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpOworICAg
ICAgICBBU1NFUlQoc3Vic3RyaW5nQnVmZmVyKCkpOworICAgICAgICBBU1NFUlQoIXN1YnN0cmlu
Z0J1ZmZlcigpLT5pc1N5bWJvbCgpKTsKKyAgICAgICAgcmV0dXJuICpzdWJzdHJpbmdCdWZmZXIo
KTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0NvcHkoKSBjb25zdAogICAg
IHsKQEAgLTc3MiwyMyArODA2LDEyIEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlSW50
ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiwgdW5zaWduZWQsIENoYXJUeXBlKiYpOwogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSosIHVuc2lnbmVkKTsKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIGhhc2hTbG93Q2FzZSgpIGNvbnN0OwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdW5zaWduZWQgaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHVu
c2lnbmVkIGZsYWdzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVuc2lnbmVkIGhh
c2hBbmRGbGFnc0ZvclN5bWJvbCh1bnNpZ25lZCBmbGFncyk7CiAKICAgICAvLyBUaGUgYm90dG9t
IGJpdCBpbiB0aGUgcmVmIGNvdW50IGluZGljYXRlcyBhIHN0YXRpYyAoaW1tb3J0YWwpIHN0cmlu
Zy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmlu
ZyA9IDB4MTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19yZWZDb3VudEluY3JlbWVudCA9
IDB4MjsgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcmVmIC8gZGVyZWYgd2l0aG91dCBkaXN0dXJiaW5n
IHRoZSBzdGF0aWMgc3RyaW5nIGZsYWcuCiAKLSAgICAvLyBUaGUgYm90dG9tIDcgYml0cyBpbiB0
aGUgaGFzaCBhcmUgZmxhZ3MuCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0NvdW50
ID0gNzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnTWFzayA9ICgxdSA8PCBzX2Zs
YWdDb3VudCkgLSAxOwotICAgIENPTVBJTEVfQVNTRVJUKHNfZmxhZ0NvdW50IDw9IFN0cmluZ0hh
c2hlcjo6ZmxhZ0NvdW50LCBTdHJpbmdIYXNoZXJfcmVzZXJ2ZXNfZW5vdWdoX2JpdHNfZm9yX1N0
cmluZ0ltcGxfZmxhZ3MpOwotCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdJ
c1VuaXF1ZSA9IDF1IDw8IDY7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWc4
Qml0QnVmZmVyID0gMXUgPDwgNTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxh
Z0lzQXRvbWljID0gMXUgPDwgNDsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxh
Z0RpZFJlcG9ydENvc3QgPSAxdSA8PCAzOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hh
c2hNYXNrQnVmZmVyT3duZXJzaGlwID0gMXUgfCAoMXUgPDwgMSk7Ci0KICNpZiBTVFJJTkdfU1RB
VFMKICAgICBXVEZfRVhQT1JUREFUQSBzdGF0aWMgU3RyaW5nU3RhdHMgbV9zdHJpbmdTdGF0czsK
ICNlbmRpZgpAQCAtODAzLDcgKzgyNiw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgICAg
IC8vIFRoZXNlIHZhbHVlcyBtaW1pYyBDb25zdHJ1Y3RGcm9tTGl0ZXJhbC4KICAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlhbFJlZkNvdW50ID0gc19yZWZDb3VudEluY3JlbWVu
dDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlhbEZsYWdzID0gc19oYXNo
RmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNfaW5pdGlhbEZsYWdzID0gc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3Jt
YWwgfCBCdWZmZXJJbnRlcm5hbDsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFz
aFNoaWZ0ID0gc19mbGFnQ291bnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3Rh
dGljcy5jcHAKaW5kZXggNjViYjY3MjFkNzQzZmExMDQxYzI5MmI2MGY0ZDAzMjkyODNkOGU1MS4u
Mzk0NWM3M2UwMDhjZDQzN2RhNTQ5YTE1YTVhYWJiNDg2NTMzNmQxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCkBAIC00NywxOCArNDcsMTggQEAgU3RyaW5nSW1wbCogU3Ry
aW5nSW1wbDo6ZW1wdHkoKQogICAgIHJldHVybiAmZW1wdHlTdHJpbmcuZ2V0KCk7CiB9CiAKLS8v
IFNldCB0aGUgaGFzaCBlYXJseSwgc28gdGhhdCBhbGwgdW5pcXVlIFN0cmluZ0ltcGxzIGhhdmUg
YSBoYXNoLAorLy8gU2V0IHRoZSBoYXNoIGVhcmx5LCBzbyB0aGF0IGFsbCBzeW1ib2wgU3RyaW5n
SW1wbHMgaGF2ZSBhIGhhc2gsCiAvLyBhbmQgZG9uJ3QgdXNlIHRoZSBub3JtYWwgaGFzaGluZyBh
bGdvcml0aG0gLSB0aGUgdW5pcXVlIG5hdHVyZSBvZiB0aGVzZQogLy8ga2V5cyBtZWFucyB0aGF0
IHdlIGRvbid0IG5lZWQgdGhlbSB0byBtYXRjaCBhbnkgb3RoZXIgc3RyaW5nIChpbiBmYWN0LAog
Ly8gdGhhdCdzIGV4YWN0bHkgdGhlIG9wb3NpdGUgb2Ygd2hhdCB3ZSB3YW50ISksIGFuZCB0aGUg
bm9ybWFsIGhhc2ggd291bGQKIC8vIGxlYWQgdG8gbG90cyBvZiBjb25mbGljdHMuCi11bnNpZ25l
ZCBTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUodW5zaWduZWQgZmxhZ3MpCit1bnNp
Z25lZCBTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JTeW1ib2wodW5zaWduZWQgZmxhZ3MpCiB7
Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSA9IDA7Ci0g
ICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlICs9IDEgPDwgc19mbGFnQ291bnQ7Ci0gICAg
c19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlIHw9IDEgPDwgMzE7Ci0gICAgdW5zaWduZWQgZmxh
Z3NGb3JVbmlxdWUgPSAoZmxhZ3MgJiBzX2ZsYWdNYXNrKSB8IHNfaGFzaEZsYWdJc0F0b21pYyB8
IHNfaGFzaEZsYWdJc1VuaXF1ZTsKLSAgICByZXR1cm4gc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5p
cXVlIHwgZmxhZ3NGb3JVbmlxdWU7CisgICAgc3RhdGljIHVuc2lnbmVkIHNfbmV4dEhhc2hBbmRG
bGFnc0ZvclN5bWJvbCA9IDA7CisgICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yU3ltYm9sICs9IDEg
PDwgc19mbGFnQ291bnQ7CisgICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yU3ltYm9sIHw9IDEgPDwg
MzE7CisgICAgdW5zaWduZWQgZmxhZ3NGb3JTeW1ib2wgPSAoKGZsYWdzICYgc19mbGFnTWFzaykg
JiAofnNfaGFzaE1hc2tTdHJpbmdLaW5kKSkgfCBTdHJpbmdTeW1ib2w7CisgICAgcmV0dXJuIHNf
bmV4dEhhc2hBbmRGbGFnc0ZvclN5bWJvbCB8IGZsYWdzRm9yU3ltYm9sOwogfQogCiBXVEZfRVhQ
T1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgbnVsbEF0b20pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQubW0KaW5kZXggN2VhN2NiYWFhN2U3ZmU3N2JmMDI5Mjc2ZmRjYTdhMjYzNTliMTA0
Zi4uYWM3NGZmNjEyMmZkOTY5MjRkZjM0MzNjOTMzYTdmN2M2M2M5ZTkzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5tbQpAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5qZWN0ZWQoKQogICAgIEpTQzo6RXhl
Y1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAKLSAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRG
dW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAi
Y3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50
RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOwogICAgIGlmIChyZXBsYWNl
bWVudEZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCkBA
IC0xODYsNyArMTg2LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFs
bFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKICAgICAKICAgICAvLyBMb29rdXAgdGhlICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVu
dCIgZnVuY3Rpb24uCi0gICAgSlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9i
YWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgImNyZWF0ZVBsdWdpblJl
cGxhY2VtZW50IikpOworICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVudEZ1bmN0aW9uID0gZ2xv
YmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJj
cmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKICAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5p
c1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNDOjpKU09i
amVjdCogcmVwbGFjZW1lbnRPYmplY3QgPSByZXBsYWNlbWVudEZ1bmN0aW9uLnRvT2JqZWN0KGV4
ZWMpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6
Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290KQogICAgIH0KIAogICAgIC8vIEdl
dCB0aGUgPHZpZGVvPiBjcmVhdGVkIHRvIHJlcGxhY2UgdGhlIHBsdWctaW4uCi0gICAgSlNDOjpK
U1ZhbHVlIHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVj
LCAidmlkZW8iKSk7CisgICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4
ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmlkZW8iKSk7CiAgICAgaWYg
KCFleGVjLT5oYWRFeGNlcHRpb24oKSAmJiAhdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAg
ICAgICAgbV9tZWRpYUVsZW1lbnQgPSBKU0hUTUxWaWRlb0VsZW1lbnQ6OnRvV3JhcHBlZCh2YWx1
ZSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCBib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9vdCkKICAgICB9CiAKICAgICAvLyBH
ZXQgdGhlIHNjcmlwdGluZyBpbnRlcmZhY2UuCi0gICAgdmFsdWUgPSByZXBsYWNlbWVudC5nZXQo
ZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJzY3JpcHRPYmplY3QiKSk7CisgICAgdmFsdWUg
PSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJzY3JpcHRPYmplY3QiKSk7CiAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSAmJiAhdmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgbV9zY3JpcHRPYmplY3QgPSB2YWx1ZS50
b09iamVjdChleGVjKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNw
cAppbmRleCBkZjRkYzc4NjJkMmRhYWE5ZjJiNjc2ZDFlZDMxNzJhMmYzZWFmZDI5Li40Y2QwODM4
ZjM2NDI1MzgzZThjMTg4ODI2NmY4MjEyMWEwMGU3NWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIERpY3Rpb25hcnk6
OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
IG1hcCkgYwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKTsK
IAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5TmFtZXMuZW5k
KCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0LT5zdHJpbmcoKTsKICAg
ICAgICAgaWYgKHN0cmluZ0tleS5pc0VtcHR5KCkpCkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgRGlj
dGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpOwogCiAgICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgKytp
dCkgewogICAgICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwogICAgICAgICBp
ZiAoIXN0cmluZ0tleS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IGJiNTAxOGMxNzk5MmQ2MGQyZWYyNGJm
ZWQ2ODEwYjIyNDcxNzI3MTYuLjZmODA2NjE0ZWE0YjBjYjQxNmE1M2YyNzI5MmQ5Y2VkOTVjZjY5
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGls
aXRpZXMuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBib29sIGdldChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVtZW50LCBKCiAgICAg
fQogICAgIGlmICghb2JqZWN0LmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJmV4ZWMtPnZtKCksIGtleVBhdGhFbGVtZW50LnV0Zjgo
KS5kYXRhKCkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJmV4ZWMtPnZtKCksIGtleVBhdGhFbGVtZW50LnV0ZjgoKS5kYXRhKCkpOwogICAgIGlm
ICghYXNPYmplY3Qob2JqZWN0KS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnRpZmllcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQgPSBhc09iamVjdChvYmplY3QpLT5nZXQoZXhl
YywgaWRlbnRpZmllcik7CkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBib29sIHNldChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUmIG9iamVjdCwgY29uc3QgU3RyaW5nJiBrZXlQYXRoRWxlbWVudCwK
IHsKICAgICBpZiAoIWNhblNldChvYmplY3QsIGtleVBhdGhFbGVtZW50KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmZXhlYy0+dm0oKSwga2V5UGF0
aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRh
dGEoKSk7CiAgICAgYXNPYmplY3Qob2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50
aWZpZXIsIGpzVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAK
aW5kZXggODk2Yjk5Y2U5MWI3MmM2Y2ZlODAyYjE3Y2JkMDcwZjI0NWQ0YTQ3ZC4uY2Y4YzZiYWU3
NWU0YTdkNWQ5M2I3NzRjNWI2NDU3NGY0ZGFhYTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBA
IC00MDAsNyArNDAwLDcgQEAgdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGUKIAogICAgICAgICBwcm9w
ZXJ0eUlkZW50aWZpZXJzID0gbmV3IElkZW50aWZpZXJbbnVtQ1NTUHJvcGVydGllc107CiAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQotICAgICAgICAg
ICAgcHJvcGVydHlJZGVudGlmaWVyc1tpXSA9IElkZW50aWZpZXIoZXhlYywganNQcm9wZXJ0eU5h
bWVzW2ldLmltcGwoKSk7CisgICAgICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBqc1Byb3BlcnR5TmFtZXNbaV0pOwogICAgIH0KIAog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCmluZGV4IGUxZDcyNWY4YzZk
MTExMzQxMjE1ZTEwYmRkN2FiNjcyN2U3NGVhZDQuLjQ1MWRhYzYyMzEzYjIzM2FkZjY1ZDhmNzBi
YWIzMWMzODM2NTk3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FsbGJhY2tEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxi
YWNrRGF0YS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52
b2tlQ2FsbGJhY2soSlNWYWx1ZSB0aGlzVmFsdWUsIE1hcmtlZEFyZ3VtZW50QnVmZmVyJgogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gY2FsbGJhY2soKS0+
bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2FsbGJhY2soKSwgY2FsbERhdGEpOwogICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgZnVuY3Rpb24gPSBjYWxsYmFj
aygpLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgICAg
IGZ1bmN0aW9uID0gY2FsbGJhY2soKS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgImhhbmRsZUV2ZW50IikpOwogICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1
bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUp
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCmluZGV4IGRh
NTJjZWMyY2ZkY2M3NmExY2Q0MGQyZTQ1YWUwOTU2NDY1ZTFmNzYuLjhkMmQwMjA2NGU1N2VhYTQ3
ODE4MGJiOGU0NWJkMzAwNGU4ZjMxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKQEAgLTg5LDggKzg5
LDggQEAgc3RhdGljIEpTQXJyYXkqIGdldEpTTGlzdGVuZXJGdW5jdGlvbnMoRXhlY1N0YXRlKiBl
eGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnMKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIEpTT2JqZWN0KiBsaXN0ZW5lckVudHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yyk7Ci0gICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJsaXN0ZW5lciIpLCBmdW5jdGlvbik7Ci0gICAgICAgIGxpc3RlbmVyRW50cnkt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ1c2VDYXB0dXJlIiksIGpz
Qm9vbGVhbihsaXN0ZW5lckluZm8uZXZlbnRMaXN0ZW5lclZlY3RvcltpXS51c2VDYXB0dXJlKSk7
CisgICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJsaXN0ZW5lciIpLCBmdW5jdGlvbik7CisgICAgICAgIGxpc3Rl
bmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJ1c2VDYXB0dXJlIiksIGpzQm9vbGVhbihsaXN0ZW5lckluZm8uZXZlbnRMaXN0ZW5lclZl
Y3RvcltpXS51c2VDYXB0dXJlKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhl
Yywgb3V0cHV0SW5kZXgrKywgSlNWYWx1ZShsaXN0ZW5lckVudHJ5KSk7CiAgICAgfQogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC0xMTgsNyArMTE4LDcgQEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJ
SG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoIWxp
c3RlbmVycy0+bGVuZ3RoKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQXRvbWlj
U3RyaW5nIGV2ZW50VHlwZSA9IGxpc3RlbmVyc0FycmF5W2ldLmV2ZW50VHlwZTsKLSAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBldmVudFR5cGUu
aW1wbCgpKSwgSlNWYWx1ZShsaXN0ZW5lcnMpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBldmVudFR5cGUuaW1wbCgp
KSwgSlNWYWx1ZShsaXN0ZW5lcnMpKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVp
bGRlci5jcHAKaW5kZXggMDgxMGJjODFlOWEwNWVlYWRlZWY0ZjBlNjY5OTRkMjFiOTM1M2FhNy4u
YTlmMzcyNjU3MGUyODk0YWJhNjFlODVjYzA5ZjA5YzE0OGIxOGY5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3Bw
CkBAIC01NiwyMSArNTYsMjEgQEAKIHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQo
Y29uc3QgY2hhcioga2V5LCB1bnNpZ25lZCB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBtX2V4ZWMt
PnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAgICBt
X2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNOdW1iZXIodmFsdWUpKTsK
IH0KIAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXks
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwotICAg
IElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlm
aWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAgbV9kaWN0aW9uYXJ5
LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzU3RyaW5nKG1fZXhlYywgdmFsdWUpKTsKIH0K
IAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogewogICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0o
KTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIg
aWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIFJlZlB0
cjxVaW50OEFycmF5PiBhcnJheVZpZXcgPSBVaW50OEFycmF5OjpjcmVhdGUoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50
aWZpZXIsIGFycmF5Vmlldy0+d3JhcChtX2V4ZWMsIHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVj
dCgpKSk7CiB9CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVy
OjphZGQoY29uc3QgY2hhcioga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlCiB2b2lk
IEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwgY29uc3QgQ3J5
cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJiBuZXN0ZWRCdWlsZGVyKQogewogICAgIFZN
JiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkp
OworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCBrZXkpOwogICAgIGNvbnN0IEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlciYganNCdWlsZGVyID0g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyJj4obmVzdGVkQnVpbGRl
cik7CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzQnVpbGRl
ci5yZXN1bHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAppbmRleCA2NGQ1NmQ5NzBhNzRlNWRj
MWFlYWEzODU5NWI1NmJkMWU2MzQ2ZmUyLi40YWU2YWU1MDYyNDZlMzlmYmZjYzUyZDM3MGMwNjZm
ODljZTAzYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBK
U0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmdldEFsZ29yaXRobUlkZW50aWZpZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHUKIAogc3RhdGljIEpTVmFsdWUgZ2V0UHJvcGVydHkoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBjb25zdCBjaGFyKiBuYW1lKQogewotICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcihleGVjLCBuYW1lKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG5hbWUpOwogICAgIFByb3BlcnR5U2xvdCBz
bG90KG9iamVjdCk7CiAKICAgICBpZiAob2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRl
bnRpZmllciwgc2xvdCkpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIGJvb2wgZ2V0SGFzaEFs
Z29yaXRobShKU0RpY3Rpb25hcnkmIGRpY3Rpb25hcnksIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBkaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpOwogICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBkaWN0aW9uYXJ5LmluaXRpYWxpemVyT2JqZWN0KCk7CiAKLSAgICBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoZXhlYywgImhhc2giKTsKKyAgICBJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJoYXNoIik7CiAgICAgUHJvcGVy
dHlTbG90IHNsb3Qob2JqZWN0KTsKIAogICAgIEpTVmFsdWUgaGFzaCA9IGdldFByb3BlcnR5KGV4
ZWMsIG9iamVjdCwgImhhc2giKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCmluZGV4IGZiYjM5N2U0YjVh
MjMwZjQ0NDE4ZDYzZGFmNzczZDUyYTk5ZDdhNDYuLjgzNTA1N2I4MzdkMWI2YzcxZTFlMGFmN2I2
MzgwODMwMjZlODI4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcApAQCAtNTIsNyArNTIsNyBAQAog
CiBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCoganNvbiwgY29uc3QgY2hhcioga2V5LCBKU0FycmF5KiYgcmVzdWx0KQogewotICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcihleGVjLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChqc29uKTsKIAogICAgIGlmICghanNvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50aWZp
ZXIsIHNsb3QpKQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpT
T04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LAogCiBz
dGF0aWMgYm9vbCBnZXRTdHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBq
c29uLCBjb25zdCBjaGFyKiBrZXksIFN0cmluZyYgcmVzdWx0KQogewotICAgIElkZW50aWZpZXIg
aWRlbnRpZmllcihleGVjLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChqc29u
KTsKIAogICAgIGlmICghanNvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50aWZpZXIsIHNs
b3QpKQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgYm9vbCBnZXRTdHJpbmdGcm9tSlNPTihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksCiAKIHN0YXRpYyBi
b29sIGdldEJvb2xlYW5Gcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBj
b25zdCBjaGFyKiBrZXksIGJvb2wmIHJlc3VsdCkKIHsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIoZXhlYywga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoanNvbik7CiAKICAg
ICBpZiAoIWpzb24tPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudGlmaWVyLCBzbG90KSkKQEAg
LTUwMSw3ICs1MDEsNyBAQCBib29sIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5U2l6
ZUlzVmFsaWQoc2l6ZV90IHNpemVJbkJpdHMpIGNvbnN0CiBzdGF0aWMgdm9pZCBhZGRUb0pTT04o
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAgICBqc29uLT5wdXREaXJlY3Qodm0sIGlk
ZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIHZhbHVlKSk7CiB9CiAKQEAgLTU0MiwxMyArNTQyLDEz
IEBAIHN0YXRpYyB2b2lkIGJ1aWxkSlNPTkZvclJTQUNvbXBvbmVudHMoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IENyeXB0b0tleURhdGFSCiAgICAgICAgIGFkZFRvSlNPTihleGVjLCBqc1By
aW1lSW5mbywgInQiLCBiYXNlNjRVUkxFbmNvZGUoZGF0YS5vdGhlclByaW1lSW5mb3MoKVtpXS5m
YWN0b3JDUlRDb2VmZmljaWVudCkpOwogICAgICAgICBvdGgtPnB1dERpcmVjdEluZGV4KGV4ZWMs
IGksIGpzUHJpbWVJbmZvKTsKICAgICB9Ci0gICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcihleGVjLCAib3RoIiksIG90aCk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAib3RoIiksIG90aCk7CiB9
CiAKIHN0YXRpYyB2b2lkIGFkZEJvb2xUb0pTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
anNvbiwgY29uc3QgY2hhcioga2V5LCBib29sIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAgICBq
c29uLT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzQm9vbGVhbih2YWx1ZSkpOwogfQogCkBA
IC02NzUsNyArNjc1LDcgQEAgc3RhdGljIHZvaWQgYWRkVXNhZ2VzVG9KU09OKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGpzb24sIENyeXB0b0tleVVzYWdlIHVzYWcKICAgICBpZiAodXNhZ2Vz
ICYgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRzKQogICAgICAgICBrZXlPcHMtPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIGluZGV4KyssIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBBU0NJSUxpdGVyYWwo
ImRlcml2ZUJpdHMiKSkpOwogCi0gICAganNvbi0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXIoZXhlYywgImtleV9vcHMiKSwga2V5T3BzKTsKKyAgICBqc29uLT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAia2V5X29wcyIpLCBrZXlPcHMp
OwogfQogCiBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpzZXJpYWxpemUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXkmIGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAppbmRleCA3ODM2
NjgxOTAyZmMzYjI0MGJhYTBlNWVhOGU2NmY0ZDFiMGQyZjZkLi41NGViMzMxMTYzZGU2OGM5Njdh
MWI0YzNjMTllNjViZjVkNGM0OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFN0
cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0
cmluZyYgcHJlZml4KQogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKTsKICAgICAgICAgCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1fY3VzdG9tUmVz
b2x2ZXItPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJsb29rdXBOYW1lc3BhY2VVUkkiKSk7
CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1fY3VzdG9tUmVzb2x2ZXItPmdldChleGVjLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb29rdXBOYW1lc3BhY2VVUkkiKSk7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5j
dGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cAppbmRleCAzYWZhYWUyMzQwNzc0OWFjN2E5ZjI3MjBmM2Y4OTdmMGJlNTdjZGU3Li41MjU5OGNl
YzI0NzVmMTZhYmNkOTE4MTdhMGM4MzYxYmY1Y2ZjMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHZvaWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAgdGhpc09iamVjdC0+bV9pbXBsLT5nZXRO
YW1lcyhuYW1lcyk7CiAgICAgc2l6ZV90IGxlbmd0aCA9IG5hbWVzLnNpemUoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChJZGVudGlmaWVyKGV4ZWMsIG5hbWVzW2ldKSk7CisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZXNbaV0pKTsKIAogICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKaW5kZXggNDhmODE4NDUyMjc2ODIwYWFhZTFmYTQ4M2NmNDdlNDg0MTYwYjc1Mi4uMjcxZTgy
ZjRlYmNlY2MwNDZjNDc5NTdiYjdmOTgwNjQwOWIzZWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBA
IGJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVj
dCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IERvbid0IGFsbG93IHNoYWRvd2luZyBsb2NhdGlvbiB1c2luZyBhY2Nlc3NvciBwcm9wZXJ0aWVz
LgotICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgcHJvcGVydHlO
YW1lID09IElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9uIikpCisgICAgaWYgKGRlc2NyaXB0b3Iu
aXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAibG9jYXRpb24iKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQg
SlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkK
ICAgICBpZiAoRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlRE9NV2luZG93KGV4ZWMpLmZyYW1l
KCkpIHsKICAgICAgICAgaWYgKGFjdGl2ZUZyYW1lLT5zZXR0aW5ncygpLnVzZXNEYXNoYm9hcmRC
YWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgIWFjdGl2ZUZyYW1lLT50cmVlKCkucGFyZW50
KCkpIHsKICAgICAgICAgICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coZXhlYywgaW1wbCgpKSkKLSAgICAgICAgICAgICAgICBwdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAibG9jYXRpb24iKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJsb2NhdGlvbiIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CkBAIC01MjYsNyArNTI2LDcgQEAgaW5saW5lIHZvaWQgRGlhbG9nSGFuZGxlcjo6ZGlhbG9n
Q3JlYXRlZChET01XaW5kb3cmIGRpYWxvZykKICAgICAvLyAgICAgICAgd29ybGQgaWYgZGlhbG9n
QXJndW1lbnRzIGNvbWVzIGZyb20gYW4gaXNvbGF0ZWQgd29ybGQuCiAgICAgSlNET01XaW5kb3cq
IGdsb2JhbE9iamVjdCA9IHRvSlNET01XaW5kb3cobV9mcmFtZS5nZXQoKSwgbm9ybWFsV29ybGQo
bV9leGVjLT52bSgpKSk7CiAgICAgaWYgKEpTVmFsdWUgZGlhbG9nQXJndW1lbnRzID0gbV9leGVj
LT5hcmd1bWVudCgxKSkKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QobV9leGVjLT52
bSgpLCBJZGVudGlmaWVyKG1fZXhlYywgImRpYWxvZ0FyZ3VtZW50cyIpLCBkaWFsb2dBcmd1bWVu
dHMpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPnZtKCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCAiZGlhbG9nQXJndW1lbnRzIiksIGRpYWxvZ0FyZ3Vt
ZW50cyk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIERpYWxvZ0hhbmRsZXI6OnJldHVyblZhbHVlKCkg
Y29uc3QKQEAgLTUzNCw3ICs1MzQsNyBAQCBpbmxpbmUgSlNWYWx1ZSBEaWFsb2dIYW5kbGVyOjpy
ZXR1cm5WYWx1ZSgpIGNvbnN0CiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IHRvSlNE
T01XaW5kb3cobV9mcmFtZS5nZXQoKSwgbm9ybWFsV29ybGQobV9leGVjLT52bSgpKSk7CiAgICAg
aWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllcihtX2V4ZWMsICJyZXR1cm5WYWx1ZSIpOworICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCAicmV0dXJuVmFs
dWUiKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOwogICAgIGlmICghSlNH
bG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIG1fZXhlYywgaWRl
bnRpZmllciwgc2xvdCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9t
LmNwcAppbmRleCBmY2E3YzdlZDZhZDVkODczZTA3YTIwMjczNzFlNzY4ZjZlMzJiYjM3Li5lY2Ji
MzNlZWY4NzhjNWU1ZjFlMDNjOWY4Yjc2NjAzZTJjYjIyMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApA
QCAtNDgsNyArNDgsNyBAQAogICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwg
YWx3YXlzIHlpZWxkIGFuIG9iamVjdC4KICAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUudG9P
YmplY3QoZXhlYyk7CiAKLSAgICBKU1ZhbHVlIHhWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgIngiKSk7CisgICAgSlNWYWx1ZSB4VmFsdWUgPSBvYmplY3QtPmdldChl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ4IikpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlWCA9
ICF4VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTU2LDcgKzU2LDcgQEAKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSlNWYWx1ZSB5
VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ5IikpOworICAgIEpT
VmFsdWUgeVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAieSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIGJvb2wgY2FuUHJvdmlkZVkgPSAheVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7
CkBAIC02NCw3ICs2NCw3IEBACiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIEpTVmFsdWUgelZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAieiIpKTsKKyAgICBKU1ZhbHVlIHpWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInoiKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVaID0g
IXpWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtODYsNyArODYsNyBAQAogICAgIC8vIEdp
dmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9iamVjdC4KICAg
ICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7CiAKLSAgICBKU1ZhbHVl
IGFscGhhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhbHBoYSIp
KTsKKyAgICBKU1ZhbHVlIGFscGhhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJhbHBoYSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZUFscGhhID0gIWFscGhh
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTk0LDcgKzk0LDcgQEAKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSlNWYWx1ZSBiZXRh
VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJiZXRhIikpOworICAg
IEpTVmFsdWUgYmV0YVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAiYmV0YSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZUJldGEgPSAhYmV0YVZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCk7CkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSlNWYWx1ZSBnYW1tYVZhbHVlID0g
b2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiZ2FtbWEiKSk7CisgICAgSlNWYWx1
ZSBnYW1tYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiZ2FtbWEiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVHYW1tYSA9ICFnYW1tYVZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCk7CkBAIC0xMTksMTggKzExOSwxOCBAQAogc3RhdGljIEpTT2JqZWN0KiBjcmVh
dGVBY2NlbGVyYXRpb25PYmplY3QoY29uc3QgRGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9u
KiBhY2NlbGVyYXRpb24sIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogb2JqZWN0
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAieCIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVY
KCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPngoKSkgOiBqc051bGwoKSk7Ci0gICAgb2JqZWN0
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAieSIpLCBhY2NlbGVyYXRp
b24tPmNhblByb3ZpZGVZKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPnkoKSkgOiBqc051bGwo
KSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAi
eiIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVaKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24t
PnooKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieCIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVY
KCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPngoKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieSIp
LCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVZKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPnko
KSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAieiIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVaKCkg
PyBqc051bWJlcihhY2NlbGVyYXRpb24tPnooKSkgOiBqc051bGwoKSk7CiAgICAgcmV0dXJuIG9i
amVjdDsKIH0KIAogc3RhdGljIEpTT2JqZWN0KiBjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QoY29u
c3QgRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlKiByb3RhdGlvblJhdGUsIEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
ZXhlYyk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAiYWxwaGEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRlQWxwaGEoKSA/IGpzTnVtYmVyKHJv
dGF0aW9uUmF0ZS0+YWxwaGEoKSkgOiBqc051bGwoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiYmV0YSIpLCAgcm90YXRpb25SYXRlLT5jYW5Q
cm92aWRlQmV0YSgpICA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+YmV0YSgpKSAgOiBqc051bGwo
KSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAi
Z2FtbWEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRlR2FtbWEoKSA/IGpzTnVtYmVyKHJvdGF0
aW9uUmF0ZS0+Z2FtbWEoKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYWxwaGEiKSwgcm90YXRpb25S
YXRlLT5jYW5Qcm92aWRlQWxwaGEoKSA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+YWxwaGEoKSkg
OiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiYmV0YSIpLCAgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRlQmV0
YSgpICA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+YmV0YSgpKSAgOiBqc051bGwoKSk7CisgICAg
b2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAiZ2FtbWEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRlR2FtbWEoKSA/IGpzTnVtYmVyKHJv
dGF0aW9uUmF0ZS0+Z2FtbWEoKSkgOiBqc051bGwoKSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKaW5kZXggMjBk
OGY4M2NkMGU0OWFhNmEwNGMzZjY3YmM4ZDI1ZWUyM2JmOThmMC4uZTk4NDkwOWU3NmIyNTk0MGRh
OWVlY2QwZDk2NTk5ZTBlOGY2ZjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBACiBKU0RpY3Rpb25hcnk6OkdldFByb3Bl
cnR5UmVzdWx0IEpTRGljdGlvbmFyeTo6dHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlJiBmaW5hbFJlc3VsdCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIobV9leGVjLCBwcm9wZXJ0eU5hbWUpOwor
ICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVj
LCBwcm9wZXJ0eU5hbWUpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KG1faW5pdGlhbGl6ZXJPYmpl
Y3QuZ2V0KCkpOwogCiAgICAgaWYgKCFtX2luaXRpYWxpemVyT2JqZWN0LmdldCgpLT5nZXRQcm9w
ZXJ0eVNsb3QobV9leGVjLCBpZGVudGlmaWVyLCBzbG90KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDk1OWIyMzY2NzQzZDc5ZjYzYjBh
YWMxYmFjODEyYmQxYmZkNTQ4Y2IuLjUyYTU3Mjg5NDQ3M2ExYWI1M2U5NjllMjcyN2RmNzEyMTdh
Y2RjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0
YSk7CiAgICAgLy8gSWYganNGdW5jdGlvbiBpcyBub3QgYWN0dWFsbHkgYSBmdW5jdGlvbiwgc2Vl
IGlmIGl0IGltcGxlbWVudHMgdGhlIEV2ZW50TGlzdGVuZXIgaW50ZXJmYWNlIGFuZCB1c2UgdGhh
dAogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgaGFuZGxlRXZl
bnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5k
bGVFdmVudCIpKTsKKyAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdl
dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKICAg
ICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0
YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDgxMjI1MDdiNGZiYzY4ZTEyM2Y2NzJm
YTMxMDg4YTUyY2E3MGU5NjUuLjNlYmE0MjFiYzczNDE3NzNhYzhmNmFhNmIxMjFlYWNkMWU4MmE3
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFs
bENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDb2xsZWN0
aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi5pdGVtKGluZGV4KSkpOwogCiAgICAgICAg
IC8vIFN1cHBvcnQgZm9yIGRvY3VtZW50LmltYWdlcygnPG5hbWU+JykgZXRjLgotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5hbWVkSXRlbXMoZXhlYywganNDb2xsZWN0aW9uLCBJZGVu
dGlmaWVyKGV4ZWMsIHN0cmluZykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShu
YW1lZEl0ZW1zKGV4ZWMsIGpzQ29sbGVjdGlvbiwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCBzdHJpbmcpKSk7CiAgICAgfQogCiAgICAgLy8gVGhlIHNlY29uZCBhcmcsIGlmIHNldCwgaXMg
dGhlIGluZGV4IG9mIHRoZSBpdGVtIHdlIHdhbnQKQEAgLTEwNiwxMiArMTA2LDEyIEBAIEpTVmFs
dWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdWludDMy
X3QgaW5kZXggPSB0b1VJbnQzMkZyb21TdHJpbmdJbXBsKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKS5pbXBsKCkpOwogICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCgpLCBpbXBsKCkuaXRlbShpbmRleCkpOwotICAgIHJldHVybiBuYW1lZEl0ZW1zKGV4ZWMsIHRo
aXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKSk7CisgICAgcmV0dXJuIG5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpKTsKIH0KIAogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0o
RXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1zKGV4ZWMs
IHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoZXhlYywgdGhp
cywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKICAgICByZXR1cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/
IGpzTnVsbCgpIDogdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCAzYWQ5YTQ3MjkwMzRjZGQwNzc2OWY3
Y2U2MGM3ZGVmMmIxYzkwOTUyLi42ZDM5YzQ1OWQ3ZDI1NTU0YTk3ZGU0ZGI3MjRkMzE2NWMyOTMz
ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1l
bnRDdXN0b20uY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNIVE1MRG9j
dW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEUK
IEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6OmFsbChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAg
ICAgLy8gSWYgImFsbCIgaGFzIGJlZW4gb3ZlcndyaXR0ZW4sIHJldHVybiB0aGUgb3ZlcndyaXR0
ZW4gdmFsdWUKLSAgICBKU1ZhbHVlIHYgPSBnZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cihleGVjLCAiYWxsIikpOworICAgIEpTVmFsdWUgdiA9IGdldERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbGwiKSk7CiAgICAgaWYgKHYpCiAgICAgICAg
IHJldHVybiB2OwogCkBAIC0xMjMsNyArMTIzLDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6
YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnNldEFsbChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgLy8gQWRkICJhbGwiIHRvIHRo
ZSBwcm9wZXJ0eSBtYXAuCi0gICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhl
YywgImFsbCIpLCB2YWx1ZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgImFsbCIpLCB2YWx1ZSk7CiB9CiAKIHN0YXRpYyBEb2N1bWVudCog
ZmluZENhbGxpbmdEb2N1bWVudChFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNDYsNyArMTQ2LDcgQEAg
SlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKSkgewogICAgICAgICAgICAgSlNET01XaW5k
b3dTaGVsbCogd3JhcHBlciA9IHRvSlNET01XaW5kb3dTaGVsbChmcmFtZSwgY3VycmVudFdvcmxk
KGV4ZWMpKTsKICAgICAgICAgICAgIGlmICh3cmFwcGVyKSB7Ci0gICAgICAgICAgICAgICAgSlNW
YWx1ZSBmdW5jdGlvbiA9IHdyYXBwZXItPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJvcGVu
IikpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB3cmFwcGVyLT5nZXQoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAib3BlbiIpKTsKICAgICAgICAgICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IDo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNw
cAppbmRleCAyODY3ZDYwZjJhMDI2MjdmMDdjZDAwYTM0MGU1OWM3ODExMjRkOTgzLi4yODQ4OTcx
MmE3ZjZjY2M0OTkwN2E2YWZiMzE1ZGM1ZmQ3YzhjZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uQ3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplYwog
CiBKU1ZhbHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbShFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoZXhlYywgdGhpcywg
SWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSkpOwogICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5lZCgpID8ganNOdWxs
KCkgOiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
QkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCBlNmExNDBmNTQ1ODQ5YjhhYTY0OTQ3ZTBkNjY3Zjg4
MzZmNGM5YWVhLi5hMjVkY2E5OTE4YzNhZTJlZTc2YTE4MDVhMjBkMGIxMGJkYWYxOWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNw
cApAQCAtNjAsNyArNjAsNyBAQCBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBJREJLZXlQYXRoIGtleVBhdGg7CiAgICAgYm9vbCBh
dXRvSW5jcmVtZW50ID0gZmFsc2U7CiAgICAgaWYgKCFvcHRpb25zVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkgewotICAgICAgICBKU1ZhbHVlIGtleVBhdGhWYWx1ZSA9IG9wdGlvbnNWYWx1ZS5n
ZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAia2V5UGF0aCIpKTsKKyAgICAgICAgSlNWYWx1ZSBr
ZXlQYXRoVmFsdWUgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgImtleVBhdGgiKSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC03MCw3ICs3MCw3IEBAIEpT
VmFsdWUgSlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0b0luY3JlbWVudCA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcihleGVj
LCAiYXV0b0luY3JlbWVudCIpKS50b0Jvb2xlYW4oZXhlYyk7CisgICAgICAgIGF1dG9JbmNyZW1l
bnQgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
ImF1dG9JbmNyZW1lbnQiKSkudG9Cb29sZWFuKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0
b20uY3BwCmluZGV4IDA0MDQ0ZDM1ZDM5NTljNWYxOGNmMmJkNWIzNTUzYmE4MmQ4MzVlZWMuLjg1
MDdlNDk0YTM3NmRiNzk5ZTU2ZmJlZThiZDFjYzZkOWQxNjc4MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC02
NywxMSArNjcsMTEgQEAgSlNWYWx1ZSBKU0lEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgYm9vbCB1bmlxdWUgPSBmYWxzZTsKICAgICBib29sIG11bHRpRW50
cnkgPSBmYWxzZTsKICAgICBpZiAoIW9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
Ci0gICAgICAgIHVuaXF1ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcihleGVj
LCAidW5pcXVlIikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgdW5pcXVlID0gb3B0aW9uc1Zh
bHVlLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ1bmlxdWUiKSkudG9C
b29sZWFuKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgICAgICBtdWx0aUVudHJ5ID0gb3B0aW9u
c1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJtdWx0aUVudHJ5IikpLnRvQm9vbGVh
bihleGVjKTsKKyAgICAgICAgbXVsdGlFbnRyeSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibXVsdGlFbnRyeSIpKS50b0Jvb2xlYW4oZXhlYyk7
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW1hZ2VEYXRhQ3VzdG9tLmNwcAppbmRleCAwNWMwY2Q5OTI1Njk1ZDEwOTVmM2VkNGM5ZDMyYTU1
NDM0NWUzYThiLi41ZWI2ZDU4YzI2Y2MyOTBmODlkZTk3NzY0ZmZjMTkzN2UwMzcwZDYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCkBA
IC00NSw3ICs0NSw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEltYWdlRGF0YSogaW1hZ2VECiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogICAgIAogICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBJbWFnZURhdGEsIGltYWdlRGF0YSk7Ci0gICAgSWRlbnRpZmllciBkYXRhTmFtZShleGVj
LCAiZGF0YSIpOworICAgIElkZW50aWZpZXIgZGF0YU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJkYXRhIik7CiAgICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGRh
dGFOYW1lLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1hZ2VEYXRhLT5kYXRhKCkpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIC8vIEZJWE1FOiBBZG9wdCByZXBvcnRFeHRyYU1lbW9y
eVZpc2l0ZWQsIGFuZCBzd2l0Y2ggdG8gcmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQuCiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjU5NQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDdXN0b20uY3BwCmluZGV4IGQ4NmE0ODBiMGMzODA2YmRlNjdlOWRiNGE2Njc0MjgyNjY5
YWZmNjYuLjg1NTBlYjQ1M2Y5M2ZjYWFiYjMxMzYwNGFjNTQyZmM3Yjc1NDY0M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250
ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTg2LDEyICs4NiwxMiBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0
ZUNvbnRleHRNZW51SXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgQ29udGV4
dE1lbgogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyArK2kp
IHsKICAgICAgICAgSlNPYmplY3QqIGl0ZW0gPSBhc09iamVjdChhcnJheS0+Z2V0SW5kZXgoZXhl
YywgaSkpOwotICAgICAgICBKU1ZhbHVlIGxhYmVsID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgImxhYmVsIikpOwotICAgICAgICBKU1ZhbHVlIHR5cGUgPSBpdGVtLT5nZXQoZXhl
YywgSWRlbnRpZmllcihleGVjLCAidHlwZSIpKTsKLSAgICAgICAgSlNWYWx1ZSBpZCA9IGl0ZW0t
PmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJpZCIpKTsKLSAgICAgICAgSlNWYWx1ZSBlbmFi
bGVkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImVuYWJsZWQiKSk7Ci0gICAg
ICAgIEpTVmFsdWUgY2hlY2tlZCA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJj
aGVja2VkIikpOwotICAgICAgICBKU1ZhbHVlIHN1Ykl0ZW1zID0gaXRlbS0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgInN1Ykl0ZW1zIikpOworICAgICAgICBKU1ZhbHVlIGxhYmVsID0gaXRl
bS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxhYmVsIikpOworICAg
ICAgICBKU1ZhbHVlIHR5cGUgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAidHlwZSIpKTsKKyAgICAgICAgSlNWYWx1ZSBpZCA9IGl0ZW0tPmdldChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJpZCIpKTsKKyAgICAgICAgSlNWYWx1ZSBlbmFi
bGVkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImVuYWJs
ZWQiKSk7CisgICAgICAgIEpTVmFsdWUgY2hlY2tlZCA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjaGVja2VkIikpOworICAgICAgICBKU1ZhbHVlIHN1Ykl0
ZW1zID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInN1Ykl0
ZW1zIikpOwogICAgICAgICBpZiAoIXR5cGUuaXNTdHJpbmcoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVu
dExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlz
dGVuZXIuY3BwCmluZGV4IDZkZGU1MTBjNDMyNTUyNmNkMjc5NzliODIyYjcxMjQ2MTI3NTNiZDQu
LmMzMWFkYWY3NzE2MmI4MmE4OWQ3YjQzZDc1N2RlZmMyNTk3NDMxNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgSlNPYmplY3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWMKICAgICBhcmdzLmFwcGVuZChqc05v
bnRyaXZpYWxTdHJpbmcoZXhlYywgbV9ldmVudFBhcmFtZXRlck5hbWUpKTsKICAgICBhcmdzLmFw
cGVuZChqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBtX2NvZGUpKTsKIAotICAgIEpTT2JqZWN0KiBq
c0Z1bmN0aW9uID0gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBJZGVudGlmaWVyKGV4ZWMsIG1f
ZnVuY3Rpb25OYW1lKSwgbV9zb3VyY2VVUkwsIG1fcG9zaXRpb24pOyAvLyBGSVhNRTogaXMgZ2xv
YmFsRXhlYyBvaz8KKyAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IGNvbnN0cnVjdEZ1bmN0aW9u
U2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgYXJncywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtX2Z1bmN0aW9uTmFtZSksIG1f
c291cmNlVVJMLCBtX3Bvc2l0aW9uKTsgLy8gRklYTUU6IGlzIGdsb2JhbEV4ZWMgb2s/CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRp
b24oZXhlYyk7CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAppbmRleCA3
MTcyNmJiZjFiMWViNjcxZTFhNmI0ZWQ0ODJjNjFlMmI1OGFiY2EzLi43YjQxMTlhNWE1ZDBiNzI4
OWYzZTEzNjhkOTEwZDc2YTc5OGQ4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc2hv
cnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBOb2RlKiBmaWx0ZXJOb2RlKQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZmlsdGVyLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBmaWx0ZXIgPSBmaWx0ZXIuZ2V0KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgImFjY2VwdE5vZGUiKSk7CisgICAgICAgIGZpbHRlciA9IGZpbHRl
ci5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYWNjZXB0Tm9kZSIpKTsK
ICAgICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmaWx0ZXIsIGNhbGxEYXRhKTsKICAgICAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewogICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk5vZGVGaWx0ZXIg
b2JqZWN0IGRvZXMgbm90IGhhdmUgYW4gYWNjZXB0Tm9kZSBmdW5jdGlvbiIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RD
dXN0b20uY3BwCmluZGV4IDNjOTJiZWIxMzRlZDA2MzMxYjM5ZjYxZjM2OWU0ZDg4ZGMzMzNkYTMu
LjhjOWViOGY5YzE5ZjkwYTAwYTM2ZGY1MzVmOTkzYmFjN2ExM2ViZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcApAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6
aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICB9CiAKLSAgICAgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcihleGVjLCBtX2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pLCBqc1ZhbHVlLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOworICAgICAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1faW1wbC0+Y29sdW1uTmFtZXMoKVtpXSksIGpz
VmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9iamVj
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCmlu
ZGV4IDk0MmM0ZGZiNmU3ZTY4Zjg5YTBjZjc5ZDU0NWUzMTkxNDZiYzI3MzcuLmQ2NDYwM2UxYjhk
MjVlZGY1ZDFmMjljNWY3MDM3MjFiNmJjYTMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpTU3Rv
cmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TgogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIHRoaXNPYmplY3QtPm1faW1wbC0+
a2V5KGksIGVjKSkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPm1faW1wbC0+a2V5KGksIGVjKSkpOwogICAgICAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCmluZGV4IDNjMzM2NTUxNTJkYmYyMjk1
NGZhNDk3ZTQxODA4ZTNmZTNmZTM1MDAuLjVhZDk3OTc5ODc2N2NiMTMzZTE2OTg2ZWQzZWU1Yzhl
ZjUyZmYwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
U3RyZWFtSlNTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlU3RyZWFtSlNTb3VyY2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgc2V0SW50ZXJuYWxT
bG90VG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9iamVjdFZhbHVlLCBQcml2YXRl
TmFtZSYKIHsKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9PYmplY3QoZXhl
Yyk7CiAgICAgUHV0UHJvcGVydHlTbG90IHByb3BlcnR5U2xvdChvYmplY3RWYWx1ZSk7Ci0gICAg
b2JqZWN0LT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKG5hbWUpLCB2YWx1ZSwg
cHJvcGVydHlTbG90KTsKKyAgICBvYmplY3QtPnB1dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6
OmZyb21VaWQobmFtZSksIHZhbHVlLCBwcm9wZXJ0eVNsb3QpOwogfQogCiBKU1ZhbHVlIGdldElu
dGVybmFsU2xvdEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9iamVjdFZhbHVl
LCBQcml2YXRlTmFtZSYgbmFtZSkKQEAgLTU1LDcgKzU1LDcgQEAgSlNWYWx1ZSBnZXRJbnRlcm5h
bFNsb3RGcm9tT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvYmplY3RWYWx1ZSwgUHJp
dmF0ZU4KICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9PYmplY3QoZXhlYyk7
CiAgICAgUHJvcGVydHlTbG90IHByb3BlcnR5U2xvdChvYmplY3RWYWx1ZSk7CiAKLSAgICBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShuYW1lKTsKKyAgICBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZChuYW1lKTsKICAgICBp
ZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBwcm9wZXJ0eVNsb3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIHJldHVybiBw
cm9wZXJ0eVNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCmluZGV4IGNiNDkzMWRk
NTZhNzZlYjMyNGJhNmYzZGU5NTE2NDczNGU4MGU0OWIuLjAzZDQ0NzY1ODk3OTc4YzAwNGFkOTMx
YWMxNjQwZDMxNjgwZTNhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0R2xvYmFsT2JqZWN0LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgYm9vbCBoYW5k
bGVFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQogYm9vbCBTY3JpcHRHbG9i
YWxPYmplY3Q6OnNldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5h
bWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgdmFsdWUpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRlbnRpZmllcihzY3JpcHRT
dGF0ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCkpOworICAgIHNjcmlwdFN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCkpOwogICAgIHJl
dHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwogfQogCkBAIC02MSwxNCArNjEsMTQg
QEAgYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIGNvbnN0IGNoYXIqIG5hbWUsIEluc3AKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3Jp
cHRTdGF0ZSk7CiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwot
ICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVudGlmaWVy
KHNjcmlwdFN0YXRlLCBuYW1lKSwgdG9KUyhzY3JpcHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1
ZSkpOworICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHNjcmlwdFN0YXRlLCBuYW1lKSwgdG9KUyhzY3JpcHRTdGF0ZSwg
Z2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0
U3RhdGUpOwogfQogCiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
JiB2YWx1ZSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7Ci0gICAgSlNW
YWx1ZSBqc1ZhbHVlID0gc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2V0KHNj
cmlwdFN0YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSk7CisgICAgSlNWYWx1ZSBq
c1ZhbHVlID0gc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2V0KHNjcmlwdFN0
YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHNjcmlwdFN0YXRlLCBuYW1lKSk7CiAgICAgaWYg
KCFqc1ZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTgyLDcgKzgyLDcgQEAgYm9v
bCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IGNoYXIqIG5hbWUsIERlcHIKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUoSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKLSAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShzY3JpcHRTdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBzY3JpcHRTdGF0ZSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwg
bmFtZSkpOworICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHNjcmlwdFN0YXRlLCBuYW1lKSk7
CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IDc1N2VjZDkwYTZjYWIzNzg5MGM2MmFjNjgzMzJkM2M5OWZiNjM2MTcuLjk3ODY4Nzc0OTcx
ZmUzZmJkYTgzYzk0NjZjM2I1NGNjMDYzOGU3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNTI1LDcgKzUyNSw3
IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgIDogQ2xvbmVC
YXNlKGV4ZWMpCiAgICAgICAgICwgbV9idWZmZXIob3V0KQogICAgICAgICAsIG1fYmxvYlVSTHMo
YmxvYlVSTHMpCi0gICAgICAgICwgbV9lbXB0eUlkZW50aWZpZXIoZXhlYywgZW1wdHlTdHJpbmco
KSkKKyAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsIGVtcHR5U3RyaW5nKCkpKQogICAgIHsKICAgICAgICAgd3JpdGUoQ3VycmVudFZlcnNpb24p
OwogICAgICAgICBmaWxsVHJhbnNmZXJNYXAobWVzc2FnZVBvcnRzLCBtX3RyYW5zZmVycmVkTWVz
c2FnZVBvcnRzKTsKQEAgLTEwMTgsNyArMTAxOCw3IEBAIGNsYXNzIENsb25lU2VyaWFsaXplciA6
IENsb25lQmFzZSB7CiAgICAgICAgIGlmIChzdHIuaXNOdWxsKCkpCiAgICAgICAgICAgICB3cml0
ZShtX2VtcHR5SWRlbnRpZmllcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdyaXRlKElk
ZW50aWZpZXIobV9leGVjLCBzdHIpKTsKKyAgICAgICAgICAgIHdyaXRlKElkZW50aWZpZXI6OmZy
b21TdHJpbmcobV9leGVjLCBzdHIpKTsKICAgICB9CiAKICAgICB2b2lkIHdyaXRlKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgdmVjdG9yKQpAQCAtMTI1NCw3ICsxMjU0LDcgQEAgU2VyaWFsaXphdGlv
blJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoU3RhY2sucmVtb3ZlTGFzdCgpOwogCiAgICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwot
ICAgICAgICAgICAgICAgICAgICBhcnJheS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKGFycmF5LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRh
YmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwgbV9leGVjLCBwcm9wZXJ0
eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5U3RhY2subGFzdCgpLnNpemUoKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUoTm9uSW5kZXhQcm9wZXJ0aWVzVGFnKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwpAQCAtMTMwNCw3
ICsxMzA0LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJp
YWxpemUoSlNWYWx1ZSBpbikKICAgICAgICAgICAgICAgICBpbnB1dE9iamVjdFN0YWNrLmFwcGVu
ZChpbk9iamVjdCk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAg
ICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVj
KSk7Ci0gICAgICAgICAgICAgICAgaW5PYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5TmFtZXMoaW5PYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluT2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2su
bGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjoKICAgICAgICAg
ICAgIEZBTExUSFJPVUdIOwpAQCAtMTM3Miw3ICsxMzcyLDcgQEAgU2VyaWFsaXphdGlvblJldHVy
bkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICAgICAgICAg
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOwogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcCo+KG9iamVjdCkpOwog
ICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJh
eShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwg
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVy
dHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CiAgICAgICAgICAgICAgICAgICAgIHdyaXRlKE5vbk1hcFByb3BlcnRpZXNUYWcpOwogICAg
ICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKICAgICAgICAgICAgICAgICAg
ICAgZ290byBvYmplY3RTdGFydFZpc2l0TWVtYmVyOwpAQCAtMjQ5MSwxMSArMjQ5MSwxMSBAQCBE
ZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKEpTVmFsdWUgdGVybWluYWwgPSByZWFkVGVy
bWluYWwoKSkgewotICAgICAgICAgICAgICAgIHB1dFByb3BlcnR5KG91dHB1dE9iamVjdFN0YWNr
Lmxhc3QoKSwgSWRlbnRpZmllcihtX2V4ZWMsIGNhY2hlZFN0cmluZy0+c3RyaW5nKCkpLCB0ZXJt
aW5hbCk7CisgICAgICAgICAgICAgICAgcHV0UHJvcGVydHkob3V0cHV0T2JqZWN0U3RhY2subGFz
dCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmco
KSksIHRlcm1pbmFsKTsKICAgICAgICAgICAgICAgICBnb3RvIG9iamVjdFN0YXJ0VmlzaXRNZW1i
ZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChPYmplY3RF
bmRWaXNpdE1lbWJlcik7Ci0gICAgICAgICAgICBwcm9wZXJ0eU5hbWVTdGFjay5hcHBlbmQoSWRl
bnRpZmllcihtX2V4ZWMsIGNhY2hlZFN0cmluZy0+c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIHBy
b3BlcnR5TmFtZVN0YWNrLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywgY2Fj
aGVkU3RyaW5nLT5zdHJpbmcoKSkpOwogICAgICAgICAgICAgZ290byBzdGF0ZVVua25vd247CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBPYmplY3RFbmRWaXNpdE1lbWJlcjogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQppbmRleCA1ZDlkOGY1
OTA3ZTYwNTUyMTA4NzY5MzVmYWFlYjY2ZTQ5NjcxYjYzLi4zYTkzZWJmNWFiNmM0ZDdlNTM1MTcw
M2VjMTgxNWE1ZmMxNGRiMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L1dlYlNjcmlwdE9iamVjdC5tbQpAQCAtMzMwLDcgKzMzMCw3IEBAIC0gKGlkKWNhbGxXZWJTY3Jp
cHRNZXRob2Q6KE5TU3RyaW5nICopbmFtZSB3aXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJncwog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0
aW9uKCkpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uID0gW3NlbGYgX2ltcF0tPmdldChl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhuYW1lKSkpOworICAgIEpTQzo6SlNWYWx1ZSBm
dW5jdGlvbiA9IFtzZWxmIF9pbXBdLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCBTdHJpbmcobmFtZSkpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlTm9uZSkKQEAgLTM4NCw3ICszODQsNyBAQCAtICh2b2lkKXNldFZh
bHVlOihpZCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KFtzZWxmIF9pbXBdKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwot
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcihl
eGVjLCBTdHJpbmcoa2V5KSksIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4ZWMsICZ2YWx1ZSwg
T2JqY09iamVjdFR5cGUsIFtzZWxmIF9yb290T2JqZWN0XSksIHNsb3QpOworICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoKS0+cHV0KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCBTdHJpbmcoa2V5KSksIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4ZWMsICZ2YWx1ZSwg
T2JqY09iamVjdFR5cGUsIFtzZWxmIF9yb290T2JqZWN0XSksIHNsb3QpOwogCiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVj
KTsKQEAgLTQwNyw3ICs0MDcsNyBAQCAtIChpZCl2YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXkK
ICAgICAgICAgLy8gbGVhdmluZyB0aGUgbG9jayBwZXJtYW5lbnRseSBoZWxkCiAgICAgICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgICAgICAKLSAgICAgICAgSlNDOjpKU1ZhbHVlIHJl
c3VsdCA9IFtzZWxmIF9pbXBdLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJpbmcoa2V5
KSkpOworICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmdldChleGVj
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhrZXkpKSk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIGFkZEV4Y2Vw
dGlvblRvQ29uc29sZShleGVjKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCAtICh2b2lkKXJlbW92ZVdl
YlNjcmlwdEtleTooTlNTdHJpbmcgKilrZXkKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlv
bigpKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFtzZWxmIF9pbXBdLT5t
ZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwgZXhlYywgSWRlbnRpZmll
cihleGVjLCBTdHJpbmcoa2V5KSkpOworICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCBTdHJpbmcoa2V5KSkpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAg
ICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCAt
IChCT09MKWhhc1dlYlNjcmlwdEtleTooTlNTdHJpbmcgKilrZXkKICAgICBBU1NFUlQoIWV4ZWMt
PmhhZEV4Y2VwdGlvbigpKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIEJP
T0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgU3RyaW5nKGtleSkpKTsKKyAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9pbXBdLT5oYXNQcm9w
ZXJ0eShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhrZXkpKSk7CiAK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgYWRkRXhjZXB0aW9uVG9D
b25zb2xlKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1MDdmYmEwMGU3OWQ0ZGYzNTRlMWMzOTZmYTFhNTVlYzg1
YTg2ZjQyLi5iMTk5ZTBjMGQ2NTE0MzM5NmY4NGRkNGIyN2Y0Yzc5OWRkNDExYmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpA
QCAtOTczLDE2ICs5NzMsMTYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEN1c3RvbSBn
ZXRQcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uIGV4aXN0cyBvbiBET01XaW5kb3cKICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9k
ZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5h
bWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJy
YXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2
b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUg
PSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVt
ZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9p
ZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVu
dW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKKyAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0
eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
QXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyB1aW50MzJfdCBnZXRFbnVtZXJhYmxlTGVuZ3RoKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU09iamVjdCopO1xuIik7CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOwogICAgIH0KIAogICAgICMgQ3VzdG9tIGdl
dE93blByb3BlcnR5TmFtZXMgZnVuY3Rpb24KICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUVudW1lcmF0ZVByb3BlcnR5In0gfHwgJGluZGV4ZWRHZXR0ZXJG
dW5jdGlvbikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlv
bk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
XG4iKTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXMifSA9IDE7ICAgICAgIAogICAgIH0KIApAQCAtMTk5Niw3ICsxOTk2LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9u
ID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkc2lnbmF0dXJlKTsKICAgICAgICAgICAg
ICAgICBteSAkbmFtZSA9ICRzaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCEke2VuYWJsZV9mdW5jdGlvbn0oKSkge1xuIik7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0
cmxlbihcIiRuYW1lXCIpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVu
KFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJlbW92ZURpcmVjdCh2bSwgcHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBAIC0yNTkw
LDExICsyNTkwLDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgIGlmICgkY29uc3RydWN0b3JUeXBlIG5lICJhbnkiIGFuZCAkY29uc3RydWN0b3JUeXBl
ICF+IC9OYW1lZCQvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICIuaCIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pOwogICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLlxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvclxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxl
In0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gb2JqZWN0LlxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3Rc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRU
aGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBc
IiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpO1xuIik7CkBAIC0yNzA0LDcgKzI3MDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0LT5pbXBs
KCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkp
KTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgQmFzZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTtcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCmlu
ZGV4IDFkNTkxODliNDcyMDUxMTcxNzljNjM5YTYwNWIzMDg2ZWRkYmY2ZWYuLmQyNGEyZWE3MDZh
ZTJkOTQ0MmI3MDc1Zjk1ZTI4ODMzNjU2MjA2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcApAQCAt
MjQxLDcgKzI0MSw3IEBAIHZvaWQgSlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzdGF0aWNfY2FzdDxGbG9hdDY0QXJyYXkqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5s
ZW5ndGgoKTsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIGkpKTsKLSAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBKU1ZhbHVlIEpT
RmxvYXQ2NEFycmF5OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCmluZGV4IGZmMzg4Y2EwMTc2MGMxMmI5
NTc1MDM5ZmVjNzY0MzI5M2ZlODRlMzQuLjEzZTE1NzdlMzZjZDYxYmRkMWJjMTg3MDZiMzYwMjA4
YWMzODJlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0Zsb2F0NjRBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEpTRmxv
YXQ2NEFycmF5IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25N
b2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVt
ZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgRmxvYXQ2NEFycmF5KiBpbXBsKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcAppbmRleCAxNzYxZDMzOTdkNTE2YWNjZDUzZDY1YTc1Yzc4NmJiMTdkMjA2
NzcxLi4xM2ZiYTgxMTFjMjBhNTg2NGUzNmIwODg0NGMyZDQyNzU3ZjhlY2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFy
Z2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5n
dGgoKTsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXI6OmZyb20oZXhlYywgaSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3Bl
cnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpT
VmFsdWUgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggYmYxY2U2N2Uy
ZmUzY2RjYjk3ZTIwMzg3ZjViMGU5ZTUwODlmMjQ3Zi4uNDA4Y2I4ZjJmZjc5M2UzMWQxYzZlMzQy
OTEyNWQzZDFmYTU0NWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTUzLDcgKzUzLDcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNUZXN0RXZlbnRUYXJnZXQgOiBwdWJsaWMgSlNET01X
cmFwcGVyIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6
RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAxNGE3ODVhOWIz
YjQ1ZjIxNWIwZWEzZjUwM2I2YjkyNzFmYWYzZjg3Li4xYTI3NGFmOWJlZDA5Y2Q5YTlhMDNkOGE0
MGZjOTFlZTJiYzFiMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTg5Nyw4ICsxODk3LDggQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4K
LSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAi
VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSwgdmFsdWUpOworICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nIiksIHZhbHVlKTsKIH0KIAogCkBAIC0yNzA2LDggKzI3MDYsOCBAQCB2b2lkIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBiYXNlT2JqZQogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYmFz
ZU9iamVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNh
c3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb25kaXRp
b25hbEF0dHI0IiksIHZhbHVlKTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgorICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJjb25kaXRpb25hbEF0dHI0IiksIHZhbHVlKTsKIH0KIAogI2VuZGlm
CkBAIC0yNzIxLDggKzI3MjEsOCBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZQogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYmFzZU9iamVjdCk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwotICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb25kaXRpb25hbEF0dHI1IiksIHZhbHVlKTsK
KyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIGNhc3RlZFRoaXMt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb25k
aXRpb25hbEF0dHI1IiksIHZhbHVlKTsKIH0KIAogI2VuZGlmCkBAIC0yNzM2LDggKzI3MzYsOCBA
QCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZQogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4oYmFzZU9iamVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yLgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJjb25kaXRpb25hbEF0dHI2IiksIHZhbHVlKTsKKyAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb25kaXRpb25hbEF0dHI2IiksIHZhbHVl
KTsKIH0KIAogI2VuZGlmCkBAIC0yODc0LDggKzI4NzQsOCBAQCB2b2lkIHNldEpTVGVzdE9ialJl
cGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3Qs
IEVuYwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InJlcGxhY2VhYmxlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gb2JqZWN0LgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1
ZSk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gb2JqZWN0CisgICAgY2FzdGVkVGhpcy0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInJlcGxh
Y2VhYmxlQXR0cmlidXRlIiksIHZhbHVlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pz
b2JqZWN0LmNwcAppbmRleCA5MDAxMDEzOGFiNDZjZTdkOTc1M2NiZmYyOTVlNTNjZGZhY2QwYjVh
Li4wOTA1ZGUxOTdlNTU2MTI4ZDUyMjVhNjVkNDEyM2U2OGQ5NjJmODU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBib29sIF9OUE5fRW51
bWVyYXRlKE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXIsIHVpbnQz
Ml90KiBjb3VudAogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKIAotICAgICAgICBvYmotPmltcC0+
bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmotPmltcCwgZXhlYywgcHJvcGVydHlO
YW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIG9iai0+aW1wLT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+aW1wLCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICB1
bnNpZ25lZCBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByb3BlcnR5TmFtZXMuc2l6ZSgp
KTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBjYWxsIE5QTl9NZW1BbGxv
YyBidXQgdGhhdCdzIGluIFdlYktpdAogICAgICAgICBOUElkZW50aWZpZXIqIGlkZW50aWZpZXJz
ID0gc3RhdGljX2Nhc3Q8TlBJZGVudGlmaWVyKj4obWFsbG9jKHNpemVvZihOUElkZW50aWZpZXIp
ICogc2l6ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKaW5kZXggNzc0ZmRm
YzNmNGVmOTUzZWZkN2JkNmZkOTY3NmY2NDg3ZTg5OTA3Ni4uZGY5MDlkY2U1ZWFkOTM4NThlMDIz
MDljZDgyZGM1YTczMjM5NWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2Mv
Y191dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3Bw
CkBAIC0xNDQsNyArMTQ0LDcgQEAgU3RyaW5nIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoY29uc3Qg
TlBTdHJpbmcqIHN0cmluZykKIAogSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmll
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE5QVVRGOCogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRl
bnRpZmllcihleGVjLCBjb252ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwg
LTEpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBjb252ZXJ0VVRG
OFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEpKTsKIH0KIAogfSB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggY2QzNGU1ZjEyMDJkN2Yz
YWRiZGMxODMwOTg3ZWY4NmJhZGU2Y2MxMy4uNTc4OTE1ODkzOWEyYWY3YjkyZmFiOTBhZjg0YWFi
ZTk1YWVmN2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiBKU1ZhbHVlIE9iamNG
YWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAgICBjb25zdCBPYmpj
RmFsbGJhY2tPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wKj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5n
ZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0
LT5tX2l0ZW0pKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9m
VW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0aGlzT2Jq
ZWN0LT5tX2l0ZW0pKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVh
bihFeGVjU3RhdGUgKikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNw
cAppbmRleCAwMjIyMTkwNWM0MGU2ZWRmZWQ1Nzk5OWViMjM1ZjU4OTFhN2EyZTA4Li5jNzEzZmZh
NGUyMzI5M2M2NmNjNjVjYjI5OTNkYTNhOTJlZWRhODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgUnVudGltZUFycmF5Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVyCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKIAotICAgIGlmIChz
aG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKICAgICBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKaW5kZXggOTU3MzBjNDNkNzQwOTg1N2IxYmZk
MjkyOTUxYzU1ZGIwZGNjNWRmNS4uYmFmMjQ3ZDJkYjZjZTdlN2VlMTEzYTIxMGI4N2NjMzNhNzI2
YTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKQEAgLTM4MCw3ICsz
ODAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgIAogICAgICAg
ICBNeU9iamVjdCAqbXlPYmplY3QgPSAoTXlPYmplY3QgKilOUE5fQ3JlYXRlT2JqZWN0IChteUZ1
bmN0aW9uUHRycyk7CiAgICAgICAgIAotICAgICAgICBnbG9iYWwucHV0KGV4ZWMsIElkZW50aWZp
ZXIoIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNl
OjpDTGFuZ3VhZ2UsICh2b2lkICopbXlPYmplY3QpKTsKKyAgICAgICAgZ2xvYmFsLnB1dChleGVj
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6
Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6Q0xhbmd1YWdlLCAodm9pZCAqKW15T2JqZWN0
KSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykgewog
ICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJn
dltpXSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2
KQogICAgICAgICAgICAgICAgICAgICBjaGFyKiBtc2cgPSBleFZhbC50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykuYXNjaWkoKTsKICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubyA9IC0x
OwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhWYWwudHlwZSgpID09IE9iamVjdFR5cGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwgPSBPYmplY3Q6OmR5bmFtaWND
YXN0KGV4VmFsKS5nZXQoZXhlYyxJZGVudGlmaWVyKCJsaW5lIikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhWYWwpLmdldChl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGxpbmVWYWwudHlwZSgpID09IE51bWJlclR5cGUpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGxpbmVWYWwudG9OdW1iZXIoZXhlYykpOwog
ICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
dGVzdGJpbmRpbmdzLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQpp
bmRleCBiZmFjZjIxMDc0YTFlZTg1NzIyMzZlNWFhYWMxMmM1ZDllNGMyNzcwLi4zNTMyYjBhNjg5
YWJjZDZkMmQ3ZTEzNWIxN2IwYWM2ODU1NGUzNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0
YmluZGluZ3MubW0KQEAgLTI0OCw3ICsyNDgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpCiAgICAgICAgIAogICAgICAgICBNeUZpcnN0SW50ZXJmYWNlICpteUludGVyZmFjZSA9
IFtbTXlGaXJzdEludGVyZmFjZSBhbGxvY10gaW5pdF07CiAgICAgICAgIAotICAgICAgICBnbG9i
YWwucHV0KGV4ZWMsIElkZW50aWZpZXIoIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVS
dW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2UsICh2b2lkICopbXlJbnRl
cmZhY2UpKTsKKyAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0
YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlKSk7CiAgICAgICAg
IAogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICAgICAg
Y29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJndltpXSk7CkBAIC0y
NjIsNyArMjYyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAg
ICAgICAgICAgICBjaGFyICptc2cgPSBleFZhbC50b1N0cmluZyhleGVjKS5hc2NpaSgpOwogICAg
ICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChleFZhbC50eXBlKCkgPT0gT2JqZWN0VHlwZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhWYWwpLmdldChleGVjLElkZW50
aWZpZXIoImxpbmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBsaW5lVmFsID0g
T2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgImxpbmUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVZhbC50
eXBlKCkgPT0gTnVtYmVyVHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8g
PSBpbnQobGluZVZhbC50b051bWJlcihleGVjKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHAKaW5kZXggYjg2MmJhMDhhZDA5ZTRjYTMxYWU1YjlmYTQzNGY2YzIx
OWU5OTVkMi4uMTliYjhmMmY5ZTY4MWVkNWQyOGMwNzJhNDkwYjhjMTI1Nzg2OTY4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHAKQEAgLTgwLDEzICs4MCwxMyBAQCBzdGF0aWMgYm9vbCBnZXRUeXBl
RmxhZ3MoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBKU1ZhbHVlJiB0eXBlVmFsdWUsIFJlc291cmNl
RmxhZwogICAgIAogc3RhdGljIGJvb2wgbG9hZFRyaWdnZXIoRXhlY1N0YXRlJiBleGVjLCBKU09i
amVjdCYgcnVsZU9iamVjdCwgVHJpZ2dlciYgdHJpZ2dlcikKIHsKLSAgICBKU1ZhbHVlIHRyaWdn
ZXJPYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigmZXhlYywgInRyaWdn
ZXIiKSk7CisgICAgSlNWYWx1ZSB0cmlnZ2VyT2JqZWN0ID0gcnVsZU9iamVjdC5nZXQoJmV4ZWMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ0cmlnZ2VyIikpOwogICAgIGlmICghdHJp
Z2dlck9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICF0cmlnZ2VyT2JqZWN0LmlzT2Jq
ZWN0KCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIHRyaWdnZXIgb2JqZWN0LiIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgSlNWYWx1ZSB1cmxGaWx0ZXJP
YmplY3QgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigmZXhlYywgInVybC1m
aWx0ZXIiKSk7CisgICAgSlNWYWx1ZSB1cmxGaWx0ZXJPYmplY3QgPSB0cmlnZ2VyT2JqZWN0Lmdl
dCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgInVybC1maWx0ZXIiKSk7CiAg
ICAgaWYgKCF1cmxGaWx0ZXJPYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8fCAhdXJsRmls
dGVyT2JqZWN0LmlzU3RyaW5nKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIHVy
bC1maWx0ZXIgb2JqZWN0LiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OSwxNSArOTks
MTUgQEAgc3RhdGljIGJvb2wgbG9hZFRyaWdnZXIoRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYg
cnVsZU9iamVjdCwgVHJpZ2dlciYgdHJpZ2dlcikKICAgICB9CiAgICAgdHJpZ2dlci51cmxGaWx0
ZXIgPSB1cmxGaWx0ZXI7CiAKLSAgICBKU1ZhbHVlIHVybEZpbHRlckNhc2VWYWx1ZSA9IHRyaWdn
ZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidXJsLWZpbHRlci1pcy1jYXNl
LXNlbnNpdGl2ZSIpKTsKKyAgICBKU1ZhbHVlIHVybEZpbHRlckNhc2VWYWx1ZSA9IHRyaWdnZXJP
YmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAidXJsLWZpbHRl
ci1pcy1jYXNlLXNlbnNpdGl2ZSIpKTsKICAgICBpZiAodXJsRmlsdGVyQ2FzZVZhbHVlICYmICFl
eGVjLmhhZEV4Y2VwdGlvbigpICYmIHVybEZpbHRlckNhc2VWYWx1ZS5pc0Jvb2xlYW4oKSkKICAg
ICAgICAgdHJpZ2dlci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUgPSB1cmxGaWx0ZXJDYXNlVmFs
dWUudG9Cb29sZWFuKCZleGVjKTsKIAotICAgIEpTVmFsdWUgcmVzb3VyY2VUeXBlVmFsdWUgPSB0
cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigmZXhlYywgInJlc291cmNlLXR5cGUi
KSk7CisgICAgSlNWYWx1ZSByZXNvdXJjZVR5cGVWYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAicmVzb3VyY2UtdHlwZSIpKTsKICAg
ICBpZiAocmVzb3VyY2VUeXBlVmFsdWUgJiYgIWV4ZWMuaGFkRXhjZXB0aW9uKCkgJiYgIWdldFR5
cGVGbGFncyhleGVjLCByZXNvdXJjZVR5cGVWYWx1ZSwgdHJpZ2dlci5mbGFncywgcmVhZFJlc291
cmNlVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBKU1ZhbHVlIGxvYWRU
eXBlVmFsdWUgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigmZXhlYywgImxv
YWQtdHlwZSIpKTsKKyAgICBKU1ZhbHVlIGxvYWRUeXBlVmFsdWUgPSB0cmlnZ2VyT2JqZWN0Lmdl
dCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgImxvYWQtdHlwZSIpKTsKICAg
ICBpZiAobG9hZFR5cGVWYWx1ZSAmJiAhZXhlYy5oYWRFeGNlcHRpb24oKSAmJiAhZ2V0VHlwZUZs
YWdzKGV4ZWMsIGxvYWRUeXBlVmFsdWUsIHRyaWdnZXIuZmxhZ3MsIHJlYWRMb2FkVHlwZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTE2LDEzICsxMTYsMTMgQEAgc3RhdGljIGJvb2wg
bG9hZFRyaWdnZXIoRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgVHJpZ2dl
ciYgdHJpZ2dlcikKIAogc3RhdGljIGJvb2wgbG9hZEFjdGlvbihFeGVjU3RhdGUmIGV4ZWMsIEpT
T2JqZWN0JiBydWxlT2JqZWN0LCBBY3Rpb24mIGFjdGlvbikKIHsKLSAgICBKU1ZhbHVlIGFjdGlv
bk9iamVjdCA9IHJ1bGVPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAiYWN0aW9u
IikpOworICAgIEpTVmFsdWUgYWN0aW9uT2JqZWN0ID0gcnVsZU9iamVjdC5nZXQoJmV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJhY3Rpb24iKSk7CiAgICAgaWYgKCFhY3Rpb25P
YmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8fCAhYWN0aW9uT2JqZWN0LmlzT2JqZWN0KCkp
IHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIGFjdGlvbiBvYmplY3QuIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHR5cGVPYmplY3QgPSBhY3Rp
b25PYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidHlwZSIpKTsKKyAgICBKU1Zh
bHVlIHR5cGVPYmplY3QgPSBhY3Rpb25PYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZleGVjLCAidHlwZSIpKTsKICAgICBpZiAoIXR5cGVPYmplY3QgfHwgZXhlYy5oYWRF
eGNlcHRpb24oKSB8fCAhdHlwZU9iamVjdC5pc1N0cmluZygpKSB7CiAgICAgICAgIFdURkxvZ0Fs
d2F5cygiSW52YWxpZCB1cmwtZmlsdGVyIG9iamVjdC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBib29sIGxvYWRBY3Rpb24oRXhlY1N0YXRlJiBl
eGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgQWN0aW9uJiBhY3Rpb24pCiAgICAgZWxzZSBpZiAo
YWN0aW9uVHlwZSA9PSAiYmxvY2stY29va2llcyIpCiAgICAgICAgIGFjdGlvbiA9IEFjdGlvblR5
cGU6OkJsb2NrQ29va2llczsKICAgICBlbHNlIGlmIChhY3Rpb25UeXBlID09ICJjc3MtZGlzcGxh
eS1ub25lIikgewotICAgICAgICBKU1ZhbHVlIHNlbGVjdG9yID0gYWN0aW9uT2JqZWN0LmdldCgm
ZXhlYywgSWRlbnRpZmllcigmZXhlYywgInNlbGVjdG9yIikpOworICAgICAgICBKU1ZhbHVlIHNl
bGVjdG9yID0gYWN0aW9uT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
ZXhlYywgInNlbGVjdG9yIikpOwogICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IGV4ZWMuaGFkRXhj
ZXB0aW9uKCkgfHwgIXNlbGVjdG9yLmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiY3NzLWRpc3BsYXktbm9uZSBhY3Rpb24gdHlwZSByZXF1aXJlcyBhIHNlbGVjdG9yIik7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAppbmRleCBmMWY2YWJhYmE4OWI1OWQ5NjNkZjIxMGUzN2M4MGVlMzYxODg2ZDg0
Li4yMDg3M2YwZWVlNDAxMTMzNjk5MjBhMmY3ODJiNTU0ZDYwMmNiNzA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM2NTksNyArMzY1OSw3IEBAIHN0YXRp
YyBKU0M6OkpTVmFsdWUgY29udHJvbGxlckpTVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0JiBnCiAgICAgaWYgKCFtZWRpYUpTV3JhcHBlck9iamVjdCkKICAgICAg
ICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAgICAgCi0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRy
b2xzSG9zdCgmZXhlYy52bSgpLCAiY29udHJvbHNIb3N0Iik7CisgICAgSlNDOjpJZGVudGlmaWVy
IGNvbnRyb2xzSG9zdCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy52bSgpLCAi
Y29udHJvbHNIb3N0Iik7CiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xzSG9zdEpTV3JhcHBlciA9
IG1lZGlhSlNXcmFwcGVyT2JqZWN0LT5nZXQoJmV4ZWMsIGNvbnRyb2xzSG9zdCk7CiAgICAgaWYg
KGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwpAQCAt
MzY2OCw3ICszNjY4LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3QmIGcKICAgICBpZiAoIWNvbnRy
b2xzSG9zdEpTV3JhcHBlck9iamVjdCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAK
LSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbGxlcklEKCZleGVjLnZtKCksICJjb250cm9sbGVy
Iik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXJJRCA9IEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmZXhlYy52bSgpLCAiY29udHJvbGxlciIpOwogICAgIEpTQzo6SlNWYWx1ZSBj
b250cm9sbGVySlNXcmFwcGVyID0gY29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0LT5nZXQoJmV4
ZWMsIGNvbnRyb2xsZXJJRCk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBKU0M6OmpzTnVsbCgpOwpAQCAtMzcxMCw3ICszNzEwLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKICAgICAvLyAgICAgTm9uZQogICAg
IC8vIFJldHVybiB2YWx1ZToKICAgICAvLyAgICAgTm9uZQotICAgIEpTQzo6SlNWYWx1ZSBtZXRo
b2RWYWx1ZSA9IGNvbnRyb2xsZXJPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhl
YywgInVwZGF0ZUNhcHRpb25Db250YWluZXIiKSk7CisgICAgSlNDOjpKU1ZhbHVlIG1ldGhvZFZh
bHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAidXBkYXRlQ2FwdGlvbkNvbnRhaW5lciIpKTsKICAgICBKU0M6OkpTT2JqZWN0
KiBtZXRob2RPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+KG1ldGhv
ZFZhbHVlKTsKICAgICBpZiAoIW1ldGhvZE9iamVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNTg1
MSw3ICs1ODUxLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xz
SW5qZWN0ZWRTY3JpcHQoKQogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlND
OjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKKyAgICBKU0M6OkpTVmFsdWUg
ZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CiAgICAgaWYgKGZ1bmN0aW9uVmFs
dWUuaXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNTg3NCw3ICs1ODc0
LDcgQEAgc3RhdGljIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yUHJvcGVydHkoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBjb250cm8KIHsKICAgICBKU0M6OlB1dFByb3BlcnR5U2xv
dCBwcm9wZXJ0eVNsb3QoY29udHJvbGxlclZhbHVlKTsKICAgICBKU0M6OkpTT2JqZWN0KiBjb250
cm9sbGVyT2JqZWN0ID0gY29udHJvbGxlclZhbHVlLnRvT2JqZWN0KGV4ZWMpOwotICAgIGNvbnRy
b2xsZXJPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChjb250cm9sbGVyT2JqZWN0LCBleGVjLCBK
U0M6OklkZW50aWZpZXIoZXhlYywgInBhZ2VTY2FsZUZhY3RvciIpLCBKU0M6OmpzTnVtYmVyKHBh
Z2VTY2FsZUZhY3RvciksIHByb3BlcnR5U2xvdCk7CisgICAgY29udHJvbGxlck9iamVjdC0+bWV0
aG9kVGFibGUoKS0+cHV0KGNvbnRyb2xsZXJPYmplY3QsIGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAicGFnZVNjYWxlRmFjdG9yIiksIEpTQzo6anNOdW1iZXIocGFnZVNj
YWxlRmFjdG9yKSwgcHJvcGVydHlTbG90KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCkBAIC01OTAzLDcgKzU5
MDMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3Qo
U2hhZG93Um9vdCogcm9vdCkKICAgICAvLyBSZXR1cm4gdmFsdWU6CiAgICAgLy8gICAgIEEgcmVm
ZXJlbmNlIHRvIHRoZSBjcmVhdGVkIG1lZGlhIGNvbnRyb2xsZXIgaW5zdGFuY2UuCiAKLSAgICBK
U0M6OkpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6
SWRlbnRpZmllcihleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CisgICAgSlNDOjpKU1ZhbHVlIGZ1
bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImNyZWF0ZUNvbnRyb2xzIikpOwogICAgIGlmIChmdW5jdGlvblZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTkzMiw3ICs1OTMy
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNo
YWRvd1Jvb3QqIHJvb3QpCiAKICAgICAvLyBDb25uZWN0IHRoZSBNZWRpYSwgTWVkaWFDb250cm9s
bGVySG9zdCwgYW5kIENvbnRyb2xsZXIgc28gdGhlIEdDIGtub3dzIGFib3V0IHRoZWlyIHJlbGF0
aW9uc2hpcAogICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhSlNXcmFwcGVyT2JqZWN0ID0gbWVkaWFK
U1dyYXBwZXIudG9PYmplY3QoZXhlYyk7Ci0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xzSG9z
dCgmZXhlYy0+dm0oKSwgImNvbnRyb2xzSG9zdCIpOworICAgIEpTQzo6SWRlbnRpZmllciBjb250
cm9sc0hvc3QgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksICJjb250
cm9sc0hvc3QiKTsKICAgICAKICAgICBBU1NFUlQoIW1lZGlhSlNXcmFwcGVyT2JqZWN0LT5oYXNQ
cm9wZXJ0eShleGVjLCBjb250cm9sc0hvc3QpKTsKIApAQCAtNTk0Miw3ICs1OTQyLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3Qq
IHJvb3QpCiAgICAgaWYgKCFtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sbGVyKCZleGVjLT52
bSgpLCAiY29udHJvbGxlciIpOworICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sbGVyID0gSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLT52bSgpLCAiY29udHJvbGxlciIpOwogCiAg
ICAgQVNTRVJUKCFjb250cm9sbGVyT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBjb250cm9sbGVy
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
CmluZGV4IDc0M2U5OTY0YjU5ODY2MTA0MWVmM2Y0ODYyNDE1MjY2MjlhM2NlNDEuLjgzZjFiN2U2
MGU3MzE5M2FlZDAxYzE3ZjUxNGFlMGI1ZDkwMGMzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dS
b290KiByb290KQogICAgIGFyZ0xpc3QuYXBwZW5kKEpTQzo6anNCb29sZWFuKCFtX3NuYXBzaG90
SW1hZ2UpKTsKIAogICAgIC8vIEl0IGlzIGV4cGVjdGVkIHRoZSBKUyBmaWxlIHByb3ZpZGVzIGEg
Y3JlYXRlT3ZlcmxheShzaGFkb3dSb290LCB0aXRsZSwgc3VidGl0bGUpIGZ1bmN0aW9uLgotICAg
IEpTQzo6SlNPYmplY3QqIG92ZXJsYXkgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6Oklk
ZW50aWZpZXIoZXhlYywgImNyZWF0ZU92ZXJsYXkiKSkudG9PYmplY3QoZXhlYyk7CisgICAgSlND
OjpKU09iamVjdCogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlT3ZlcmxheSIpKS50b09iamVjdChleGVjKTsK
ICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwogICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUg
PSBvdmVybGF5LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvdmVybGF5LCBjYWxsRGF0YSk7
CiAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGVOb25lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IDAyZTNmNDllZjdj
ODFmZjhhNzA0MzE4NGI2NDBjMDU4ZTZmNmQ2OTcuLmI1MmQxZTYyYTU2NmI5OTZkY2Q5MmFjOTRk
NGEzMGYyNDZiYmM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2Vi
Q29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNv
cmVUZXN0U3VwcG9ydC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBpbmplY3RJbnRlcm5hbHNP
YmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGds
b2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChpczxEb2N1bWVu
dD4oKnNjcmlwdENvbnRleHQpKQotICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIEludGVybmFsczo6aW50ZXJuYWxzSWQpLCB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCwgSW50ZXJuYWxzOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KHNj
cmlwdENvbnRleHQpKSkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIEludGVybmFsczo6aW50ZXJuYWxzSWQp
LCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW50ZXJuYWxzOjpjcmVhdGUoZG93bmNhc3Q8RG9j
dW1lbnQ+KHNjcmlwdENvbnRleHQpKSkpOwogfQogCiB2b2lkIHJlc2V0SW50ZXJuYWxzT2JqZWN0
KEpTQ29udGV4dFJlZiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRleCA5Y2Q2NTVj
OWY3MTA1MzVhOWRmMmFmNDU3ZDcwNDQ2YTZkOWI2ZTY3Li4zNDQxZTRmYjEzNzhkOTM4NzU2NDU2
ZWI5NTlkNWRmZDExZjhiYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtNjI3LDcgKzYy
Nyw3IEBAIHN0YXRpYyBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChJZGVu
dGlmaWVyUmVwKiBpZGVudGlmaWVyKQogICAgIEFTU0VSVChpZGVudGlmaWVyLT5pc1N0cmluZygp
KTsKICAgCiAgICAgY29uc3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5nKCk7ICAgIAot
ICAgIHJldHVybiBJZGVudGlmaWVyKCZKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSwgU3RyaW5nOjpm
cm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHIsIHN0cmxlbihzdHIpKSk7CisgICAgcmV0dXJu
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBTdHJpbmc6
OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKTsKIH0KIAoga2Vy
bl9yZXR1cm5fdCBXS1BDSW52b2tlKG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBs
dWdpbklELCB1aW50MzJfdCByZXF1ZXN0SUQsIHVpbnQzMl90IG9iamVjdElELCB1aW50NjRfdCBz
ZXJ2ZXJJZGVudGlmaWVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IGNhZGU5
ZTFlOWZkZjdiNmY2NDEwODVkYjQ3MDNhYjg0MzM4NTNhNmQuLjNiOThmZDRlODczZDAwZjE3OGZh
OTQ4OTU5ZmE0ODFlYjgxMWZkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAg
LTEyMzEsNyArMTIzMSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVt
ZXJhdGUodWludDMyX3Qgb2JqZWN0SUQsIGRhdGFfdCYgcmVzdWx0RGF0CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CiAgCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhl
eGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwog
CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5Kj4gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJv
cGVydHlOYW1lcy5zaXplKCk7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggMGRmMGRlYzBjMjQ3OGYwZmIxZmU4OGM2
NDg5MzBiMmFhODJmMGYwMi4uNzUxYjE2YWRjYjAzZWE5ZTNjOTYxMzkwY2FjNGVhODQzYmEwZGQw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3Rh
bmNlLm1tCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQcm94eUluc3RhbmNlOjpnZXRQcm9wZXJ0
eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIG5hbWVBcnIKIAogICAg
ICAgICBpZiAoaWRlbnRpZmllci0+aXNTdHJpbmcoKSkgewogICAgICAgICAgICAgY29uc3QgY2hh
ciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5nKCk7Ci0gICAgICAgICAgICBuYW1lQXJyYXkuYWRk
KElkZW50aWZpZXIoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBTdHJpbmc6OmZyb21VVEY4V2l0
aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKSk7CisgICAgICAgICAgICBuYW1lQXJy
YXkuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBT
dHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKSk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIGlkZW50aWZpZXItPm51bWJlcigpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmlu
ZGV4IDFjZWQyOTNlYjhjY2M3N2QzNzA5YjliZDM5ODA4Y2MzOTgxMjczNzcuLmZkYmU4MWE4ZTBi
ZTk3Njk0OTlhYzliMmQzZTBmYTMxZGJiNTU4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTQw
Nyw3ICs0MDcsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgICAgICAgICAgY29uc3Qg
Y2hhciogc3RyaW5nID0gaWRlbnRpZmllclJlcC0+c3RyaW5nKCk7CiAgICAgICAgICAgICBpbnQg
bGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlkZW50
aWZpZXIgPSBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJh
Y2soc3RyaW5nLCBsZW5ndGgpLmltcGwoKSk7CisgICAgICAgICAgICBpZGVudGlmaWVyID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrKHN0cmluZywgbGVuZ3RoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmllclJlcC0+bnVtYmVyKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBKU09iamVjdC5jcHAKaW5kZXggMGQxNjY3NGU1YzE1ZjQ3MTcxODU0M2QyNWNhNGYzMTA5
YzA1MmQyMi4uYTY1Yzg5MzNmY2UwY2I4MGJkMDk2Yzc2NDc2OGMwMmMxMDhmYzA3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UEpTT2JqZWN0LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgSWRlbnRpZmllciBpZGVudGlm
aWVyRnJvbUlkZW50aWZpZXJSZXAoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyUmVwKiBpZAog
ICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IGlkZW50aWZpZXJSZXAtPnN0cmluZygpOwogICAgIGlu
dCBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKIAotICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMs
IFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5ndGgpLmltcGwo
KSk7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9t
VVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkpOwogfQogCiBib29sIE5QSlNP
YmplY3Q6Omhhc01ldGhvZChOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKQEAgLTI0MCw3ICsyNDAs
NyBAQCBib29sIE5QSlNPYmplY3Q6OmVudW1lcmF0ZShOUElkZW50aWZpZXIqKiBpZGVudGlmaWVy
cywgdWludDMyX3QqIGlkZW50aWZpZXJDb3VudAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBtX2pz
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG1fanNPYmplY3QuZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG1f
anNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVjdC5nZXQo
KSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKIAogICAgIE5QSWRlbnRpZmllciogbmFtZUlkZW50aWZpZXJzID0gbnBuTWVt
TmV3QXJyYXk8TlBJZGVudGlmaWVyPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2
YWVjYmMxYjQ5NDc4MzcwMzhkNWNmZjU5OWMyNjY3OWQ0OWMwMDNiLi4xZWI1YzNlYjcxODk3ZDJi
NWJjODFlN2Y3OGFmNTg4YjdjMjQ5NmM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDMt
MTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL09iamVjdC1nZXRPd25Qcm9wZXJ0
eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdl
dE93blByb3BlcnR5TmFtZXMuanM6CisKIDIwMTUtMDMtMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xhc3MgY29uc3RydWN0b3Igc2hvdWxkIHRocm93IFR5
cGVFcnJvciB3aGVuICJjYWxsZWQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9PYmplY3Qt
Z2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9PYmplY3Qt
Z2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKaW5kZXggZmZjNjkzMDA1MGI2YmRhNjJj
NTNiNTA2MTIyNzVkNDg5ODMxYWQ4NS4uNjhiNzVlNWEyNzZlM2E5MGU5Mjk3YjVkZTg0YjE1MmYz
NjRhZGUxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5
TmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9w
ZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dApAQCAtNDAsNyArNDAsNyBAQCBQQVNTIGdldFNvcnRlZE93
blByb3BlcnR5TmFtZXMoZGVjb2RlVVJJKSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0
U29ydGVkT3duUHJvcGVydHlOYW1lcyhkZWNvZGVVUklDb21wb25lbnQpIGlzIFsnbGVuZ3RoJywg
J25hbWUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKGVuY29kZVVSSSkgaXMgWyds
ZW5ndGgnLCAnbmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZW5jb2RlVVJJ
Q29tcG9uZW50KSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KLVBBU1MgZ2V0U29ydGVkT3duUHJvcGVy
dHlOYW1lcyhPYmplY3QpIGlzIFsnY3JlYXRlJywgJ2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5l
UHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsICdnZXRPd25Q
cm9wZXJ0eU5hbWVzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3pl
bicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNp
b25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10KK1BBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1l
cyhPYmplY3QpIGlzIFsnY3JlYXRlJywgJ2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVy
dHknLCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0
eU5hbWVzJywgJ2dldE93blByb3BlcnR5U3ltYm9scycsICdnZXRQcm90b3R5cGVPZicsICdpc0V4
dGVuc2libGUnLCAnaXNGcm96ZW4nLCAnaXNTZWFsZWQnLCAna2V5cycsICdsZW5ndGgnLCAnbmFt
ZScsICdwcmV2ZW50RXh0ZW5zaW9ucycsICdwcm90b3R5cGUnLCAnc2VhbCddCiBQQVNTIGdldFNv
cnRlZE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlwZSkgaXMgWydfX2RlZmluZUdldHRl
cl9fJywgJ19fZGVmaW5lU2V0dGVyX18nLCAnX19sb29rdXBHZXR0ZXJfXycsICdfX2xvb2t1cFNl
dHRlcl9fJywgJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdp
c1Byb3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJ3RvTG9jYWxlU3RyaW5nJywg
J3RvU3RyaW5nJywgJ3ZhbHVlT2YnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEZ1
bmN0aW9uKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoRnVuY3Rpb24ucHJvdG90eXBlKSBpcyBbJ2FwcGx5JywgJ2JpbmQn
LCAnY2FsbCcsICdjb25zdHJ1Y3RvcicsICdsZW5ndGgnLCAnbmFtZScsICd0b1N0cmluZyddCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3Bl
cnR5TmFtZXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blBy
b3BlcnR5TmFtZXMuanMKaW5kZXggYjQyNGIwNWU0ZDgzYzJhOWE2YmFlMmE5ZDM0YjM0M2VlNjA5
ODExNC4uZmJkNjVkZDNhYzk3Y2Q4YTdkMGVkYWM0MzlmZWQ3ZDc4M2UwMTBkNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVz
LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVy
dHlOYW1lcy5qcwpAQCAtNDgsNyArNDgsNyBAQAogICAgICJlbmNvZGVVUkkiOiAiWydsZW5ndGgn
LCAnbmFtZSddIiwKICAgICAiZW5jb2RlVVJJQ29tcG9uZW50IjogIlsnbGVuZ3RoJywgJ25hbWUn
XSIsCiAvLyBCdWlsdC1pbiBFQ01BIG9iamVjdHMKLSAgICAiT2JqZWN0IjogIlsnY3JlYXRlJywg
J2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blBy
b3BlcnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgJ2dldFByb3RvdHlwZU9m
JywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0
aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10iLAor
ICAgICJPYmplY3QiOiAiWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9w
ZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3Bl
cnR5TmFtZXMnLCAnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lz
RXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICdu
YW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10iLAogICAgICJP
YmplY3QucHJvdG90eXBlIjogIlsnX19kZWZpbmVHZXR0ZXJfXycsICdfX2RlZmluZVNldHRlcl9f
JywgJ19fbG9va3VwR2V0dGVyX18nLCAnX19sb29rdXBTZXR0ZXJfXycsICdfX3Byb3RvX18nLCAn
Y29uc3RydWN0b3InLCAnaGFzT3duUHJvcGVydHknLCAnaXNQcm90b3R5cGVPZicsICdwcm9wZXJ0
eUlzRW51bWVyYWJsZScsICd0b0xvY2FsZVN0cmluZycsICd0b1N0cmluZycsICd2YWx1ZU9mJ10i
LAogICAgICJGdW5jdGlvbiI6ICJbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddIiwKICAg
ICAiRnVuY3Rpb24ucHJvdG90eXBlIjogIlsnYXBwbHknLCAnYmluZCcsICdjYWxsJywgJ2NvbnN0
cnVjdG9yJywgJ2xlbmd0aCcsICduYW1lJywgJ3RvU3RyaW5nJ10iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248648</attachid>
            <date>2015-03-14 06:51:24 -0700</date>
            <delta_ts>2015-03-22 13:36:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150314225056.patch</filename>
            <type>text/plain</type>
            <size>270135</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YzM1ZjNjYjhjZGRhZTQ4MmFmYzNhMTNkMzE3MmQ2YTI4N2MxZmE0Li4wNGU1ZWFhYmM5YjJkYjUw
YTZmMWNmN2YyYTliY2I4ZDBkZTA4Zjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTEgQEAKKzIwMTUtMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGlucy9gLCB0aGV5IHNob3VsZCBub3QgYmUgZXhwb3NlZC4KKyAgICAgICAgVG8g
ZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIHRoZSB1c3VhbCBzeW1ib2xzLCBjaGVja2luZyB0aGUgdGFy
Z2V0IGBTdHJpbmdJbXBsKmAgaXMgYSBub3QgcHJpdmF0ZSBuYW1lCisgICAgICAgIGJlZm9yZSBh
ZGRpbmcgaXQgaW50byBQcm9wZXJ0eU5hbWVBcnJheS4KKworICAgICAgICBUbyBjaGVjayB0aGUg
dGFyZ2V0IGBTdHJpbmdJbXBsKmAgaXMgYSBwcml2YXRlIG5hbWUsIHdlIGxldmVyYWdlIHByaXZh
dGVUb1B1YmxpYyBtYXAgaW4gYEJ1aWx0aW5OYW1lc2AKKyAgICAgICAgc2luY2UgYWxsIHByaXZh
dGUgc3ltYm9scyBhcmUgaGVsZCBpbiB0aGlzIG1hcC4KKworICAgICAgICBUbyBjbGVhbiB1cCBg
U3RyaW5nSW1wbGAsIHdlIGludHJvZHVjZSBgU3RyaW5nS2luZGAgaW50byBgU3RyaW5nSW1wbGAu
IFRoZXJlJ3MgMyBraW5kcworICAgICAgICAxLiBTdHJpbmdOb3JtYWwgKG5vbi1hdG9taWMsIG5v
bi1zeW1ib2wpCisgICAgICAgIDIuIFN0cmluZ0F0b21pYyAoYXRvbWljLCBub24tc3ltYm9sKQor
ICAgICAgICAzLiBTdHJpbmdTeW1ib2wgKG5vbi1hdG9taWMsIHN5bWJvbCkKKyAgICAgICAgVGhl
eSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBBbmQgKGF0b21pYywgc3ltYm9sKSBjYXNlIHNob3Vs
ZCBub3QgZXhpc3QuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEuIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzCisgICAgICAgIDIuIEluY2x1ZGUvRXhjbHVkZSBTeW1ib2xzCisgICAgICAgIDMuIElu
Y2x1ZGUvRXhjbHVkZSBKU09iamVjdCBwcm9wZXJ0eSBuYW1lcworICAgICAgICBJbiB0aGUgYSBs
b3Qgb2YgY29kZSwgd2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBh
IGxvdCBvZiBjYWxsZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1l
QXJyYXlgIGRvZXNuJ3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25z
ZXJ2YXRpdmUgYXNzdW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAg
IEluIHRoZSBhIGxvdCBvZiBwbGFjZXMsIGBJZGVudGlmaWVyKFZNKi9FeGVjU3RhdGUqLCBTdHJp
bmdJbXBsKilgIGNvbnN0cnVjdG9yIGlzIHVzZWQuCisgICAgICAgIEhvd2V2ZXIsIGl0J3MgYW1i
aWd1b3VzIGJlY2F1c2UgYFN0cmluZ0ltcGwqYCBoYXMgMiBkaWZmZXJlbnQgbWVhbmluZ3MuCisg
ICAgICAgIDEpIG5vcm1hbCBzdHJpbmcsIGl0IGlzIHJlcGxhY2FibGUgd2l0aCBgV1RGU3RyaW5n
YCBhbmQKKyAgICAgICAgMikgYHVpZGAsIHdoaWNoIGhvbGRzIGBpc1N5bWJvbGAgaW5mb3JtYXRp
b24gdG8gcmVwcmVzZW50IFN5bWJvbHMuCisgICAgICAgIFNvIHdlIGRyb3BwZWQgSWRlbnRpZmll
ciBjb25zdHJ1Y3RvcnMgZm9yIHN0cmluZ3MgYW5kIGluc3RlYWQsIGludHJvZHVjZWQgMiBmYWN0
b3J5IGZ1bmN0aW9ucy4KKyAgICAgICAgKyBgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSovRXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJilgLgorICAgICAgICAgICAgSnVzdCBjb25zdHJ1Y3QgSWRl
bnRpZmllciBmcm9tIHN0cmluZ3MuIFRoZSBzeW1ib2wtbmVzcyBvZiBTdHJpbmdJbXBsKiBpcyBu
b3Qga2VwdC4KKyAgICAgICAgKyBgSWRlbnRpZmllcjo6ZnJvbVVpZChWTSovRXhlY1N0YXRlKiwg
U3RyaW5nSW1wbCopYC4KKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgMikg
YHVpZGAuIFNvIHN5bWJvbC1uZXNzIG9mIGBTdHJpbmdJbXBsKmAgaXMga2VwdC4KKworICAgICAg
ICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb24p
OgorICAgICAgICAoSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL09w
YXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUp
OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChK
U0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6
OkJ1aWx0aW5OYW1lcyk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFt
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAg
ICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5
Q291bnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dUeXBlRXJyb3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVk
ZWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToK
KyAgICAgICAgKiBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpEZXNpcmVkSWRlbnRpZmllcnM6OnJlYWxseUFkZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChJbnNwZWN0b3I6OmNvbnN0
cnVjdEludGVybmFsUHJvcGVydHkpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2Ny
aXB0SG9zdDo6d2Vha01hcEVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVk
U2NyaXB0SG9zdDo6aXRlcmF0b3JFbnRyaWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGluc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0
cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbik6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGV4cGxjaXRseSBj
aGVjayBgaXNTeW1ib2woKWAgaW4gdGhlIGNhbGxlciBzaWRlLiBXZSBjYW4ganVzdCB1c2UgYElk
ZW50aWZpZXI6OmZyb21VaWRgLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2Jh
bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRGdW5j
dGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmFkZENvbnN0cnVjdGFibGVGdW5jdGlvbik6
CisgICAgICAgIChmdW5jdGlvblJ1bik6CisgICAgICAgIChydW5XaXRoU2NyaXB0cyk6CisgICAg
ICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBl
cmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjphZGRWYXIpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpjcmVhdGVCaW5kaW5nUGF0dGVybik6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ckFyZW5hLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VJZGVudGlmaWVyTENoYXJGcm9t
VUNoYXIpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VOdW1lcmljSWRlbnRp
Zmllcik6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpB
cmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1B1c2gpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NvcnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21t
b25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25J
ZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmg6CisgICAgICAg
IChKU0M6OkVudW1lcmF0aW9uTW9kZTo6RW51bWVyYXRpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6
RW51bWVyYXRpb25Nb2RlOjpzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKToKKyAgICAg
ICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpzaG91bGRJbmNsdWRlU3ltYm9s
cyk6CisgICAgICAgIChKU0M6OkVudW1lcmF0aW9uTW9kZTo6Y3JlYXRlVGhhdFNraXBzSlNPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6c2hvdWxkRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjptb2RlVGhhdFNraXBzSlNPYmplY3QpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjphZGRFcnJvcklu
Zm8pOgorICAgICAgICAoSlNDOjpoYXNFcnJvckluZm8pOgorICAgICAgICAqIHJ1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxl
RXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZnJvbSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpJZGVudGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVVpZCk6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pT
Q2FsbGVlLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnJ1bnRpbWVGbGFncyk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldENsYXNzUHJvcGVydHlOYW1lcyk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU09iamVj
dC5oOgorICAgICAgICAoSlNDOjptYWtlSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY1JhY2UpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNBbGwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OnN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpn
ZW5lcmljUHJvcGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Zy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9JZGVudGlmaWVyKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRh
YmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRp
bWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5
cGU+Ojp0cnlKU09OUFBhcnNlKToKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlw
ZT46Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAg
ICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RNYXApOgorICAgICAgICAqIHJ1
bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVj
dDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25z
dHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0
cnVjdG9yS2V5cyk6CisgICAgICAgIChKU0M6OmRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAo
SlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1
Y3RvckZyZWV6ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQpOgor
ICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKiBydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmZpbmQpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVy
dHlOYW1lLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6UHJvcGVydHlOYW1lKToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6UHJv
cGVydHlOYW1lOjphc0luZGV4KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICog
cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheTo6YWRkS25vd25VbmlxdWUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmpl
Y3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0U2V0KToKKyAgICAgICAgKiBydW50
aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0SXRlcmF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQ
cm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZN
Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXZWFrTWFwKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qczogQWRkZWQuCisgICAgICAg
IChmb3JJbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHku
anM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bWJvbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9zeW1ib2wtd2l0aC1qc29uLmpzOiBBZGRlZC4KKwogMjAxNS0wMy0xMyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2Fy
ZHMgQ01ha2Ugb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCA2MWIwNmZhYTY0ZDI0NzM2OTZiMzBjYThiM2YwZGEyZDAy
NTk0NTAzLi44NTQ4Nzg0MDZjODU5NWEzZmNkZWQ5MTM0ZWRjNzE2YmUzYjI5Njk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU0IEBACisyMDE1LTAzLTE0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQx
MTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50
cm9kdWNlIFN0cmluZ0tpbmQgaW50byBgU3RyaW5nSW1wbGAuIFRoZXJlJ3MgMyBraW5kcworICAg
ICAgICAxLiBTdHJpbmdOb3JtYWwgKG5vbi1hdG9taWMsIG5vbi1zeW1ib2wpCisgICAgICAgIDIu
IFN0cmluZ0F0b21pYyAoYXRvbWljLCBub24tc3ltYm9sKQorICAgICAgICAzLiBTdHJpbmdTeW1i
b2wgKG5vbi1hdG9taWMsIHN5bWJvbCkKKyAgICAgICAgVGhleSBhcmUgbXV0dWFsbHkgZXhjbHVz
aXZlLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmlu
Zzo6ZmluZFNsb3dDYXNlKToKKyAgICAgICAgV2hlbiByZWdpc3RlcmluZyBhIHN0cmluZyBpbnRv
IEF0b21pY1N0cmluZ1RhYmxlLAorICAgICAgICBpdCBzaG91bGQgbm90IGJlIGEgc3ltYm9sIHN0
cmluZworICAgICAgICBiZWNhdXNlIHN5bWJvbCBhbmQgYXRvbWljIHR5cGVzIGFyZSBtdXR1YWxs
eSBleGNsdXNpdmUuCisgICAgICAgIFdoZW4gYSBzeW1ib2wgc3RyaW5nIGNvbWVzLCB3ZSBleHRy
YWN0IGFuIG93bmVyIHN0cmluZworICAgICAgICBmcm9tIGEgc3ltYm9sIHN0cmluZyBieSB1c2lu
ZyBgU3RyaW5nSW1wbDo6ZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKClgLgorICAgICAgICBJ
dCBhbHdheXMgc3VjY2VlZHMgYmVjYXVzZSBhIHN5bWJvbCAobm9uIGVtcHR5KSBzdHJpbmcKKyAg
ICAgICAgaXMgYWx3YXlzIEJ1ZmZlclN1YnN0cmluZyBhbmQgaGFzIGFuIG93bmVyIHN0cmluZy4K
KyAgICAgICAgRW1wdHkgc3ltYm9sIHN0cmluZyBkb2Vzbid0IGhhdmUgYW4gb3duZXIgc3RyaW5n
LgorICAgICAgICBUaGlzIGNhc2UgaXMgZmlsdGVyZWQgYnkgYCFzdHJpbmcubGVuZ3RoKClgIGd1
YXJkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXVEY6
OkF0b21pY1N0cmluZzo6YWRkKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGRXaXRo
U3RyaW5nVGFibGVQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6On5TdHJpbmdJbXBsKToKKyAgICAgICAgKFdURjo6
U3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3Jl
YXRlVW5pcXVlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OlN0cmluZ0ltcGwpOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpjcmVhdGVTeW1ib2xFbXB0eSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZs
YWdJc0F0b21pYyk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZsYWdJc1N5bWJvbCk6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om1hc2tTdHJpbmdLaW5kKToKKyAgICAgICAgKFdURjo6
U3RyaW5nSW1wbDo6c3RyaW5nS2luZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzU3lt
Ym9sKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aXNBdG9taWMpOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjpzZXRJc0F0b21pYyk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmV4
dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNy
ZWF0ZVVuaXF1ZUVtcHR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Zmxh
Z0lzVW5pcXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aXNVbmlxdWUp
OiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JTeW1ib2wpOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlxdWUpOiBEZWxldGVkLgorCiAyMDE1LTAz
LTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIFRD
U3BpbkxvY2sgd2l0aCBhIG5ldyBXVEY6OlNwaW5Mb2NrIGJhc2VkIG9uIFdURjo6QXRvbWljLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDA1OWQ2MmIwODBkZjE4MDJiZWUxOGVlOTI5OGZlOGRiMGZiZjYwZjEuLmI4
N2FmZGRiNTA4OTAyZmJhMzIyYWQwNDM5MDBkM2U1OWFkZGQwODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDUgQEAKKzIwMTUtMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyBhbmQgSWRlbnRpZmllcjo6ZnJvbVVpZC4KKworICAgICAg
ICBUZXN0czoganMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5odG1sCisgICAgICAg
ICAgICAgICBqcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5Lmh0bWwKKyAgICAgICAgICAgICAgIGpz
L3N5bWJvbC1zZWFsLWFuZC1mcmVlemUuaHRtbAorICAgICAgICAgICAgICAganMvc3ltYm9sLXdp
dGgtanNvbi5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rp
b25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0
aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxi
YWNrRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2Fs
bGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTTGlzdGVuZXJGdW5jdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRIYXNoQWxnb3JpdGhtKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0SlNBcnJheUZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6
OmdldFN0cmluZ0Zyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJvb2xlYW5Gcm9tSlNP
Tik6CisgICAgICAgIChXZWJDb3JlOjphZGRUb0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6YnVp
bGRKU09ORm9yUlNBQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjphZGRCb29sVG9KU09O
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFVzYWdlc1RvSlNPTik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlND
dXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9j
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEaWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZWFkQWNjZWxlcmF0aW9uQXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZFJvdGF0aW9uUmF0ZUFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2VsZXJh
dGlvbk9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSb3RhdGlvblJhdGVPYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVy
OjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TERvY3VtZW50OjphbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OnNldEFs
bCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6b3Blbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVu
dExpc3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRl
ckNvbmRpdGlvbjo6YWNjZXB0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1
bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0
Um93TGlzdDo6aXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRJbnRlcm5hbFNsb3RUb09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRJbnRlcm5hbFNsb3RGcm9tT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0Ojpz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNl
cmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2Vy
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6
ZSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAg
ICgtW1dlYlNjcmlwdE9iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVudHM6XSk6
CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBzZXRWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAg
ICgtW1dlYlNjcmlwdE9iamVjdCB2YWx1ZUZvcktleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0
T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0
IGhhc1dlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRl
SW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zs
b2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6Z2V0T3du
UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxv
YXQ2NEFycmF5Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAqIGJyaWRnZS9OUF9q
c29iamVjdC5jcHA6CisgICAgICAgIChfTlBOX0VudW1lcmF0ZSk6CisgICAgICAgICogYnJpZGdl
L2MvY191dGlsaXR5LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmlkZW50aWZpZXJGcm9t
TlBJZGVudGlmaWVyKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1bHRWYWx1
ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpS
dW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS90ZXN0
YmluZGluZ3MuY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogYnJpZGdlL3Rlc3RiaW5k
aW5ncy5tbToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OmxvYWRUcmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
Ojpsb2FkQWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAgICAg
ICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3Jl
VGVzdFN1cHBvcnQ6OmluamVjdEludGVybmFsc09iamVjdCk6CisKIDIwMTUtMDMtMTMgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9ncmVz
cyB0b3dhcmRzIENNYWtlIG9uIE1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAyNjM0ZmQ1NDdmOTY2
MTY1NDM2N2NjNGI1MWIzOTJkYjA4ZDUzNjU1Li4zNTRjYWJhMjI2Y2I5NDljNWEzMDhkYmRlYWNm
N2JkODM3MTIzYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMDMt
MTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyBhbmQgSWRlbnRpZmllcjo6ZnJvbVVpZC4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tOgorICAgICAgICAoaWRlbnRpZmllckZyb21JZGVudGlm
aWVyUmVwKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
ZW51bWVyYXRlKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKwogMjAx
NS0wMy0xMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4MTQ4My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MGY1NzRl
NTkxOTgwZThiOWU3M2UxZDVlNTA0N2MwYzljNjJkZjk4Li43OWQ4OWExYWRmMTRiYmU1MmI0MDli
ZTM0MTQxY2MwYmY2MTdlZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDMt
MTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyBhbmQgSWRlbnRpZmllcjo6ZnJvbVVpZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjppZGVudGlmaWVyRnJvbUlkZW50
aWZpZXJSZXApOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJhdGUpOgorCiAy
MDE1LTAzLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBDTWFrZSBvbiBNYWMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDhj
YmYwZmY0OTAyMjJhMzY5MDUzYmY3MWY2M2Q2ZDQ0ZWUyNWUzYjMuLjIyYWZlNDhmYjhjYzM2MWZl
NjE0MDg5YmUyZTE4OTNiYWZiZTUxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC01MTgsOCArNTE4LDEwIEBA
CiAgICAgICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gc3RhdGljVmFsdWVzLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0gaXQt
PmtleS5nZXQoKTsKICAgICAgICAgICAgICAgICBTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IGl0
LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZW50cnktPmdldFByb3BlcnR5ICYm
ICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkgfHwg
c2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpCi0gICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgbmFtZSkpOworICAgICAgICAg
ICAgICAgIGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBtb2RlLnNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFuYW1lLT5pc1N5
bWJvbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmcobmFtZSkpKTsKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01MjksOCArNTMxLDEwIEBACiAg
ICAgICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gc3RhdGljRnVuY3Rpb25zLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0gaXQt
PmtleS5nZXQoKTsKICAgICAgICAgICAgICAgICBTdGF0aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9
IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRl
cyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMobW9kZSkpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXIoZXhlYywgbmFtZSkpOworICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LT5h
dHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkgfHwgbW9kZS5zaG91bGRJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFuYW1lLT5pc1N5bWJvbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmcobmFtZSkpKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IDIzNGQyNDg4ZmY4OTBiOGJlZTY5N2Vm
NTVhYTY4MDM4MGExODFhNDIuLjU5MGE1MzcwMTY5OTUyYjEyOWYwYTM0NDY0Y2Q0YTVlOGVmM2Vh
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC0xNDAs
NyArMTQwLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVuY3Rpb24oSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgbmFtZSwgdW5zaWduZWQgcGEKICAgICBKU0xvY2tIb2xkZXIgbG9j
a2VyKGV4ZWMpOwogCiAgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gc3RkOjptYXgoMSwgc3RhcnRp
bmdMaW5lTnVtYmVyKTsKLSAgICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVu
dGlmaWVyKCZleGVjLT52bSgpKSA6IElkZW50aWZpZXIoZXhlYywgImFub255bW91cyIpOworICAg
IElkZW50aWZpZXIgbmFtZUlEID0gbmFtZSA/IG5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPnZtKCkp
IDogSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYW5vbnltb3VzIik7CiAgICAgCiAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cGFyYW1ldGVyQ291bnQ7IGkrKykKQEAgLTY5OCw3ICs2OTgsNyBAQCBKU1Byb3BlcnR5TmFtZUFy
cmF5UmVmIEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgbwogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1By
b3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5TmFtZXMgPSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5h
bWVBcnJheSh2bSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgYXJyYXkodm0pOwotICAgIGpzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKGpzT2JqZWN0LCBleGVjLCBhcnJh
eSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAganNPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4ZWMsIGFycmF5LCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogCiAgICAgc2l6ZV90IHNpemUgPSBhcnJh
eS5zaXplKCk7CiAgICAgcHJvcGVydHlOYW1lcy0+YXJyYXkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNT
dHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAK
aW5kZXggMjJjMTYyMzBjN2MxZDM2OTExYzdkNTg5Y2U1MGYwOTQyODdhMWQ5ZS4uN2Y5ZWRiNDEz
NmUyNzQ5OTc0N2QyOTZkMmYxYTJkYzQ4OWIwNDQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJZGVudGlm
aWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgogCkBAIC02OSw5ICs3MCw5IEBAIElkZW50aWZpZXIgT3BhcXVl
SlNTdHJpbmc6OmlkZW50aWZpZXIoVk0qIHZtKSBjb25zdAogICAgICAgICByZXR1cm4gSWRlbnRp
ZmllcihJZGVudGlmaWVyOjpFbXB0eUlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fc3RyaW5nLmlz
OEJpdCgpKQotICAgICAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgbV9zdHJpbmcuY2hhcmFjdGVy
czgoKSwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3RoKCkpOwog
Ci0gICAgcmV0dXJuIElkZW50aWZpZXIodm0sIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtX3N0
cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIG1f
c3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtX3N0cmluZy5sZW5ndGgoKSk7CiB9CiAKIGNvbnN0IFVD
aGFyKiBPcGFxdWVKU1N0cmluZzo6Y2hhcmFjdGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDJkZjc4NzY0
MTBlNzhjZjlmYWJmMjQxNzg2ZTYwMjQyZmU0ZWVlMDkuLmYzYTIyMzhlYmE5OGZjMTI4MjdiODFk
ZWYyYzgwYzYzMTRjZTA1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBT
Y3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChib29sIGFyZ3VtZW50KQog
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9leGVjKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb24g
PSB0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyKG1fZXhlYywgbV9uYW1lKSk7Cisg
ICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChtX2V4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcobV9leGVjLCBtX25hbWUpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRp
b24oKSkgewogICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwogICAgICAgICByZXR1cm4gRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDc2YTdiMTExYThkODc3YTY3OWI1YzhiOGU4OTZlMWE3
YjFiNmI4YWMuLjVhMDViYTg5YjllOTBjYTk0MDdjYTNhOGVhZTYyMDc0NzI4YTEyZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTM3
LDcgKzEzNyw3IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmlzRnVuY3Rpb24oKSBjb25zdAogICAgICAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBpbnNwZWN0b3JPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7
CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoc2NyaXB0U3RhdGUpOwot
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIHNjcmlwdFN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3Bl
cnR5TmFtZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5h
bWUgPSBwcm9wZXJ0eU5hbWVzW2ldOwogICAgICAgICAgICAgSlNWYWx1ZSBwcm9wZXJ0eVZhbHVl
ID0gb2JqZWN0LT5nZXQoc2NyaXB0U3RhdGUsIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCAzYzhkYWM1
MzJmYWQ4NThjZjM5YmRiNTMxMWMxZjEwNzkwMGIxNGU3Li4xMzdkN2E3YzI2YjI0ZTIyM2IxNTkw
YzFmYzNlMGJkMmViYTBjZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtNzEsMTEgKzcxLDExIEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5F
eGVjdXRhYmxlKGNvbnN0IFNvCiAgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBjbG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7
CiAgICAgICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3Vt
ZW50cy5pbXBsKCkpCi0gICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIAogICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNVbmlxdWUoKSk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fdm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShjbG9zZWRWYXJp
YWJsZS5nZXQoKSkpOwogICAgIH0KICAgICBib2R5LT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJm1fdm0sIHNvdXJjZSwgYm9keSwgVW5saW5rZWRC
dWlsdGluRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCmluZGV4IDliODg5NmI5NjgwMTQ5MTNmNDZiMzJjNDgwZTA1Nzg5NjM3OWRmYTQu
LmQ3ZDkzZGEyY2ExNjZhMzk0ZDQxZTEwMjcxMjhkOTNjY2QwYzYzNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTMxLDEyICszMSwxOCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKICAgICAKLSNkZWZpbmUgSU5JVElBTElTRV9CVUlMVElOX05B
TUVTKG5hbWUpICwgbV8jI25hbWUodm0sICNuYW1lKSwgbV8jI25hbWUjI1ByaXZhdGVOYW1lKElk
ZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoQVNDSUlMaXRlcmFsKCJTeW1ib2wuIiAjbmFtZSkp
KSkKLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUpIGNvbnN0IElkZW50aWZpZXIg
bV8jI25hbWU7IGNvbnN0IElkZW50aWZpZXIgbV8jI25hbWUjI1ByaXZhdGVOYW1lOzsKKyNkZWZp
bmUgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUpICwgbV8jI25hbWUoSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgI25hbWUpKSwgbV8jI25hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6
OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSkpCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhu
YW1lKSBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1l
IyNQcml2YXRlTmFtZTsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNT
T1IobmFtZSkgXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1B1YmxpY05hbWUoKSBjb25z
dCB7IHJldHVybiBtXyMjbmFtZTsgfSBcCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSMjUHJp
dmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7IH0KIAorI2Rl
ZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fU1lNQk9MUyhuYW1lKSBJTklUSUFMSVNFX0JVSUxUSU5f
TkFNRVMobmFtZSksIG1fIyNuYW1lIyNTeW1ib2woSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRl
TmFtZShBU0NJSUxpdGVyYWwoIlN5bWJvbC4iICNuYW1lKSkpKQorI2RlZmluZSBERUNMQVJFX0JV
SUxUSU5fU1lNQk9MUyhuYW1lKSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSWRl
bnRpZmllciBtXyMjbmFtZSMjU3ltYm9sOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1lNQk9M
X0FDQ0VTU09SKG5hbWUpIFwKKyAgICBERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NP
UihuYW1lKSBcCisgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSMjU3ltYm9sKCkgY29uc3QgeyBy
ZXR1cm4gbV8jI25hbWUjI1N5bWJvbDsgfQorCiAjZGVmaW5lIElOSVRJQUxJU0VfUFJJVkFURV9U
T19QVUJMSUNfRU5UUlkobmFtZSkgbV9wcml2YXRlVG9QdWJsaWNNYXAuYWRkKG1fIyNuYW1lIyNQ
cml2YXRlTmFtZS5pbXBsKCksICZtXyMjbmFtZSk7CiAjZGVmaW5lIElOSVRJQUxJU0VfUFVCTElD
X1RPX1BSSVZBVEVfRU5UUlkobmFtZSkgbV9wdWJsaWNUb1ByaXZhdGVNYXAuYWRkKG1fIyNuYW1l
LmltcGwoKSwgJm1fIyNuYW1lIyNQcml2YXRlTmFtZSk7CiAgICAgCkBAIC00OCwyMyArNTQsMzAg
QEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsKICAgICAgICAgOiBtX2VtcHR5SWRlbnRpZmllcihjb21t
b25JZGVudGlmaWVycy0+ZW1wdHlJZGVudGlmaWVyKQogICAgICAgICBKU0NfRk9SRUFDSF9CVUlM
VElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElTRV9CVUlMVElOX05BTUVTKQogICAgICAgICBKU0Nf
Q09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJU0Vf
QlVJTFRJTl9OQU1FUykKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9CVUlMVElOX1NZTUJPTFMpCiAgICAgewog
ICAgICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElTRV9QUklW
QVRFX1RPX1BVQkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZ
KQorICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dO
X1NZTUJPTChJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKQogICAgICAgICBKU0Nf
Rk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFU
RV9FTlRSWSkKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKQorICAgICAgICBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklU
SUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKQogICAgIH0KIAorICAgIGJvb2wgaXNQcml2
YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpIGNvbnN0OworICAgIGJvb2wgaXNQcml2YXRlTmFtZShj
b25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIGNvbnN0IElkZW50aWZpZXImIGdl
dFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIAogICAgIEpTQ19GT1JF
QUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NF
U1NPUikKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9O
QU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorICAgIEpTQ19DT01NT05f
UFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKERFQ0xBUkVfQlVJTFRJ
Tl9TWU1CT0xfQUNDRVNTT1IpCiAKIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBtX2VtcHR5SWRl
bnRpZmllcjsKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9C
VUlMVElOX05BTUVTKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorICAgIEpTQ19DT01NT05fUFJJVkFU
RV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKERFQ0xBUkVfQlVJTFRJTl9TWU1C
T0xTKQogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGNvbnN0IElkZW50
aWZpZXIqLCBJZGVudGlmaWVyUmVwSGFzaD4gQnVpbHRpbk5hbWVzTWFwOwogICAgIEJ1aWx0aW5O
YW1lc01hcCBtX3B1YmxpY1RvUHJpdmF0ZU1hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wcml2
YXRlVG9QdWJsaWNNYXA7CkBAIC03Myw3ICs4NiwxOSBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewog
I3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9OQU1FUwogI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9O
QU1FUwogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX1NZTUJPTFMKKyN1bmRlZiBJTklUSUFMSVNFX0JVSUxUSU5fU1lNQk9M
UworI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xfQUNDRVNTT1IKKworaW5saW5lIGJvb2wg
QnVpbHRpbk5hbWVzOjppc1ByaXZhdGVOYW1lKFN0cmluZ0ltcGwqIHVpZCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlVG9QdWJsaWNNYXAuZmluZCh1aWQpICE9IG1fcHJpdmF0ZVRvUHVi
bGljTWFwLmVuZCgpOworfQogCitpbmxpbmUgYm9vbCBCdWlsdGluTmFtZXM6OmlzUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzUHJpdmF0
ZU5hbWUoaWRlbnQuaW1wbCgpKTsKK30KIAogaW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0
aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7
CkBAIC05MSw3ICsxMTYsNyBAQCBpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVz
OjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgYwogICAgIHJldHVybiBt
X2VtcHR5SWRlbnRpZmllcjsKIH0KIAotICAgIAorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
aAppbmRleCA5YTlkYjBiYzcwYjlmMTM1ZjY1ZGQyZDc5NmRlNjUyODk2YWUwZmIxLi41NzgwZjAw
YzcyODE0YTMxODUwZTFjODJhNWFkYzJlMmViMjg4MzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaApAQCAt
MTE4LDcgKzExOCw3IEBAIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIHsKIAogICAgICAg
ICBzaXplX3QgY291bnQgPSAwOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5h
bWVBcnJheSgmdm0pOwotICAgICAgICBwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0
eU5hbWVzRnJvbVN0cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1lQXJyYXksIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOworICAgICAgICBwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0
eU5hbWVzRnJvbVN0cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1lQXJyYXksIEVudW1lcmF0aW9uTW9k
ZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICAgICAg
UHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZl
Y3RvciA9IHByb3BlcnR5TmFtZUFycmF5LmRhdGEoKS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKTsg
KytpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gcHJvdG90eXBlLT5nZXREaXJlY3Qo
dm0sIHByb3BlcnR5TmFtZVZlY3RvcltpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGZhZjVmZDlh
MjE0MGNmNDVlZTVjMTkxYmIyNzBjZWIyZDA3YzVlNjQuLmJkZjQ2YzAyOGNjMTMzOGRmMTQyNDkw
YmUyZjdhMjcwMWUyMWEzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NDcsNyArNDQ3LDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcigKICAgICBWZWN0b3I8SWRlbnRp
ZmllciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHZhcmlhYmxlczsKICAgICB2YXJpYWJsZXMu
cmVzZXJ2ZUNhcGFjaXR5KG51bVZhcmlhYmxlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1WYXJpYWJsZXM7ICsraSkgewotICAgICAgICBBU1NFUlQodmFyU3RhY2tbaV0uZmlyc3Qu
aW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKHZhclN0YWNrW2ldLmZpcnN0Lmlt
cGwoKS0+aXNBdG9taWMoKSB8fCB2YXJTdGFja1tpXS5maXJzdC5pbXBsKCktPmlzU3ltYm9sKCkp
OwogICAgICAgICB2YXJpYWJsZXMuYXBwZW5kKHZhclN0YWNrW2ldLmZpcnN0KTsKICAgICB9CiAg
ICAgY29kZUJsb2NrLT5hZG9wdFZhcmlhYmxlcyh2YXJpYWJsZXMpOwpAQCAtMjM2MiwxNCArMjM2
MiwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6cG9wVHJ5QW5kRW1pdENhdGNo
KFRyeURhdGEqIHRyeURhdGEsIFJlZ2lzdGVySUQqCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0VGhyb3dSZWZlcmVuY2VFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgZW1p
dE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXIobV92bSwgbWVz
c2FnZSkpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX3ZtLCBtZXNz
YWdlKSkpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodHJ1ZSk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1R5cGVFcnJvcihjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgZW1pdE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50
KElkZW50aWZpZXIobV92bSwgbWVzc2FnZSkpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhtX3ZtLCBtZXNzYWdlKSkpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmFsc2UpOwogfQogCkBAIC0yNTM2LDcgKzI1MzYsNyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpCiAgICAgaWYgKCFpc1N0
cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGVtaXRPcGNvZGUob3BfdGhyb3dfc3Rh
dGljX2Vycm9yKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShh
ZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyKG1fdm0sIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFk
ZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyht
X3ZtLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSktPmluZGV4KCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmYWxzZSk7CiB9CiAgICAgCkBAIC0yNTcwLDcgKzI1
NzAsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUg
PSBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwg
c3ViamVjdE5vZGUpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0
b3JQcml2YXRlTmFtZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVy
YXRvclN5bWJvbCk7CiAgICAgewogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51
bGxwdHIpOwogICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBzdWJqZWN0Lmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElk
ZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50
aWZpZXJzLmNwcAppbmRleCA2MGE0OTRkZGNmNGIxNTM4MWFjYWYwYzU4MTg5NjQ2NGU3YTJlNDNi
Li42NWMzMDFkYmVlMTZkM2Y3NGI1NDI3YjdhMGY2OTI0ODg0MWM0ZTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgRGVzaXJlZElkZW50aWZpZXJzOjpyZWFsbHlBZGQoVk0mIHZtLCBD
b21tb25EYXRhKiBjb21tb25EYXRhKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fk
ZGVkSWRlbnRpZmllcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nSW1wbCogcmVwID0g
bV9hZGRlZElkZW50aWZpZXJzW2ldOwogICAgICAgICBBU1NFUlQocmVwLT5oYXNBdExlYXN0T25l
UmVmKCkpOwotICAgICAgICBjb21tb25EYXRhLT5kZmdJZGVudGlmaWVycy5hcHBlbmQoSWRlbnRp
Zmllcigmdm0sIHJlcCkpOworICAgICAgICBjb21tb25EYXRhLT5kZmdJZGVudGlmaWVycy5hcHBl
bmQoSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHJlcCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAppbmRleCBkMTVhZjMyMWEyM2M5NTQ1ZDJmMGVmZTYwMGQ3ODcyNzM4NjYxZjI2Li4zZDBm
NjBlZDEzYWVkMjVjMDA3ZmZhZmJkZWViYWU0Nzc5MDBmOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApA
QCAtMTk2LDIwICsxOTYsMjAgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rp
b25EZXRhaWxzKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFN0cmluZyBzY3JpcHRJRCA9IFN0cmlu
Zzo6bnVtYmVyKHNvdXJjZUNvZGUtPnByb3ZpZGVyKCktPmFzSUQoKSk7CiAgICAgSlNPYmplY3Qq
IGxvY2F0aW9uID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgbG9jYXRpb24tPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJzY3JpcHRJZCIpLCBqc1N0cmlu
ZyhleGVjLCBzY3JpcHRJRCkpOwotICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
SWRlbnRpZmllcihleGVjLCAibGluZU51bWJlciIpLCBqc051bWJlcihsaW5lTnVtYmVyKSk7Ci0g
ICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1
bW5OdW1iZXIiKSwganNOdW1iZXIoY29sdW1uTnVtYmVyKSk7CisgICAgbG9jYXRpb24tPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzY3JpcHRJZCIp
LCBqc1N0cmluZyhleGVjLCBzY3JpcHRJRCkpOworICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGluZU51bWJlciIpLCBqc051
bWJlcihsaW5lTnVtYmVyKSk7CisgICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb2x1bW5OdW1iZXIiKSwganNOdW1iZXIoY29s
dW1uTnVtYmVyKSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYyk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihl
eGVjLCAibG9jYXRpb24iKSwgbG9jYXRpb24pOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvY2F0aW9uIiksIGxvY2F0aW9u
KTsKIAogICAgIFN0cmluZyBuYW1lID0gZnVuY3Rpb24tPm5hbWUoZXhlYyk7CiAgICAgaWYgKCFu
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcihleGVjLCAibmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1lKSk7CisgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
Im5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1l
ID0gZnVuY3Rpb24tPmRpc3BsYXlOYW1lKGV4ZWMpOwogICAgIGlmICghZGlzcGxheU5hbWUuaXNF
bXB0eSgpKQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJkaXNwbGF5TmFtZSIpLCBqc1N0cmluZyhleGVjLCBkaXNwbGF5TmFtZSkpOworICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJkaXNwbGF5TmFtZSIpLCBqc1N0cmluZyhleGVjLCBkaXNwbGF5TmFtZSkpOwogCiAg
ICAgLy8gRklYTUU6IHByb3ZpZGUgZnVuY3Rpb24gc2NvcGUgZGF0YSBpbiAic2NvcGVzUmF3IiBw
cm9wZXJ0eSB3aGVuIEpTQyBzdXBwb3J0cyBpdC4KICAgICAvLyA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvODcxOTI+IFtKU0NdIGV4cG9zZSBmdW5jdGlvbiAoY2xvc3VyZSkgaW5uZXIgY29udGV4dCB0
byBkZWJ1Z2dlcgpAQCAtMjIwLDggKzIyMCw4IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhv
c3Q6OmZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0aWMgSlNPYmplY3QqIGNv
bnN0cnVjdEludGVybmFsUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXIoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInZhbHVlIiksIHZhbHVlKTsK
KyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2YWx1ZSIpLCB2
YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzc0LDggKzM3NCw4IEBAIEpTVmFs
dWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OndlYWtNYXBFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7
CiAgICAgZm9yIChhdXRvIGl0ID0gd2Vha01hcC0+d2Vha01hcERhdGEoKS0+YmVnaW4oKTsgaXQg
IT0gd2Vha01hcC0+d2Vha01hcERhdGEoKS0+ZW5kKCk7ICsraXQpIHsKICAgICAgICAgSlNPYmpl
Y3QqIGVudHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgICAgIGVudHJ5LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAia2V5IiksIGl0LT5rZXkpOwot
ICAgICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInZh
bHVlIiksIGl0LT52YWx1ZS5nZXQoKSk7CisgICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAia2V5IiksIGl0LT5rZXkpOworICAg
ICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgInZhbHVlIiksIGl0LT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIGFycmF5LT5wdXREaXJl
Y3RJbmRleChleGVjLCBmZXRjaGVkKyssIGVudHJ5KTsKICAgICAgICAgaWYgKG51bWJlclRvRmV0
Y2ggJiYgZmV0Y2hlZCA+PSBudW1iZXJUb0ZldGNoKQogICAgICAgICAgICAgYnJlYWs7CkBAIC00
MjQsNyArNDI0LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aXRlcmF0b3JFbnRy
aWVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIEpTT2Jq
ZWN0KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICBlbnRyeS0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInZhbHVlIiksIG5leHRWYWx1
ZSk7CisgICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAidmFsdWUiKSwgbmV4dFZhbHVlKTsKICAgICAgICAgYXJyYXktPnB1dERp
cmVjdEluZGV4KGV4ZWMsIGksIGVudHJ5KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5jcHAKaW5kZXggNGJmZmFkMWUxMDAwYjkxOWJmNTQ4YWZkYjQ3NTQ2MTI0ZTEzMDlm
Yy4uYjFjZTBhMTM4YmMwNWYxMDA3NzE1NzVlOWEzYjliNWM1NDc5MGQ2NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBKU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmEKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJ3ZWFrTWFwRW50cmllcyIsIGpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcywgRG9udEVudW0s
IDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oIml0ZXJhdG9yRW50cmllcyIsIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMsIERvbnRFbnVtLCAx
KTsKIAotICAgIElkZW50aWZpZXIgZXZhbHVhdGVJZGVudGlmaWVyKCZ2bSwgImV2YWx1YXRlIik7
CisgICAgSWRlbnRpZmllciBldmFsdWF0ZUlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgImV2YWx1YXRlIik7CiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIGV2YWx1YXRlSWRl
bnRpZmllci5zdHJpbmcoKSwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVF
dmFsdWF0ZSk7CiAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBmdW5j
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKaW5kZXggNThiYjY4YjBh
MWYzODhmMjFjYWY4YjVmNjIyY2FkNzdiMjA3OWUyZC4uNDgyODM4NjUyNGRjMjZhYjQ2Yzg0MTM1
NjgzMWM3MGRjNmU5ZmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcApA
QCAtNjMsNyArNjMsNyBAQAogCiAjZGVmaW5lIEpTQ19OQVRJVkVfTk9OX0lOREVYX0FDQ0VTU09S
KGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRlcykgXAogICAgIHsgXAotICAgICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIoJnZtLCBqc05hbWUpOyBcCisgICAgICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBqc05hbWUpOyBcCiAgICAgICAgIEdl
dHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0KTsgXAogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCBpZGVudGlmaWVyLnN0cmluZygpLCBjcHBOYW1lKTsgXAog
ICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKTsg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggMjdkYzA5OWJkYjU4YjA3NDNhM2JiNmUxNWEyZDMw
ZDUzYjAxYmNiMi4uZjlmNmMxYzQ5YWFhNjA2YTM3MzM0OGI2ZTJkOGZjMjcwZmNkZThiNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xMTksMTEgKzExOSwxMSBAQCBjbGFzcyBDcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGdW5jdG9yIHsKIHN0YXRpYyB2b2lkIGV4dHJhY3RTb3VyY2VJbmZvcm1hdGlv
bkZyb21FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBleGNlcHRpb25P
YmplY3QsIGludCogbGluZU51bWJlciwgaW50KiBjb2x1bW5OdW1iZXIsIFN0cmluZyogc291cmNl
VVJMKQogewogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTUwODc+IFdlYiBJ
bnNwZWN0b3I6IFNob3VsZCBub3QgbmVlZCB0byBldmFsdWF0ZSBKYXZhU2NyaXB0IGhhbmRsaW5n
IGV4Y2VwdGlvbnMKLSAgICBKU1ZhbHVlIGxpbmVWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImxpbmUiKSk7CisgICAgSlNWYWx1
ZSBsaW5lVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwogICAgICpsaW5lTnVtYmVyID0gbGlu
ZVZhbHVlICYmIGxpbmVWYWx1ZS5pc051bWJlcigpID8gaW50KGxpbmVWYWx1ZS50b051bWJlcihl
eGVjKSkgOiAwOwotICAgIEpTVmFsdWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdl
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1bW4iKSk7CisgICAgSlNW
YWx1ZSBjb2x1bW5WYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbHVtbiIpKTsKICAgICAqY29sdW1uTnVt
YmVyID0gY29sdW1uVmFsdWUgJiYgY29sdW1uVmFsdWUuaXNOdW1iZXIoKSA/IGludChjb2x1bW5W
YWx1ZS50b051bWJlcihleGVjKSkgOiAwOwotICAgIEpTVmFsdWUgc291cmNlVVJMVmFsdWUgPSBl
eGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJz
b3VyY2VVUkwiKSk7CisgICAgSlNWYWx1ZSBzb3VyY2VVUkxWYWx1ZSA9IGV4Y2VwdGlvbk9iamVj
dC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNv
dXJjZVVSTCIpKTsKICAgICAqc291cmNlVVJMID0gc291cmNlVVJMVmFsdWUgJiYgc291cmNlVVJM
VmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSA6IEFTQ0lJTGl0ZXJhbCgidW5kZWZpbmVkIik7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRp
b24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IDQ2MTE2N2FlNjU0MTBmNDI2ZDdlODc4NDIwNzhlMDIwMDhhNzE1NTUuLmFmNjE0MWE5ZDNk
OTBmMWQ4Yzg5YjZkOTdjNWExZGY3OWM5ZWRmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvCiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
YmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICBJZGVudGlmaWVy
IGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKHZtLCB1aWQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChl
eGVjLCBpZGVudCwgc2xvdCkpOwogfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVp
ZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7
CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoYmFzZSk7CkBAIC0xNzksNyArMTc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc1VuaXF1ZSgp
ID8gSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVp
ZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7
CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJCiAgICAgCiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCi0gICAgSWRlbnRpZmll
ciBpZGVudCh2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJl
c3VsdCA9IGFzT2JqZWN0KGJhc2UpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3Qp
OwogICAgIApAQCAtMjMwLDcgKzIzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSW4oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAg
SWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwga2V5KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihhc09iamVjdChiYXNlKS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKSk7CiB9CiAKQEAg
LTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmlj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRQogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
ICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCkt
PnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkucHV0
KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBA
IC0yNTcsNyArMjU3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25T
dHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
ICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGZhbHNlLCBleGVjLT5jb2RlQmxvY2so
KS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5w
dXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0K
QEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbgogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2Nr
KCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0s
IHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVp
ZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSwgZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBhc09i
amVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yODcs
NyArMjg3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRp
bWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWIKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAK
LSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTMxMSw3ICsz
MTEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGlt
aXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAg
IElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzM1LDcgKzMzNSw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1p
emUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRl
bnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0zNTksNyArMzU5LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlm
aWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIg
aWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21V
aWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVu
dCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NU
eXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3QKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZt
LCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRl
KiBleGVjLCBTdHIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZt
LCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTEzOTEsMTAgKzEzOTEsOSBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEFyZ3VtZW50c0xlbmd0aChFeGVjU3RhdGUqIGV4
ZWMsIGludDMyXwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
ICAgICAvLyBIZXJlIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGUgYXJndW1lcm50cyB3ZXJlIGNyZWF0
ZWQuIEJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBKSVQgY29kZSB3b3VsZAogICAgIC8vIGhhdmUgbm90
IG1hZGUgdGhpcyBjYWxsLgotICAgIElkZW50aWZpZXIgaWRlbnQoJnZtLCAibGVuZ3RoIik7CiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBleGVjLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVy
KS5qc1ZhbHVlKCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwgc2xvdCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IGExMDZjOGQzZDRjNjM2NjI0MjEyN2U5YzgxNTM0Y2EyMzRjMWRjYWMuLjU3ZTc3NmRiMjQ3YWRj
MWZiZDQ2MDE0NTgzOWFlOGE3ODU0MTA1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC02MTUs
MTEgKzYxNSwxMSBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3Qg
ewogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImdldEVsZW1lbnQiLCBmdW5jdGlvbkdldEVsZW1l
bnQsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldEVsZW1lbnRSb290IiwgZnVuY3Rp
b25TZXRFbGVtZW50Um9vdCwgMik7CiAgICAgICAgIAotICAgICAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJERkdUcnVlIiksIDAsIGZ1bmN0aW9u
RmFsc2UxLCBERkdUcnVlSW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAg
ICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJP
U1JFeGl0IiksIDAsIGZ1bmN0aW9uVW5kZWZpbmVkMSwgT1NSRXhpdEludHJpbnNpYywgRG9udEVu
dW0gfCBKU0M6OkZ1bmN0aW9uKTsKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0s
IHRoaXMsIElkZW50aWZpZXIoJnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVuY3Rpb25GYWxzZTIs
IElzRmluYWxUaWVySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJwcmVk
aWN0SW50MzIiKSwgMCwgZnVuY3Rpb25VbmRlZmluZWQyLCBTZXRJbnQzMkhlYXBQcmVkaWN0aW9u
SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAgICAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJmaWF0SW50NTIiKSwgMCwg
ZnVuY3Rpb25JZGVudGl0eSwgRmlhdEludDUySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVu
Y3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJERkdUcnVlIiksIDAsIGZ1bmN0aW9uRmFsc2UxLCBERkdU
cnVlSW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJP
U1JFeGl0IiksIDAsIGZ1bmN0aW9uVW5kZWZpbmVkMSwgT1NSRXhpdEludHJpbnNpYywgRG9udEVu
dW0gfCBKU0M6OkZ1bmN0aW9uKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0s
IHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVu
Y3Rpb25GYWxzZTIsIElzRmluYWxUaWVySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rp
b24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJwcmVkaWN0SW50MzIiKSwgMCwgZnVuY3Rpb25VbmRlZmluZWQy
LCBTZXRJbnQzMkhlYXBQcmVkaWN0aW9uSW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rp
b24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJmaWF0SW50NTIiKSwgMCwgZnVuY3Rpb25JZGVudGl0eSwgRmlh
dEludDUySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwogICAgICAgICAKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sICJlZmZlY3RmdWw0MiIsIGZ1bmN0aW9uRWZmZWN0ZnVsNDIs
IDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm1ha2VNYXNxdWVyYWRlciIsIGZ1bmN0aW9u
TWFrZU1hc3F1ZXJhZGVyLCAwKTsKQEAgLTY0MSwyMCArNjQxLDIwIEBAIGNsYXNzIEdsb2JhbE9i
amVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0g
Y29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCksIDApOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGFycmF5LT5w
dXREaXJlY3RJbmRleChnbG9iYWxFeGVjKCksIGksIGpzU3RyaW5nKGdsb2JhbEV4ZWMoKSwgYXJn
dW1lbnRzW2ldKSk7Ci0gICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcihnbG9iYWxFeGVj
KCksICJhcmd1bWVudHMiKSwgYXJyYXkpOworICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKICAgICAg
ICAgCi0gICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjb25z
b2xlIiksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZ2xvYmFsRXhlYygpLCAiY29uc29sZSIpLCBqc1VuZGVmaW5lZCgpKTsKICAg
ICB9CiAKICAgICB2b2lkIGFkZEZ1bmN0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAg
IElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIG5hbWUpOworICAgICAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFtZSk7CiAgICAgICAgIHB1
dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCBhcmd1
bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQogICAgIAogICAg
IHZvaWQgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cykKICAgICB7Ci0gICAg
ICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIG5hbWUpOworICAgICAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFtZSk7CiAgICAgICAg
IHB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCBh
cmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgZnVu
Y3Rpb24pKTsKICAgICB9CiB9OwpAQCAtODg2LDcgKzg4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKiBleGVjKQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYXJyYXkt
PnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KAotICAg
ICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAi
YXJndW1lbnRzIiksIGFycmF5KTsKKyAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7
CiAKICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKICAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoOwpAQCAt
MTI2Nyw3ICsxMjY3LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKICAgICAgICAgICAgIHBy
aW50ZigiRW5kOiAlc1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBwcmlu
dGYoIkV4Y2VwdGlvbjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24udG9TdHJpbmcoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksICJzdGFjayIpOworICAgICAgICAgICAgSWRlbnRpZmllciBzdGFj
a0lEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwg
InN0YWNrIik7CiAgICAgICAgICAgICBKU1ZhbHVlIHN0YWNrVmFsdWUgPSBldmFsdWF0aW9uRXhj
ZXB0aW9uLmdldChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc3RhY2tJRCk7CiAgICAgICAg
ICAgICBpZiAoIXN0YWNrVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgICAg
ICBwcmludGYoIiVzXG4iLCBzdGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBhYjAxNTAx
YjEyOTE3ZDllZTgwZWQzMTUyM2Y5MjU4ZGM0NDJkYTJlLi5lZGZkNjcwMWRjMGYzZDU5MWNiMzc4
ZDM5OThjYjdkNDJmOTA0YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMo
Vk0mIHZtKQogICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8aW50Kio+KCZ0ZXN0VmVjdG9yKVswXSA9
PSB0ZXN0VmVjdG9yLmJlZ2luKCkpOwogI2VuZGlmCiAKLSAgICBBU1NFUlQoU3RyaW5nSW1wbDo6
c19oYXNoRmxhZzhCaXRCdWZmZXIgPT0gMzIpOworICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hh
c2hGbGFnOEJpdEJ1ZmZlciA9PSA4KTsKIH0KICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBkNzFhM2VmZTc2ODlkZjlkZjVlODc5ZTYz
ZTgyNDdhYzgwNDgzOTU3Li5hOTFlNDY3OTA2YjVhZmZmYTQ3ZGY3Y2VlN2I1ZTUyYzZmYzIzZTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCkBAIC0xNzYsNyArMTc2LDcgQEAgY29uc3QgRnVuY3Rpb25Db2RlID0gMgogY29u
c3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKIAogIyBTdHJpbmcg
ZmxhZ3MuCi1jb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gMzIKK2NvbnN0IEhhc2hGbGFnczhC
aXRCdWZmZXIgPSA4CiAKICMgQ29waWVkIGZyb20gUHJvcGVydHlPZmZzZXQuaAogY29uc3QgZmly
c3RPdXRPZkxpbmVPZmZzZXQgPSAxMDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKaW5kZXggZGYzYmUxZTk0MTBmZGNmNWViZWFjY2Q4NTE1ODc2MGU1YWY4NmYzOS4u
MjAzYjk3OWI4OGY0YmYyMDgxZjliZGEyNjg2MzlkNGNhMTVlOTgzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTU3Myw3ICs1NzMsNyBAQCBjbGFzcyBB
U1RCdWlsZGVyIHsKICAgICB7CiAgICAgICAgIGlmIChtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMgPT0gKmlkZW50KQogICAgICAgICAgICAgdXNlc0FyZ3VtZW50cygpOwotICAgICAgICBB
U1NFUlQoaWRlbnQtPmltcGwoKS0+aXNBdG9taWMoKSk7CisgICAgICAgIEFTU0VSVChpZGVudC0+
aW1wbCgpLT5pc0F0b21pYygpIHx8IGlkZW50LT5pbXBsKCktPmlzU3ltYm9sKCkpOwogICAgICAg
ICBtX3Njb3BlLm1fdmFyRGVjbGFyYXRpb25zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqaWRlbnQs
IGF0dHJzKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggNzhmYzM3YTc3ZWJkZTQyOWQwYWNhNGZhMzQ5ODI3YTI5ZWM4YzEzNC4uN2MxNjQwY2Jk
ODBmOTU4OGI3NWUyMTRkNTUzYjhjYjQxNjNjMmY3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMjg2LDEwICsyODYsMTAgQEAKICAgICAgICAgSWRlbnRpZmll
clNldCB1c2VkVmFyaWFibGVzOwogICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2Vk
VmFyaWFibGVzKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJp
YWJsZXMpIHsKLSAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVu
dGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhh
c0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5nZXQo
KSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1ldGVyKElkZW50aWZpZXIobV92bSwgdmFyaWFi
bGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIo
SWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKQEAgLTUxOCw3ICs1MTgsNyBAQAogICAgIEFTU0VS
VCghbmFtZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbmFtZS5pc051bGwoKSk7CiAgICAgCi0g
ICAgQVNTRVJUKG5hbWUuaW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlQobmFtZS5pbXBs
KCktPmlzQXRvbWljKCkgfHwgbmFtZS5pbXBsKCktPmlzU3ltYm9sKCkpOwogICAgIGlmIChkZXB0
aCkgewogICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvVmFyaWFibGVzKQogICAgICAg
ICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJlVmFyaWFibGUoJm5hbWUpLCAiQ2Fubm90
IGRlY29uc3RydWN0IHRvIGEgdmFyaWFibGUgbmFtZWQgJyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBz
dHJpY3QgbW9kZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5o
CmluZGV4IDQyN2I4NGNkYTUzMjMxYTU0NzA2ZjRjZWZlYzNkODFkNzhiNTBkZGIuLjQwZWNlNTNh
MGI2NDRjMDgyMDc5YzIyZGYwZjk0M2JjMjVkYmRhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTczLDIwICs3MywyMCBAQAogICAgICAgICBpZiAo
IWxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiB2bS0+cHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVu
dGlmaWVyOwogICAgICAgICBpZiAoY2hhcmFjdGVyc1swXSA+PSBNYXhpbXVtQ2FjaGFibGVDaGFy
YWN0ZXIpIHsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIodm0s
IGNoYXJhY3RlcnMsIGxlbmd0aCkpOworICAgICAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQo
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGxlbmd0aCA9PSAxKSB7CiAgICAgICAgICAgICBpZiAoSWRlbnRpZmllciogaWRlbnQgPSBtX3No
b3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuICpp
ZGVudDsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIodm0sIGNo
YXJhY3RlcnMsIGxlbmd0aCkpOworICAgICAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgICAgICAg
ICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSAmbV9pZGVudGlmaWVycy5sYXN0
KCk7CiAgICAgICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiAgICAgICAgIH0K
ICAgICAgICAgSWRlbnRpZmllciogaWRlbnQgPSBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3Rl
cnNbMF1dOwogICAgICAgICBpZiAoaWRlbnQgJiYgSWRlbnRpZmllcjo6ZXF1YWwoaWRlbnQtPmlt
cGwoKSwgY2hhcmFjdGVycywgbGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVybiAqaWRlbnQ7Ci0g
ICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIodm0sIGNoYXJhY3RlcnMsIGxl
bmd0aCkpOworICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgbV9yZWNlbnRJZGVudGlmaWVy
c1tjaGFyYWN0ZXJzWzBdXSA9ICZtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgcmV0dXJu
IG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgIH0KQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgICAg
ICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgIGlmIChJZGVudGlmaWVyKiBpZGVudCA9
IG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSkKICAgICAgICAgICAgICAgICByZXR1
cm4gKmlkZW50OwotICAgICAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2
bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVu
ZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAg
ICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9ICZtX2lkZW50aWZpZXJz
Lmxhc3QoKTsKICAgICAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAg
ICAgfQpAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgCiAgICAgaW5saW5lIGNvbnN0IElkZW50aWZp
ZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKFZNKiB2bSwgZG91Ymxl
IG51bWJlcikKICAgICB7Ci0gICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIo
dm0sIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG51bWJlcikpKTsKKyAgICAgICAg
bV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5nOjpu
dW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSkpOwogICAgICAgICByZXR1cm4gbV9pZGVu
dGlmaWVycy5sYXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcAppbmRleCA5ODU0OGQyYTQxZDg2Yjc3ZTVkNTdiZjQ3ZmNjZjk2MGY4MmZh
OGI5Li5mZDkwM2U1NGQxODBmZGJjYzJiYzg1YmMzNDg3MmEzNTJmOGJiMzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTE4MCwxMCArMTgwLDEw
IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAKICAgICBpZiAoSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5pdGVyYXRvclByaXZhdGVOYW1lKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpIHsKICAgICAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICAgICAgdGhpc09iamVjdC0+SlNDX05BVElWRV9GVU5D
VElPTihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRz
RnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJ
VkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVu
dHNGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICAgICAgaWYgKEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEFy
Z3VtZW50czo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwogICAgIH0KLSAgICBpZiAoc2hv
dWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkgeworICAgIGlmIChtb2RlLnNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlKTsKICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuY3BwCmluZGV4IGFkOGI3NTkwZDg1ZTY1NmE5MTJiNGFhOTkxNzYwZmFkMzYzMDYwYmYuLmZj
MzVhOWZjNTEyODRjMDU0ZDAwZmRlN2ZmODZjZmY3MDE5MjQ4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3Rv
dHlwZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlw
ZSh0aGlzKTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3Is
IERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwg
RG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
bmV4dCwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRl
cmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGY3Njg2OGMwM2VhNTMzODAxMGEyYjdiMDYxZmYwZDQy
OTA4NTRiYzIuLmI4NjI2NzcwMWY0MDk5MDY4MjU1OTNjM2Y5ZDY0NWJkMWZhMzZmYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQ
cm90b3R5cGUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgQXJyYXlJdGVyYXRvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkp
KTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwotICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJyYXlJ
dGVyYXRvclByb3RvRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJyYXlJdGVyYXRvclBy
b3RvRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiB9CiAKIGJvb2wgQXJyYXlJdGVyYXRvclBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4
IDNmZDAzNGExYzMyODQ2MWE0NjVjZTY2MmMwOThkMjNkZTFiNDg3NGQuLmM0YTcwZDg5MzE1ZWE5
OWMzZmUzOTBjNzRmMjA2MGEwY2MxZDg5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEFy
cmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwot
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRl
TmFtZSwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcnJheVByb3RvRnVu
Y1ZhbHVlcywgRG9udEVudW0sIDApOwogfQogCiBib29sIEFycmF5UHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC01MzAsNyArNTMwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0
aGlzT2JqLCBleGVjLCBsZW5ndGggKyBuLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChuKSwgdHJ1
ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhp
c09iaik7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZShleGVjLCBKU1ZhbHVl
KHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSku
dG9XVEZTdHJpbmcoZXhlYykpOworICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRf
dD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhleGVjKSk7
CiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iaiwgZXhlYywg
cHJvcGVydHlOYW1lLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChuKSwgc2xvdCk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNzM1LDcgKzczNSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBuYW1lQXJyYXkoZXhlYyk7Ci0gICAgdGhpc09i
ai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwgZXhl
YywgbmFtZUFycmF5LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICB0aGlzT2JqLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqLCBleGVjLCBu
YW1lQXJyYXksIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggNTZkZjM0NTAyODdmZjk5OWEzOGZjZjRj
YjcxNTBlODYxYTU2NDNlOC4uYTZkMTkxZTY1ZDUzN2U5ZTMwMTVmYmRmZjk5YmQ5MTQ5MDBiMGRj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmNwcApAQCAtMjIsMjUgKzIyLDI4IEBACiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJQcml2YXRlTmFt
ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05B
TUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5h
bWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVS
VFlfTkFNRShuYW1lKSAsIG5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQor
I2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSkKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05B
TUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0
ZU5hbWUoKSkKKyNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wobmFtZSkgLCBuYW1lIyNTeW1ib2wo
bV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQogCiBDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQogICAgICwgZW1w
dHlJZGVudGlmaWVyKElkZW50aWZpZXI6OkVtcHR5SWRlbnRpZmllcikKLSAgICAsIHVuZGVyc2Nv
cmVQcm90byh2bSwgIl9fcHJvdG9fXyIpCi0gICAgLCB0aGlzSWRlbnRpZmllcih2bSwgInRoaXMi
KQotICAgICwgdXNlU3RyaWN0SWRlbnRpZmllcih2bSwgInVzZSBzdHJpY3QiKQorICAgICwgdW5k
ZXJzY29yZVByb3RvKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX3Byb3RvX18iKSkKKyAg
ICAsIHRoaXNJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0aGlzIikpCisg
ICAgLCB1c2VTdHJpY3RJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2Ug
c3RyaWN0IikpCiAgICAgLCBtX2J1aWx0aW5OYW1lcyhuZXcgQnVpbHRpbk5hbWVzKHZtLCB0aGlz
KSkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tF
WVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5J
VElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVS
U19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCisgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTEla
RV9TWU1CT0wpCiB7CiB9CiAKQEAgLTQ4LDYgKzUxLDE2IEBACiB7CiB9CiAKK2Jvb2wgQ29tbW9u
SWRlbnRpZmllcnM6OmlzUHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCogdWlkKSBjb25zdAoreworICAg
IHJldHVybiBtX2J1aWx0aW5OYW1lcy0+aXNQcml2YXRlTmFtZSh1aWQpOworfQorCitib29sIENv
bW1vbklkZW50aWZpZXJzOjppc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBj
b25zdAoreworICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+aXNQcml2YXRlTmFtZShpZGVudCk7
Cit9CisKIGNvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpnZXRQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9idWlsdGlu
TmFtZXMtPmdldFByaXZhdGVOYW1lKGlkZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDZmMzRmYTkzMGQzYjE2Mjg3NTgw
YmE0NWRkNWI1N2Q0MDdlZDNlNDYuLmU2MDFiNzRkZjM0YTAzZTI3MTAxNzJkZDY3OWM0M2NiYzk3
YTIzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaApAQCAtMjM0LDcgKzIzNCw2IEBACiAgICAgbWFjcm8odW5zY29wYWJsZSkKIAog
I2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1F
KG1hY3JvKSBcCi0gICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9L
Tk9XTl9TWU1CT0wobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRlZE9iamVjdCkgXAogICAgIG1h
Y3JvKGFycmF5SXRlcmF0b3JOZXh0SW5kZXgpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktp
bmQpIFwKQEAgLTI5OCw3ICsyOTcsMTMgQEAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFS
RV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFt
ZSMjUHJpdmF0ZU5hbWU7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZ
X05BTUVfR0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9Q
RVJUWV9OQU1FX0dMT0JBTAotICAgICAgICAKKworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZp
ZXIgbmFtZSMjU3ltYm9sOworICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9XRUxMX0tOT1dOX1NZTUJPTChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VM
TF9LTk9XTl9TWU1CT0xfR0xPQkFMKQorI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJ
VkFURV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwKKworICAgICAgICBib29sIGlzUHJpdmF0ZU5h
bWUoU3RyaW5nSW1wbCogdWlkKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVudGlmaWVyIGdl
dFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oCmluZGV4IDRkYmFmN2I0
MTdkYzcwOGZiYzZjNzI1MDlmMTlmNTQ0ZjAxYjk2YmQuLmVkYTJjYjE0YjU1OTQ3MzA2ZjMzMDQ0
NGI4OWM0MGUyYzc4NGMwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0VudW1lcmF0aW9uTW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0VudW1lcmF0aW9uTW9kZS5oCkBAIC0yOCw2MyArMjgsNTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWVudW0gRW51bWVyYXRpb25Nb2RlIHsKLSAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
LAotICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3QsCi0gICAgSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcywKLSAgICBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5k
U2tpcEpTT2JqZWN0Ci19OworY2xhc3MgRW51bWVyYXRpb25Nb2RlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyA9IDF1
IDw8IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ1NraXBKU09iamVjdCA9IDF1
IDw8IDE7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0luY2x1ZGVTeW1ib2xzID0g
MXUgPDwgMjsKKworICAgIGVudW0gRW51bWVyYXRpb25Nb2RlUmVwcmVzZW50YXRpb25UYWcgOiB1
bnNpZ25lZCB7CisgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMgPSAwLAorICAgICAg
ICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMgPSBzX2ZsYWdJbmNs
dWRlU3ltYm9scywKKyAgICAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyA9IHNfZmxhZ0lu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCisgICAgICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXNBbmRJbmNsdWRlU3ltYm9scyA9IHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRpZXMgfCBz
X2ZsYWdJbmNsdWRlU3ltYm9scywKKyAgICB9OworCisgICAgRW51bWVyYXRpb25Nb2RlKEVudW1l
cmF0aW9uTW9kZVJlcHJlc2VudGF0aW9uVGFnIHRhZykKKyAgICAgICAgOiBtX2ZsYWdzKHRhZykK
KyAgICB7CisgICAgfQogCi1pbmxpbmUgYm9vbCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNh
c2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNlIEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBzX2Zs
YWdJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOwogICAgIH0KLX0KIAotaW5saW5lIGJvb2wgc2hv
dWxkRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyhFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAg
ICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0g
ICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ym9vbCBzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiAhKG1fZmxhZ3MgJiBzX2ZsYWdTa2lwSlNPYmplY3QpOwogICAgIH0KLX0K
IAotaW5saW5lIGJvb2wgc2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyhFbnVtZXJh
dGlvbk1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXM6Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzOgot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNB
bmRTa2lwSlNPYmplY3Q6Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tp
cEpTT2JqZWN0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBzaG91bGRJbmNsdWRl
U3ltYm9scygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mbGFncyAmIHNfZmxhZ0lu
Y2x1ZGVTeW1ib2xzOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19CiAKLWlubGluZSBFbnVtZXJhdGlvbk1vZGUgbW9kZVRoYXRTa2lwc0pTT2Jq
ZWN0KEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNh
c2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICAgICAgcmV0dXJuIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q7Ci0gICAgY2FzZSBFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzOgotICAgICAgICByZXR1cm4gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNr
aXBKU09iamVjdDsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNP
YmplY3Q6Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0
OgotICAgICAgICByZXR1cm4gbW9kZTsKKyAgICBzdGF0aWMgRW51bWVyYXRpb25Nb2RlIGNyZWF0
ZVRoYXRTa2lwc0pTT2JqZWN0KEVudW1lcmF0aW9uTW9kZSBtb2RlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEVudW1lcmF0aW9uTW9kZShtb2RlLm1fZmxhZ3MgfCBzX2ZsYWdTa2lwSlNPYmplY3Qp
OwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbW9kZTsKLX0K
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBFbnVtZXJhdGlvbk1vZGUodW5zaWduZWQgZmxhZ3Mp
CisgICAgICAgIDogbV9mbGFncyhmbGFncykKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQg
bV9mbGFnczsKK307CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAKaW5kZXggOTMwYjZmYWY2YmMxZmM2NWRlOWU2MWExZmM3ZTYyYTll
NWZjNjgwZS4uMzYxNTZhMWUwNTE2ODFmNWNlYjU2MTgyYjZlNGViOTQyOWI4ZjUzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTM3LDE3ICsxMzcsMTcgQEAg
SlNPYmplY3QqIGFkZEVycm9ySW5mbyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGVy
cm9yLCBpbnQgbGluZSwgY29uc3QgU28KICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCA9IHNv
dXJjZS5wcm92aWRlcigpLT51cmwoKTsKIAogICAgIGlmIChsaW5lICE9IC0xKQotICAgICAgICBl
cnJvci0+cHV0RGlyZWN0KCp2bSwgSWRlbnRpZmllcih2bSwgbGluZVByb3BlcnR5TmFtZSksIGpz
TnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBlcnJvci0+cHV0
RGlyZWN0KCp2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbGluZVByb3BlcnR5TmFtZSks
IGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIGlmICghc291cmNl
VVJMLmlzTnVsbCgpKQotICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCp2bSwgSWRlbnRpZmllcih2
bSwgc291cmNlVVJMUHJvcGVydHlOYW1lKSwganNTdHJpbmcodm0sIHNvdXJjZVVSTCksIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpLCBqc1N0cmluZyh2bSwg
c291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKICAgICByZXR1cm4gZXJyb3I7CiB9
CiAKIAogYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZXJyb3Ip
CiB7Ci0gICAgcmV0dXJuIGVycm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMs
IGxpbmVQcm9wZXJ0eU5hbWUpKQotICAgICAgICB8fCBlcnJvci0+aGFzUHJvcGVydHkoZXhlYywg
SWRlbnRpZmllcihleGVjLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gZXJy
b3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbGluZVBy
b3BlcnR5TmFtZSkpCisgICAgICAgIHx8IGVycm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSkpOwogfQogCiBKU09i
amVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCAxMDVhYWVmN2Yw
OWFhZTE1MmI4NWYzMjA4YjE0YmJmOTBhMWY1YWMzLi41NDk1ZDkzNzVkZGI1NGE0NDRlOGE1MDFi
NmY2YjA3MjIzNTY1MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtODEsOCArODEsNyBAQCBKU09iamVjdCogY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2Jq
ZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gICAgCi0gICAgaWYgKGlkZW50LmltcGwoKS0+aXNVbmlx
dWUoKSkgeworICAgIGlmIChpZGVudC5pbXBsKCktPmlzU3ltYm9sKCkgJiYgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmlzUHJpdmF0ZU5hbWUoaWRlbnQpKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdl
KG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOwogICAgICAgICByZXR1
cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDAxMzJkMGU3NTI4ZWEzNjNi
OGMzMTM2ZWNlNWIwMDhjNTM5YTM4ZWYuLmY3ZGU5ZmU5NmMxMDUwZWY2ZTQyYjkyNWEyOGIwZWE2
N2U2YWRjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgK
QEAgLTM4LDIzICszOCw2IEBAIGNsYXNzIElkZW50aWZpZXIgewogICAgIGVudW0gRW1wdHlJZGVu
dGlmaWVyRmxhZyB7IEVtcHR5SWRlbnRpZmllciB9OwogICAgIElkZW50aWZpZXIoRW1wdHlJZGVu
dGlmaWVyRmxhZykgOiBtX3N0cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKSB7IEFTU0VSVChtX3N0
cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CiAKLSAgICAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0
aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50
PgotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyICgmY2hhcmFjdGVy
cylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhhZGQoZXhlYywgY2hhcmFjdGVycykpIHsg
QVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICB0ZW1wbGF0ZTx1bnNp
Z25lZCBjaGFyYWN0ZXJzQ291bnQ+Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IGNoYXIg
KCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKSA6IG1fc3RyaW5nKGFkZCh2bSwgY2hhcmFj
dGVycykpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLQotICAgIElk
ZW50aWZpZXIoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5nSW1wbCopOwotICAgIElkZW50aWZpZXIo
RXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgSWRlbnRpZmllcihFeGVjU3Rh
dGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQoZXhlYywgcmVwKSkgeyBB
U1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKGV4ZWMsIHMuaW1w
bCgpKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50
aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKSA6IElkZW50aWZpZXIoZXhlYywg
QXRvbWljU3RyaW5nKHMpKSB7IH0KLQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBMQ2hh
ciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJU
KG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKFZNKiB2bSwg
Y29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgp
KSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmll
cihWTSogdm0sIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQodm0sIHJlcCkpIHsgQVNT
RVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKFZNKiB2
bSwgY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZCh2bSwgcy5pbXBsKCkpKSB7IEFTU0VS
VChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0KICAgICBjb25zdCBTdHJpbmcmIHN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgQXRvbWljU3RyaW5nSW1wbCog
aW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihtX3N0
cmluZy5pbXBsKCkpOyB9CiAKQEAgLTYzLDEyICs0NiwzMyBAQCBjbGFzcyBJZGVudGlmaWVyIHsK
ICAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuYXNjaWkoKTsgfQog
ICAgIENTdHJpbmcgdXRmOCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnV0ZjgoKTsgfQogCi0g
ICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShjb25zdCBQcml2YXRlTmFtZSYgbmFtZSkKLSAgICB7
Ci0gICAgICAgIElkZW50aWZpZXIgcmVzdWx0OwotICAgICAgICByZXN1bHQubV9zdHJpbmcgPSBu
YW1lLnVpZCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KKyAgICAvLyBUaGVyZSdz
IDIgZnVuY3Rpb25zIHRvIGNvbnN0cnVjdCBJZGVudGlmaWVyIGZyb20gc3RyaW5nLCAoMSkgZnJv
bVN0cmluZyBhbmQgKDIpIGZyb21VaWQuCisgICAgLy8gVGhleSBoYXZlIGRpZmZlcmVudCBtZWFu
aW5ncyBpbiBrZWVwaW5nIG9yIGRpc2NhcmRpbmcgc3ltYm9sLW5lc3Mgb2Ygc3RyaW5ncy4KKyAg
ICAvLyAoMSk6IGZyb21TdHJpbmcKKyAgICAvLyBKdXN0IGNvbnN0cnVjdCBJZGVudGlmaWVyIGZy
b20gc3RyaW5nLiBTdHJpbmcgaGVsZCBieSBJZGVudGlmaWVyIGlzIGFsd2F5cyBhdG9taXplZC4K
KyAgICAvLyBTeW1ib2wtbmVzcyBvZiBTdHJpbmdJbXBsKiwgd2hpY2ggcmVwcmVzZW50cyB0aGF0
IHRoZSBzdHJpbmcgaXMgaW50ZWRlZCB0byBiZSB1c2VkIGZvciBFUzYgU3ltYm9scywgaXMgZGlz
Y2FyZGVkLgorICAgIC8vIFNvIGEgY29uc3RydWN0ZWQgSWRlbnRpZmllciBuZXZlciByZXByZXNl
bnRzIGEgc3ltYm9sLgorICAgIC8vICgyKTogZnJvbVVpZAorICAgIC8vIGBTdHJpbmdJbXBsKiB1
aWRgIHJlcHJlc2VudHMgZXRoZXIgU3RyaW5nIG9yIFN5bWJvbCBwcm9wZXJ0eS4KKyAgICAvLyBm
cm9tVWlkIGtlZXBzIHN5bWJvbC1uZXNzIG9mIHByb3ZpZGVkIFN0cmluZ0ltcGwqIHdoaWxlIGZy
b21TdHJpbmcgZGlzY2FyZHMgaXQuCisgICAgLy8gVXNlIGZyb21VaWQgd2hlbiBjb25zdHJ1Y3Rp
bmcgSWRlbnRpZmllciBmcm9tIFN0cmluZ0ltcGwqIHdoaWNoIG1heSByZXByZXNlbnQgc3ltYm9s
cy4KKworICAgIC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+CisgICAgc3RhdGljIElkZW50aWZpZXIg
ZnJvbVN0cmluZyhWTSosIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRd
KTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+CisgICAgc3RhdGljIElk
ZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylb
Y2hhcmFjdGVyc0NvdW50XSk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSos
IGNvbnN0IExDaGFyKiwgaW50IGxlbmd0aCk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0
cmluZyhWTSosIGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7CisgICAgc3RhdGljIElkZW50aWZp
ZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5nSW1wbCopOworICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7Cisg
ICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
KTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNo
YXIqKTsKKworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21VaWQoVk0qLCBTdHJpbmdJbXBsKiB1
aWQpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21VaWQoRXhlY1N0YXRlKiwgU3RyaW5nSW1w
bCogdWlkKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKGNvbnN0IFByaXZhdGVOYW1l
Jik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBjcmVhdGVMQ2hhckZyb21VQ2hhcihWTSogdm0s
IGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSB7IHJldHVybiBJZGVudGlmaWVyKHZtLCBhZGQ4
KHZtLCBzLCBsZW5ndGgpKTsgfQogCkBAIC0xMDUsNiArMTA5LDIwIEBAIGNsYXNzIElkZW50aWZp
ZXIgewogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAKKyAgICAvLyBPbmx5IHRvIGJl
IHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFj
dGVyc0NvdW50PgorICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBjaGFyICgmY2hhcmFjdGVy
cylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhhZGQodm0sIGNoYXJhY3RlcnMpKSB7IEFT
U0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CisKKyAgICBJZGVudGlmaWVyKFZN
KiB2bSwgY29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBs
ZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CisgICAgSWRl
bnRpZmllcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFk
ZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsg
fQorICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5nSW1wbCopOworICAgIElk
ZW50aWZpZXIoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgSWRlbnRpZmll
cihWTSogdm0sIGNvbnN0IFN0cmluZyYgc3RyaW5nKSA6IG1fc3RyaW5nKGFkZCh2bSwgc3RyaW5n
LmltcGwoKSkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KKyAgICBJ
ZGVudGlmaWVyKFZNKiB2bSwgU3RyaW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZCh2bSwgcmVw
KSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorCisgICAgZW51bSBV
bmlxdWVJZGVudGlmaWVyRmxhZyB7IFVuaXF1ZUlkZW50aWZpZXIgfTsKKyAgICBJZGVudGlmaWVy
KFVuaXF1ZUlkZW50aWZpZXJGbGFnLCBTdHJpbmdJbXBsKiB1aWQpIDogbV9zdHJpbmcodWlkKSB7
IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzU3ltYm9sKCkpOyB9CisKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhclR5cGU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDMyX3QgdG9V
SW50MzJGcm9tQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBib29sJiBvayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IDc0NzJkODQ3ZDc1YjMwM2U2NDU0ZjA2ZDY5ZWQ2
ZmM1ZWU2OTIzYWMuLjQwNjIyMWE2M2FhZDk2NWY0NzMwZTQ2ODgzNDczNjdjM2IyNjcwNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMu
aApAQCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3Rh
dGUqIGV4ZWMsIEF0b21pY1N0cmluZ0ltcGwqIHN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAg
Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhlYyk7CiAgICAgaWYgKHN0cmluZykKLSAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLT5sZW5ndGgoKSB8fCBBdG9taWNTdHJp
bmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29t
ZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5pc1N5bWJvbCgpIHx8IEF0b21pY1N0cmluZzo6
aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBm
cm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
I2VuZGlmCkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJV
RwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAgIGlmICghc3Ry
aW5nLmlzTnVsbCgpKQotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3Ro
KCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nLmltcGwoKSks
ICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IHN0cmluZy5pbXBsKCkt
PmlzU3ltYm9sKCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5n
LmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEi
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogI2VuZGlmCkBAIC03MCw2ICs3MCw3
MCBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEF0b21pY1N0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiAqQXRvbWljU3RyaW5nOjphZGRXaXRo
U3RyaW5nVGFibGVQcm92aWRlcigqdm0sIHIpOwogfQogCitpbmxpbmUgSWRlbnRpZmllciBJZGVu
dGlmaWVyOjpmcm9tVWlkKFZNKiB2bSwgU3RyaW5nSW1wbCogdWlkKQoreworICAgIGlmICghdWlk
IHx8ICF1aWQtPmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCB1aWQp
OworICAgIHJldHVybiBJZGVudGlmaWVyKFVuaXF1ZUlkZW50aWZpZXIsIHVpZCk7Cit9CisKK2lu
bGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21VaWQoRXhlY1N0YXRlKiBleGVjLCBTdHJp
bmdJbXBsKiB1aWQpCit7CisgICAgcmV0dXJuIGZyb21VaWQoJmV4ZWMtPnZtKCksIHVpZCk7Cit9
CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21VaWQoY29uc3QgUHJpdmF0ZU5h
bWUmIG5hbWUpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIoVW5pcXVlSWRlbnRpZmllciwgbmFt
ZS51aWQoKSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KK2lubGlu
ZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBjaGFyICgm
Y2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgY2hhcmFjdGVycyk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4K
K2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKK3sKKyAgICByZXR1
cm4gSWRlbnRpZmllcigmZXhlYy0+dm0oKSwgY2hhcmFjdGVycyk7Cit9CisKK2lubGluZSBJZGVu
dGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBMQ2hhciogcywgaW50
IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgcywgbGVuZ3RoKTsKK30KKwor
aW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSogdm0sIGNvbnN0IFVD
aGFyKiBzLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBzLCBsZW5n
dGgpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNKiB2
bSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN0
cmluZy5pbXBsKCkpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJu
IElkZW50aWZpZXIoJmV4ZWMtPnZtKCksIHN0cmluZy5pbXBsKCkpOworfQorCitpbmxpbmUgSWRl
bnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgQXRvbWljU3Ry
aW5nSW1wbCogYXRvbWljU3RyaW5nKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIGF0
b21pY1N0cmluZyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0b21pY1N0cmluZykKK3sK
KyAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBhdG9taWNTdHJpbmcpOworfQorCitpbmxpbmUg
SWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
Y2hhciogcykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBBdG9taWNTdHJpbmcocykp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIElkZW50aWZpZXJJbmxpbmVz
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggMjBkNDlk
YjhiYTJlMmM1ODU1MDY2NzQ5ZWY5ZGY1MTU1NDE1NzY4MS4uYzFiMDRhNmUyMmVkMjhhMmY5M2Qy
MzBkNTYzYzMwOGU2MjZlMTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEpTQXJyYXk6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogewog
ICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAKLSAg
ICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9k
ZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogCiAgICAgSlNPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ci5jcHAKaW5kZXggYzFjYWQxMDVjN2UwZDVhZDdlZmQyOTZhM2JlZjA2OTZjOTVmNjAwNy4uNWI2
NmM0NGYzZTgxODQyNTAwOGI2MGFlZDQyNjEzYWJjN2UxOGYwYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCB2b2lkIEpTQXJyYXlCdWZmZXI6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKIHsKICAg
ICBKU0FycmF5QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXIqPihvYmpl
Y3QpOwogICAgIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUp
KQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAg
ICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoKTsKICAgICAKICAg
ICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJy
YXksIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCmluZGV4IDBhMTE2YzA2MDc4YmQ4MDAzYjZkZjI5ZTczNTI1YjhhY2E0
ZTE0NjUuLjYwN2UzNDgxNmJlMjY2N2Y1OGU2MWQ1ZTk2ZjFkNGU2YWQyMWMzZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAK
QEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEpTQXJyYXlCdWZmZXJWaWV3OjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoCiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihvYmplY3QpOwogICAgIAogICAgIC8vIGxlbmd0aC9ieXRl
T2Zmc2V0L2J5dGVMZW5ndGggYXJlIERvbnRFbnVtLCBhdCBsZWFzdCBpbiBGaXJlZm94LgotICAg
IGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKG1v
ZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIGFycmF5LmFk
ZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZU9mZnNldCk7CiAgICAgICAgIGFycmF5LmFkZChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCk7CiAgICAgICAgIGFycmF5LmFkZChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNDg3NTZiYTNiMzNmNmNkZTg5MDRlMDFmN2Y3YjA5MzRk
ZDNlMGFkNy4uN2Q2MWNhMmQ5MDIxZDgwYzdlMmM5NjcwZGZkYjIxNTY3MGNlMjU0YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTIzMyw4ICsy
MzMsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKGF0b21pYykiKTsKICAgICAgICAgICAgICAg
ICBpZiAoaW1wbC0+aXNBdG9taWMoKSkKICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIg
KGlkZW50aWZpZXIpIik7Ci0gICAgICAgICAgICAgICAgaWYgKGltcGwtPmlzVW5pcXVlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiICh1bmlxdWUpIik7CisgICAgICAgICAgICAg
ICAgaWYgKGltcGwtPmlzU3ltYm9sKCkpCisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgi
IChzeW1ib2wpIik7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIiAodW5yZXNvbHZlZCkiKTsKICAgICAgICAgICAgIG91dC5wcmludCgiOiAiLCBpbXBsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCmluZGV4IGRlZDhjODU4MGIw
YWMzNWQ0ZDk3NzE2YTAwYWRmMDgwZGNiNmUyZWUuLjMyYWNhZDUyMGQ1YjQwM2JkMTQ3MjFiYWJm
ZTY5ZjQyNDJlNThlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUu
aApAQCAtMTAxLDcgKzEwMSw3IEBAIGNsYXNzIEpTQ2FsbGVlIDogcHVibGljIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2
b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBF
bnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0
aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTFiNjZmMTViMzY2MDczNTYyMzY5MjA1NzdlODFh
NzY4ZDFkNTViLi41YmVjODU4OTk5MTU2MmE4ZTI0ZDgwMjY3OGRiMGExMmU3NjZhYjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzY5LDcg
KzM2OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rpb246OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkK
IHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmpl
Y3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiBz
aG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSB7CisgICAgaWYgKCF0aGlzT2Jq
ZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIG1vZGUuc2hvdWxkSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAg
IC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QodGhpc09iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKaW5kZXggYmUwYmRjNzg0MmY5NzMzYzc2YjA2NDQzYmRhMzY2MTQxOGVhNTk5
Ny4uMzRlZDQwOGI1ZDFiMDgxZmZiNGI0YzlhYWY4NjljNWZhNDlkNDZiMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTM4LDcgKzEzOCw3IEBAIGNs
YXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
dm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0g
RW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDAx
YjhkYTJkODQ0NzYyZTVhM2NlNmNhZmJmZWQzNjAyOTQwZjdmYy4uMjQzNzRmNjBmYzE4MjI3ODcy
OWQwNjNhY2MxYTgxYjEwZjcxYjg2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAg
LTQxNSw3ICs0MTUsNyBAQAogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAKLSAg
ICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9k
ZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIGFycmF5LmFkZChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKICAgICAKICAgICBCYXNlOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDdh
MGI3NTk0MjlhOTdjNDE1NTE0ZjM4ZTM4OThkY2Y4Y2I2ODhhMzYuLjljYWQ5ZTQ0YWJkZDg4NmZl
YjM2YzJiN2JlZTlhODkxOGFlZDRhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICAvLyBDb25zdHJ1Y3RvcnMKICAgICAK
LSAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
OworICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENv
bnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0
b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CkBA
IC00MTAsNyArNDEwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAg
CiAgICAgZm9yICh1bnNpZ25lZCB0eXBlZEFycmF5SW5kZXggPSBOVU1CRVJfT0ZfVFlQRURfQVJS
QVlfVFlQRVM7IHR5cGVkQXJyYXlJbmRleC0tOykgewogICAgICAgICBtX3R5cGVkQXJyYXlzW3R5
cGVkQXJyYXlJbmRleF0ucHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlw
ZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwotICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcihleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJy
YXlJbmRleF0tPm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJ
bmRleF0sIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBl
ZEFycmF5SW5kZXhdLT5uYW1lKGV4ZWMpKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFy
cmF5SW5kZXhdLCBEb250RW51bSk7CiAgICAgfQogICAgIAogICAgIEpTRnVuY3Rpb24qIGJ1aWx0
aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMt
PmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwpAQCAtNDQ2
LDcgKzQ0Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIENvbnNv
bGVQcm90b3R5cGUqIGNvbnNvbGVQcm90b3R5cGUgPSBDb25zb2xlUHJvdG90eXBlOjpjcmVhdGUo
dm0sIHRoaXMsIENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NvbnNvbGVTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU0NvbnNvbGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgY29uc29sZVByb3RvdHlw
ZSkpOwogICAgIEpTQ29uc29sZSogY29uc29sZU9iamVjdCA9IEpTQ29uc29sZTo6Y3JlYXRlKHZt
LCBtX2NvbnNvbGVTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyKGV4ZWMsICJjb25zb2xlIiksIGNvbnNvbGVPYmplY3QsIERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAiY29uc29sZSIpLCBjb25zb2xlT2JqZWN0LCBEb250RW51bSk7CiAKICAg
ICByZXNldFByb3RvdHlwZSh2bSwgcHJvdG90eXBlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTAzNTQ2YjA3NGExYzEyN2M3
ZTk5YWI0MTlkNzcyZjgzMWViMjFjNS4uMDgxZTNkZDY5NDVkZGRhODkzYzdkNmNhMDVkZjE3Y2Zm
YzkxM2IxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC0zMDYsNiArMzA2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBib29sIGhhc0RlYnVnZ2VyKCkgY29u
c3QgeyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQogICAgIGJvb2wgaGFzUHJvZmlsZXIoKSBjb25zdCB7
IHJldHVybiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1Byb2ZpbGluZyh0aGlz
KTsgfQorICAgIGNvbnN0IFJ1bnRpbWVGbGFncyYgcnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1
cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IGV4cGxpY2l0IEpTR2xvYmFsT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggODQwMzdhMzQ1Zjk5ZTg1MDBi
ZjZkMDU2YTUxODQ5ZGMxOWI1NmZhMC4uMDNjN2UzNDZlMjdmZTg5ZDcyZTFlMjA5YjdmZjZjZWUy
YzRhOTMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAtMTE0LDExICsxMTQsMTcgQEAgdm9pZCBKU0xleGlj
YWxFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGEKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVj
dC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAg
ICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1i
b2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAg
IGlmIChpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0gJiYgIXNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgICAgICAgICBpZiAoaXQtPnZhbHVlLmdl
dEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtICYmICFtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICgh
dGhpc09iamVjdC0+aXNWYWxpZChpdC0+dmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5
LmdldCgpKSk7CisgICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNTeW1ib2woKSkgeworICAgICAg
ICAgICAgICAgIGlmICghbW9kZS5zaG91bGRJbmNsdWRlU3ltYm9scygpKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmlzUHJpdmF0ZU5hbWUoaXQtPmtleS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcjo6ZnJvbVVpZChleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgLy8gU2tpcCB0aGUgSlNFbnZpcm9ubWVudFJlY29yZCBpbXBsZW1lbnRhdGlvbiBvZiBn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKaW5kZXggYmRiODIxY2RmNTY0ODBkNjhkYzFjNGRhMmVkMDU2Y2I1
NTgxZTFhOS4uYzg5OGEzNDI4NTk1YjZkMTE5MzJjMGVhOGUwZDliODBmMWJhMzVhYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTQ5MCw3ICs0
OTAsNyBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJp
bmdpZmllciYgc3RyaW5naWZpZXIsIFN0cmluZ0J1aQogICAgICAgICAgICAgICAgIG1fcHJvcGVy
dHlOYW1lcyA9IHN0cmluZ2lmaWVyLm1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMuZGF0YSgp
OwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkg
b2JqZWN0UHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICAgICAgICAgICAgICBtX29iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQoKSwgZXhlYywgb2Jq
ZWN0UHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAg
ICAgICAgbV9vYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMobV9vYmpl
Y3QuZ2V0KCksIGV4ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVz
ID0gb2JqZWN0UHJvcGVydHlOYW1lcy5yZWxlYXNlRGF0YSgpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbV9zaXplID0gbV9wcm9wZXJ0eU5hbWVzLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5z
aXplKCk7CkBAIC03MDcsNyArNzA3LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3
YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5wdXNo
KG9iamVjdCk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7
Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51
bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAgICAgICAgICBGQUxMVEhS
T1VHSDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBk
YjJhNzIyY2JhODg1YzgwODZkZWI3OTBjMmMyODU3Mzc0ZjZmNzk5Li5lZDEzZWEwYThiZTNiMzUy
OWFiMjZkODQzMTYyYzMwNDNjZWY0OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRD
bGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNz
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxl
LT5iZWdpbigpOyBpdGVyICE9IHRhYmxlLT5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBp
ZiAoKCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMobW9kZSkpICYmICEoKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5P
ckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCi0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcigmdm0sIGl0ZXIua2V5KCkpKTsKKyAgICAgICAgICAgIGlmICgoIShpdGVy
LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKCkpICYmICEoKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9u
KSAmJiBkaWRSZWlmeSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIGl0ZXIua2V5KCkpKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTE1MTgsNyArMTUxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBCiAKIHZvaWQgSlNP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpCiB7Ci0gICAgaWYgKCFzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKG1vZGUp
KSB7CisgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSkg
ewogICAgICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGdldCBub24taW5kZXhlZCBwcm9wZXJ0aWVz
IGZyb20gYW55IHN1YmNsYXNzZXMgb2YgSlNPYmplY3QgdGhhdCBoYXZlIHRoZW0uCiAgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogICAgICAgICByZXR1cm47
CkBAIC0xNTcyLDcgKzE1NzIsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBtYXAtPmVuZCgpOwogICAgICAgICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkgfHwgIShp
dC0+dmFsdWUuYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKKyAgICAgICAgICAgICAgICBpZiAobW9k
ZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkgfHwgIShpdC0+dmFsdWUuYXR0cmli
dXRlcyAmIERvbnRFbnVtKSkKICAgICAgICAgICAgICAgICAgICAga2V5cy51bmNoZWNrZWRBcHBl
bmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0LT5rZXkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtMTU5NCw3ICsxNTk0LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHIKIHsK
ICAgICBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoZXhlYywgb2JqZWN0LT5jbGFzc0luZm8oKSwgcHJv
cGVydHlOYW1lcywgbW9kZSwgb2JqZWN0LT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpOwogCi0g
ICAgaWYgKCFzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKG1vZGUpKQorICAgIGlm
ICghbW9kZS5zaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTY3OSw3ICsxNjc5LDcg
QEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChh
dXRvIGl0ZXIgPSBoYXNoVGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQoKTsg
KytpdGVyKSB7CiAgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9y
RnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaXRlci52YWx1ZSgpLCB0aGlzLCBJZGVudGlmaWVyKCZ2
bSwgaXRlci5rZXkoKSksIHNsb3QpOworICAgICAgICAgICAgICAgIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGl0ZXIudmFsdWUoKSwgdGhpcywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGl0ZXIua2V5KCkpLCBzbG90KTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMjgwMCw3ICsyODAwLDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0U3RydWN0
dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AK
IHZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlVGhhdFNraXBzSlNPYmplY3QobW9kZSkpOworICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlOjpjcmVhdGVUaGF0U2tpcHNKU09iamVjdChtb2RlKSk7CiAK
ICAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggM2Y1ZTI1ZDE1YjAz
ZTYwZDU3OGM4MzRjM2ZkNTA5Mjc2OGFkYTBkNC4uNzg2Nzc1YTBkYzQ5YzEyMzA3ZGFmNDUyMjE2
YWI3ODM0ZTFhYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBpbmxpbmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkKIAogQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVu
dGlmaWVyKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRlbnRpZmll
cigmdm0sIG5hbWUpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFt
ZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBtYWtlSWRlbnRpZmllcihWTSYsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWZkZmMyN2QyMGE4NjVhMzQz
YWYyMWQ1Yzc0ODhkYzQzNjViMTcxNS4uYjhhNWFkYWU5ODdlNDAzN2Q2NTVlMGEzZjZhZDAyOGY4
NDFlMjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0ganNDYXN0PEpTUHJvbWlzZURl
ZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0
aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRlcmFibGUpLgotICAgIEpTVmFsdWUg
aXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVy
YWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShh
YnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApAQCAtNDgwLDcgKzQ4MCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jQWxsKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBqc0Nhc3Q8
SlNQcm9taXNlRGVmZXJyZWQqPihkZWZlcnJlZFZhbHVlKTsKIAogICAgIC8vIDQuIExldCAnaXRl
cmF0b3InIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBHZXRJdGVyYXRvcihpdGVyYWJsZSkuCi0g
ICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5j
dGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFicnVwdFJlamVjdGlvbihleGVjLCBkZWZlcnJlZCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oCmluZGV4IGVlMThhYmY2ZWIzZjMyY2ZjMDEyOTFlYjE0NDc0MGVmNzhhOTZhMWMuLjBiOWU3
MzlmNWE3MDM5NjlhNTQwNjNlZjA5M2Q1NzUzYjgwMjMyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCkBA
IC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogc3RydWN0
dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMKICAgICAgICAgcmV0dXJu
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtKTsKIAogICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5n
ZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0U3Ry
dWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogCiAgICAgSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yKiBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUo
dm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lcyk7CiAgICAgaWYgKHN0cnVjdHVyZS0+Y2FuQ2Fj
aGVTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpCkBAIC0xNDIsOSArMTQyLDkgQEAg
aW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZ2VuZXJpY1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IoRXhlY1N0YXRlKiBleGVjLAogICAgIC8vIHRoZSBuZXcgZ2VuZXJpYyBQcm9wZXJ0eU5h
bWVBcnJheSBhbmQgZmFpbGluZyBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGVtLgog
ICAgIFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlID0gc3RydWN0dXJlRW51bWVyYXRvci0+Y2Fj
aGVkU3RydWN0dXJlKHZtKTsKICAgICBpZiAoc3RydWN0dXJlID09IGNhY2hlZFN0cnVjdHVyZSAm
JiBzdHJ1Y3R1cmUtPmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5KCkgJiYgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGxlbmd0aCkgPT0gYmFzZS0+Z2V0QXJyYXlMZW5ndGgoKSkKLSAgICAgICAgYmFz
ZS0+bWV0aG9kVGFibGUodm0pLT5nZXRHZW5lcmljUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYmFzZS0+
bWV0aG9kVGFibGUodm0pLT5nZXRHZW5lcmljUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwog
ICAgIGVsc2UKLSAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVz
KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMoYmFzZSwgZXhl
YywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKICAgICAKICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyODFhZTQ2
MjAzOTIwNGI0NTI4YjRlYTUxMWMwNzVjNmU4NWVmYmQ5Li5jMWFmMGNhZTFjNjIzYjM2MmNmNGRi
MzYyYjVjOTU0OTVlOGM3NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0
cmluZyhWTSogdm0sIFN0cmluZyYmIHMpCiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBKU1N0
cmluZzo6dG9JZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICByZXR1cm4g
SWRlbnRpZmllcihleGVjLCB0b0F0b21pY1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdG9BdG9taWNTdHJpbmcoZXhlYykpOwogfQogCiBBTFdB
WVNfSU5MSU5FIEF0b21pY1N0cmluZyBKU1N0cmluZzo6dG9BdG9taWNTdHJpbmcoRXhlY1N0YXRl
KiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBiOGZiMjI4MmFmYWU4N2VjYzQxMTAyNDVjZTli
Yjg3M2U5NTBmMGZmLi43MTRjMWEwZmNiOTE0MzBiNmQ0ZDQ0MzdmN2I1ZGM5M2FiNzE2YWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcApAQCAtNjEsMTAgKzYxLDE1IEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0CiAg
ICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRo
aXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJv
bFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVn
aW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPmtleS0+
aXNVbmlxdWUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICgh
KGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyhtb2RlKSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlmICghKGl0
LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNT
eW1ib2woKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUuc2hvdWxkSW5jbHVkZVN5
bWJvbHMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgICAgICBpZiAoZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJpdmF0ZU5hbWUoaXQtPmtleS5n
ZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVVp
ZChleGVjLCBpdC0+a2V5LmdldCgpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFs
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIu
Y3BwCmluZGV4IGY2ZjVmZTE3M2M3MDRlZGUwZjY1M2I2ODM4ZTA5ODA2Y2E0NDJlYjcuLmQ0NTQ0
YTRmNmYyNmNhYThjMzg0NWRhZjBmY2FmZTczMjMyOGJkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC01NywxNyArNTcsMTcgQEAg
c3RhdGljIGlubGluZSBib29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5cGUmIGMpCiAg
ICAgZG8gewogICAgICAgICBWZWN0b3I8SlNPTlBQYXRoRW50cnk+IHBhdGg7CiAgICAgICAgIC8v
IFVuZ3VhcmRlZCBuZXh0IHRvIHN0YXJ0IG9mZiB0aGUgbGV4ZXIKLSAgICAgICAgSWRlbnRpZmll
ciBuYW1lID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigp
LnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2Vu
KCkuc3RhcnQpOworICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIu
Y3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAg
ICAgIEpTT05QUGF0aEVudHJ5IGVudHJ5OwogICAgICAgICBpZiAobmFtZSA9PSBtX2V4ZWMtPnZt
KCkucHJvcGVydHlOYW1lcy0+dmFyS2V5d29yZCkgewogICAgICAgICAgICAgaWYgKG1fbGV4ZXIu
bmV4dCgpICE9IFRva0lkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgZW50cnkubV90eXBlID0gSlNPTlBQYXRoRW50cnlUeXBlRGVjbGFyZTsKLSAg
ICAgICAgICAgIGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0o
KSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5l
bmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKKyAgICAgICAgICAgIGVudHJ5Lm1f
cGF0aEVudHJ5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgbV9s
ZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBt
X2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKICAgICAgICAgICAgIHBhdGguYXBwZW5kKGVu
dHJ5KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05Q
UGF0aEVudHJ5VHlwZURvdDsKLSAgICAgICAgICAgIGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElk
ZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9s
ZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsK
KyAgICAgICAgICAgIGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5j
dXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKICAgICAg
ICAgICAgIHBhdGguYXBwZW5kKGVudHJ5KTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9leGVj
LT52bSgpLmtleXdvcmRzLT5pc0tleXdvcmQoZW50cnkubV9wYXRoRW50cnlOYW1lKSkKQEAgLTk0
LDcgKzk0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgQ2hh
clR5cGUmIGMpCiAgICAgICAgICAgICAgICAgZW50cnkubV90eXBlID0gSlNPTlBQYXRoRW50cnlU
eXBlRG90OwogICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tJZGVudGlm
aWVyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
ZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBtX2xleGVy
LmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4
ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOworICAgICAgICAgICAgICAgIGVudHJ5Lm1fcGF0aEVu
dHJ5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5j
dXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVy
LmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGNhc2UgVG9rTFBhcmVuOiB7CkBAIC0xMzUsMTcgKzEzNSwxNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNKU09OV2hpdGVTcGFjZShjb25zdCBDaGFyVHlwZSYgYykK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG1fZXhlYy0+dm0oKS5wcm9wZXJ0eU5h
bWVzLT5lbXB0eUlkZW50aWZpZXI7CiAgICAgaWYgKGNoYXJhY3RlcnNbMF0gPj0gTWF4aW11bUNh
Y2hhYmxlQ2hhcmFjdGVyKQotICAgICAgICByZXR1cm4gSWRlbnRpZmllcigmbV9leGVjLT52bSgp
LCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogCiAgICAgaWYgKGxlbmd0
aCA9PSAxKSB7CiAgICAgICAgIGlmICghbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1d
LmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0
ZXJzWzBdXTsKLSAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRl
bnRpZmllcigmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgICAgICBtX3No
b3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZt
X2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybiBtX3Nob3J0
SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07CiAgICAgfQogICAgIGlmICghbV9yZWNlbnRJZGVu
dGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pc051bGwoKSAmJiBJZGVudGlmaWVyOjplcXVhbChtX3Jl
Y2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dLmltcGwoKSwgY2hhcmFjdGVycywgbGVuZ3Ro
KSkKICAgICAgICAgcmV0dXJuIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07Ci0g
ICAgbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXIoJm1fZXhl
Yy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICBtX3JlY2VudElkZW50aWZpZXJzW2No
YXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogICAgIHJldHVybiBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3Rl
cnNbMF1dOwogfQogCkBAIC0xNTUsMTcgKzE1NSwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNK
U09OV2hpdGVTcGFjZShjb25zdCBDaGFyVHlwZSYgYykKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIG1fZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXI7CiAg
ICAgaWYgKGNoYXJhY3RlcnNbMF0gPj0gTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyKQotICAgICAg
ICByZXR1cm4gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwor
ICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogCiAgICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAgIGlmICgh
bV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dLmlzTnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKLSAgICAgICAgbV9zaG9y
dElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBj
aGFyYWN0ZXJzLCBsZW5ndGgpOworICAgICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVy
c1swXV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMs
IGxlbmd0aCk7CiAgICAgICAgIHJldHVybiBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1sw
XV07CiAgICAgfQogICAgIGlmICghbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5p
c051bGwoKSAmJiBJZGVudGlmaWVyOjplcXVhbChtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3Rl
cnNbMF1dLmltcGwoKSwgY2hhcmFjdGVycywgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIG1fcmVj
ZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07Ci0gICAgbV9yZWNlbnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVu
Z3RoKTsKKyAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgIHJl
dHVybiBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IGI3ZWNiYjE5MGEwNGI1MDlkOTA0MTBmZmM0
Y2MzMmRkMDM5NDgwZmEuLmE4YTMzNjdmNTNmYTZjNTE4YjlkYTFlNWRlNzdmNDkwMGU5Y2ZiZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0yOTMsNyArMjkzLDcg
QEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKFZNJiB2bSwgY29uc3QgSGFzaFRh
YmxlVmFsdWUgKCZ2YWx1ZXMpW251bWJlck8KICAgICAgICAgaWYgKCF2YWx1ZS5tX2tleSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOyAgICAgICAgICAgICAgICAKIAotICAgICAgICBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSgmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPih2YWx1ZS5t
X2tleSksIHN0cmxlbih2YWx1ZS5tX2tleSkpOworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4odmFsdWUubV9rZXkpLCBzdHJsZW4odmFsdWUubV9rZXkpKTsKICAgICAgICAgaWYg
KHZhbHVlLmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW4pIHsKICAgICAgICAgICAgIHRoaXNPYmoucHV0
RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIHZhbHVlLmF0dHJpYnV0ZXMoKSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcENvbnN0cnVjdG9yLmNwcAppbmRleCBhYjU1ODM5NDkwYjhlZmMwMDIxNmVjMmQ5ZWYx
ZDJkZmE5MWIzNmI3Li5mYWQ1MmMwNTYwNDhlMThiN2VlYzQ5OGZmMTQ5NTNmZDkwZmNmZWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3Bw
CkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZXhlYykpOwogCi0gICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFi
bGUuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1lKTsK
KyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJv
dG90eXBlLmNwcAppbmRleCA4MDY3Y2IyMGYwYzM3ZDY2YTc3OGJlOWQxZWY2YWZkYjNjNmRlODI4
Li5jYTdkYzA4ZjI4ZTBmNjZmYmQ2ZWJiYWY1ZDhiNjhhYjRlOGZkNjI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgTWFwSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsK
IAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2
YXRlTmFtZSwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgTWFwSXRlcmF0b3JQcm90
b3R5cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCA2ZDdhMTFkOGZiYmI0ZTE1YTQzMTZm
ZTU4ODFhZDBkNzE0MDUwOTA4Li5hNjk5MDBmOGEzYjFlZjNlNWI1NzVkMWZmODNjZDQxZWZhYTAw
ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAw
KTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgbWFw
UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwg
MCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclBy
aXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgbWFwUHJvdG9G
dW5jRW50cmllcywgRG9udEVudW0sIDApOwogCiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9
IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnBy
b3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIG1hcFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAppbmRleCAyOGZmNWM4ZDkyNzll
ZTU5ZTViMTFlNzUxYjk5YjU0YjJmNmYwMzk0Li41MTU2ZWQyZWZkNWYwMDQxMmZjMjcwNDY3MGFk
OGRhYjNmYjI3ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRoT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2Jq
ZWN0LmNwcApAQCAtODcsNDkgKzg3LDQ5IEBAIHZvaWQgTWF0aE9iamVjdDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAKLSAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJFIiksIGpzTnVtYmVy
KGV4cCgxLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkxOMiIpLCBqc051bWJl
cihsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJMTjEwIiksIGpzTnVt
YmVyKGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJMT0cyRSIpLCBq
c051bWJlcigxLjAgLyBsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5
KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJM
T0cxMEUiKSwganNOdW1iZXIoMC40MzQyOTQ0ODE5MDMyNTE4KSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyKCZ2bSwgIlBJIiksIGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyKCZ2bSwgIlNRUlQxXzIiKSwganNOdW1iZXIoc3FydCgwLjUpKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyKCZ2bSwgIlNRUlQyIiksIGpzTnVtYmVyKHNxcnQoMi4wKSksIERvbnREZWxl
dGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLQotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhYnMi
KSwgMSwgbWF0aFByb3RvRnVuY0FicywgQWJzSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9u
KTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYWNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvcywg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0s
ICJhc2luIiksIDEsIG1hdGhQcm90b0Z1bmNBU2luLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImF0YW4iKSwgMSwgbWF0aFByb3RvRnVu
Y0FUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXIoJnZtLCAiYWNvc2giKSwgMSwgbWF0aFByb3RvRnVuY0FDb3NoLCBOb0ludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImFzaW5oIiksIDEsIG1h
dGhQcm90b0Z1bmNBU2luaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcigmdm0sICJhdGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbmgsIE5vSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXRh
bjIiKSwgMiwgbWF0aFByb3RvRnVuY0FUYW4yLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImNicnQiKSwgMSwgbWF0aFByb3RvRnVuY0Ni
cnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIo
JnZtLCAiY2VpbCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2VpbCwgQ2VpbEludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImNvcyIpLCAxLCBtYXRoUHJv
dG9GdW5jQ29zLCBDb3NJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcigmdm0sICJjb3NoIiksIDEsIG1hdGhQcm90b0Z1bmNDb3NoLCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImV4cCIpLCAxLCBt
YXRoUHJvdG9GdW5jRXhwLCBFeHBJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcigmdm0sICJleHBtMSIpLCAxLCBtYXRoUHJvdG9GdW5jRXhwbTEsIE5vSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiZmxv
b3IiKSwgMSwgbWF0aFByb3RvRnVuY0Zsb29yLCBGbG9vckludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImZyb3VuZCIpLCAxLCBtYXRoUHJvdG9G
dW5jRnJvdW5kLCBGUm91bmRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcigmdm0sICJoeXBvdCIpLCAyLCBtYXRoUHJvdG9GdW5jSHlwb3QsIE5vSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibG9nIiks
IDEsIG1hdGhQcm90b0Z1bmNMb2csIExvZ0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImxvZzEwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxMCwg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0s
ICJsb2cxcCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMXAsIE5vSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibG9nMiIpLCAxLCBtYXRoUHJvdG9G
dW5jTG9nMiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcigmdm0sICJtYXgiKSwgMiwgbWF0aFByb3RvRnVuY01heCwgTWF4SW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibWluIiksIDIsIG1hdGhQ
cm90b0Z1bmNNaW4sIE1pbkludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyKCZ2bSwgInBvdyIpLCAyLCBtYXRoUHJvdG9GdW5jUG93LCBQb3dJbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJyYW5kb20iKSwg
MCwgbWF0aFByb3RvRnVuY1JhbmRvbSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jUm91bmQs
IFJvdW5kSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIo
JnZtLCAic2lnbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2lnbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJzaW4iKSwgMSwgbWF0aFByb3Rv
RnVuY1NpbiwgU2luSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIoJnZtLCAic2luaCIpLCAxLCBtYXRoUHJvdG9GdW5jU2luaCwgTm9JbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJzcXJ0IiksIDEsIG1h
dGhQcm90b0Z1bmNTcXJ0LCBTcXJ0SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIoJnZtLCAidGFuIiksIDEsIG1hdGhQcm90b0Z1bmNUYW4sIE5vSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAidGFuaCIp
LCAxLCBtYXRoUHJvdG9GdW5jVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJ0cnVuYyIpLCAxLCBtYXRoUHJvdG9GdW5jVHJ1bmMs
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZt
LCAiaW11bCIpLCAxLCBtYXRoUHJvdG9GdW5jSU11bCwgSU11bEludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiRSIpLCBqc051bWJlcihleHAoMS4wKSksIERvbnREZWxldGUg
fCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJMTjIiKSwganNOdW1iZXIobG9nKDIuMCkp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTE4xMCIpLCBqc051
bWJlcihsb2coMTAuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiTE9HMkUiKSwganNOdW1iZXIoMS4wIC8gbG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTE9HMTBFIiksIGpzTnVtYmVyKDAuNDM0Mjk0NDgxOTAz
MjUxOCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJQSSIpLCBq
c051bWJlcihwaURvdWJsZSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJTUVJUMV8yIiksIGpzTnVtYmVyKHNxcnQoMC41KSksIERvbnREZWxldGUgfCBEb250RW51
bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJTUVJUMiIpLCBqc051bWJlcihzcXJ0KDIuMCkpLCBEb250
RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAiYWJzIiksIDEsIG1hdGhQcm90b0Z1bmNBYnMsIEFic0ludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFj
b3MiKSwgMSwgbWF0aFByb3RvRnVuY0FDb3MsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYXNpbiIpLCAxLCBtYXRo
UHJvdG9GdW5jQVNpbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhdGFuIiksIDEsIG1hdGhQcm90b0Z1bmNBVGFu
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImFjb3NoIiksIDEsIG1hdGhQcm90b0Z1bmNBQ29zaCwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJhc2luaCIpLCAxLCBtYXRoUHJvdG9GdW5jQVNpbmgsIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYXRhbmgi
KSwgMSwgbWF0aFByb3RvRnVuY0FUYW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImF0YW4yIiksIDIsIG1hdGhQ
cm90b0Z1bmNBVGFuMiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjYnJ0IiksIDEsIG1hdGhQcm90b0Z1bmNDYnJ0
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImNlaWwiKSwgMSwgbWF0aFByb3RvRnVuY0NlaWwsIENlaWxJbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJjb3MiKSwgMSwgbWF0aFByb3RvRnVuY0NvcywgQ29zSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY29zaCIpLCAx
LCBtYXRoUHJvdG9GdW5jQ29zaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJleHAiKSwgMSwgbWF0aFByb3RvRnVu
Y0V4cCwgRXhwSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiZXhwbTEiKSwgMSwgbWF0aFByb3RvRnVuY0V4cG0xLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgImZsb29yIiksIDEsIG1hdGhQcm90b0Z1bmNGbG9vciwgRmxvb3JJbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJmcm91bmQiKSwgMSwgbWF0aFByb3RvRnVuY0Zyb3VuZCwgRlJvdW5kSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaHlw
b3QiKSwgMiwgbWF0aFByb3RvRnVuY0h5cG90LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImxvZyIpLCAxLCBtYXRo
UHJvdG9GdW5jTG9nLCBMb2dJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb2cxMCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9n
MTAsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAibG9nMXAiKSwgMSwgbWF0aFByb3RvRnVuY0xvZzFwLCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImxvZzIiKSwgMSwgbWF0aFByb3RvRnVuY0xvZzIsIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibWF4Iiks
IDIsIG1hdGhQcm90b0Z1bmNNYXgsIE1heEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIm1pbiIpLCAyLCBtYXRoUHJvdG9G
dW5jTWluLCBNaW5JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJwb3ciKSwgMiwgbWF0aFByb3RvRnVuY1BvdywgUG93SW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAicmFuZG9tIiksIDAsIG1hdGhQcm90b0Z1bmNSYW5kb20sIE5vSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
cm91bmQiKSwgMSwgbWF0aFByb3RvRnVuY1JvdW5kLCBSb3VuZEludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInNpZ24iKSwg
MSwgbWF0aFByb3RvRnVuY1NpZ24sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAic2luIiksIDEsIG1hdGhQcm90b0Z1
bmNTaW4sIFNpbkludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgInNpbmgiKSwgMSwgbWF0aFByb3RvRnVuY1NpbmgsIE5vSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAic3FydCIpLCAxLCBtYXRoUHJvdG9GdW5jU3FydCwgU3FydEludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRh
biIpLCAxLCBtYXRoUHJvdG9GdW5jVGFuLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRhbmgiKSwgMSwgbWF0aFBy
b3RvRnVuY1RhbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidHJ1bmMiKSwgMSwgbWF0aFByb3RvRnVuY1RydW5j
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImltdWwiKSwgMSwgbWF0aFByb3RvRnVuY0lNdWwsIElNdWxJbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggM2NmZTk0MTE2ZmEwNjFiY2I1YTIxMjcxNjVhNGQwMTQ4NDE3MmY1ZC4uOTVhOGRjYTkw
OGZhNWI3ZmVhMTU5MTI5NTEwOTE3MjQzYWI3YzAyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcApAQCAtNTksMjEgKzU5LDIx
IEBAIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTnVtYmVy
UHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUpCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3Ig
Y29uc3RydWN0b3IKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnRE
ZWxldGUpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIo
JnZtLCAiRVBTSUxPTiIpLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmVwc2lsb24oKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJNQVhfVkFMVUUi
KSwganNEb3VibGVOdW1iZXIoMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpLCBEb250RGVsZXRlIHwg
RG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IElkZW50aWZpZXIoJnZtLCAiTUlOX1ZBTFVFIiksIGpzRG91YmxlTnVtYmVyKDVFLTMyNCksIERv
bnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJNQVhfU0FGRV9JTlRFR0VSIiksIGpzRG91Ymxl
TnVtYmVyKDkwMDcxOTkyNTQ3NDA5OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRP
bmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0s
ICJNSU5fU0FGRV9JTlRFR0VSIiksIGpzRG91YmxlTnVtYmVyKC05MDA3MTk5MjU0NzQwOTkxLjAp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTkVHQVRJVkVfSU5GSU5JVFkiKSwganNE
b3VibGVOdW1iZXIoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERv
bnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJQT1NJVElWRV9JTkZJTklUWSIpLCBqc0RvdWJs
ZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXIoJnZtLCAiTmFOIiksIGpzTmFOKCksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKLQotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIo
JnZtLCAiaXNGaW5pdGUiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNGaW5pdGUsIE5vSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJ
ZGVudGlmaWVyKCZ2bSwgImlzSW50ZWdlciIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0lu
dGVnZXIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgImlzTmFOIiksIDEsIG51bWJlckNvbnN0cnVjdG9y
RnVuY0lzTmFOLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5n
bG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJpc1NhZmVJbnRlZ2VyIiksIDEsIG51bWJl
ckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgInBhcnNl
RmxvYXQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQsIE5vSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgInBh
cnNlSW50IiksIDEsIGdsb2JhbEZ1bmNQYXJzZUludCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgIkVQU0lMT04iKSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjplcHNpbG9uKCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFk
T25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAiTUFYX1ZBTFVFIiksIGpzRG91YmxlTnVtYmVyKDEuNzk3NjkzMTM0ODYy
MzE1N0UrMzA4KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk1J
Tl9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcig1RS0zMjQpLCBEb250RGVsZXRlIHwgRG9udEVudW0g
fCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiTUFYX1NBRkVfSU5URUdFUiIpLCBqc0RvdWJsZU51bWJlcig5
MDA3MTk5MjU0NzQwOTkxLjApLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiTUlOX1NBRkVfSU5URUdFUiIpLCBqc0RvdWJsZU51bWJlcigtOTAwNzE5OTI1NDc0MDk5
MS4wKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk5FR0FUSVZF
X0lORklOSVRZIiksIGpzRG91YmxlTnVtYmVyKC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
UE9TSVRJVkVfSU5GSU5JVFkiKSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjppbmZpbml0eSgpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgIk5hTiIpLCBqc05hTigpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
CisKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1i
ZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
ImlzRmluaXRlIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzRmluaXRlLCBOb0ludHJpbnNp
YywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpc0ludGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JG
dW5jSXNJbnRlZ2VyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpc05hTiIpLCAx
LCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc05hTiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiaXNTYWZlSW50ZWdlciIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRl
Z2VyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxP
YmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwYXJzZUZsb2F0IiksIDEsIGds
b2JhbEZ1bmNQYXJzZUZsb2F0LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Cisg
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJv
dG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwYXJz
ZUludCIpLCAxLCBnbG9iYWxGdW5jUGFyc2VJbnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKIH0KIAogLy8gRUNNQSAxNS43LjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCA2MDJlNTc1Mjg5ZTE2Y2Rj
MTZhMGJiYTM0OTc4NWYyZTI3ZWYxN2RkLi5kNGIzZDgzM2U4NzcxOTkwNzIzNGI5MmY2ZTlhNDU1
ODBmZTJhMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0zNCwxMiArMzQsMTQgQEAKICNpbmNsdWRlICJQcm9wZXJ0
eURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUg
IlN0YWNrVmlzaXRvci5oIgorI2luY2x1ZGUgIlN5bWJvbC5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3Rv
dHlwZU9mKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVz
KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1
Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRl
ZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKik7CkBAIC04NCwxMyArODYsMTYgQEAKIHsKIH0KIAot
dm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBPYmplY3RQcm90
b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKK3ZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqZWN0UHJvdG90
eXBlKiBvYmplY3RQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIElk
ZW50aWZpZXIoJnZtLCAiT2JqZWN0Iikuc3RyaW5nKCkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtLCBvYmplY3RQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIC8v
IEVDTUEgMTUuMi4zLjEKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3Rv
cgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisK
KyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5ydW50aW1lRmxhZ3MoKS5pc1N5bWJvbEVuYWJsZWQoKSkK
KyAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTigiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwgb2Jq
ZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIERvbnRFbnVtLCAxKTsKIH0KIAog
Ym9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90ICZzbG90KQpAQCAtMjA2LDcgKzIxMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVl
c3RlZCBwcm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkp
OwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDAp
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6Oklu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRp
ZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsr
KQpAQCAtMjE1LDEyICsyMjAsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGUKIH0KIAogLy8g
RklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4g
b2JqZWN0LiIpKSk7CisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKKyAg
ICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJv
cGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5j
bHVkZVN5bWJvbHMpOworICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCAwKTsKKyAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7CisgICAgICAg
IEF0b21pY1N0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0aWVzW2ldLmltcGwoKTsKKyAgICAgICAg
aWYgKGltcGwtPmlzU3ltYm9sKCkpCisgICAgICAgICAgICBuYW1lcy0+cHVzaChleGVjLCBTeW1i
b2w6OmNyZWF0ZShleGVjLT52bSgpLCBpbXBsKSk7CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobmFtZXMpOworfQorCisvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNo
ZS4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIGtleXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBv
YmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAg
IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9w
ZXJ0aWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5h
cmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRp
b25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBKU0FycmF5KiBrZXlzID0g
Y29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9
IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVy
dGllczsgaSsrKQpAQCAtMzMxLDcgKzM1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0
aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9i
amVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCiB7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJv
cGVydHlOYW1lcyhleGVjKTsKLSAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGllcyksIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2Jq
ZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAg
IHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydHlOYW1lcy5zaXplKCk7CiAgICAgVmVjdG9y
PFByb3BlcnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRvcnM7CiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgbWFya0J1ZmZlcjsKQEAgLTM5OCw3ICs0MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAy
LiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1l
cmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5l
bmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
cHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEu
IExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1d
IGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTQzNSw3ICs0NTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2Yg
TywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywg
cHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlOjpJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5k
SW5jbHVkZVN5bWJvbHMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
IHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBb
W0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDgzLDcg
KzUwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJ
c1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24g
cHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhl
eGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURv
bnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1
bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBP
IHdpdGggUC4KQEAgLTUxMyw3ICs1MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4g
Rm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJh
dGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAg
ICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5k
KCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHBy
b3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBM
ZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBp
bnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCAxMjUyNzgxYTVlODkwMDY5ZWE3ZDkw
MTMwZmYzMWVlOWU5MGQzOGQ1Li5iYjA2N2IxNTU1ZmUwOTg2MWJlYTQyZDE5MmFhOTZhZjM3YzMw
MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmgKQEAgLTMzLDEwICszMywxMCBAQCBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVu
Y3Rpb24gQmFzZTsKIAotICAgIHN0YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBl
KQorICAgIHN0YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlw
ZSogb2JqZWN0UHJvdG90eXBlKQogICAgIHsKICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+
KHZtLmhlYXApKSBPYmplY3RDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgY29u
c3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBvYmplY3RQcm90b3R5cGUpOworICAgICAgICBj
b25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgb2JqZWN0UHJvdG90
eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KIApAQCAtNTAsNyArNTAs
NyBAQCBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
ICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgT2JqZWN0
UHJvdG90eXBlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgT2JqZWN0UHJvdG90eXBlKik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6
U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJpdmF0ZU5hbWUuaAppbmRleCAyMTQxNjQ0NjY0NWM3ZmZmMDNmN2M4MmQxNzg3MzlhZDU2
MDhiZjY0Li5jY2NjYzM5ZmE5MzkxM2IzZmE2MWM3NTBlNjhkYzcyOTE2ZTViNzE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKQEAgLTMzLDE5ICszMywx
OSBAQAogY2xhc3MgUHJpdmF0ZU5hbWUgewogcHVibGljOgogICAgIFByaXZhdGVOYW1lKCkKLSAg
ICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlRW1wdHkoKSkKKyAgICAgICAg
OiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkoKSkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwotICAgIH0KLSAgICBQcml2YXRlTmFtZShjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uKQotICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVh
dGVVbmlxdWUoZGVzY3JpcHRpb24uaW1wbCgpKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lt
cGwtPmlzVW5pcXVlKCkpOwogICAgIH0KKwogICAgIGV4cGxpY2l0IFByaXZhdGVOYW1lKFN0cmlu
Z0ltcGwqIHVpZCkKICAgICAgICAgOiBtX2ltcGwodWlkKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KG1faW1wbC0+aXNVbmlxdWUoKSk7CisgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzU3ltYm9sKCkp
OworICAgIH0KKworICAgIGV4cGxpY2l0IFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24pCisgICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChkZXNjcmlw
dGlvbi5pbXBsKCkpKQorICAgIHsKICAgICB9CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4obV9pbXBsLmdl
dCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgKaW5kZXggMDM3MGEzNTQ4ZGE5ODZkMDQxMTMxM2UwNGRhYzJkMTVjNmJh
MDkwNC4uNzU0ZGEyZDhlODE1NTU0Yjc3YjY4ZmUzZTUyZmM0YzgyMmQzMDIxZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
CkBAIC0yNzEsNyArMjcxLDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJhdG9y
IFByb3BlcnR5VGFibGU6OmVuZCgpIGNvbnN0CiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6ZmluZF9p
dGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkKIHsKICAgICBB
U1NFUlQoa2V5KTsKLSAgICBBU1NFUlQoa2V5LT5pc0F0b21pYygpIHx8IGtleS0+aXNVbmlxdWUo
KSk7CisgICAgQVNTRVJUKGtleS0+aXNBdG9taWMoKSB8fCBrZXktPmlzU3ltYm9sKCkpOwogICAg
IHVuc2lnbmVkIGhhc2ggPSBrZXktPmV4aXN0aW5nSGFzaCgpOwogICAgIHVuc2lnbmVkIHN0ZXAg
PSAwOwogCkBAIC0zMDUsNyArMzA1LDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRfaXRl
cmF0b3IgUHJvcGVydHlUYWJsZTo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpCiBpbmxpbmUgUHJv
cGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQcm9wZXJ0eVRhYmxlOjpnZXQoY29uc3QgS2V5VHlwZSYg
a2V5KQogewogICAgIEFTU0VSVChrZXkpOwotICAgIEFTU0VSVChrZXktPmlzQXRvbWljKCkgfHwg
a2V5LT5pc1VuaXF1ZSgpKTsKKyAgICBBU1NFUlQoa2V5LT5pc0F0b21pYygpIHx8IGtleS0+aXNT
eW1ib2woKSk7CiAKICAgICBpZiAoIW1fa2V5Q291bnQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaAppbmRleCAz
MDc0YzcyZTEwNzAxMzNiOTdiMDNiMWRmZjRhNDNkZTEzMmZjMGE2Li42NTVlNzRkNjJhYzM2MTIw
YTE5NjFhYmQ3MDExZmY2YmVjNTIxNWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWUuaApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWUg
ewogICAgIFByb3BlcnR5TmFtZShBdG9taWNTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUpCiAgICAg
ICAgIDogbV9pbXBsKHByb3BlcnR5TmFtZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9pbXBs
IHx8IG1faW1wbC0+aXNBdG9taWMoKSk7CisgICAgICAgIEFTU0VSVCghbV9pbXBsIHx8IG1faW1w
bC0+aXNBdG9taWMoKSB8fCBtX2ltcGwtPmlzU3ltYm9sKCkpOwogICAgIH0KIAogICAgIFByb3Bl
cnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCkBAIC05Myw4ICs5Myw3IEBA
IGNsYXNzIFByb3BlcnR5TmFtZSB7CiAgICAgICAgIDogbV9pbXBsKHN0YXRpY19jYXN0PEF0b21p
Y1N0cmluZ0ltcGwqPihwcm9wZXJ0eU5hbWUudWlkKCkpKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG1faW1wbCk7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwotICAgICAgICBB
U1NFUlQobV9pbXBsLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNTeW1i
b2woKSk7CiAgICAgfQogCiAgICAgQXRvbWljU3RyaW5nSW1wbCogdWlkKCkgY29uc3QKQEAgLTEw
NCwxNCArMTAzLDE0IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAKICAgICBBdG9taWNTdHJpbmdJ
bXBsKiBwdWJsaWNOYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmlz
VW5pcXVlKCkgPyBudWxscHRyIDogbV9pbXBsOworICAgICAgICByZXR1cm4gKCFtX2ltcGwgfHwg
bV9pbXBsLT5pc1N5bWJvbCgpKSA/IG51bGxwdHIgOiBtX2ltcGw7CiAgICAgfQogCiAgICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5kZXggPSBVSU5UX01BWDsKIAogICAgIHVpbnQzMl90
IGFzSW5kZXgoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbCA/IHRvVUludDMyRnJvbVN0
cmluZ0ltcGwobV9pbXBsKSA6IE5vdEFuSW5kZXg7CisgICAgICAgIHJldHVybiAobV9pbXBsICYm
ICFtX2ltcGwtPmlzU3ltYm9sKCkpID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDog
Tm90QW5JbmRleDsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5jcHAKaW5kZXggNDQ3NWI4OThhOTc0OTc3Y2U2OGU0NzU5ZGNhZDA2YmQ2YTA0ODM3
My4uMDE4YTA3ZjFlYTY3MDY1NDcyZjQ4ZTllY2NlNGQ3NzNiMGVhNjM0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcApAQCAt
MzEsOSArMzEsOSBAQAogCiB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQoU3RyaW5nSW1wbCog
aWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIWlkZW50aWZpZXIgfHwgaWRlbnRpZmllciA9PSBT
dHJpbmdJbXBsOjplbXB0eSgpIHx8IGlkZW50aWZpZXItPmlzQXRvbWljKCkpOworICAgIEFTU0VS
VCghaWRlbnRpZmllciB8fCAoIW1fdm0tPnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoaWRl
bnRpZmllcikgJiYgKGlkZW50aWZpZXIgPT0gU3RyaW5nSW1wbDo6ZW1wdHkoKSB8fCBpZGVudGlm
aWVyLT5pc0F0b21pYygpIHx8IGlkZW50aWZpZXItPmlzU3ltYm9sKCkpKSk7CiAgICAgaWYgKCFB
U1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgdWludDMyX3QgaW5kZXggPSBQcm9wZXJ0eU5hbWUo
SWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSkuYXNJbmRleCgpOworICAgICAgICB1aW50MzJf
dCBpbmRleCA9IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlkZW50aWZp
ZXIpKS5hc0luZGV4KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5kZXgsIGluZGV4ID09IFBy
b3BlcnR5TmFtZTo6Tm90QW5JbmRleCB8fCBpbmRleCA+PSBtX3ByZXZpb3VzbHlFbnVtZXJhdGVk
TGVuZ3RoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oCmluZGV4IDk5NGYwOWM5MDU0MDExZTQxYjIzMzhmOWQwNTA0YjJk
NDliZmYzOWEuLjg5ZmNiZGVjZjdlODFjZTIzNWQ0YjEwM2U1OTQ2OWM5ODExYTdjNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaApA
QCAtOTgsNyArOTgsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheSB7CiAgICAgdm9pZCBhZGRL
bm93blVuaXF1ZShTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgbV9zZXQt
PmFkZChpZGVudGlmaWVyKTsKLSAgICAgICAgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5h
cHBlbmQoSWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSk7CisgICAgICAgIG1fZGF0YS0+cHJv
cGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgaWRlbnRp
ZmllcikpOwogICAgIH0KIAogICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWduZWQgaSkg
eyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IDQ1
ZTgwZjVjZGMxNWE1NmYyYzY2MmI1MzRiNWQyZGRkYjViZmU5OTIuLmVlMWQ4YjNmYzY5Zjk0M2I5
NGE1MjU5Y2Y3YzE4NmNhYzYzNzNmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAKIAogdm9p
ZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBSZWdFeHBQcm90b3R5
cGUqIHJlZ0V4cFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgSWRl
bnRpZmllcigmdm0sICJSZWdFeHAiKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0sIHJlZ0V4cFByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgQVNT
RVJUKGluaGVyaXRzKGluZm8oKSkpOwogCiAgICAgLy8gRUNNQSAxNS4xMC41LjEgUmVnRXhwLnBy
b3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5j
cHAKaW5kZXggNGQ5ZDBiMjdlNGQwYzhjOTFmOWZlYjQ1YTFkNTRlNTk1ZDMzZDUxOS4uNTQ5YTNh
MmY5YTc0YzNhMWE5ZGM3MDAxMDQxMmZhNDc5ZDkxYTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMDUsMjEgKzEwNSwyMSBAQCBi
b29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcgogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAg
IGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2Rl
LnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCk7CiAgICAgQmFzZTo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7
CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxh
c3RJbmRleCk7CiAgICAgQmFzZTo6Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKHNo
b3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxk
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KTsKICAgICBCYXNlOjpnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IDQy
M2E2YmQ1ZWJhZGY5YjkyYjVlNWJiZmRhNDcxNmI4MjkwZjI1ODEuLmZiOTdiNmQ5ZmEwZDBlZTYz
YTFkNTJhOTg4N2VjNzc2OThmNzUzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CiAKLSAgICBKU1ZhbHVl
IGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9
IGl0ZXJhYmxlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDUyNjFiZjNjYWNjMWQ0
ZTBlNDU3NTUxYTAyMmRlNjdjOTE5NGRmZjkuLmYxYjhiNzk0ODExODkwOTNhMDFhNjJjNTg2MTRk
ZDlkZWVkOGYzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBTZXRJdGVy
YXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5
cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1
bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJh
dG9yLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5uZXh0LCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmlu
ZGV4IDZhNmM0OWI0OGUwYzZhOTBjOTMwNzY5OWQ4Y2Q3OWI0Yzk1ZDJjNTEuLjc2ODI2YWRlNWQw
NDRiMDljNGY1MzhmOGIxYjg3MDQ4ZDgyMjM4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNldFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgc2V0
UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+dmFsdWVzLCBzZXRQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsK
ICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIHNldFBy
b3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIHNldFByb3RvRnVuY0tleXMsIERv
bnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yU3ltYm9sLCBzZXRQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAKICAgICBHZXR0
ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCk7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZS5zdHJpbmcoKSwgc2V0UHJvdG9G
dW5jU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggNTNlMGNjYjMxNDRmMzk1OTZlNjQ1NWVh
N2IzMmY3NTcwYmJmMWFkYi4uNDY4YjcyZDBmY2E3NGY5MjQ3NTIxMWJjNDFkOWFlZjBjNTlmNzZj
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplYwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVN
YXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBzdHJpbmdJdGVyYXRvclByb3RvdHlwZUl0
ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVJdGVyYXRvciwg
RG9udEVudW0sIDApOwogfQogCiBib29sIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA1MDAxYmNjNGUxYjdlMzc5M2Vk
MjZlMTQyMGE4MGE2MDQ2OGUxM2M2Li5hYjM5NDllMDdlMzNlMWExOWY3NTM1OWYyOTk4MWEyMTQ5
YWYwYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgIGlu
dCBzaXplID0gdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5sZW5ndGgoKTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBpKSk7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKTsKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCBhZWE1OTI2OTUyMmI4
NTk4ODk0YzQ3ZWU1ZDQ5YTRlYmM2MmQyMTMzLi5jYTYyYzQxYjBmMzU4OTY5MTZkMWM2MjVkN2Mz
NDBmYTRkZjI0OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFN0cmluZ1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1N0cgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oInN0YXJ0c1dpdGgiLCBzdHJpbmdQcm90b0Z1
bmNTdGFydHNXaXRoLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigiZW5k
c1dpdGgiLCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aCwgRG9udEVudW0sIDApOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04oImluY2x1ZGVzIiwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMsIERvbnRF
bnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yUHJpdmF0ZU5hbWUsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7Cisg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwg
c3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKIAogICAgIEpTQ19OQVRJVkVf
SU5UUklOU0lDX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmNoYXJDb2RlQXRQcml2YXRlTmFt
ZSwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdCwgRG9udEVudW0sIDEsIENoYXJDb2RlQXRJbnRy
aW5zaWMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApp
bmRleCA4NjljYmM1N2MyMDY5ZmFjMjQxODhlMTBmNTAxNTVjZmM1YWJmOTc4Li45YjEwZjc5Mzg1
ZmM1NWQ3Mzk4ZWNhNDQ4NGNiMDIzODRhNzllNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTk0OCw3ICs5NDgsMTMgQEAgdm9pZCBTdHJ1Y3R1
cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnQKICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSBwcm9wZXJ0eVRh
YmxlKCktPmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHBy
b3BlcnR5VGFibGUoKS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBB
U1NFUlQoaGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSB8fCAhKGl0ZXItPmF0dHJpYnV0ZXMg
JiBEb250RW51bSkpOwotICAgICAgICBpZiAoIWl0ZXItPmtleS0+aXNVbmlxdWUoKSAmJiAoIShp
dGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMobW9kZSkpKSB7CisgICAgICAgIGlmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51
bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAg
ICAgIGlmIChpdGVyLT5rZXktPmlzU3ltYm9sKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1v
ZGUuc2hvdWxkSW5jbHVkZVN5bWJvbHMoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgaWYgKHZtLnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoaXRl
ci0+a2V5KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoa25vd25VbmlxdWUpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGRLbm93blVuaXF1ZShpdGVyLT5rZXkpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCmluZGV4
IDk5Y2U2ODYyNzRmZDc3MzkyOGRkZDU5ZmYxZjljYWY0ZWViZTIxMWUuLmFhOTRmYTMxZjFhMDk1
YmUzODg0YzQxNzgwMjQ0YjcxODhiMzAyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKIH0K
IAogI2RlZmluZSBJTklUSUFMSVpFX1dFTExfS05PV05fU1lNQk9MUyhuYW1lKSBcCi0gICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAjbmFtZSksIFN5bWJv
bDo6Y3JlYXRlKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZS5pbXBsKCkp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAjbmFtZSksIFN5bWJv
bDo6Y3JlYXRlKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNTeW1ib2wuaW1wbCgpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiB2b2lkIFN5bWJvbENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSogcHJvdG90eXBlKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGU4ZmMwZTMyMGI1Y2EzYWUxMzNi
YThmNDZhYTU4ZWM1OWM3ZTFkMjguLmU5ODBmYmY5OWZiZTI2Mzc4YWQ5YmVkM2YwMzhjZWUxN2M4
ZjdiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY1NCwxMCArNjU0
LDEwIEBAIEpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBlcnJvcikKICAgICAgICAgdW5zaWduZWQgbGluZTsKICAgICAgICAgdW5zaWduZWQgY29sdW1u
OwogICAgICAgICBzdGFja0ZyYW1lLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7
Ci0gICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyKHRoaXMsICJs
aW5lIiksIGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwotICAgICAgICBl
eGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcih0aGlzLCAiY29sdW1uIiksIGpz
TnVtYmVyKGNvbHVtbiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGV4Y2VwdGlv
bi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHRoaXMsICJsaW5lIiks
IGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBleGNlcHRp
b24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh0aGlzLCAiY29sdW1u
IiksIGpzTnVtYmVyKGNvbHVtbiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgICAgIGlm
ICghc3RhY2tGcmFtZS5zb3VyY2VVUkwuaXNFbXB0eSgpKQotICAgICAgICAgICAgZXhjZXB0aW9u
LT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXIodGhpcywgInNvdXJjZVVSTCIpLCBqc1N0cmlu
Zyh0aGlzLCBzdGFja0ZyYW1lLnNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7Cisg
ICAgICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh0aGlzLCAic291cmNlVVJMIiksIGpzU3RyaW5nKHRoaXMsIHN0YWNrRnJhbWUuc291cmNl
VVJMKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKICAgICB9CiAgICAgaWYgKGV4Y2VwdGlvbi0+
aXNFcnJvckluc3RhbmNlKCkgJiYgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlv
biktPmFwcGVuZFNvdXJjZVRvTWVzc2FnZSgpKSB7CiAgICAgICAgIEZpbmRGaXJzdENhbGxlckZy
YW1lV2l0aENvZGVibG9ja0Z1bmN0b3IgZnVuY3RvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCmluZGV4IDA5YWZm
MDM1MTAwMDY4OWFmOGU3YWI4NDNiNzIxYmE0ZTgxNTAyYmUuLjIzYzQzMzMwZDYyZWYwOTcyN2Zm
NmI5MTI0NTZhNTA0MDRkYTc4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CiAKLSAg
ICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JG
dW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0
b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xz
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1w
cm9wZXJ0eS1zeW1ib2xzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwZTkzZDhiMjQ3OWRlOTJhZDk2MGU3NWI0
MmU3OTFmZDkyNWYxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMKQEAgLTAsMCAr
MSwzNSBAQAorLy8gVGhpcyB0ZXN0cyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLgorCit2
YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCkpOworCisvLyBwcml2YXRlIG5h
bWVzIGZvciBwcml2aWxlZ2VkIGNvZGUgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgoraWYgKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZ2xvYmFsKS5sZW5ndGggIT09IDApCisgICAgdGhyb3cg
IkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZ2xvYmFs
KS5sZW5ndGg7CisKK3ZhciBvYmplY3QgPSB7fTsKK3ZhciBzeW1ib2wgPSBTeW1ib2woIkNvY29h
Iik7CitvYmplY3Rbc3ltYm9sXSA9ICJDYXBwdWNjaW5vIjsKK2lmIChPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCAhPT0gMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2
YWx1ZSAiICsgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KS5sZW5ndGg7CitpZiAo
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCAhPT0gMSkKKyAgICB0
aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhv
YmplY3QpLmxlbmd0aDsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClb
MF0gIT09IHN5bWJvbCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgU3RyaW5nKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSk7CisKK2Z1bmN0aW9uIGZvcklu
KG9iaikgeworICAgIHZhciBhcnJheSA9IFtdOworICAgIC8vIFN5bWJvbCBzaG91bGQgbm90IGJl
IGVudW1lcmF0ZWQuCisgICAgZm9yICh2YXIga2V5IGluIG9iaikgYXJyYXkucHVzaChrZXkpOwor
ICAgIHJldHVybiBhcnJheTsKK30KKworaWYgKGZvckluKG9iamVjdCkubGVuZ3RoICE9PSAwKQor
ICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBmb3JJbihvYmplY3QpLmxlbmd0aDsKK2lm
IChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCAhPT0gMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJh
ZCB2YWx1ZSAiICsgT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGg7CisKK2RlbGV0ZSBvYmplY3Rb
c3ltYm9sXTsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCAh
PT0gMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0KS5sZW5ndGg7CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyhvYmplY3QpLmxlbmd0aCAhPT0gMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsg
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0
eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLWRlZmluZS1w
cm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYWMzZWMwNWY4MDZlMzcyNTc3MzYyNDgyNjE5ODE1MjMw
YjZiM2RiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9zeW1ib2wtZGVmaW5lLXByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vIFRoaXMg
dGVzdHMgT2JqZWN0LmNyZWF0ZSwgT2JqZWN0LmRlZmluZVByb3BlcnR5LCBPYmplY3QuZGVmaW5l
UHJvcGVydGllcyB3b3JrIHdpdGggU3ltYm9sLgorCitmdW5jdGlvbiB0ZXN0U3ltYm9sKG9iamVj
dCkgeworICAgIGlmICghb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikpCisg
ICAgICAgIHRocm93ICJFcnJvcjogb2JqZWN0IGRvZXNuJ3QgaGF2ZSBTeW1ib2wuaXRlcmF0b3Ii
OworICAgIGlmIChvYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUoU3ltYm9sLml0ZXJhdG9yKSkK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBTeW1ib2wuaXRlcmF0b3IgaXMgZGVmaW5lZCBhcyBlbnVt
ZXJhYmxlIjsKKyAgICBpZiAoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpICE9PSAneyJ2YWx1ZSI6NDIsIndyaXRh
YmxlIjpmYWxzZSwiZW51bWVyYWJsZSI6ZmFsc2UsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9JykKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcHJvcGVydHkgZGVzY3JpcHRvciAiICsgSlNPTi5zdHJp
bmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVy
YXRvcikpOworICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVu
Z3RoICE9PSAxKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3du
UHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOworICAgIGlmIChPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzKG9iamVjdClbMF0gIT09IFN5bWJvbC5pdGVyYXRvcikKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIFN0cmluZyhPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzKG9iamVjdClbMF0pOworfQorCit2YXIgb2JqZWN0ID0gT2JqZWN0LmNyZWF0ZShPYmplY3Qu
cHJvdG90eXBlLCB7CisgICAgW1N5bWJvbC5pdGVyYXRvcl06IHsKKyAgICAgICAgdmFsdWU6IDQy
CisgICAgfQorfSk7Cit0ZXN0U3ltYm9sKG9iamVjdCk7CisKK3ZhciBvYmplY3QgPSBPYmplY3Qu
ZGVmaW5lUHJvcGVydGllcyh7fSwgeworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7CisgICAgICAg
IHZhbHVlOiA0MgorICAgIH0KK30pOwordGVzdFN5bWJvbChvYmplY3QpOworCit2YXIgb2JqZWN0
ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCBTeW1ib2wuaXRlcmF0b3IsIHsKKyAgICB2YWx1
ZTogNDIKK30pOwordGVzdFN5bWJvbChvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtc2VhbC1hbmQtZnJlZXplLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRmNTA3Y2Q5ZWU1M2M1MWIyYzIxOWM3MjhjNGQzYzU1ZWRkNzdjNWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1z
ZWFsLWFuZC1mcmVlemUuanMKQEAgLTAsMCArMSwyNiBAQAorLy8gVGhpcyB0ZXN0cyBPYmplY3Qu
c2VhbCBhbmQgT2JqZWN0LmZyZWV6ZSBhZmZlY3Qgb24gU3ltYm9sIHByb3BlcnRpZXMuCisKK3Zh
ciBvYmplY3QgPSB7CisgICAgW1N5bWJvbC5pdGVyYXRvcl06IDQyCit9OworCitpZiAoIW9iamVj
dC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpKQorICAgIHRocm93ICJFcnJvcjogb2Jq
ZWN0IGRvZXNuJ3QgaGF2ZSBTeW1ib2wuaXRlcmF0b3IiOworaWYgKEpTT04uc3RyaW5naWZ5KE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAh
PT0gJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6dHJ1ZSwiZW51bWVyYWJsZSI6dHJ1ZSwiY29uZmln
dXJhYmxlIjp0cnVlfScpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcHJvcGVydHkgZGVzY3JpcHRv
ciAiICsgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmpl
Y3QsIFN5bWJvbC5pdGVyYXRvcikpOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMo
b2JqZWN0KS5sZW5ndGggIT09IDEpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGg7CitpZiAoT2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdICE9PSBTeW1ib2wuaXRlcmF0b3IpCisgICAg
dGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIFN0cmluZyhPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKG9iamVjdClbMF0pOworCitPYmplY3Quc2VhbChvYmplY3QpOworaWYgKCFvYmplY3Qu
aGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICB0aHJvdyAiRXJyb3I6IG9iamVj
dCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsKK2lmIChKU09OLnN0cmluZ2lmeShPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgIT09
ICd7InZhbHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUiOnRydWUsImNvbmZpZ3Vy
YWJsZSI6ZmFsc2V9JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBwcm9wZXJ0eSBkZXNjcmlwdG9y
ICIgKyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVj
dCwgU3ltYm9sLml0ZXJhdG9yKSk7CisKK09iamVjdC5mcmVlemUob2JqZWN0KTsKK2lmICghb2Jq
ZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikpCisgICAgdGhyb3cgIkVycm9yOiBv
YmplY3QgZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVyYXRvciI7CitpZiAoSlNPTi5zdHJpbmdpZnko
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikp
ICE9PSAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjpmYWxzZSwiZW51bWVyYWJsZSI6dHJ1ZSwiY29u
ZmlndXJhYmxlIjpmYWxzZX0nKQorICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2Ny
aXB0b3IgIiArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXdpdGgtanNvbi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXdpdGgtanNvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzAzZDVk
NWExMWQ0ODJhYWY2MDM4Y2MwYTQ3Zjk3MTljNWQ5ZjljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtd2l0aC1qc29uLmpzCkBAIC0w
LDAgKzEsMTQgQEAKKy8vIFRoaXMgdGVzdHMgSlNPTiBjb3JyZWN0bHkgYmVoYXZlcyB3aXRoIFN5
bWJvbC4KKworaWYgKEpTT04uc3RyaW5naWZ5KFN5bWJvbCgnQ29jb2EnKSkgIT09IHVuZGVmaW5l
ZCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgSlNPTi5zdHJpbmdpZnkoU3ltYm9s
KCdDb2NvYScpKTsKKwordmFyIG9iamVjdCA9IHt9OwordmFyIHN5bWJvbCA9IFN5bWJvbCgiQ29j
b2EiKTsKK29iamVjdFtzeW1ib2xdID0gNDI7CitvYmplY3RbJ0NhcHB1Y2Npbm8nXSA9IDQyOwor
aWYgKEpTT04uc3RyaW5naWZ5KG9iamVjdCkgIT09ICd7IkNhcHB1Y2Npbm8iOjQyfScpCisgICAg
dGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIEpTT04uc3RyaW5naWZ5KG9iamVjdCk7CisKK2lm
IChKU09OLnN0cmluZ2lmeShvYmplY3QsIFsgU3ltYm9sKCdDb2NvYScpIF0pICE9PSAie30iKQor
ICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBKU09OLnN0cmluZ2lmeShvYmplY3QsIFsg
U3ltYm9sKCdDb2NvYScpIF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4
IDE5NjM5Y2FiMzE0Zjk2OGExNWQ3MmU2Nzk0NWJmMGQ5NmE4ZmJhOTEuLmZhN2U0MzQ3YTEyM2Jm
NmIxNzViMDZhMzhjNWU5Y2EyMmI4ZWQ0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5jcHAKQEAgLTQwMyw2ICs0MDMsOSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0
YVRyYW5zbGF0b3IgewogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4g
KlN0cmluZ0ltcGw6OmVtcHR5KCk7CiAKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCisgICAg
ICAgIHJldHVybiBhZGQoc3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpKTsKKwog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5n
IHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGF0
b21pYy4iKTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKQEAgLTQyMSw2
ICs0MjQsOSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3Igewog
ICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVt
cHR5KCk7CiAKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBhZGQo
c3RyaW5nVGFibGUsIHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKSk7CisKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZyBz
aG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBhdG9t
aWMuIik7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CkBAIC01MDMsNiAr
NTA5LDEyIEBAIEF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZFNsb3dDYXNlKFN0
cmluZ0ltcGwmIHN0cmluZykKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNB
dG9taWMoKSwgIkF0b21pY1N0cmluZ0ltcGxzIHNob3VsZCByZXR1cm4gZnJvbSB0aGUgZmFzdCBj
YXNlLiIpOwogCisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CisKKyAgICBp
ZiAoc3RyaW5nLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBmaW5kKCZzdHJpbmcuZXh0cmFj
dEZvbGRlZFN0cmluZ0luU3ltYm9sKCkpOworCiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIg
bG9ja2VyOwogICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNTdHJpbmdUYWJsZSA9IHN0
cmluZ1RhYmxlKCk7CiAgICAgYXV0byBpdGVyYXRvciA9IGF0b21pY1N0cmluZ1RhYmxlLmZpbmQo
JnN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCBiYWU5ZDM2MmQyNzUx
ZTVhNzNjZTBiMWI3ZTJhNDExYjAxODM3ZjMzLi42MDljZjczMWQyN2JmYzA2NzhkNmM2OTgzYzRj
YjA4YjZhMjI5MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTE4MywxMSAr
MTgzLDkgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHN0cmluZykKICAgICB7Ci0gICAgICAgIGlmICghc3Ry
aW5nIHx8IHN0cmluZy0+aXNBdG9taWMoKSkgewotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghc3RyaW5nIHx8ICFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8
fCBpc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVz
IGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBpZiAoIXN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBzdHJpbmc7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNl
KCpzdHJpbmcpOworICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmcpOwogICAgIH0KICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERh
dGEoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICNpZiBVU0UoQ0Yp
CkBAIC0xOTcsMTEgKzE5NSw5IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgU3RyaW5nVGFibGVQcm92aWRlcj4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoU3RyaW5nVGFibGVQ
cm92aWRlciYgc3RyaW5nVGFibGVQcm92aWRlciwgU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIHsK
LSAgICAgICAgaWYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKSB7Ci0gICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcgfHwgIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3Ry
aW5nLT5pc1VuaXF1ZSgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0
b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgIGlmICgh
c3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gYWRkU2xvd0Nhc2UoKnN0cmluZ1RhYmxlUHJvdmlkZXIuYXRvbWljU3RyaW5nVGFibGUo
KSwgKnN0cmluZyk7CisgICAgICAgIHJldHVybiBhZGQoKnN0cmluZ1RhYmxlUHJvdmlkZXIuYXRv
bWljU3RyaW5nVGFibGUoKSwgKnN0cmluZyk7CiAgICAgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RApAQCAtMjEzLDcgKzIwOSwyNSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAgIEF0b21pY1N0
cmluZyhBU0NJSUxpdGVyYWwpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwotICAgIAorCisgICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsJiBzdHJp
bmcpCisgICAgeworICAgICAgICBpZiAoc3RyaW5nLmlzQXRvbWljKCkpIHsKKyAgICAgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBpc0luQXRvbWljU3RyaW5n
VGFibGUoJnN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRo
cmVhZCEiKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChBdG9taWNTdHJpbmdUYWJsZSYgc3RyaW5nVGFibGUs
IFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmIChzdHJpbmcuaXNBdG9taWMo
KSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8
IGlzSW5BdG9taWNTdHJpbmdUYWJsZSgmc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVz
IGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3RyaW5nVGFibGUsIHN0cmluZyk7
CisgICAgfQorCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1RhYmxlJiwgU3Ry
aW5nSW1wbCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCAwYjc3NDlhZjhm
OTJmYmU2NTk2NGRjYzgzZGUxY2VjNTg3M2MwOTJmLi41NzZkMmFhMWM5ZmRlZDk0YzFkYzNmNDA1
YjcwNTE3ZjU5OTUwMGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFN0cmluZ1N0YXRzOjpwcmludFN0YXRzKCkKIAogICAgIFNUUklOR19T
VEFUU19SRU1PVkVfU1RSSU5HKCp0aGlzKTsKIAotICAgIGlmIChpc0F0b21pYygpICYmIGxlbmd0
aCgpICYmICFpc1VuaXF1ZSgpKQorICAgIGlmIChpc0F0b21pYygpICYmIGxlbmd0aCgpICYmICFp
c1N5bWJvbCgpKQogICAgICAgICBBdG9taWNTdHJpbmc6OnJlbW92ZSh0aGlzKTsKIAogICAgIEJ1
ZmZlck93bmVyc2hpcCBvd25lcnNoaXAgPSBidWZmZXJPd25lcnNoaXAoKTsKQEAgLTI4NiwxMyAr
Mjg2LDE0IEBAIHZvaWQgU3RyaW5nSW1wbDo6ZGVzdHJveShTdHJpbmdJbXBsKiBzdHJpbmdJbXBs
KQogICAgIHJldHVybiBjcmVhdGUoc3RyaW5nLCBsZW5ndGgpOwogfQogCi1SZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwKQor
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHJlcCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSByZXAtPmxlbmd0aCgpOwogICAg
IGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gY3JlYXRlVW5pcXVlRW1wdHkoKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZVN5bWJvbEVtcHR5KCk7CiAgICAgUmVmPFN0cmluZ0ltcGw+IHN0cmlu
ZyA9IGNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKHJlcCwgMCwgbGVuZ3RoKTsKLSAgICBzdHJp
bmctPm1faGFzaEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHN0cmluZy0+bV9oYXNo
QW5kRmxhZ3MpOworICAgIEFTU0VSVCghc3RyaW5nLT5pc0F0b21pYygpKTsKKyAgICBzdHJpbmct
Pm1faGFzaEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yU3ltYm9sKHN0cmluZy0+bV9oYXNoQW5k
RmxhZ3MpOwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
aW5kZXggNjY3MjIzZTZkYTc1ZDEyYjUzMTc0NDEwOTAzYTNiM2E3NjMxYTQ3Ni4uNTEwYTM5YjJi
N2Q1MjA2YjkxOGZhNWM2NWUyMjM5MjczYWVjNDVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKQEAgLTE0MSw2ICsxNDEsMjUgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIEJ1ZmZl
clN1YnN0cmluZywKICAgICB9OwogCisgICAgLy8gVGhlIGJvdHRvbSA2IGJpdHMgaW4gdGhlIGhh
c2ggYXJlIGZsYWdzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDY7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFnQ291
bnQpIC0gMTsKKyAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJpbmdIYXNoZXI6
OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zvcl9TdHJpbmdJ
bXBsX2ZsYWdzKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnU3RyaW5nS2luZENv
dW50ID0gNDsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnU3RyaW5nS2lu
ZElzQXRvbWljID0gMXUgPDwgKHNfZmxhZ1N0cmluZ0tpbmRDb3VudCk7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2wgPSAxdSA8PCAoc19mbGFn
U3RyaW5nS2luZENvdW50ICsgMSk7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaE1h
c2tTdHJpbmdLaW5kID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYyB8IHNfaGFzaEZsYWdT
dHJpbmdLaW5kSXNTeW1ib2w7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWc4
Qml0QnVmZmVyID0gMXUgPDwgMzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxh
Z0RpZFJlcG9ydENvc3QgPSAxdSA8PCAyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hh
c2hNYXNrQnVmZmVyT3duZXJzaGlwID0gKDF1IDw8IDApIHwgKDF1IDw8IDEpOworCisgICAgZW51
bSBTdHJpbmdLaW5kIHsKKyAgICAgICAgU3RyaW5nTm9ybWFsID0gMHUsIC8vIG5vbi1zeW1ib2ws
IG5vbi1hdG9taWMKKyAgICAgICAgU3RyaW5nQXRvbWljID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJ
c0F0b21pYywgLy8gbm9uLXN5bWJvbCwgYXRvbWljCisgICAgICAgIFN0cmluZ1N5bWJvbCA9IHNf
aGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2wsIC8vIHN5bWJvbCwgbm9uLWF0b21pYworICAgIH07
CisKICAgICAvLyBVc2VkIHRvIGNvbnN0cnVjdCBzdGF0aWMgc3RyaW5ncywgd2hpY2ggaGF2ZSBh
biBzcGVjaWFsIHJlZkNvdW50IHRoYXQgY2FuIG5ldmVyIGhpdCB6ZXJvLgogICAgIC8vIFRoaXMg
bWVhbnMgdGhhdCB0aGUgc3RhdGljIHN0cmluZyB3aWxsIG5ldmVyIGJlIGRlc3Ryb3llZCwgd2hp
Y2ggaXMgaW1wb3J0YW50IGJlY2F1c2UKICAgICAvLyBzdGF0aWMgc3RyaW5ncyB3aWxsIGJlIHNo
YXJlZCBhY3Jvc3MgdGhyZWFkcyAmIHJlZi1jb3VudGVkIGluIGEgbm9uLXRocmVhZHNhZmUgbWFu
bmVyLgpAQCAtMTUwLDcgKzE2OSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1f
cmVmQ291bnQoc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZykKICAgICAgICAgLCBtX2xlbmd0
aCgwKQogICAgICAgICAsIG1fZGF0YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZt
X2xlbmd0aCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIg
fCBzX2hhc2hGbGFnSXNBdG9taWMgfCBCdWZmZXJPd25lZCkKKyAgICAgICAgLCBtX2hhc2hBbmRG
bGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ0F0b21pYyB8IEJ1ZmZlck93bmVkKQog
ICAgIHsKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGhhc2ggaXMgY29tcHV0ZWQgc28gdGhh
dCBBdG9taWNTdHJpbmdIYXNoIGNhbiBjYWxsIGV4aXN0aW5nSGFzaCgpCiAgICAgICAgIC8vIHdp
dGggaW1wdW5pdHkuIFRoZSBlbXB0eSBzdHJpbmcgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IGlzIG5l
dmVyIGVudGVyZWQgaW50bwpAQCAtMTY3LDcgKzE4Niw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewog
ICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xl
bmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOCh0YWlsUG9pbnRlcjxMQ2hhcj4oKSkKLSAg
ICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVy
bmFsKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3Ry
aW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRh
OCk7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0xODAsNyArMTk5LDcgQEAgY2xhc3Mg
U3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQog
ICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGExNih0YWlsUG9pbnRl
cjxVQ2hhcj4oKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKKyAg
ICAgICAgLCBtX2hhc2hBbmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7
CkBAIC0xOTMsNyArMjEyLDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZD
b3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAg
ICAgICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMubGVha1B0cigpKQotICAgICAgICAsIG1faGFzaEFu
ZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyT3duZWQpCisgICAgICAgICwgbV9o
YXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJP
d25lZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1f
bGVuZ3RoKTsKQEAgLTIwNiw3ICsyMjUsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAg
OiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVu
Z3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5k
RmxhZ3MoQnVmZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9y
bWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwog
ICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjE4LDcgKzIzNyw3IEBAIGNsYXNzIFN0cmlu
Z0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAg
ICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzKQotICAg
ICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJu
YWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJp
bmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4
KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTIzMSw3ICsyNTAsNyBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAg
ICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMu
bGVha1B0cigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlck93bmVkKQorICAgICAg
ICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTI0
NCw3ICsyNjMsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNf
cmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAs
IG1fZGF0YTgoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFn
OEJpdEJ1ZmZlciB8IEJ1ZmZlclN1YnN0cmluZykKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhz
X2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVChpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsK
QEAgLTI2MSw3ICsyODAsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNv
dW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAg
ICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVm
ZmVyU3Vic3RyaW5nKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1
ZmZlclN1YnN0cmluZykKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXM4Qml0KCkpOwogICAgICAg
ICBBU1NFUlQobV9kYXRhMTYpOwpAQCAtMjczLDE0ICsyOTIsMTQgQEAgY2xhc3MgU3RyaW5nSW1w
bCB7CiAgICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1
ZSk7CiAgICAgfQogCi0gICAgZW51bSBDcmVhdGVFbXB0eVVuaXF1ZVRhZyB7IENyZWF0ZUVtcHR5
VW5pcXVlIH07Ci0gICAgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVuaXF1ZVRhZykKKyAgICBlbnVt
IENyZWF0ZVN5bWJvbEVtcHR5VGFnIHsgQ3JlYXRlU3ltYm9sRW1wdHkgfTsKKyAgICBTdHJpbmdJ
bXBsKENyZWF0ZVN5bWJvbEVtcHR5VGFnKQogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3Vu
dEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aCgwKQogICAgICAgICAvLyBXZSBleHBlY3Qg
bV9sZW5ndGggdG8gYmUgaW5pdGlhbGl6ZWQgdG8gMCBhcyB3ZSB1c2UgaXQKICAgICAgICAgLy8g
dG8gcmVwcmVzZW50IGEgbnVsbCB0ZXJtaW5hdGVkIGJ1ZmZlci4KICAgICAgICAgLCBtX2RhdGE4
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9sZW5ndGgpKQotICAgICAgICAsIG1f
aGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclVuaXF1ZShzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8
IEJ1ZmZlckludGVybmFsKSkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3NG
b3JTeW1ib2woc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkpCiAgICAgewog
ICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAKQEAgLTM3OCwxMiArMzk3LDEyIEBAIGNsYXNzIFN0
cmluZ0ltcGwgewogICAgICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8VD4ocmVzdWx0SW1w
bCwgbGVuZ3RoKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlVW5pcXVlRW1wdHkoKQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGVTeW1ib2xFbXB0eSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZUVtcHR5VW5pcXVlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sRW1wdHkpKTsKICAgICB9CiAK
LSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVV
bmlxdWUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApOworICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbChQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHJlcCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBsLiBUaGUgb3Jp
Z2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBQYXNzUmVmUHRyLAogICAgIC8v
IGFuZCB0aGUgYnVmZmVyIG93bmVyc2hpcCBtdXN0IGJlIEJ1ZmZlckludGVybmFsLiBKdXN0IGxp
a2UgdGhlIGlucHV0IHBvaW50ZXIgb2YgcmVhbGxvYygpLApAQCAtMzkzLDggKzQxMiw5IEBAIGNs
YXNzIFN0cmluZ0ltcGwgewogCiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdzT2Zmc2V0KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1faGFzaEFuZEZsYWdzKTsgfQogICAg
IHN0YXRpYyB1bnNpZ25lZCBmbGFnSXM4Qml0KCkgeyByZXR1cm4gc19oYXNoRmxhZzhCaXRCdWZm
ZXI7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzQXRvbWljKCkgeyByZXR1cm4gc19oYXNo
RmxhZ0lzQXRvbWljOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc1VuaXF1ZSgpIHsgcmV0
dXJuIHNfaGFzaEZsYWdJc1VuaXF1ZTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNBdG9t
aWMoKSB7IHJldHVybiBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOyB9CisgICAgc3RhdGlj
IHVuc2lnbmVkIGZsYWdJc1N5bWJvbCgpIHsgcmV0dXJuIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNT
eW1ib2w7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7IHJldHVybiBz
X2hhc2hNYXNrU3RyaW5nS2luZDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXI+CkBAIC00NTQsMTcgKzQ3NCwyMSBAQCBjbGFzcyBTdHJpbmdJbXBs
IHsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25z
dDsKIAotICAgIGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAm
IHNfaGFzaEZsYWdJc1VuaXF1ZTsgfQorICAgIFN0cmluZ0tpbmQgc3RyaW5nS2luZCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cmluZ0tpbmQ+KG1faGFzaEFuZEZsYWdzICYgc19oYXNo
TWFza1N0cmluZ0tpbmQpOyB9CisgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbDsgfQorICAgIGJvb2wg
aXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJp
bmdLaW5kSXNBdG9taWM7IH0KIAotICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBt
X2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdJc0F0b21pYzsgfQogICAgIHZvaWQgc2V0SXNBdG9t
aWMoYm9vbCBpc0F0b21pYykKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7Ci0g
ICAgICAgIEFTU0VSVCghaXNVbmlxdWUoKSk7Ci0gICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdJc0F0b21pYzsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgJj0gfnNfaGFzaEZsYWdJc0F0b21pYzsKKyAg
ICAgICAgQVNTRVJUKCFpc1N5bWJvbCgpKTsKKyAgICAgICAgaWYgKGlzQXRvbWljKSB7CisgICAg
ICAgICAgICBtX2hhc2hBbmRGbGFncyB8PSBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOwor
ICAgICAgICAgICAgQVNTRVJUKHN0cmluZ0tpbmQoKSA9PSBTdHJpbmdBdG9taWMpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgJj0gfnNfaGFzaEZsYWdTdHJp
bmdLaW5kSXNBdG9taWM7CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5nS2luZCgpID09IFN0cmlu
Z05vcm1hbCk7CisgICAgICAgIH0KICAgICB9CiAKICNpZiBTVFJJTkdfU1RBVFMKQEAgLTcwNiw2
ICs3MzAsMTYgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIGNvbnN0IFVDaGFyIGxhdGluMUNhc2VGb2xkVGFibGVbMjU2XTsKIAorICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmdJbXBsJiBleHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1i
b2woKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKGlz
U3ltYm9sKCkpOworICAgICAgICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vi
c3RyaW5nKTsKKyAgICAgICAgQVNTRVJUKHN1YnN0cmluZ0J1ZmZlcigpKTsKKyAgICAgICAgQVNT
RVJUKCFzdWJzdHJpbmdCdWZmZXIoKS0+aXNTeW1ib2woKSk7CisgICAgICAgIHJldHVybiAqc3Vi
c3RyaW5nQnVmZmVyKCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNDb3B5
KCkgY29uc3QKICAgICB7CkBAIC03NzIsMjMgKzgwNiwxMiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
cmVhbGxvY2F0ZUludGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4sIHVuc2lnbmVkLCBDaGFy
VHlwZSomKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gY3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqLCB1bnNpZ25lZCk7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSB1bnNpZ25lZCBoYXNoU2xvd0Nhc2UoKSBj
b25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVuc2lnbmVkIGhhc2hBbmRGbGFn
c0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB1bnNpZ25lZCBoYXNoQW5kRmxhZ3NGb3JTeW1ib2wodW5zaWduZWQgZmxhZ3MpOwogCiAgICAg
Ly8gVGhlIGJvdHRvbSBiaXQgaW4gdGhlIHJlZiBjb3VudCBpbmRpY2F0ZXMgYSBzdGF0aWMgKGlt
bW9ydGFsKSBzdHJpbmcuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRGbGFn
SXNTdGF0aWNTdHJpbmcgPSAweDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291
bnRJbmNyZW1lbnQgPSAweDI7IC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlZiAvIGRlcmVmIHdpdGhv
dXQgZGlzdHVyYmluZyB0aGUgc3RhdGljIHN0cmluZyBmbGFnLgogCi0gICAgLy8gVGhlIGJvdHRv
bSA3IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2ZsYWdDb3VudCA9IDc7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sg
PSAoMXUgPDwgc19mbGFnQ291bnQpIC0gMTsKLSAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3Vu
dCA8PSBTdHJpbmdIYXNoZXI6OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3Vn
aF9iaXRzX2Zvcl9TdHJpbmdJbXBsX2ZsYWdzKTsKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2hhc2hGbGFnSXNVbmlxdWUgPSAxdSA8PCA2OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9IDF1IDw8IDU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHNfaGFzaEZsYWdJc0F0b21pYyA9IDF1IDw8IDQ7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0ID0gMXUgPDwgMzsKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc19oYXNoTWFza0J1ZmZlck93bmVyc2hpcCA9IDF1IHwgKDF1IDw8IDEpOwotCiAj
aWYgU1RSSU5HX1NUQVRTCiAgICAgV1RGX0VYUE9SVERBVEEgc3RhdGljIFN0cmluZ1N0YXRzIG1f
c3RyaW5nU3RhdHM7CiAjZW5kaWYKQEAgLTgwMyw3ICs4MjYsNyBAQCBjbGFzcyBTdHJpbmdJbXBs
IHsKIAogICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgbWltaWMgQ29uc3RydWN0RnJvbUxpdGVyYWwu
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxSZWZDb3VudCA9IHNfcmVm
Q291bnRJbmNyZW1lbnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxG
bGFncyA9IHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWw7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9IHNfaGFzaEZsYWc4Qml0QnVmZmVy
IHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWw7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2hhc2hTaGlmdCA9IHNfZmxhZ0NvdW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCmluZGV4IDY1YmI2NzIxZDc0M2ZhMTA0MWMyOTJiNjBmNGQw
MzI5MjgzZDhlNTEuLjM5NDVjNzNlMDA4Y2Q0MzdkYTU0OWExNWE1YWFiYjQ4NjUzMzZkMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcApAQCAtNDcsMTggKzQ3LDE4IEBAIFN0
cmluZ0ltcGwqIFN0cmluZ0ltcGw6OmVtcHR5KCkKICAgICByZXR1cm4gJmVtcHR5U3RyaW5nLmdl
dCgpOwogfQogCi0vLyBTZXQgdGhlIGhhc2ggZWFybHksIHNvIHRoYXQgYWxsIHVuaXF1ZSBTdHJp
bmdJbXBscyBoYXZlIGEgaGFzaCwKKy8vIFNldCB0aGUgaGFzaCBlYXJseSwgc28gdGhhdCBhbGwg
c3ltYm9sIFN0cmluZ0ltcGxzIGhhdmUgYSBoYXNoLAogLy8gYW5kIGRvbid0IHVzZSB0aGUgbm9y
bWFsIGhhc2hpbmcgYWxnb3JpdGhtIC0gdGhlIHVuaXF1ZSBuYXR1cmUgb2YgdGhlc2UKIC8vIGtl
eXMgbWVhbnMgdGhhdCB3ZSBkb24ndCBuZWVkIHRoZW0gdG8gbWF0Y2ggYW55IG90aGVyIHN0cmlu
ZyAoaW4gZmFjdCwKIC8vIHRoYXQncyBleGFjdGx5IHRoZSBvcG9zaXRlIG9mIHdoYXQgd2Ugd2Fu
dCEpLCBhbmQgdGhlIG5vcm1hbCBoYXNoIHdvdWxkCiAvLyBsZWFkIHRvIGxvdHMgb2YgY29uZmxp
Y3RzLgotdW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yVW5pcXVlKHVuc2lnbmVk
IGZsYWdzKQordW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yU3ltYm9sKHVuc2ln
bmVkIGZsYWdzKQogewotICAgIHN0YXRpYyB1bnNpZ25lZCBzX25leHRIYXNoQW5kRmxhZ3NGb3JV
bmlxdWUgPSAwOwotICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSArPSAxIDw8IHNfZmxh
Z0NvdW50OwotICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSB8PSAxIDw8IDMxOwotICAg
IHVuc2lnbmVkIGZsYWdzRm9yVW5pcXVlID0gKGZsYWdzICYgc19mbGFnTWFzaykgfCBzX2hhc2hG
bGFnSXNBdG9taWMgfCBzX2hhc2hGbGFnSXNVbmlxdWU7Ci0gICAgcmV0dXJuIHNfbmV4dEhhc2hB
bmRGbGFnc0ZvclVuaXF1ZSB8IGZsYWdzRm9yVW5pcXVlOworICAgIHN0YXRpYyB1bnNpZ25lZCBz
X25leHRIYXNoQW5kRmxhZ3NGb3JTeW1ib2wgPSAwOworICAgIHNfbmV4dEhhc2hBbmRGbGFnc0Zv
clN5bWJvbCArPSAxIDw8IHNfZmxhZ0NvdW50OworICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclN5
bWJvbCB8PSAxIDw8IDMxOworICAgIHVuc2lnbmVkIGZsYWdzRm9yU3ltYm9sID0gKChmbGFncyAm
IHNfZmxhZ01hc2spICYgKH5zX2hhc2hNYXNrU3RyaW5nS2luZCkpIHwgU3RyaW5nU3ltYm9sOwor
ICAgIHJldHVybiBzX25leHRIYXNoQW5kRmxhZ3NGb3JTeW1ib2wgfCBmbGFnc0ZvclN5bWJvbDsK
IH0KIAogV1RGX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIG51bGxBdG9t
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCmluZGV4IDdlYTdjYmFhYTdlN2ZlNzdiZjAyOTI3NmZk
Y2E3YTI2MzU5YjEwNGYuLmFjNzRmZjYxMjJmZDk2OTI0ZGYzNDMzYzkzM2E3ZjdjNjNjOWU5MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIFF1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCkK
ICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwog
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgCi0gICAgSlNDOjpKU1ZhbHVl
IHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50
aWZpZXIoZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOworICAgIEpTQzo6SlNWYWx1
ZSByZXBsYWNlbWVudEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKICAg
ICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIApAQCAtMTg2LDcgKzE4Niw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290KQogICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgCiAgICAgLy8gTG9va3VwIHRoZSAiY3JlYXRlUGx1
Z2luUmVwbGFjZW1lbnQiIGZ1bmN0aW9uLgotICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVudEZ1
bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJj
cmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRG
dW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7CiAgICAgaWYgKHJlcGxhY2Vt
ZW50RnVuY3Rpb24uaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIEpTQzo6SlNPYmplY3QqIHJlcGxhY2VtZW50T2JqZWN0ID0gcmVwbGFjZW1lbnRGdW5jdGlv
bi50b09iamVjdChleGVjKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBib29sIFF1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9vdCkKICAgICB9
CiAKICAgICAvLyBHZXQgdGhlIDx2aWRlbz4gY3JlYXRlZCB0byByZXBsYWNlIHRoZSBwbHVnLWlu
LgotICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHJlcGxhY2VtZW50LmdldChleGVjLCBKU0M6Oklk
ZW50aWZpZXIoZXhlYywgInZpZGVvIikpOworICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHJlcGxh
Y2VtZW50LmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZpZGVv
IikpOwogICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgIXZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCiAgICAgICAgIG1fbWVkaWFFbGVtZW50ID0gSlNIVE1MVmlkZW9FbGVtZW50Ojp0
b1dyYXBwZWQodmFsdWUpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAg
fQogCiAgICAgLy8gR2V0IHRoZSBzY3JpcHRpbmcgaW50ZXJmYWNlLgotICAgIHZhbHVlID0gcmVw
bGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAic2NyaXB0T2JqZWN0Iikp
OworICAgIHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAic2NyaXB0T2JqZWN0IikpOwogICAgIGlmICghZXhlYy0+aGFkRXhjZXB0
aW9uKCkgJiYgIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIG1fc2NyaXB0T2Jq
ZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5jcHAKaW5kZXggZGY0ZGM3ODYyZDJkYWFhOWYyYjY3NmQxZWQzMTcyYTJmM2Vh
ZmQyOS4uNGNkMDgzOGYzNjQyNTM4M2U4YzE4ODgyNjZmODIxMjFhMDBlNzViMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9v
bCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+JiBtYXApIGMKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RpY3Rpb25hcnku
ZXhlY1N0YXRlKCk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMp
OwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgSlNPYmplY3Q6OmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJy
YXk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9w
ZXJ0eU5hbWVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+
c3RyaW5nKCk7CiAgICAgICAgIGlmIChzdHJpbmdLZXkuaXNFbXB0eSgpKQpAQCAtODgsNyArODgs
NyBAQCBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMoVmVjdG9yPFN0cmluZz4m
IG5hbWVzKSBjb25zdAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGljdGlvbmFyeS5leGVjU3Rh
dGUoKTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAg
SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5TmFt
ZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0LT5zdHJpbmco
KTsKICAgICAgICAgaWYgKCFzdHJpbmdLZXkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBiYjUwMThjMTc5
OTJkNjBkMmVmMjRiZmVkNjgxMGIyMjQ3MTcyNzE2Li42ZjgwNjYxNGVhNGIwY2I0MTZhNTNmMjcy
OTJkOWNlZDk1Y2Y2OTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgYm9vbCBnZXQo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9iamVjdCwgY29uc3QgU3RyaW5nJiBrZXlQYXRoRWxl
bWVudCwgSgogICAgIH0KICAgICBpZiAoIW9iamVjdC5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZleGVjLT52bSgpLCBrZXlQYXRo
RWxlbWVudC51dGY4KCkuZGF0YSgpKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLT52bSgpLCBrZXlQYXRoRWxlbWVudC51dGY4KCkuZGF0
YSgpKTsKICAgICBpZiAoIWFzT2JqZWN0KG9iamVjdCktPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50
aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0ID0gYXNPYmplY3Qob2Jq
ZWN0KS0+Z2V0KGV4ZWMsIGlkZW50aWZpZXIpOwpAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgYm9v
bCBzZXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlJiBvYmplY3QsIGNvbnN0IFN0cmluZyYga2V5
UGF0aEVsZW1lbnQsCiB7CiAgICAgaWYgKCFjYW5TZXQob2JqZWN0LCBrZXlQYXRoRWxlbWVudCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJmV4ZWMt
PnZtKCksIGtleVBhdGhFbGVtZW50LnV0ZjgoKS5kYXRhKCkpOworICAgIElkZW50aWZpZXIgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksIGtleVBhdGhFbGVt
ZW50LnV0ZjgoKS5kYXRhKCkpOwogICAgIGFzT2JqZWN0KG9iamVjdCktPnB1dERpcmVjdChleGVj
LT52bSgpLCBpZGVudGlmaWVyLCBqc1ZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRp
b25DdXN0b20uY3BwCmluZGV4IDg5NmI5OWNlOTFiNzJjNmNmZTgwMmIxN2NiZDA3MGYyNDVkNGE0
N2QuLmNmOGM2YmFlNzVlNGE3ZDVkOTNiNzc0YzViNjQ1NzRmNGRhYWExNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcApAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiAK
ICAgICAgICAgcHJvcGVydHlJZGVudGlmaWVycyA9IG5ldyBJZGVudGlmaWVyW251bUNTU1Byb3Bl
cnRpZXNdOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsr
aSkKLSAgICAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnNbaV0gPSBJZGVudGlmaWVyKGV4ZWMs
IGpzUHJvcGVydHlOYW1lc1tpXS5pbXBsKCkpOworICAgICAgICAgICAgcHJvcGVydHlJZGVudGlm
aWVyc1tpXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywganNQcm9wZXJ0eU5hbWVzW2ld
KTsKICAgICB9CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsr
aSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAppbmRl
eCBlMWQ3MjVmOGM2ZDExMTM0MTIxNWUxMGJkZDdhYjY3MjdlNzRlYWQ0Li40NTFkYWM2MjMxM2Iy
MzNhZGY2NWQ4ZjcwYmFiMzFjMzgzNjU5N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCkBAIC02MCw3ICs2MCw3IEBAIEpTVmFsdWUgSlNDYWxs
YmFja0RhdGE6Omludm9rZUNhbGxiYWNrKEpTVmFsdWUgdGhpc1ZhbHVlLCBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciYKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGNhbGxiYWNrKCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGNhbGxiYWNrKCksIGNhbGxE
YXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAgIGZ1bmN0
aW9uID0gY2FsbGJhY2soKS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2ZW50
IikpOworICAgICAgICBmdW5jdGlvbiA9IGNhbGxiYWNrKCktPmdldChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKICAgICAgICAgY2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9t
LmNwcAppbmRleCBkYTUyY2VjMmNmZGNjNzZhMWNkNDBkMmU0NWFlMDk1NjQ2NWUxZjc2Li44ZDJk
MDIwNjRlNTdlYWE0NzgxODBiYjhlNDViZDMwMDRlOGYzMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3Bw
CkBAIC04OSw4ICs4OSw4IEBAIHN0YXRpYyBKU0FycmF5KiBnZXRKU0xpc3RlbmVyRnVuY3Rpb25z
KEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICBKU09iamVjdCogbGlzdGVuZXJFbnRyeSA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICBsaXN0ZW5lckVudHJ5LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCAibGlzdGVuZXIiKSwgZnVuY3Rpb24pOwotICAgICAgICBs
aXN0ZW5lckVudHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAidXNl
Q2FwdHVyZSIpLCBqc0Jvb2xlYW4obGlzdGVuZXJJbmZvLmV2ZW50TGlzdGVuZXJWZWN0b3JbaV0u
dXNlQ2FwdHVyZSkpOworICAgICAgICBsaXN0ZW5lckVudHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGlzdGVuZXIiKSwgZnVuY3Rpb24pOwor
ICAgICAgICBsaXN0ZW5lckVudHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAidXNlQ2FwdHVyZSIpLCBqc0Jvb2xlYW4obGlzdGVuZXJJbmZvLmV2
ZW50TGlzdGVuZXJWZWN0b3JbaV0udXNlQ2FwdHVyZSkpOwogICAgICAgICByZXN1bHQtPnB1dERp
cmVjdEluZGV4KGV4ZWMsIG91dHB1dEluZGV4KyssIEpTVmFsdWUobGlzdGVuZXJFbnRyeSkpOwog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTE4LDcgKzExOCw3IEBAIEpTVmFsdWUgSlND
b21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgaWYgKCFsaXN0ZW5lcnMtPmxlbmd0aCgpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBsaXN0ZW5lcnNBcnJheVtpXS5ldmVudFR5
cGU7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhl
YywgZXZlbnRUeXBlLmltcGwoKSksIEpTVmFsdWUobGlzdGVuZXJzKSk7CisgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgZXZl
bnRUeXBlLmltcGwoKSksIEpTVmFsdWUobGlzdGVuZXJzKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
QWxnb3JpdGhtQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwCmluZGV4IDA4MTBiYzgxZTlhMDVlZWFkZWVmNGYwZTY2OTk0
ZDIxYjkzNTNhYTcuLmE5ZjM3MjY1NzBlMjg5NGFiYTYxZTg1Y2MwOWYwOWMxNDhiMThmOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0
aG1CdWlsZGVyLmNwcApAQCAtNTYsMjEgKzU2LDIxIEBACiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGht
QnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwgdW5zaWduZWQgdmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gbV9leGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
IGtleSk7CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzTnVt
YmVyKHZhbHVlKSk7CiB9CiAKIHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29u
c3QgY2hhcioga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIFZNJiB2bSA9IG1fZXhl
Yy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50
aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAg
IG1fZGljdGlvbmFyeS0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc1N0cmluZyhtX2V4ZWMs
IHZhbHVlKSk7CiB9CiAKIHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3Qg
Y2hhcioga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKIHsKICAgICBWTSYgdm0g
PSBtX2V4ZWMtPnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAg
ICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5
KTsKICAgICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXlWaWV3ID0gVWludDhBcnJheTo6Y3JlYXRl
KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogICAgIG1fZGljdGlvbmFyeS0+cHV0RGly
ZWN0KHZtLCBpZGVudGlmaWVyLCBhcnJheVZpZXctPndyYXAobV9leGVjLCB2bS5lbnRyeVNjb3Bl
LT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEpTQ3J5cHRvQWxn
b3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBidWZmZQogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBr
ZXksIGNvbnN0IENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlciYgbmVzdGVkQnVpbGRl
cikKIHsKICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlm
aWVyKCZ2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwga2V5KTsKICAgICBjb25zdCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIm
IGpzQnVpbGRlciA9IHN0YXRpY19jYXN0PGNvbnN0IEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlciY+
KG5lc3RlZEJ1aWxkZXIpOwogICAgIG1fZGljdGlvbmFyeS0+cHV0RGlyZWN0KHZtLCBpZGVudGlm
aWVyLCBqc0J1aWxkZXIucmVzdWx0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKaW5kZXggNjRk
NTZkOTcwYTc0ZTVkYzFhZWFhMzg1OTViNTZiZDFlNjM0NmZlMi4uNGFlNmFlNTA2MjQ2ZTM5ZmJm
Y2M1MmQzNzBjMDY2Zjg5Y2UwM2M4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCkBAIC04OSw3ICs4
OSw3IEBAIGJvb2wgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVu
dGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1CiAKIHN0YXRpYyBKU1ZhbHVlIGdldFByb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgY29uc3QgY2hhciogbmFtZSkK
IHsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoZXhlYywgbmFtZSk7CisgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBuYW1lKTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogCiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBi
b29sIGdldEhhc2hBbGdvcml0aG0oSlNEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5LCBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZGljdGlvbmFyeS5leGVjU3Rh
dGUoKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gZGljdGlvbmFyeS5pbml0aWFsaXplck9iamVj
dCgpOwogCi0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsICJoYXNoIik7CisgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiaGFzaCIp
OwogICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAKICAgICBKU1ZhbHVlIGhhc2ggPSBn
ZXRQcm9wZXJ0eShleGVjLCBvYmplY3QsICJoYXNoIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAppbmRl
eCBmYmIzOTdlNGI1YTIzMGY0NDQxOGQ2M2RhZjc3M2Q1MmE5OWQ3YTQ2Li44MzUwNTdiODM3ZDFi
NmM3MWUxZTBhZjdiNjM4MDgzMDI2ZTgyOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAKIAogc3RhdGljIGJvb2wgZ2V0SlNBcnJheUZyb21KU09OKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgSlNBcnJheSomIHJlc3VsdCkK
IHsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoZXhlYywga2V5KTsKKyAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJv
cGVydHlTbG90IHNsb3QoanNvbik7CiAKICAgICBpZiAoIWpzb24tPmdldFByb3BlcnR5U2xvdChl
eGVjLCBpZGVudGlmaWVyLCBzbG90KSkKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGJvb2wgZ2V0
SlNBcnJheUZyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNo
YXIqIGtleSwKIAogc3RhdGljIGJvb2wgZ2V0U3RyaW5nRnJvbUpTT04oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAg
ICBJZGVudGlmaWVyIGlkZW50aWZpZXIoZXhlYywga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJvcGVydHlT
bG90IHNsb3QoanNvbik7CiAKICAgICBpZiAoIWpzb24tPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudGlmaWVyLCBzbG90KSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5n
RnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5
LAogCiBzdGF0aWMgYm9vbCBnZXRCb29sZWFuRnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBib29sJiByZXN1bHQpCiB7Ci0gICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90
KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRpZmll
ciwgc2xvdCkpCkBAIC01MDEsNyArNTAxLDcgQEAgYm9vbCBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6OmtleVNpemVJc1ZhbGlkKHNpemVfdCBzaXplSW5CaXRzKSBjb25zdAogc3RhdGljIHZv
aWQgYWRkVG9KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIq
IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAganNvbi0+cHV0
RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc1N0cmluZyhleGVjLCB2YWx1ZSkpOwogfQogCkBAIC01
NDIsMTMgKzU0MiwxMyBAQCBzdGF0aWMgdm9pZCBidWlsZEpTT05Gb3JSU0FDb21wb25lbnRzKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXlEYXRhUgogICAgICAgICBhZGRUb0pT
T04oZXhlYywganNQcmltZUluZm8sICJ0IiwgYmFzZTY0VVJMRW5jb2RlKGRhdGEub3RoZXJQcmlt
ZUluZm9zKClbaV0uZmFjdG9yQ1JUQ29lZmZpY2llbnQpKTsKICAgICAgICAgb3RoLT5wdXREaXJl
Y3RJbmRleChleGVjLCBpLCBqc1ByaW1lSW5mbyk7CiAgICAgfQotICAgIHJlc3VsdC0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIm90aCIpLCBvdGgpOworICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm90
aCIpLCBvdGgpOwogfQogCiBzdGF0aWMgdm9pZCBhZGRCb29sVG9KU09OKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgYm9vbCB2YWx1ZSkKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
IGtleSk7CiAgICAganNvbi0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc0Jvb2xlYW4odmFs
dWUpKTsKIH0KIApAQCAtNjc1LDcgKzY3NSw3IEBAIHN0YXRpYyB2b2lkIGFkZFVzYWdlc1RvSlNP
TihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBDcnlwdG9LZXlVc2FnZSB1c2FnCiAg
ICAgaWYgKHVzYWdlcyAmIENyeXB0b0tleVVzYWdlRGVyaXZlQml0cykKICAgICAgICAga2V5T3Bz
LT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCsrLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
QVNDSUlMaXRlcmFsKCJkZXJpdmVCaXRzIikpKTsKIAotICAgIGpzb24tPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJrZXlfb3BzIiksIGtleU9wcyk7CisgICAganNvbi0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleV9v
cHMiKSwga2V5T3BzKTsKIH0KIAogU3RyaW5nIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6
c2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ3J5cHRvS2V5JiBrZXkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5j
cHAKaW5kZXggNzgzNjY4MTkwMmZjM2IyNDBiYWEwZTVlYThlNjZmNGQxYjBkMmY2ZC4uNTRlYjMz
MTE2M2RlNjhjOTY3YTFiNGMzYzE5ZTY1YmY1ZDRjNDljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtNzQs
NyArNzQsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFj
ZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIAotICAgIEpTVmFsdWUgZnVuY3Rpb24g
PSBtX2N1c3RvbVJlc29sdmVyLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAibG9va3VwTmFt
ZXNwYWNlVVJJIikpOworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBtX2N1c3RvbVJlc29sdmVyLT5n
ZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibG9va3VwTmFtZXNwYWNlVVJJ
IikpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVOb25lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0
cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmlu
Z01hcEN1c3RvbS5jcHAKaW5kZXggM2FmYWFlMjM0MDc3NDlhYzdhOWYyNzIwZjNmODk3ZjBiZTU3
Y2RlNy4uNTI1OThjZWMyNDc1ZjE2YWJjZDkxODE3YTBjODM2MWJmNWNmYzA5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcApA
QCAtNTMsNyArNTMsNyBAQCB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAgIHRoaXNPYmplY3Qt
Pm1faW1wbC0+Z2V0TmFtZXMobmFtZXMpOwogICAgIHNpemVfdCBsZW5ndGggPSBuYW1lcy5zaXpl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBuYW1lc1tpXSkpOworICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG5hbWVzW2ldKSk7CiAK
ICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCmluZGV4IDQ4ZjgxODQ1MjI3NjgyMGFhYWUxZmE0ODNjZjQ3ZTQ4NDE2
MGI3NTIuLjI3MWU4MmY0ZWJjZWNjMDQ2YzQ3OTU3YmI3Zjk4MDY0MDliM2VmOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQy
OCw3ICs0MjgsNyBAQCBib29sIEpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpT
T2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBEb24ndCBhbGxvdyBzaGFkb3dpbmcgbG9jYXRpb24gdXNpbmcgYWNjZXNz
b3IgcHJvcGVydGllcy4KLSAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigp
ICYmIHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpKQorICAgIGlm
IChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgcHJvcGVydHlOYW1lID09IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvY2F0aW9uIikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKQEAgLTQ0NCw3ICs0
NDQsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCiAgICAgaWYgKEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZURPTVdpbmRv
dyhleGVjKS5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChhY3RpdmVGcmFtZS0+c2V0dGluZ3MoKS51
c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpICYmICFhY3RpdmVGcmFtZS0+
dHJlZSgpLnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGltcGwoKSkpCi0gICAgICAgICAgICAgICAg
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9uIiksIHZhbHVl
KTsKKyAgICAgICAgICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAibG9jYXRpb24iKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNTI2LDcgKzUyNiw3IEBAIGlubGluZSB2b2lkIERpYWxvZ0hh
bmRsZXI6OmRpYWxvZ0NyZWF0ZWQoRE9NV2luZG93JiBkaWFsb2cpCiAgICAgLy8gICAgICAgIHdv
cmxkIGlmIGRpYWxvZ0FyZ3VtZW50cyBjb21lcyBmcm9tIGFuIGlzb2xhdGVkIHdvcmxkLgogICAg
IEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NV2luZG93KG1fZnJhbWUuZ2V0KCks
IG5vcm1hbFdvcmxkKG1fZXhlYy0+dm0oKSkpOwogICAgIGlmIChKU1ZhbHVlIGRpYWxvZ0FyZ3Vt
ZW50cyA9IG1fZXhlYy0+YXJndW1lbnQoMSkpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGly
ZWN0KG1fZXhlYy0+dm0oKSwgSWRlbnRpZmllcihtX2V4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwg
ZGlhbG9nQXJndW1lbnRzKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QobV9leGVj
LT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywgImRpYWxvZ0FyZ3VtZW50cyIp
LCBkaWFsb2dBcmd1bWVudHMpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBEaWFsb2dIYW5kbGVyOjpy
ZXR1cm5WYWx1ZSgpIGNvbnN0CkBAIC01MzQsNyArNTM0LDcgQEAgaW5saW5lIEpTVmFsdWUgRGlh
bG9nSGFuZGxlcjo6cmV0dXJuVmFsdWUoKSBjb25zdAogICAgIEpTRE9NV2luZG93KiBnbG9iYWxP
YmplY3QgPSB0b0pTRE9NV2luZG93KG1fZnJhbWUuZ2V0KCksIG5vcm1hbFdvcmxkKG1fZXhlYy0+
dm0oKSkpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIobV9leGVjLCAicmV0dXJuVmFsdWUiKTsK
KyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhl
YywgInJldHVyblZhbHVlIik7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBpZiAoIUpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0
LCBtX2V4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9u
RXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rp
b25FdmVudEN1c3RvbS5jcHAKaW5kZXggZmNhN2M3ZWQ2YWQ1ZDg3M2UwN2EyMDI3MzcxZTc2OGY2
ZTMyYmIzNy4uZWNiYjMzZWVmODc4YzVlNWYxZTAzYzlmOGI3NjYwM2UyY2IyMjA1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVu
dEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVz
dCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3QuCiAgICAgSlNPYmplY3QqIG9iamVj
dCA9IHZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogCi0gICAgSlNWYWx1ZSB4VmFsdWUgPSBvYmplY3Qt
PmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ4IikpOworICAgIEpTVmFsdWUgeFZhbHVlID0g
b2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieCIpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wg
Y2FuUHJvdmlkZVggPSAheFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC01Niw3ICs1Niw3
IEBACiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIEpTVmFsdWUgeVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAi
eSIpKTsKKyAgICBKU1ZhbHVlIHlWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgInkiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVZID0gIXlWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpOwpAQCAtNjQsNyArNjQsNyBAQAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlIHpWYWx1ZSA9IG9iamVjdC0+
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInoiKSk7CisgICAgSlNWYWx1ZSB6VmFsdWUgPSBv
YmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ6IikpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBj
YW5Qcm92aWRlWiA9ICF6VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTg2LDcgKzg2LDcg
QEAKICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBh
biBvYmplY3QuCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLnRvT2JqZWN0KGV4ZWMpOwog
Ci0gICAgSlNWYWx1ZSBhbHBoYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihl
eGVjLCAiYWxwaGEiKSk7CisgICAgSlNWYWx1ZSBhbHBoYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYWxwaGEiKSk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVB
bHBoYSA9ICFhbHBoYVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC05NCw3ICs5NCw3IEBA
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IEpTVmFsdWUgYmV0YVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAi
YmV0YSIpKTsKKyAgICBKU1ZhbHVlIGJldGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImJldGEiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVCZXRhID0gIWJl
dGFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEpTVmFsdWUg
Z2FtbWFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImdhbW1hIikp
OworICAgIEpTVmFsdWUgZ2FtbWFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgImdhbW1hIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlR2FtbWEgPSAhZ2FtbWFW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtMTE5LDE4ICsxMTksMTggQEAKIHN0YXRpYyBK
U09iamVjdCogY3JlYXRlQWNjZWxlcmF0aW9uT2JqZWN0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6
OkFjY2VsZXJhdGlvbiogYWNjZWxlcmF0aW9uLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIG9iamVjdC0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIngiKSwgYWNjZWxlcmF0aW9u
LT5jYW5Qcm92aWRlWCgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT54KCkpIDoganNOdWxsKCkp
OwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInki
KSwgYWNjZWxlcmF0aW9uLT5jYW5Qcm92aWRlWSgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT55
KCkpIDoganNOdWxsKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXIoZXhlYywgInoiKSwgYWNjZWxlcmF0aW9uLT5jYW5Qcm92aWRlWigpID8ganNOdW1iZXIo
YWNjZWxlcmF0aW9uLT56KCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIngiKSwgYWNjZWxlcmF0aW9u
LT5jYW5Qcm92aWRlWCgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT54KCkpIDoganNOdWxsKCkp
OworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgInkiKSwgYWNjZWxlcmF0aW9uLT5jYW5Qcm92aWRlWSgpID8ganNOdW1iZXIoYWNj
ZWxlcmF0aW9uLT55KCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInoiKSwgYWNjZWxlcmF0aW9uLT5j
YW5Qcm92aWRlWigpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT56KCkpIDoganNOdWxsKCkpOwog
ICAgIHJldHVybiBvYmplY3Q7CiB9CiAKIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUm90YXRpb25S
YXRlT2JqZWN0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZSogcm90YXRpb25S
YXRlLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXIoZXhlYywgImFscGhhIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUFscGhhKCkg
PyBqc051bWJlcihyb3RhdGlvblJhdGUtPmFscGhhKCkpIDoganNOdWxsKCkpOwotICAgIG9iamVj
dC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImJldGEiKSwgIHJvdGF0
aW9uUmF0ZS0+Y2FuUHJvdmlkZUJldGEoKSAgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmJldGEo
KSkgIDoganNOdWxsKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXIoZXhlYywgImdhbW1hIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUdhbW1hKCkgPyBq
c051bWJlcihyb3RhdGlvblJhdGUtPmdhbW1hKCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFscGhh
IiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUFscGhhKCkgPyBqc051bWJlcihyb3RhdGlvblJh
dGUtPmFscGhhKCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImJldGEiKSwgIHJvdGF0aW9uUmF0ZS0+
Y2FuUHJvdmlkZUJldGEoKSAgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmJldGEoKSkgIDoganNO
dWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImdhbW1hIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUdhbW1hKCkg
PyBqc051bWJlcihyb3RhdGlvblJhdGUtPmdhbW1hKCkpIDoganNOdWxsKCkpOwogICAgIHJldHVy
biBvYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnku
Y3BwCmluZGV4IDIwZDhmODNjZDBlNDlhYTZhMDRjM2Y2N2JjOGQyNWVlMjNiZjk4ZjAuLmU5ODQ5
MDllNzZiMjU5NDBkYTllZWNkMGQ5NjU5OWUwZThmNmY1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcApAQCAtNjMsNyArNjMsNyBAQAogSlNEaWN0aW9u
YXJ5OjpHZXRQcm9wZXJ0eVJlc3VsdCBKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KGNvbnN0
IGNoYXIqIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgZmluYWxSZXN1bHQpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGlzVmFsaWQoKSk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKG1fZXhlYywgcHJv
cGVydHlOYW1lKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKG1fZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChtX2lu
aXRpYWxpemVyT2JqZWN0LmdldCgpKTsKIAogICAgIGlmICghbV9pbml0aWFsaXplck9iamVjdC5n
ZXQoKS0+Z2V0UHJvcGVydHlTbG90KG1fZXhlYywgaWRlbnRpZmllciwgc2xvdCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCA5NTliMjM2
Njc0M2Q3OWY2M2IwYWFjMWJhYzgxMmJkMWJmZDU0OGNiLi41MmE1NzI4OTQ0NzNhMWFiNTNlOTY5
ZTI3MjdkZjcxMjE3YWNkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5l
cjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dAogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaGFuZGxlRXZlbnRGdW5j
dGlvbiwgY2FsbERhdGEpOwogICAgIC8vIElmIGpzRnVuY3Rpb24gaXMgbm90IGFjdHVhbGx5IGEg
ZnVuY3Rpb24sIHNlZSBpZiBpdCBpbXBsZW1lbnRzIHRoZSBFdmVudExpc3RlbmVyIGludGVyZmFj
ZSBhbmQgdXNlIHRoYXQKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAg
ICAgIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9uLT5nZXQoZXhlYywgSWRlbnRpZmll
cihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgICAgIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBq
c0Z1bmN0aW9uLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiaGFuZGxl
RXZlbnQiKSk7CiAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaGFuZGxlRXZlbnRGdW5j
dGlvbiwgY2FsbERhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA4MTIyNTA3YjRm
YmM2OGUxMjNmNjcyZmEzMTA4OGE1MmNhNzBlOTY1Li4zZWJhNDIxYmM3MzQxNzczYWM4ZjZhYTZi
MTIxZWFjZDFlODJhN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24oRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4
ZWMsIGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24uaXRlbShpbmRleCkp
KTsKIAogICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5pbWFnZXMoJzxuYW1lPicpIGV0
Yy4KLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuYW1lZEl0ZW1zKGV4ZWMsIGpzQ29s
bGVjdGlvbiwgSWRlbnRpZmllcihleGVjLCBzdHJpbmcpKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUobmFtZWRJdGVtcyhleGVjLCBqc0NvbGxlY3Rpb24sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgc3RyaW5nKSkpOwogICAgIH0KIAogICAgIC8vIFRoZSBzZWNvbmQgYXJn
LCBpZiBzZXQsIGlzIHRoZSBpbmRleCBvZiB0aGUgaXRlbSB3ZSB3YW50CkBAIC0xMDYsMTIgKzEw
NiwxMiBAQCBKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Oml0ZW0oRXhlY1N0YXRlKiBleGVj
KQogICAgIHVpbnQzMl90IGluZGV4ID0gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykuaW1wbCgpKTsKICAgICBpZiAoaW5k
ZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KQogICAgICAgICByZXR1cm4gdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLml0ZW0oaW5kZXgpKTsKLSAgICByZXR1cm4gbmFtZWRJ
dGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIHJldHVybiBuYW1lZEl0ZW1zKGV4ZWMsIHRo
aXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gbmFt
ZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0
ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CiAgICAgcmV0dXJuIHZhbHVlLmlz
VW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggM2FkOWE0NzI5
MDM0Y2RkMDc3NjlmN2NlNjBjN2RlZjJiMWM5MDk1Mi4uNmQzOWM0NTlkN2QyNTU1NGE5N2RlNGRi
NzI0ZDMxNjVjMjkzM2RiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFCiBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjphbGwoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAogewogICAgIC8vIElmICJhbGwiIGhhcyBiZWVuIG92ZXJ3cml0dGVuLCByZXR1cm4g
dGhlIG92ZXJ3cml0dGVuIHZhbHVlCi0gICAgSlNWYWx1ZSB2ID0gZ2V0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXIoZXhlYywgImFsbCIpKTsKKyAgICBKU1ZhbHVlIHYgPSBnZXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYWxsIikpOwogICAgIGlm
ICh2KQogICAgICAgICByZXR1cm4gdjsKIApAQCAtMTIzLDcgKzEyMyw3IEBAIEpTVmFsdWUgSlNI
VE1MRG9jdW1lbnQ6OmFsbChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB2b2lkIEpTSFRNTERvY3Vt
ZW50OjpzZXRBbGwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIC8vIEFk
ZCAiYWxsIiB0byB0aGUgcHJvcGVydHkgbWFwLgotICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJhbGwiKSwgdmFsdWUpOworICAgIHB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbGwiKSwgdmFsdWUpOwogfQogCiBzdGF0
aWMgRG9jdW1lbnQqIGZpbmRDYWxsaW5nRG9jdW1lbnQoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTQ2
LDcgKzE0Niw3IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1wbCgpLmZyYW1lKCkpIHsKICAgICAgICAg
ICAgIEpTRE9NV2luZG93U2hlbGwqIHdyYXBwZXIgPSB0b0pTRE9NV2luZG93U2hlbGwoZnJhbWUs
IGN1cnJlbnRXb3JsZChleGVjKSk7CiAgICAgICAgICAgICBpZiAod3JhcHBlcikgewotICAgICAg
ICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB3cmFwcGVyLT5nZXQoZXhlYywgSWRlbnRpZmll
cihleGVjLCAib3BlbiIpKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gd3Jh
cHBlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm9wZW4iKSk7CiAg
ICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICAgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSA6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHAKaW5kZXggMjg2N2Q2MGYyYTAyNjI3ZjA3Y2QwMGEzNDBlNTljNzgxMTI0
ZDk4My4uMjg0ODk3MTJhN2Y2Y2NjNDk5MDdhNmFmYjMxNWRjNWZkN2M4Y2RjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWMKIAogSlNWYWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1l
ZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1z
KGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoZXhl
YywgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKICAgICByZXR1cm4gdmFsdWUuaXNVbmRlZmlu
ZWQoKSA/IGpzTnVsbCgpIDogdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKaW5kZXggZTZhMTQwZjU0NTg0OWI4YWE2
NDk0N2UwZDY2N2Y4ODM2ZjRjOWFlYS4uYTI1ZGNhOTkxOGMzYWUyZWU3NmExODA1YTIwZDBiMTBi
ZGFmMTlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSURCS2V5UGF0aCBrZXlQYXRo
OwogICAgIGJvb2wgYXV0b0luY3JlbWVudCA9IGZhbHNlOwogICAgIGlmICghb3B0aW9uc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgSlNWYWx1ZSBrZXlQYXRoVmFsdWUgPSBv
cHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImtleVBhdGgiKSk7CisgICAg
ICAgIEpTVmFsdWUga2V5UGF0aFZhbHVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJrZXlQYXRoIikpOwogICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtNzAs
NyArNzAsNyBAQCBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGF1dG9JbmNyZW1lbnQgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgImF1dG9JbmNyZW1lbnQiKSkudG9Cb29sZWFuKGV4ZWMpOworICAgICAg
ICBhdXRvSW5jcmVtZW50ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJhdXRvSW5jcmVtZW50IikpLnRvQm9vbGVhbihleGVjKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJP
YmplY3RTdG9yZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9i
amVjdFN0b3JlQ3VzdG9tLmNwcAppbmRleCAwNDA0NGQzNWQzOTU5YzVmMThjZjJiZDViMzU1M2Jh
ODJkODM1ZWVjLi44NTA3ZTQ5NGEzNzZkYjc5OWU1NmZiZWU4YmQxY2M2ZDlkMTY3ODI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3Vz
dG9tLmNwcApAQCAtNjcsMTEgKzY3LDExIEBAIEpTVmFsdWUgSlNJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgoRXhlY1N0YXRlKiBleGVjKQogICAgIGJvb2wgdW5pcXVlID0gZmFsc2U7CiAgICAg
Ym9vbCBtdWx0aUVudHJ5ID0gZmFsc2U7CiAgICAgaWYgKCFvcHRpb25zVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkgewotICAgICAgICB1bmlxdWUgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgInVuaXF1ZSIpKS50b0Jvb2xlYW4oZXhlYyk7CisgICAgICAgIHVuaXF1
ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
dW5pcXVlIikpLnRvQm9vbGVhbihleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICAgICAgbXVsdGlF
bnRyeSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAibXVsdGlFbnRy
eSIpKS50b0Jvb2xlYW4oZXhlYyk7CisgICAgICAgIG11bHRpRW50cnkgPSBvcHRpb25zVmFsdWUu
Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm11bHRpRW50cnkiKSkudG9C
b29sZWFuKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggMDVjMGNkOTkyNTY5NWQxMDk1
ZjNlZDRjOWQzMmE1NTQzNDVlM2E4Yi4uNWViNmQ1OGMyNmNjMjkwZjg5ZGU5Nzc2NGZmYzE5Mzdl
MDM3MGQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURh
dGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRh
Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEqIGltYWdlRAogICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKICAgICAKICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQ
UEVSKGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhLCBpbWFnZURhdGEpOwotICAgIElkZW50aWZpZXIg
ZGF0YU5hbWUoZXhlYywgImRhdGEiKTsKKyAgICBJZGVudGlmaWVyIGRhdGFOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiZGF0YSIpOwogICAgIHdyYXBwZXItPnB1dERpcmVjdChl
eGVjLT52bSgpLCBkYXRhTmFtZSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGltYWdlRGF0YS0+
ZGF0YSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAvLyBGSVhNRTogQWRvcHQgcmVw
b3J0RXh0cmFNZW1vcnlWaXNpdGVkLCBhbmQgc3dpdGNoIHRvIHJlcG9ydEV4dHJhTWVtb3J5QWxs
b2NhdGVkLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDI1OTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9y
RnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5z
cGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRleCBkODZhNDgwYjBjMzgwNmJkZTY3ZTlk
YjRhNjY3NDI4MjY2OWFmZjY2Li44NTUwZWI0NTNmOTNmY2FhYmIzMTM2MDRhYzU0MmZjN2I3NTQ2
NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZy
b250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC04NiwxMiArODYsMTIgQEAgc3RhdGlj
IHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSog
YXJyYXksIENvbnRleHRNZW4KIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5s
ZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBpdGVtID0gYXNPYmplY3QoYXJyYXkt
PmdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAgSlNWYWx1ZSBsYWJlbCA9IGl0ZW0tPmdldChl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsICJsYWJlbCIpKTsKLSAgICAgICAgSlNWYWx1ZSB0eXBlID0g
aXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInR5cGUiKSk7Ci0gICAgICAgIEpTVmFs
dWUgaWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaWQiKSk7Ci0gICAgICAg
IEpTVmFsdWUgZW5hYmxlZCA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJlbmFi
bGVkIikpOwotICAgICAgICBKU1ZhbHVlIGNoZWNrZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRp
ZmllcihleGVjLCAiY2hlY2tlZCIpKTsKLSAgICAgICAgSlNWYWx1ZSBzdWJJdGVtcyA9IGl0ZW0t
PmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJzdWJJdGVtcyIpKTsKKyAgICAgICAgSlNWYWx1
ZSBsYWJlbCA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJs
YWJlbCIpKTsKKyAgICAgICAgSlNWYWx1ZSB0eXBlID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgInR5cGUiKSk7CisgICAgICAgIEpTVmFsdWUgaWQgPSBpdGVt
LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiaWQiKSk7CisgICAgICAg
IEpTVmFsdWUgZW5hYmxlZCA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJlbmFibGVkIikpOworICAgICAgICBKU1ZhbHVlIGNoZWNrZWQgPSBpdGVtLT5nZXQo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY2hlY2tlZCIpKTsKKyAgICAgICAg
SlNWYWx1ZSBzdWJJdGVtcyA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJzdWJJdGVtcyIpKTsKICAgICAgICAgaWYgKCF0eXBlLmlzU3RyaW5nKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCA2ZGRlNTEwYzQzMjU1MjZjZDI3OTc5YjgyMmI3
MTI0NjEyNzUzYmQ0Li5jMzFhZGFmNzcxNjJiODJhODlkN2I0M2Q3NTdkZWZjMjU5NzQzMTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVy
LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEpTT2JqZWN0KiBKU0xhenlFdmVudExpc3RlbmVyOjpp
bml0aWFsaXplSlNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjCiAgICAgYXJn
cy5hcHBlbmQoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIG1fZXZlbnRQYXJhbWV0ZXJOYW1lKSk7
CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgbV9jb2RlKSk7CiAKLSAg
ICBKU09iamVjdCoganNGdW5jdGlvbiA9IGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5h
YmxlZENoZWNrKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJncywgSWRlbnRp
ZmllcihleGVjLCBtX2Z1bmN0aW9uTmFtZSksIG1fc291cmNlVVJMLCBtX3Bvc2l0aW9uKTsgLy8g
RklYTUU6IGlzIGdsb2JhbEV4ZWMgb2s/CisgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBjb25z
dHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGFyZ3MsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbV9mdW5j
dGlvbk5hbWUpLCBtX3NvdXJjZVVSTCwgbV9wb3NpdGlvbik7IC8vIEZJWE1FOiBpcyBnbG9iYWxF
eGVjIG9rPwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICByZXBvcnRD
dXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlv
bi5jcHAKaW5kZXggNzE3MjZiYmYxYjFlYjY3MWUxYTZiNGVkNDgyYzYxZTJiNThhYmNhMy4uN2I0
MTE5YTVhNWQwYjcyODlmM2UxMzY4ZDkxMGQ3NmE3OThkOGI3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCkBAIC01Miw3
ICs1Miw3IEBAIHNob3J0IEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgTm9kZSogZmlsdGVyTm9kZSkKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZpbHRlciwgY2FsbERhdGEpOwog
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgZmlsdGVyID0gZmls
dGVyLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhY2NlcHROb2RlIikpOworICAgICAgICBm
aWx0ZXIgPSBmaWx0ZXIuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFj
Y2VwdE5vZGUiKSk7CiAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZmlsdGVyLCBjYWxs
RGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJOb2RlRmlsdGVyIG9iamVjdCBkb2VzIG5vdCBoYXZlIGFuIGFjY2VwdE5vZGUgZnVuY3Rpb24i
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNl
dFJvd0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1
bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAppbmRleCAzYzkyYmViMTM0ZWQwNjMzMWIzOWY2MWYzNjll
NGQ4OGRjMzMzZGEzLi44YzllYjhmOWMxOWY5MGEwMGEzNmRmNTM1Zjk5M2JhYzdhMTNlYmViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgSlNWYWx1ZSBKU1NRTFJlc3Vs
dFNldFJvd0xpc3Q6Oml0ZW0oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgbV9pbXBsLT5jb2x1bW5OYW1lcygpW2ldKSwganNW
YWx1ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtX2ltcGwtPmNvbHVtbk5h
bWVzKClbaV0pLCBqc1ZhbHVlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIH0KIAogICAg
IHJldHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1N0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdl
Q3VzdG9tLmNwcAppbmRleCA5NDJjNGRmYjZlN2U2OGY4OWEwY2Y3OWQ1NDVlMzE5MTQ2YmMyNzM3
Li5kNjQ2MDNlMWI4ZDI1ZWRmNWQxZjI5YzVmNzAzNzIxYjZiY2EzMzFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAgLTkxLDcgKzkxLDcg
QEAgdm9pZCBKU1N0b3JhZ2U6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCB0aGlzT2Jq
ZWN0LT5tX2ltcGwtPmtleShpLCBlYykpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0aGlzT2JqZWN0LT5tX2ltcGwtPmtleShpLCBlYykp
KTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcAppbmRleCAzYzMz
NjU1MTUyZGJmMjI5NTRmYTQ5N2U0MTgwOGUzZmUzZmUzNTAwLi41YWQ5Nzk3OTg3NjdjYjEzM2Ux
Njk4NmVkM2VlNWM4ZWY1MmZmMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lk
IHNldEludGVybmFsU2xvdFRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvYmplY3RW
YWx1ZSwgUHJpdmF0ZU5hbWUmCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFZhbHVl
LnRvT2JqZWN0KGV4ZWMpOwogICAgIFB1dFByb3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3Qob2JqZWN0
VmFsdWUpOwotICAgIG9iamVjdC0+cHV0KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShu
YW1lKSwgdmFsdWUsIHByb3BlcnR5U2xvdCk7CisgICAgb2JqZWN0LT5wdXQob2JqZWN0LCBleGVj
LCBJZGVudGlmaWVyOjpmcm9tVWlkKG5hbWUpLCB2YWx1ZSwgcHJvcGVydHlTbG90KTsKIH0KIAog
SlNWYWx1ZSBnZXRJbnRlcm5hbFNsb3RGcm9tT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBvYmplY3RWYWx1ZSwgUHJpdmF0ZU5hbWUmIG5hbWUpCkBAIC01NSw3ICs1NSw3IEBAIEpTVmFs
dWUgZ2V0SW50ZXJuYWxTbG90RnJvbU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2Jq
ZWN0VmFsdWUsIFByaXZhdGVOCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFZhbHVlLnRv
T2JqZWN0KGV4ZWMpOwogICAgIFByb3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3Qob2JqZWN0VmFsdWUp
OwogCi0gICAgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20obmFt
ZSk7CisgICAgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQo
bmFtZSk7CiAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgcHJvcGVydHlTbG90KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
ICAgICByZXR1cm4gcHJvcGVydHlTbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcApp
bmRleCBjYjQ5MzFkZDU2YTc2ZWIzMjRiYTZmM2RlOTUxNjQ3MzRlODBlNDliLi4wM2Q0NDc2NTg5
Nzk3OGMwMDRhZDkzMWFjMTY0MGQzMTY4MGUzYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3Rh
dGljIGJvb2wgaGFuZGxlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKIGJv
b2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIHZhbHVlKQog
ewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKLSAgICBzY3JpcHRTdGF0ZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50
aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB2YWx1ZS5qc09iamVjdCgpKTsKKyAgICBzY3JpcHRT
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCks
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpLCB2YWx1ZS5qc09iamVj
dCgpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0KIApAQCAt
NjEsMTQgKzYxLDE0IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwCiB7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKTsKLSAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0o
KSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2Jh
bE9iamVjdCwgdmFsdWUpKTsKKyAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChzY3JpcHRTdGF0
ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMo
c2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhj
ZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0KIAogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChK
U0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCYgdmFsdWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3Rh
dGUpOwotICAgIEpTVmFsdWUganNWYWx1ZSA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPmdldChzY3JpcHRTdGF0ZSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSkpOwor
ICAgIEpTVmFsdWUganNWYWx1ZSA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmdldChzY3JpcHRTdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFt
ZSkpOwogICAgIGlmICghanNWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04Miw3
ICs4Miw3IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBEZXByCiBib29sIFNjcmlwdEdsb2JhbE9iamVj
dDo6cmVtb3ZlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSkK
IHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7Ci0gICAgc2NyaXB0U3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoc2Ny
aXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc2NyaXB0U3RhdGUsIElkZW50aWZpZXIo
c2NyaXB0U3RhdGUsIG5hbWUpKTsKKyAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShzY3JpcHRTdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBzY3JpcHRTdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzY3JpcHRT
dGF0ZSwgbmFtZSkpOwogICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCA3NTdlY2Q5MGE2Y2FiMzc4OTBjNjJhYzY4MzMyZDNjOTlmYjYzNjE3
Li4zYWM2Mjc1YWMzYzFkN2RiZjZjNzI3ZjRkODQzY2NhMzQxMzQ2YjZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTUyNSw3ICs1MjUsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAg
ICAgICA6IENsb25lQmFzZShleGVjKQogICAgICAgICAsIG1fYnVmZmVyKG91dCkKICAgICAgICAg
LCBtX2Jsb2JVUkxzKGJsb2JVUkxzKQotICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKGV4ZWMs
IGVtcHR5U3RyaW5nKCkpCisgICAgICAgICwgbV9lbXB0eUlkZW50aWZpZXIoSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCBlbXB0eVN0cmluZygpKSkKICAgICB7CiAgICAgICAgIHdyaXRlKEN1
cnJlbnRWZXJzaW9uKTsKICAgICAgICAgZmlsbFRyYW5zZmVyTWFwKG1lc3NhZ2VQb3J0cywgbV90
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cyk7CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCBjbGFzcyBDbG9u
ZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICBpZiAoc3RyLmlzTnVsbCgpKQogICAg
ICAgICAgICAgd3JpdGUobV9lbXB0eUlkZW50aWZpZXIpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB3cml0ZShJZGVudGlmaWVyKG1fZXhlYywgc3RyKSk7CisgICAgICAgICAgICB3cml0ZShJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywgc3RyKSk7CiAgICAgfQogCiAgICAgdm9pZCB3
cml0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHZlY3RvcikKQEAgLTEyNTQsNyArMTI1NCw3IEBA
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFs
dWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNrLnJlbW92ZUxhc3QoKTsKIAog
ICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJh
eShtX2V4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPmdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhhcnJheSwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxh
c3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgICAgIGFy
cmF5LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoYXJyYXksIG1f
ZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxh
c3QoKS5zaXplKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKE5vbkluZGV4UHJv
cGVydGllc1RhZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgw
KTsKQEAgLTEzMDQsNyArMTMwNCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2Vy
aWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgaW5wdXRPYmpl
Y3RTdGFjay5hcHBlbmQoaW5PYmplY3QpOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBw
ZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFt
ZUFycmF5KG1fZXhlYykpOwotICAgICAgICAgICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluT2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFz
dCgpLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBpbk9iamVj
dC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBw
cm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1i
ZXI6CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTEzNzIsNyArMTM3Miw3IEBAIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4p
CiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNr
Lmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXAq
PihvYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJv
cGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlT
dGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAg
ICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBt
X2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0
aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKQEAgLTE0MTgsNyAr
MTQxOCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFs
aXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBp
bnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHlu
YW1pY0Nhc3Q8SlNTZXQqPihvYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlT
dGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1f
ZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1v
ZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAgICAgICAgICAgICB3cml0
ZShOb25TZXRQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5h
cHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJl
cjsKQEAgLTI0OTEsMTEgKzI0OTEsMTEgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVz
ZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChKU1ZhbHVlIHRlcm1pbmFsID0gcmVhZFRlcm1pbmFsKCkpIHsKLSAgICAgICAgICAgICAgICBw
dXRQcm9wZXJ0eShvdXRwdXRPYmplY3RTdGFjay5sYXN0KCksIElkZW50aWZpZXIobV9leGVjLCBj
YWNoZWRTdHJpbmctPnN0cmluZygpKSwgdGVybWluYWwpOworICAgICAgICAgICAgICAgIHB1dFBy
b3BlcnR5KG91dHB1dE9iamVjdFN0YWNrLmxhc3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyht
X2V4ZWMsIGNhY2hlZFN0cmluZy0+c3RyaW5nKCkpLCB0ZXJtaW5hbCk7CiAgICAgICAgICAgICAg
ICAgZ290byBvYmplY3RTdGFydFZpc2l0TWVtYmVyOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgc3RhdGVTdGFjay5hcHBlbmQoT2JqZWN0RW5kVmlzaXRNZW1iZXIpOwotICAgICAgICAgICAg
cHJvcGVydHlOYW1lU3RhY2suYXBwZW5kKElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJpbmct
PnN0cmluZygpKSk7CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVTdGFjay5hcHBlbmQoSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsIGNhY2hlZFN0cmluZy0+c3RyaW5nKCkpKTsKICAgICAg
ICAgICAgIGdvdG8gc3RhdGVVbmtub3duOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgT2JqZWN0
RW5kVmlzaXRNZW1iZXI6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0KaW5kZXggNWQ5ZDhmNTkwN2U2MDU1MjEwODc2OTM1ZmFhZWI2NmU0OTY3
MWI2My4uM2E5M2ViZjVhYjZjNGQ3ZTUzNTE3MDNlYzE4MTVhNWZjMTRkYjAyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTMzMCw3
ICszMzAsNyBAQCAtIChpZCljYWxsV2ViU2NyaXB0TWV0aG9kOihOU1N0cmluZyAqKW5hbWUgd2l0
aEFyZ3VtZW50czooTlNBcnJheSAqKWFyZ3MKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
ICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBm
dW5jdGlvbiA9IFtzZWxmIF9pbXBdLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJpbmco
bmFtZSkpKTsKKyAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKG5hbWUpKSk7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5j
dGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCkBAIC0z
ODQsNyArMzg0LDcgQEAgLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleQogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihbc2VsZiBfaW1wXSk7CiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1
dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2Jq
Y1ZhbHVlVG9WYWx1ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9i
amVjdF0pLCBzbG90KTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChvYmplY3QsIGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2Jq
Y1ZhbHVlVG9WYWx1ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9i
amVjdF0pLCBzbG90KTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAg
ICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CkBAIC00MDcsNyArNDA3LDcgQEAgLSAoaWQp
dmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgICAgIC8vIGxlYXZpbmcgdGhlIGxvY2sg
cGVybWFuZW50bHkgaGVsZAogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAg
ICAgCi0gICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpKTsKKyAgICAgICAgSlNDOjpKU1ZhbHVlIHJl
c3VsdCA9IFtzZWxmIF9pbXBdLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCBTdHJpbmcoa2V5KSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7CiAgICAgICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CkBAIC00MzMs
NyArNDMzLDcgQEAgLSAodm9pZClyZW1vdmVXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopa2V5CiAg
ICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKLSAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHko
W3NlbGYgX2ltcF0sIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpKTsKKyAgICBb
c2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKIAogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUo
ZXhlYyk7CkBAIC00NTAsNyArNDUwLDcgQEAgLSAoQk9PTCloYXNXZWJTY3JpcHRLZXk6KE5TU3Ry
aW5nICopa2V5CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9pbXBdLT5oYXNQ
cm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CisgICAgQk9PTCBy
ZXN1bHQgPSBbc2VsZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCBTdHJpbmcoa2V5KSkpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNTA3ZmJh
MDBlNzlkNGRmMzU0ZTFjMzk2ZmExYTU1ZWM4NWE4NmY0Mi4uYjE5OWUwYzBkNjUxNDMzOTZmODRk
ZDRiMjdmNGM3OTlkZDQxMWJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTk3MywxNiArOTczLDE2IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogCiAgICAgIyBDdXN0b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlz
dHMgb24gRE9NV2luZG93CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7
Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVy
dHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9k
ZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVz
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkm
LCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lk
IGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlv
bk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpT
Qzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIHZvaWQgZ2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUg
PSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0RW51
bWVyYWJsZUxlbmd0aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwogICAg
ICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0g
MTsKICAgICB9CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQ
cm9wZXJ0eSJ9IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6
OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFn
c3siSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOyAgICAgICAKICAgICB9CiAK
QEAgLTE5OTYsNyArMTk5Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5h
bWUoJHNpZ25hdHVyZSk7CiAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkc2lnbmF0dXJlLT5u
YW1lOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghJHtlbmFi
bGVfZnVuY3Rpb259KCkpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSgmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZW1vdmVEaXJlY3Qodm0sIHByb3Bl
cnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMjU5MCwxMSArMjU5MCwxMSBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBpZiAoJGNvbnN0cnVjdG9yVHlwZSBu
ZSAiYW55IiBhbmQgJGNvbnN0cnVjdG9yVHlwZSAhfiAvTmFtZWQkLykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAi
LmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRp
b25hbCJ9KTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci5c
biIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRU
aGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2
YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3JcbiIpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4i
KTsKICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdC5cbiIp
OwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlz
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1
ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gb2JqZWN0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRl
LT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOwpAQCAtMjcwNCw3ICsy
NzA0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWduZWQgaSA9
IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwgY291bnQ7ICsraSlc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAppbmRleCAxZDU5MTg5YjQ3MjA1MTE3MTc5YzYzOWE2
MDViMzA4NmVkZGJmNmVmLi5kMjRhMmVhNzA2YWUyZDk0NDJiNzA3NWY5NWUyODgzMzY1NjIwNjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNG
bG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEpTRmxvYXQ2
NEFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8RmxvYXQ2NEFy
cmF5Kj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7Ci0gICAgIEJhc2U6OmdldE93
blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7Cisg
ICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIH0KIAogSlNWYWx1ZSBKU0Zsb2F0NjRBcnJheTo6Z2V0Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJy
YXkuaAppbmRleCBmZjM4OGNhMDE3NjBjMTJiOTU3NTAzOWZlYzc2NDMyOTNmZTg0ZTM0Li4xM2Ux
NTc3ZTM2Y2Q2MWJkZDFiYzE4NzA2YjM2MDIwOGFjMzgyZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaApA
QCAtNTEsNyArNTEsNyBAQCBjbGFzcyBKU0Zsb2F0NjRBcnJheSA6IHB1YmxpYyBKU0FycmF5QnVm
ZmVyVmlldyB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6
SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6
OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIEZsb2F0NjRBcnJheSogaW1w
bCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggMTc2MWQzMzk3
ZDUxNmFjY2Q1M2Q2NWE3NWM3ODZiYjE3ZDIwNjc3MS4uMTNmYmE4MTExYzIwYTU4NjRlMzZiMDg4
NDRjMmQ0Mjc1N2Y4ZWNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0yMjQsNyAr
MjI0LDcgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFAKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291
bnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKQogICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKLSAgICAgQmFz
ZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKKyAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5oCmluZGV4IGJmMWNlNjdlMmZlM2NkY2I5N2UyMDM4N2Y1YjBlOWU1MDg5ZjI0
N2YuLjQwOGNiOGYyZmY3OTNlMzFkMWM2ZTM0MjkxMjVkM2QxZmE1NDViMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTVGVz
dEV2ZW50VGFyZ2V0IDogcHVibGljIEpTRE9NV3JhcHBlciB7CiAgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9k
ZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVy
YXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKaW5kZXggMTRhNzg1YTliM2I0NWYyMTViMGVhM2Y1MDNiNmI5MjcxZmFmM2Y4
Ny4uMWEyNzRhZjliZWQwOWNkOWE5YTAzZDhhNDBmYzkxZWUyYmMxYjA2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
QEAgLTE4OTcsOCArMTg5Nyw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgLy8gU2hhZG93
aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIiks
IHZhbHVlKTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIGNh
c3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CiB9CiAKIApAQCAtMjcw
Niw4ICsyNzA2LDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamUKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2YWx1ZSk7CisgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29uZGl0aW9uYWxB
dHRyNCIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjcyMSw4ICsyNzIxLDggQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogYmFzZU9iamUKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4K
LSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAi
Y29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CiB9CiAK
ICNlbmRpZgpAQCAtMjczNiw4ICsyNzM2LDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamUKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxBdHRyNiIpLCB2
YWx1ZSk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICBjYXN0
ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAiY29uZGl0aW9uYWxBdHRyNiIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjg3NCw4ICsy
ODc0LDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdC4K
LSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAi
cmVwbGFjZWFibGVBdHRyaWJ1dGUiKSwgdmFsdWUpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIG9iamVjdAorICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7CiB9
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggOTAwMTAxMzhhYjQ2
Y2U3ZDk3NTNjYmZmMjk1ZTUzY2RmYWNkMGI1YS4uMDkwNWRlMTk3ZTU1NjEyOGQ1MjI1YTY1ZDQx
MjNlNjhkOTYyZjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC00
NDcsNyArNDQ3LDcgQEAgYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAsIE5QT2JqZWN0KiBvLCBOUElk
ZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQKICAgICAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMo
ZXhlYyk7CiAKLSAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFt
ZXMob2JqLT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOworICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhv
YmotPmltcCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCByZWFsbHkgY2FsbCBOUE5fTWVtQWxsb2MgYnV0IHRoYXQncyBpbiBXZWJLaXQKICAgICAg
ICAgTlBJZGVudGlmaWVyKiBpZGVudGlmaWVycyA9IHN0YXRpY19jYXN0PE5QSWRlbnRpZmllcio+
KG1hbGxvYyhzaXplb2YoTlBJZGVudGlmaWVyKSAqIHNpemUpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX3V0aWxpdHkuY3BwCmluZGV4IDc3NGZkZmMzZjRlZjk1M2VmZDdiZDZmZDk2NzZmNjQ4N2U4
OTkwNzYuLmRmOTA5ZGNlNWVhZDkzODU4ZTAyMzA5Y2Q4MmRjNWE3MzIzOTVlYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIFN0cmluZyBj
b252ZXJ0TlBTdHJpbmdUb1VURjE2KGNvbnN0IE5QU3RyaW5nKiBzdHJpbmcpCiAKIElkZW50aWZp
ZXIgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBOUFVU
RjgqIG5hbWUpCiB7Ci0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgY29udmVydFVURjhUb1VU
RjE2V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIC0xKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgY29udmVydFVURjhUb1VURjE2V2l0aExhdGluMUZhbGxiYWNrKG5h
bWUsIC0xKSk7CiB9CiAKIH0gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCmluZGV4IGNkMzRlNWYxMjAyZDdmM2FkYmRjMTgzMDk4N2VmODZiYWRlNmNjMTMuLjU3
ODkxNTg5MzlhMmFmN2I5MmZhYjkwYWY4NGFhYmU5NWFlZjdlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI2OCw3ICsyNjgsNyBAQCBib29sIE9i
amNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKQogSlNWYWx1ZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1bHRWYWx1
ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUpCiB7CiAgICAgY29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiB0aGlzT2JqZWN0
ID0ganNDYXN0PGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCo+KG9iamVjdCk7Ci0gICAgcmV0
dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+bV9pdGVtKSk7CisgICAgcmV0dXJuIHRoaXNP
YmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgdGhpc09iamVjdC0+bV9pdGVtKSk7CiB9CiAKIGJvb2wgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICopIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggMDIyMjE5MDVjNDBlNmVkZmVkNTc5
OTllYjIzNWY1ODkxYTdhMmUwOC4uYzcxM2ZmYTRlMjMyOTNjNjZjYzY1Y2IyOTkzZGEzYTkyZWVk
YTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtNzUsNyAr
NzUsNyBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBpKSk7CiAKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkp
CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
OwogCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
dGVzdGJpbmRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3Bw
CmluZGV4IDk1NzMwYzQzZDc0MDk4NTdiMWJmZDI5Mjk1MWM1NWRiMGRjYzVkZjUuLmJhZjI0N2Qy
ZGI2Y2U3ZTdlZTExM2EyMTBiODdjYzMzYTcyNmEwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90
ZXN0YmluZGluZ3MuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKiphcmd2KQogICAgICAgICAKICAgICAgICAgTXlPYmplY3QgKm15T2JqZWN0ID0gKE15T2Jq
ZWN0ICopTlBOX0NyZWF0ZU9iamVjdCAobXlGdW5jdGlvblB0cnMpOwogICAgICAgICAKLSAgICAg
ICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVyKCJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6
Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6Q0xhbmd1YWdlLCAodm9pZCAqKW15T2JqZWN0
KSk7CisgICAgICAgIGdsb2JhbC5wdXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAibXlJbnRlcmZhY2UiKSwgSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5zdGFuY2U6
OkNMYW5ndWFnZSwgKHZvaWQgKilteU9iamVjdCkpOwogICAgICAgICAKICAgICAgICAgZm9yIChp
bnQgaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvZGUg
PSByZWFkSmF2YVNjcmlwdEZyb21GaWxlKGFyZ3ZbaV0pOwpAQCAtMzk0LDcgKzM5NCw3IEBAIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgICAgICAgICAgICAgY2hhciog
bXNnID0gZXhWYWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmFzY2lpKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBsaW5lbm8gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4
VmFsLnR5cGUoKSA9PSBPYmplY3RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsSWRlbnRpZmll
cigibGluZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwgPSBPYmpl
Y3Q6OmR5bmFtaWNDYXN0KGV4VmFsKS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAibGluZSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lVmFsLnR5cGUo
KSA9PSBOdW1iZXJUeXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubyA9IGlu
dChsaW5lVmFsLnRvTnVtYmVyKGV4ZWMpKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KaW5kZXggYmZhY2YyMTA3NGExZWU4NTcyMjM2ZTVh
YWFjMTJjNWQ5ZTRjMjc3MC4uMzUzMmIwYTY4OWFiY2Q2ZDJkN2UxMzViMTdiMGFjNjg1NTRlMzZj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCkBAIC0yNDgsNyArMjQ4LDcg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAKICAgICAgICAgTXlG
aXJzdEludGVyZmFjZSAqbXlJbnRlcmZhY2UgPSBbW015Rmlyc3RJbnRlcmZhY2UgYWxsb2NdIGlu
aXRdOwogICAgICAgICAKLSAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVyKCJteUlu
dGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6T2JqZWN0
aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlKSk7CisgICAgICAgIGdsb2JhbC5wdXQo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibXlJbnRlcmZhY2UiKSwgSW5zdGFu
Y2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZSwgKHZv
aWQgKilteUludGVyZmFjZSkpOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkg
PCBhcmdjOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvZGUgPSByZWFkSmF2YVNj
cmlwdEZyb21GaWxlKGFyZ3ZbaV0pOwpAQCAtMjYyLDcgKzI2Miw3IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyICoqYXJndikKICAgICAgICAgICAgICAgICAgICAgY2hhciAqbXNnID0gZXhWYWwu
dG9TdHJpbmcoZXhlYykuYXNjaWkoKTsKICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubyA9
IC0xOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhWYWwudHlwZSgpID09IE9iamVjdFR5cGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwgPSBPYmplY3Q6OmR5bmFt
aWNDYXN0KGV4VmFsKS5nZXQoZXhlYyxJZGVudGlmaWVyKCJsaW5lIikpOworICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhWYWwpLmdl
dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGxpbmVWYWwudHlwZSgpID09IE51bWJlclR5cGUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGxpbmVWYWwudG9OdW1iZXIoZXhlYykp
OwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IGI4NjJi
YTA4YWQwOWU0Y2EzMWFlNWI5ZmE0MzRmNmMyMTllOTk1ZDIuLjE5YmI4ZjJmOWU2ODFlZDVkMjhj
MDcyYTQ5MGI4YzEyNTc4Njk2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCkBAIC04MCwxMyAr
ODAsMTMgQEAgc3RhdGljIGJvb2wgZ2V0VHlwZUZsYWdzKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3Qg
SlNWYWx1ZSYgdHlwZVZhbHVlLCBSZXNvdXJjZUZsYWcKICAgICAKIHN0YXRpYyBib29sIGxvYWRU
cmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIFRyaWdnZXImIHRy
aWdnZXIpCiB7Ci0gICAgSlNWYWx1ZSB0cmlnZ2VyT2JqZWN0ID0gcnVsZU9iamVjdC5nZXQoJmV4
ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ0cmlnZ2VyIikpOworICAgIEpTVmFsdWUgdHJpZ2dlck9i
amVjdCA9IHJ1bGVPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVj
LCAidHJpZ2dlciIpKTsKICAgICBpZiAoIXRyaWdnZXJPYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRp
b24oKSB8fCAhdHJpZ2dlck9iamVjdC5pc09iamVjdCgpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5
cygiSW52YWxpZCB0cmlnZ2VyIG9iamVjdC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIEpTVmFsdWUgdXJsRmlsdGVyT2JqZWN0ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4
ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ1cmwtZmlsdGVyIikpOworICAgIEpTVmFsdWUgdXJsRmls
dGVyT2JqZWN0ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJmV4ZWMsICJ1cmwtZmlsdGVyIikpOwogICAgIGlmICghdXJsRmlsdGVyT2JqZWN0IHx8IGV4
ZWMuaGFkRXhjZXB0aW9uKCkgfHwgIXVybEZpbHRlck9iamVjdC5pc1N0cmluZygpKSB7CiAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiSW52YWxpZCB1cmwtZmlsdGVyIG9iamVjdC4iKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtOTksMTUgKzk5LDE1IEBAIHN0YXRpYyBib29sIGxvYWRUcmlnZ2Vy
KEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIFRyaWdnZXImIHRyaWdnZXIp
CiAgICAgfQogICAgIHRyaWdnZXIudXJsRmlsdGVyID0gdXJsRmlsdGVyOwogCi0gICAgSlNWYWx1
ZSB1cmxGaWx0ZXJDYXNlVmFsdWUgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmll
cigmZXhlYywgInVybC1maWx0ZXItaXMtY2FzZS1zZW5zaXRpdmUiKSk7CisgICAgSlNWYWx1ZSB1
cmxGaWx0ZXJDYXNlVmFsdWUgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmZXhlYywgInVybC1maWx0ZXItaXMtY2FzZS1zZW5zaXRpdmUiKSk7CiAgICAg
aWYgKHVybEZpbHRlckNhc2VWYWx1ZSAmJiAhZXhlYy5oYWRFeGNlcHRpb24oKSAmJiB1cmxGaWx0
ZXJDYXNlVmFsdWUuaXNCb29sZWFuKCkpCiAgICAgICAgIHRyaWdnZXIudXJsRmlsdGVySXNDYXNl
U2Vuc2l0aXZlID0gdXJsRmlsdGVyQ2FzZVZhbHVlLnRvQm9vbGVhbigmZXhlYyk7CiAKLSAgICBK
U1ZhbHVlIHJlc291cmNlVHlwZVZhbHVlID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50
aWZpZXIoJmV4ZWMsICJyZXNvdXJjZS10eXBlIikpOworICAgIEpTVmFsdWUgcmVzb3VyY2VUeXBl
VmFsdWUgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
ZXhlYywgInJlc291cmNlLXR5cGUiKSk7CiAgICAgaWYgKHJlc291cmNlVHlwZVZhbHVlICYmICFl
eGVjLmhhZEV4Y2VwdGlvbigpICYmICFnZXRUeXBlRmxhZ3MoZXhlYywgcmVzb3VyY2VUeXBlVmFs
dWUsIHRyaWdnZXIuZmxhZ3MsIHJlYWRSZXNvdXJjZVR5cGUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgSlNWYWx1ZSBsb2FkVHlwZVZhbHVlID0gdHJpZ2dlck9iamVjdC5nZXQo
JmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJsb2FkLXR5cGUiKSk7CisgICAgSlNWYWx1ZSBsb2Fk
VHlwZVZhbHVlID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJmV4ZWMsICJsb2FkLXR5cGUiKSk7CiAgICAgaWYgKGxvYWRUeXBlVmFsdWUgJiYgIWV4ZWMu
aGFkRXhjZXB0aW9uKCkgJiYgIWdldFR5cGVGbGFncyhleGVjLCBsb2FkVHlwZVZhbHVlLCB0cmln
Z2VyLmZsYWdzLCByZWFkTG9hZFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEx
NiwxMyArMTE2LDEzIEBAIHN0YXRpYyBib29sIGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywg
SlNPYmplY3QmIHJ1bGVPYmplY3QsIFRyaWdnZXImIHRyaWdnZXIpCiAKIHN0YXRpYyBib29sIGxv
YWRBY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgQWN0aW9uJiBh
Y3Rpb24pCiB7Ci0gICAgSlNWYWx1ZSBhY3Rpb25PYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhl
YywgSWRlbnRpZmllcigmZXhlYywgImFjdGlvbiIpKTsKKyAgICBKU1ZhbHVlIGFjdGlvbk9iamVj
dCA9IHJ1bGVPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAi
YWN0aW9uIikpOwogICAgIGlmICghYWN0aW9uT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0aW9uKCkg
fHwgIWFjdGlvbk9iamVjdC5pc09iamVjdCgpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSW52
YWxpZCBhY3Rpb24gb2JqZWN0LiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgSlNWYWx1ZSB0eXBlT2JqZWN0ID0gYWN0aW9uT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmll
cigmZXhlYywgInR5cGUiKSk7CisgICAgSlNWYWx1ZSB0eXBlT2JqZWN0ID0gYWN0aW9uT2JqZWN0
LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgInR5cGUiKSk7CiAgICAg
aWYgKCF0eXBlT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0aW9uKCkgfHwgIXR5cGVPYmplY3QuaXNT
dHJpbmcoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkludmFsaWQgdXJsLWZpbHRlciBvYmpl
Y3QuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMg
Ym9vbCBsb2FkQWN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIEFj
dGlvbiYgYWN0aW9uKQogICAgIGVsc2UgaWYgKGFjdGlvblR5cGUgPT0gImJsb2NrLWNvb2tpZXMi
KQogICAgICAgICBhY3Rpb24gPSBBY3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXM7CiAgICAgZWxzZSBp
ZiAoYWN0aW9uVHlwZSA9PSAiY3NzLWRpc3BsYXktbm9uZSIpIHsKLSAgICAgICAgSlNWYWx1ZSBz
ZWxlY3RvciA9IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJzZWxl
Y3RvciIpKTsKKyAgICAgICAgSlNWYWx1ZSBzZWxlY3RvciA9IGFjdGlvbk9iamVjdC5nZXQoJmV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJzZWxlY3RvciIpKTsKICAgICAgICAg
aWYgKCFzZWxlY3RvciB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFzZWxlY3Rvci5pc1N0cmlu
ZygpKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoImNzcy1kaXNwbGF5LW5vbmUgYWN0aW9u
IHR5cGUgcmVxdWlyZXMgYSBzZWxlY3RvciIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZjFmNmFiYWJhODli
NTlkOTYzZGYyMTBlMzdjODBlZTM2MTg4NmQ4NC4uMjA4NzNmMGVlZTQwMTEzMzY5OTIwYTJmNzgy
YjU1NGQ2MDJjYjcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0zNjU5LDcgKzM2NTksNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJKU1Zh
bHVlKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCYgZwogICAgIGlmICgh
bWVkaWFKU1dyYXBwZXJPYmplY3QpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogICAg
IAotICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sc0hvc3QoJmV4ZWMudm0oKSwgImNvbnRyb2xz
SG9zdCIpOworICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sc0hvc3QgPSBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJmV4ZWMudm0oKSwgImNvbnRyb2xzSG9zdCIpOwogICAgIEpTQzo6SlNW
YWx1ZSBjb250cm9sc0hvc3RKU1dyYXBwZXIgPSBtZWRpYUpTV3JhcHBlck9iamVjdC0+Z2V0KCZl
eGVjLCBjb250cm9sc0hvc3QpOwogICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNDOjpqc051bGwoKTsKQEAgLTM2NjgsNyArMzY2OCw3IEBAIHN0YXRpYyBKU0M6
OkpTVmFsdWUgY29udHJvbGxlckpTVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnCiAgICAgaWYgKCFjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QpCiAgICAg
ICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogCi0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xs
ZXJJRCgmZXhlYy52bSgpLCAiY29udHJvbGxlciIpOworICAgIEpTQzo6SWRlbnRpZmllciBjb250
cm9sbGVySUQgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMudm0oKSwgImNvbnRy
b2xsZXIiKTsKICAgICBKU0M6OkpTVmFsdWUgY29udHJvbGxlckpTV3JhcHBlciA9IGNvbnRyb2xz
SG9zdEpTV3JhcHBlck9iamVjdC0+Z2V0KCZleGVjLCBjb250cm9sbGVySUQpOwogICAgIGlmIChl
eGVjLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKQEAgLTM3
MTAsNyArMzcxMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQ2FwdGlvbkNvbnRh
aW5lcigpCiAgICAgLy8gICAgIE5vbmUKICAgICAvLyBSZXR1cm4gdmFsdWU6CiAgICAgLy8gICAg
IE5vbmUKLSAgICBKU0M6OkpTVmFsdWUgbWV0aG9kVmFsdWUgPSBjb250cm9sbGVyT2JqZWN0LT5n
ZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJ1cGRhdGVDYXB0aW9uQ29udGFpbmVyIikp
OworICAgIEpTQzo6SlNWYWx1ZSBtZXRob2RWYWx1ZSA9IGNvbnRyb2xsZXJPYmplY3QtPmdldChl
eGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInVwZGF0ZUNhcHRpb25Db250
YWluZXIiKSk7CiAgICAgSlNDOjpKU09iamVjdCogbWV0aG9kT2JqZWN0ID0gSlNDOjpqc0R5bmFt
aWNDYXN0PEpTQzo6SlNPYmplY3QqPihtZXRob2RWYWx1ZSk7CiAgICAgaWYgKCFtZXRob2RPYmpl
Y3QpCiAgICAgICAgIHJldHVybjsKQEAgLTU4NTEsNyArNTg1MSw3IEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6ZW5zdXJlTWVkaWFDb250cm9sc0luamVjdGVkU2NyaXB0KCkKICAgICBKU0M6OkV4
ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKLSAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9
IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlQ29u
dHJvbHMiKSk7CisgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3Qt
PmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0ZUNvbnRy
b2xzIikpOwogICAgIGlmIChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24oKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKQEAgLTU4NzQsNyArNTg3NCw3IEBAIHN0YXRpYyB2b2lkIHNldFBhZ2VTY2Fs
ZUZhY3RvclByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgY29udHJv
CiB7CiAgICAgSlNDOjpQdXRQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KGNvbnRyb2xsZXJWYWx1
ZSk7CiAgICAgSlNDOjpKU09iamVjdCogY29udHJvbGxlck9iamVjdCA9IGNvbnRyb2xsZXJWYWx1
ZS50b09iamVjdChleGVjKTsKLSAgICBjb250cm9sbGVyT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5w
dXQoY29udHJvbGxlck9iamVjdCwgZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJwYWdlU2Nh
bGVGYWN0b3IiKSwgSlNDOjpqc051bWJlcihwYWdlU2NhbGVGYWN0b3IpLCBwcm9wZXJ0eVNsb3Qp
OworICAgIGNvbnRyb2xsZXJPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChjb250cm9sbGVyT2Jq
ZWN0LCBleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInBhZ2VTY2FsZUZh
Y3RvciIpLCBKU0M6OmpzTnVtYmVyKHBhZ2VTY2FsZUZhY3RvciksIHByb3BlcnR5U2xvdCk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFk
b3dSb290KiByb290KQpAQCAtNTkwMyw3ICs1OTAzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgLy8gUmV0
dXJuIHZhbHVlOgogICAgIC8vICAgICBBIHJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCBtZWRpYSBj
b250cm9sbGVyIGluc3RhbmNlLgogCi0gICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBn
bG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgImNyZWF0ZUNvbnRy
b2xzIikpOworICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LT5n
ZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVDb250cm9s
cyIpKTsKICAgICBpZiAoZnVuY3Rpb25WYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTU5MzIsNyArNTkzMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogCiAgICAgLy8gQ29u
bmVjdCB0aGUgTWVkaWEsIE1lZGlhQ29udHJvbGxlckhvc3QsIGFuZCBDb250cm9sbGVyIHNvIHRo
ZSBHQyBrbm93cyBhYm91dCB0aGVpciByZWxhdGlvbnNoaXAKICAgICBKU0M6OkpTT2JqZWN0KiBt
ZWRpYUpTV3JhcHBlck9iamVjdCA9IG1lZGlhSlNXcmFwcGVyLnRvT2JqZWN0KGV4ZWMpOwotICAg
IEpTQzo6SWRlbnRpZmllciBjb250cm9sc0hvc3QoJmV4ZWMtPnZtKCksICJjb250cm9sc0hvc3Qi
KTsKKyAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbHNIb3N0ID0gSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZleGVjLT52bSgpLCAiY29udHJvbHNIb3N0Iik7CiAgICAgCiAgICAgQVNTRVJU
KCFtZWRpYUpTV3JhcHBlck9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgY29udHJvbHNIb3N0KSk7
CiAKQEAgLTU5NDIsNyArNTk0Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNl
ckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogICAgIGlmICghbWVkaWFDb250cm9s
c0hvc3RKU1dyYXBwZXJPYmplY3QpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBKU0M6Oklk
ZW50aWZpZXIgY29udHJvbGxlcigmZXhlYy0+dm0oKSwgImNvbnRyb2xsZXIiKTsKKyAgICBKU0M6
OklkZW50aWZpZXIgY29udHJvbGxlciA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhl
Yy0+dm0oKSwgImNvbnRyb2xsZXIiKTsKIAogICAgIEFTU0VSVCghY29udHJvbGxlck9iamVjdC0+
aGFzUHJvcGVydHkoZXhlYywgY29udHJvbGxlcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA3NDNlOTk2NGI1OTg2NjEwNDFlZjNm
NDg2MjQxNTI2NjI5YTNjZTQxLi44M2YxYjdlNjBlNzMxOTNhZWQwMWMxN2Y1MTRhZTBiNWQ5MDBj
MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHAKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZEFk
ZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKICAgICBhcmdMaXN0LmFwcGVu
ZChKU0M6OmpzQm9vbGVhbighbV9zbmFwc2hvdEltYWdlKSk7CiAKICAgICAvLyBJdCBpcyBleHBl
Y3RlZCB0aGUgSlMgZmlsZSBwcm92aWRlcyBhIGNyZWF0ZU92ZXJsYXkoc2hhZG93Um9vdCwgdGl0
bGUsIHN1YnRpdGxlKSBmdW5jdGlvbi4KLSAgICBKU0M6OkpTT2JqZWN0KiBvdmVybGF5ID0gZ2xv
YmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVPdmVybGF5
IikpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTQzo6SlNPYmplY3QqIG92ZXJsYXkgPSBnbG9iYWxP
YmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0
ZU92ZXJsYXkiKSkudG9PYmplY3QoZXhlYyk7CiAgICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gb3ZlcmxheS0+bWV0aG9kVGFibGUoKS0+Z2V0
Q2FsbERhdGEob3ZlcmxheSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNh
bGxUeXBlTm9uZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29y
ZVRlc3RTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcAppbmRleCAwMmUzZjQ5ZWY3YzgxZmY4YTcwNDMxODRiNjQwYzA1OGU2ZjZkNjk3
Li5iNTJkMWU2MmE1NjZiOTk2ZGNkOTJhYzk0ZDRhMzBmMjQ2YmJjOGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCkBAIC00OCw3ICs0
OCw3IEBAIHZvaWQgaW5qZWN0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0KQog
ICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KCpzY3JpcHRDb250ZXh0KSkKLSAgICAgICAg
Z2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBJbnRl
cm5hbHM6OmludGVybmFsc0lkKSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIEludGVybmFsczo6
Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRDb250ZXh0KSkpKTsKKyAgICAgICAgZ2xv
YmFsT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCBJbnRlcm5hbHM6OmludGVybmFsc0lkKSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIElu
dGVybmFsczo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRDb250ZXh0KSkpKTsKIH0K
IAogdm9pZCByZXNldEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dFByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0UHJveHkubW0KaW5kZXggOWNkNjU1YzlmNzEwNTM1YTlkZjJhZjQ1N2Q3MDQ0NmE2ZDli
NmU2Ny4uMzQ0MWU0ZmIxMzc4ZDkzODc1NjQ1NmViOTU5ZDVkZmQxMWY4YmIxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJv
eHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0UHJveHkubW0KQEAgLTYyNyw3ICs2MjcsNyBAQCBzdGF0aWMgSWRlbnRpZmllciBpZGVu
dGlmaWVyRnJvbUlkZW50aWZpZXJSZXAoSWRlbnRpZmllclJlcCogaWRlbnRpZmllcikKICAgICBB
U1NFUlQoaWRlbnRpZmllci0+aXNTdHJpbmcoKSk7CiAgIAogICAgIGNvbnN0IGNoYXIqIHN0ciA9
IGlkZW50aWZpZXItPnN0cmluZygpOyAgICAKLSAgICByZXR1cm4gSWRlbnRpZmllcigmSlNET01X
aW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3Ry
LCBzdHJsZW4oc3RyKSkpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZKU0RP
TVdpbmRvdzo6Y29tbW9uVk0oKSwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhz
dHIsIHN0cmxlbihzdHIpKSk7CiB9CiAKIGtlcm5fcmV0dXJuX3QgV0tQQ0ludm9rZShtYWNoX3Bv
cnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW5JRCwgdWludDMyX3QgcmVxdWVzdElELCB1
aW50MzJfdCBvYmplY3RJRCwgdWludDY0X3Qgc2VydmVySWRlbnRpZmllciwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQppbmRleCBjYWRlOWUxZTlmZGY3YjZmNjQxMDg1ZGI0NzAzYWI4NDMz
ODUzYTZkLi4zYjk4ZmQ0ZTg3M2QwMGYxNzhmYTk0ODk1OWZhNDgxZWI4MTFmZDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMjMxLDcgKzEyMzEsNyBAQCBib29sIE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZW51bWVyYXRlKHVpbnQzMl90IG9iamVjdElELCBkYXRh
X3QmIHJlc3VsdERhdAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogIAogICAgIFByb3Bl
cnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJh
eSo+IGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMuc2l6ZSgpOyBpKyspIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmlu
ZGV4IDBkZjBkZWMwYzI0NzhmMGZiMWZlODhjNjQ4OTMwYjJhYTgyZjBmMDIuLjc1MWIxNmFkY2Iw
M2VhOWUzYzk2MTM5MGNhYzRlYTg0M2JhMGRkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZv
aWQgUHJveHlJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBuYW1lQXJyCiAKICAgICAgICAgaWYgKGlkZW50aWZpZXItPmlzU3RyaW5n
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN0ciA9IGlkZW50aWZpZXItPnN0cmluZygp
OwotICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVudGlmaWVyKCZKU0RPTVdpbmRvdzo6Y29t
bW9uVk0oKSwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHIsIHN0cmxlbihz
dHIpKSkpOworICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFjayhzdHIsIHN0cmxlbihzdHIpKSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5h
bWVBcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlmaWVyLT5udW1iZXIoKSkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCAxY2VkMjkzZWI4Y2NjNzdkMzcwOWI5YmQz
OTgwOGNjMzk4MTI3Mzc3Li5mZGJlODFhOGUwYmU5NzY5NDk5YWM5YjJkM2UwZmEzMWRiYjU1ODFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBKU05QT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHkKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IGlkZW50aWZpZXJSZXAt
PnN0cmluZygpOwogICAgICAgICAgICAgaW50IGxlbmd0aCA9IHN0cmxlbihzdHJpbmcpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZGVudGlmaWVyID0gSWRlbnRpZmllcihleGVjLCBTdHJp
bmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKS5pbXBsKCkpOwor
ICAgICAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3Ry
aW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMs
IGlkZW50aWZpZXJSZXAtPm51bWJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCmluZGV4IDBkMTY2
NzRlNWMxNWY0NzE3MTg1NDNkMjVjYTRmMzEwOWMwNTJkMjIuLmE2NWM4OTMzZmNlMGNiODBiZDA5
NmM3NjQ3NjhjMDJjMTA4ZmMwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgc3RhdGljIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKEV4ZWNTdGF0
ZSogZXhlYywgSWRlbnRpZmllclJlcCogaWQKICAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBpZGVu
dGlmaWVyUmVwLT5zdHJpbmcoKTsKICAgICBpbnQgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CiAK
LSAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZh
bGxiYWNrKHN0cmluZywgbGVuZ3RoKS5pbXBsKCkpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5n
LCBsZW5ndGgpKTsKIH0KIAogYm9vbCBOUEpTT2JqZWN0OjpoYXNNZXRob2QoTlBJZGVudGlmaWVy
IG1ldGhvZE5hbWUpCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBOUEpTT2JqZWN0OjplbnVtZXJh
dGUoTlBJZGVudGlmaWVyKiogaWRlbnRpZmllcnMsIHVpbnQzMl90KiBpZGVudGlmaWVyQ291bnQK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHBy
b3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJv
cGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQ
cm9wZXJ0eU5hbWVzKG1fanNPYmplY3QuZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICBOUElkZW50aWZp
ZXIqIG5hbWVJZGVudGlmaWVycyA9IG5wbk1lbU5ld0FycmF5PE5QSWRlbnRpZmllcj4ocHJvcGVy
dHlOYW1lcy5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmFlY2JjMWI0OTQ3ODM3MDM4ZDVjZmY1OTljMjY2
NzlkNDljMDAzYi4uMWViNWMzZWI3MTg5N2QyYjViYzgxZTdmNzhhZjU4OGI3YzI0OTZjOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAzLTE0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQxMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBqcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICoganMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzOgorCiAyMDE1
LTAzLTEzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIENsYXNz
IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBUeXBlRXJyb3Igd2hlbiAiY2FsbGVkIgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IGZmYzY5MzAwNTBiNmJkYTYyYzUzYjUwNjEyMjc1ZDQ4OTgzMWFkODUuLjY4Yjc1
ZTVhMjc2ZTNhOTBlOTI5N2I1ZGU4NGIxNTJmMzY0YWRlMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKQEAgLTQw
LDcgKzQwLDcgQEAgUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKGRlY29kZVVSSSkgaXMg
WydsZW5ndGgnLCAnbmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZGVjb2Rl
VVJJQ29tcG9uZW50KSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJv
cGVydHlOYW1lcyhlbmNvZGVVUkkpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQogUEFTUyBnZXRTb3J0
ZWRPd25Qcm9wZXJ0eU5hbWVzKGVuY29kZVVSSUNvbXBvbmVudCkgaXMgWydsZW5ndGgnLCAnbmFt
ZSddCi1QQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoT2JqZWN0KSBpcyBbJ2NyZWF0ZScs
ICdkZWZpbmVQcm9wZXJ0aWVzJywgJ2RlZmluZVByb3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3InLCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRQcm90b3R5cGVP
ZicsICdpc0V4dGVuc2libGUnLCAnaXNGcm96ZW4nLCAnaXNTZWFsZWQnLCAna2V5cycsICdsZW5n
dGgnLCAnbmFtZScsICdwcmV2ZW50RXh0ZW5zaW9ucycsICdwcm90b3R5cGUnLCAnc2VhbCddCitQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoT2JqZWN0KSBpcyBbJ2NyZWF0ZScsICdkZWZp
bmVQcm9wZXJ0aWVzJywgJ2RlZmluZVByb3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3InLCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRPd25Qcm9wZXJ0eVN5bWJv
bHMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2Vh
bGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJv
dG90eXBlJywgJ3NlYWwnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5w
cm90b3R5cGUpIGlzIFsnX19kZWZpbmVHZXR0ZXJfXycsICdfX2RlZmluZVNldHRlcl9fJywgJ19f
bG9va3VwR2V0dGVyX18nLCAnX19sb29rdXBTZXR0ZXJfXycsICdfX3Byb3RvX18nLCAnY29uc3Ry
dWN0b3InLCAnaGFzT3duUHJvcGVydHknLCAnaXNQcm90b3R5cGVPZicsICdwcm9wZXJ0eUlzRW51
bWVyYWJsZScsICd0b0xvY2FsZVN0cmluZycsICd0b1N0cmluZycsICd2YWx1ZU9mJ10KIFBBU1Mg
Z2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhGdW5jdGlvbikgaXMgWydsZW5ndGgnLCAnbmFtZScs
ICdwcm90b3R5cGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0aW9uLnBy
b3RvdHlwZSkgaXMgWydhcHBseScsICdiaW5kJywgJ2NhbGwnLCAnY29uc3RydWN0b3InLCAnbGVu
Z3RoJywgJ25hbWUnLCAndG9TdHJpbmcnXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCmluZGV4IGI0MjRiMDVl
NGQ4M2MyYTlhNmJhZTJhOWQzNGIzNDNlZTYwOTgxMTQuLmZiZDY1ZGQzYWM5N2NkOGE3ZDBlZGFj
NDM5ZmVkN2Q3ODNlMDEwZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKQEAgLTQ4LDcgKzQ4LDcgQEAK
ICAgICAiZW5jb2RlVVJJIjogIlsnbGVuZ3RoJywgJ25hbWUnXSIsCiAgICAgImVuY29kZVVSSUNv
bXBvbmVudCI6ICJbJ2xlbmd0aCcsICduYW1lJ10iLAogLy8gQnVpbHQtaW4gRUNNQSBvYmplY3Rz
Ci0gICAgIk9iamVjdCI6ICJbJ2NyZWF0ZScsICdkZWZpbmVQcm9wZXJ0aWVzJywgJ2RlZmluZVBy
b3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCAnZ2V0T3duUHJv
cGVydHlOYW1lcycsICdnZXRQcm90b3R5cGVPZicsICdpc0V4dGVuc2libGUnLCAnaXNGcm96ZW4n
LCAnaXNTZWFsZWQnLCAna2V5cycsICdsZW5ndGgnLCAnbmFtZScsICdwcmV2ZW50RXh0ZW5zaW9u
cycsICdwcm90b3R5cGUnLCAnc2VhbCddIiwKKyAgICAiT2JqZWN0IjogIlsnY3JlYXRlJywgJ2Rl
ZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3Bl
cnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgJ2dldE93blByb3BlcnR5U3lt
Ym9scycsICdnZXRQcm90b3R5cGVPZicsICdpc0V4dGVuc2libGUnLCAnaXNGcm96ZW4nLCAnaXNT
ZWFsZWQnLCAna2V5cycsICdsZW5ndGgnLCAnbmFtZScsICdwcmV2ZW50RXh0ZW5zaW9ucycsICdw
cm90b3R5cGUnLCAnc2VhbCddIiwKICAgICAiT2JqZWN0LnByb3RvdHlwZSI6ICJbJ19fZGVmaW5l
R2V0dGVyX18nLCAnX19kZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdldHRlcl9fJywgJ19fbG9v
a3VwU2V0dGVyX18nLCAnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ2hhc093blByb3BlcnR5
JywgJ2lzUHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAndG9Mb2NhbGVTdHJp
bmcnLCAndG9TdHJpbmcnLCAndmFsdWVPZiddIiwKICAgICAiRnVuY3Rpb24iOiAiWydsZW5ndGgn
LCAnbmFtZScsICdwcm90b3R5cGUnXSIsCiAgICAgIkZ1bmN0aW9uLnByb3RvdHlwZSI6ICJbJ2Fw
cGx5JywgJ2JpbmQnLCAnY2FsbCcsICdjb25zdHJ1Y3RvcicsICdsZW5ndGgnLCAnbmFtZScsICd0
b1N0cmluZyddIiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249205</attachid>
            <date>2015-03-22 13:36:32 -0700</date>
            <delta_ts>2015-04-02 19:59:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150323053556.patch</filename>
            <type>text/plain</type>
            <size>272756</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTAxNWUzOGY0ZTk0MDM3OGRhZGJkYWNiYjRkYjk1YTM1ODI5MWQwLi4zYzc3ZjU3ODViZTFjMjUy
ZGJiZTNlMjE5ZDQxMWNjMjUwZDY0NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTEgQEAKKzIwMTUtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEx
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgLgorICAgICAg
ICBPbmUgdGVjaG5pY2FsIGlzc3VlIGlzIHRoYXQsIHNpbmNlIHdlIHVzZSBwcml2YXRlIHN5bWJv
bHMgKHN1Y2ggYXMgYEBPYmplY3RgKSBpbiB0aGUKKyAgICAgICAgcHJpdmlsZWdlZCBKUyBjb2Rl
IGluIGBidWlsdGlucy9gLCB0aGV5IHNob3VsZCBub3QgYmUgZXhwb3NlZC4KKyAgICAgICAgVG8g
ZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIHRoZSB1c3VhbCBzeW1ib2xzLCBjaGVja2luZyB0aGUgdGFy
Z2V0IGBTdHJpbmdJbXBsKmAgaXMgYSBub3QgcHJpdmF0ZSBuYW1lCisgICAgICAgIGJlZm9yZSBh
ZGRpbmcgaXQgaW50byBQcm9wZXJ0eU5hbWVBcnJheS4KKworICAgICAgICBUbyBjaGVjayB0aGUg
dGFyZ2V0IGBTdHJpbmdJbXBsKmAgaXMgYSBwcml2YXRlIG5hbWUsIHdlIGxldmVyYWdlIHByaXZh
dGVUb1B1YmxpYyBtYXAgaW4gYEJ1aWx0aW5OYW1lc2AKKyAgICAgICAgc2luY2UgYWxsIHByaXZh
dGUgc3ltYm9scyBhcmUgaGVsZCBpbiB0aGlzIG1hcC4KKworICAgICAgICBUbyBjbGVhbiB1cCBg
U3RyaW5nSW1wbGAsIHdlIGludHJvZHVjZSBgU3RyaW5nS2luZGAgaW50byBgU3RyaW5nSW1wbGAu
IFRoZXJlJ3MgMyBraW5kcworICAgICAgICAxLiBTdHJpbmdOb3JtYWwgKG5vbi1hdG9taWMsIG5v
bi1zeW1ib2wpCisgICAgICAgIDIuIFN0cmluZ0F0b21pYyAoYXRvbWljLCBub24tc3ltYm9sKQor
ICAgICAgICAzLiBTdHJpbmdTeW1ib2wgKG5vbi1hdG9taWMsIHN5bWJvbCkKKyAgICAgICAgVGhl
eSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBBbmQgKGF0b21pYywgc3ltYm9sKSBjYXNlIHNob3Vs
ZCBub3QgZXhpc3QuCisKKyAgICAgICAgQW5kIHdlIGNoYW5nZWQgYEVudW1lcmF0aW9uTW9kZWAg
dG8gYWNjZXB0IEluY2x1ZGUvRXhjbHVkZVN5bWJvbHMgc3RhdHVzLgorICAgICAgICBXZSB3cmFw
IGB1bnNpZ25lZGAgZmxhZyBpbnRvIGBFbnVtZXJhdGlvbk1vZGVgIGNsYXNzIGFuZCBpdCByZXBy
ZXNlbnRzIDMgZmxhZ3MuCisgICAgICAgIDEuIEluY2x1ZGUvRXhjbHVkZSBEb250RW51bSBwcm9w
ZXJ0aWVzCisgICAgICAgIDIuIEluY2x1ZGUvRXhjbHVkZSBTeW1ib2xzCisgICAgICAgIDMuIElu
Y2x1ZGUvRXhjbHVkZSBKU09iamVjdCBwcm9wZXJ0eSBuYW1lcworICAgICAgICBJbiB0aGUgYSBs
b3Qgb2YgY29kZSwgd2UgY2hvc2UgYEV4Y2x1ZGVTeW1ib2xzYCwKKyAgICAgICAgYmVjYXVzZSBh
IGxvdCBvZiBjYWxsZXIgb2YgYGdldE93blByb3BlcnR5TmFtZXNgIGFuZCBgUHJvcGVydHlOYW1l
QXJyYXlgIGRvZXNuJ3QgY29uc2lkZXIgYWJvdXQgU3ltYm9scy4KKyAgICAgICAgVGhpcyBjb25z
ZXJ2YXRpdmUgYXNzdW1wdGlvbiBkb2Vzbid0IGJyZWFrIHRoZSBjYWxsZXJzLgorCisgICAgICAg
IEluIHRoZSBhIGxvdCBvZiBwbGFjZXMsIGBJZGVudGlmaWVyKFZNKi9FeGVjU3RhdGUqLCBTdHJp
bmdJbXBsKilgIGNvbnN0cnVjdG9yIGlzIHVzZWQuCisgICAgICAgIEhvd2V2ZXIsIGl0J3MgYW1i
aWd1b3VzIGJlY2F1c2UgYFN0cmluZ0ltcGwqYCBoYXMgMiBkaWZmZXJlbnQgbWVhbmluZ3MuCisg
ICAgICAgIDEpIG5vcm1hbCBzdHJpbmcsIGl0IGlzIHJlcGxhY2FibGUgd2l0aCBgV1RGU3RyaW5n
YCBhbmQKKyAgICAgICAgMikgYHVpZGAsIHdoaWNoIGhvbGRzIGBpc1N5bWJvbGAgaW5mb3JtYXRp
b24gdG8gcmVwcmVzZW50IFN5bWJvbHMuCisgICAgICAgIFNvIHdlIGRyb3BwZWQgSWRlbnRpZmll
ciBjb25zdHJ1Y3RvcnMgZm9yIHN0cmluZ3MgYW5kIGluc3RlYWQsIGludHJvZHVjZWQgMiBmYWN0
b3J5IGZ1bmN0aW9ucy4KKyAgICAgICAgKyBgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSovRXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJilgLgorICAgICAgICAgICAgSnVzdCBjb25zdHJ1Y3QgSWRl
bnRpZmllciBmcm9tIHN0cmluZ3MuIFRoZSBzeW1ib2wtbmVzcyBvZiBTdHJpbmdJbXBsKiBpcyBu
b3Qga2VwdC4KKyAgICAgICAgKyBgSWRlbnRpZmllcjo6ZnJvbVVpZChWTSovRXhlY1N0YXRlKiwg
U3RyaW5nSW1wbCopYC4KKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgMikg
YHVpZGAuIFNvIHN5bWJvbC1uZXNzIG9mIGBTdHJpbmdJbXBsKmAgaXMga2VwdC4KKworICAgICAg
ICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb24p
OgorICAgICAgICAoSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL09w
YXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUp
OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChK
U0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZUludGVybmFsKToKKyAgICAg
ICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVz
OjpCdWlsdGluTmFtZXMpOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OmlzUHJpdmF0ZU5h
bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAg
ICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0
eUNvdW50KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93VHlwZUVycm9yKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVl
ZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6
CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6RGVzaXJlZElkZW50aWZpZXJzOjpyZWFsbHlBZGQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0
ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpjb25z
dHJ1Y3RJbnRlcm5hbFByb3BlcnR5KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNj
cmlwdEhvc3Q6OndlYWtNYXBFbnRyaWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4
dHJhY3RTb3VyY2VJbmZvcm1hdGlvbkZyb21FeGNlcHRpb24pOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmFkZEZ1bmN0aW9uKToK
KyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKToKKyAgICAg
ICAgKGZ1bmN0aW9uUnVuKToKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKiBs
bGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFz
c2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAg
ICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFk
ZFZhcik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJuKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEu
aDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlSWRlbnRpZmllcik6CisgICAg
ICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcik6
CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKToK
KyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9G
dW5jUHVzaCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU29ydCk6CisgICAgICAgICog
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50
aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZp
ZXJzOjppc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
Lmg6CisgICAgICAgICogcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaDoKKyAgICAgICAgKEpTQzo6
RW51bWVyYXRpb25Nb2RlOjpFbnVtZXJhdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpFbnVtZXJh
dGlvbk1vZGU6OnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOgorICAgICAgICAoSlND
OjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAoSlNDOjpFbnVtZXJhdGlvbk1vZGU6OnNob3VsZEluY2x1ZGVTeW1ib2xzKToKKyAg
ICAgICAgKEpTQzo6RW51bWVyYXRpb25Nb2RlOjpjcmVhdGVUaGF0U2tpcHNKU09iamVjdCk6Cisg
ICAgICAgIChKU0M6OnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpzaG91bGRFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6c2hvdWxkSW5jbHVkZUpTT2JqZWN0UHJvcGVydHlOYW1lcyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Om1vZGVUaGF0U2tpcHNKU09iamVjdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmFkZEVycm9ySW5mbyk6Cisg
ICAgICAgIChKU0M6Omhhc0Vycm9ySW5mbyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6
CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZp
ZXI6OmlzU3ltYm9sKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6SWRlbnRpZmllcik6Cisg
ICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb20pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSWRlbnRpZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6SWRlbnRp
Zmllcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQpOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3Bw
OgorICAgICAgICAoSlNDOjpKU0FycmF5OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkpTQXJy
YXlCdWZmZXI6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0
cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjp0b1Byb3BlcnR5S2V5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cnVudGltZUZsYWdzKToKKyAgICAg
ICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNM
ZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAg
ICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6Okhv
bGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQ
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRl
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Om1ha2VJZGVudGlmaWVy
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZSk6CisgICAgICAgIChKU0M6OkpTUHJv
bWlzZUNvbnN0cnVjdG9yRnVuY0FsbCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6c3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVy
YXRvcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b0lk
ZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnRyeUpTT05QUGFyc2UpOgorICAgICAgICAoSlND
OjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6bWFrZUlkZW50aWZpZXIpOgorICAgICAgICAqIHJ1
bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljUHJvcGVydGllcyk6Cisg
ICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdE1hcCk6CisgICAgICAgICogcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6Ok1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpNYXRoT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok51bWJlckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKToKKyAg
ICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpTQzo6ZGVmaW5l
UHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAg
ICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNG
cm96ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAg
KEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Qcml2
YXRlTmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6UHJpdmF0ZU5hbWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6UHJv
cGVydHlUYWJsZTo6ZmluZCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmdldCk6Cisg
ICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWUuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlO
YW1lOjpQcm9wZXJ0eU5hbWUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OnB1YmxpY05h
bWUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWU6OmFzSW5kZXgpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheTo6YWRkKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGRLbm93blVuaXF1ZSk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMpOgorICAg
ICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdlYWtN
YXApOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1i
b2xzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvckluKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
c3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0U3ltYm9sKToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanM6IEFkZGVkLgorCiAy
MDE1LTAzLTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgdGVz
dHMvc3RyZXNzLyp0ZHoqIHRlc3RzIGRvIDEweCBtb3JlIGl0ZXJhdGlvbnMgdGhhbiBuZWNlc3Nh
cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggNDA4NGIzMjdhZDI0Yzg2Zjc0OThjNGNhNjU0MmFkOTc5OTJhM2E5NC4uNzU3Yzdi
N2M3NTJhZjY0MmIyOGNiMzk2MjhmMmZkNmY5MjQ5M2JhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAor
MjAxNS0wMy0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBTdHJpbmdL
aW5kIGludG8gYFN0cmluZ0ltcGxgLiBUaGVyZSdzIDMga2luZHMKKyAgICAgICAgMS4gU3RyaW5n
Tm9ybWFsIChub24tYXRvbWljLCBub24tc3ltYm9sKQorICAgICAgICAyLiBTdHJpbmdBdG9taWMg
KGF0b21pYywgbm9uLXN5bWJvbCkKKyAgICAgICAgMy4gU3RyaW5nU3ltYm9sIChub24tYXRvbWlj
LCBzeW1ib2wpCisgICAgICAgIFRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmlu
Zzo6YWRkU2xvd0Nhc2UpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmRTbG93Q2Fz
ZSk6CisgICAgICAgIFdoZW4gcmVnaXN0ZXJpbmcgYSBzdHJpbmcgaW50byBBdG9taWNTdHJpbmdU
YWJsZSwKKyAgICAgICAgaXQgc2hvdWxkIG5vdCBiZSBhIHN5bWJvbCBzdHJpbmcKKyAgICAgICAg
YmVjYXVzZSBzeW1ib2wgYW5kIGF0b21pYyB0eXBlcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgor
ICAgICAgICBXaGVuIGEgc3ltYm9sIHN0cmluZyBjb21lcywgd2UgZXh0cmFjdCBhbiBvd25lciBz
dHJpbmcKKyAgICAgICAgZnJvbSBhIHN5bWJvbCBzdHJpbmcgYnkgdXNpbmcgYFN0cmluZ0ltcGw6
OmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpYC4KKyAgICAgICAgSXQgYWx3YXlzIHN1Y2Nl
ZWRzIGJlY2F1c2UgYSBzeW1ib2wgKG5vbiBlbXB0eSkgc3RyaW5nCisgICAgICAgIGlzIGFsd2F5
cyBCdWZmZXJTdWJzdHJpbmcgYW5kIGhhcyBhbiBvd25lciBzdHJpbmcuCisgICAgICAgIEVtcHR5
IHN5bWJvbCBzdHJpbmcgZG9lc24ndCBoYXZlIGFuIG93bmVyIHN0cmluZy4KKyAgICAgICAgVGhp
cyBjYXNlIGlzIGZpbHRlcmVkIGJ5IGAhc3RyaW5nLmxlbmd0aCgpYCBndWFyZC4KKworICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6
OmFkZCk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6YWRkV2l0aFN0cmluZ1RhYmxlUHJv
dmlkZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjp+U3RyaW5nSW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNy
ZWF0ZVN5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZSk6IERl
bGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjpTdHJpbmdJbXBsKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRl
U3ltYm9sRW1wdHkpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNBdG9taWMpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNTeW1ib2wpOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjptYXNrU3RyaW5nS2luZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0
cmluZ0tpbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjppc1N5bWJvbCk6CisgICAgICAg
IChXVEY6OlN0cmluZ0ltcGw6OmlzQXRvbWljKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
c2V0SXNBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3Ry
aW5nSW5TeW1ib2wpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVFbXB0
eSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZsYWdJc1VuaXF1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzVW5pcXVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
SW1wbDo6aGFzaEFuZEZsYWdzRm9yU3ltYm9sKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
aGFzaEFuZEZsYWdzRm9yVW5pcXVlKTogRGVsZXRlZC4KKwogMjAxNS0wMy0xOSAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHQWxsb2NhdG9yIHNob3VsZCB1
c2UgYm1hbGxvYydzIGFsaWduZWQgYWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgzNGZmNmEyNDY3
N2ZjOGZkOGU4YzJmOWJiZGI2NDMyNGQxZTYyOTkuLjRhOThlMTY3MDBiMWUzMmIxMzM3NzBjNWQ2
YmQxZjhmNjY3YjNhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDUgQEAKKzIwMTUtMDMtMjIg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyBh
bmQgSWRlbnRpZmllcjo6ZnJvbVVpZC4KKworICAgICAgICBUZXN0czoganMvb2JqZWN0LWdldC1v
d24tcHJvcGVydHktc3ltYm9scy5odG1sCisgICAgICAgICAgICAgICBqcy9zeW1ib2wtZGVmaW5l
LXByb3BlcnR5Lmh0bWwKKyAgICAgICAgICAgICAgIGpzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUu
aHRtbAorICAgICAgICAgICAgICAganMvc3ltYm9sLXdpdGgtanNvbi5odG1sCisKKyAgICAgICAg
KiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRT
Y3JpcHRJbmplY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9u
YXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNB
c1N0cmluZ0hhc2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJv
cGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldEpTTGlzdGVuZXJGdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNDb21tYW5kTGlu
ZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdv
cml0aG1CdWlsZGVyOjphZGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3Jp
dGhtRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRIYXNoQWxnb3JpdGhtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SlNB
cnJheUZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFN0cmluZ0Zyb21KU09OKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldEJvb2xlYW5Gcm9tSlNPTik6CisgICAgICAgIChXZWJDb3JlOjph
ZGRUb0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRKU09ORm9yUlNBQ29tcG9uZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjphZGRCb29sVG9KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZFVzYWdlc1RvSlNPTik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxv
b2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEaWFs
b2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEZXZpY2VN
b3Rpb25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQWNjZWxlcmF0aW9u
QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFJvdGF0aW9uUmF0ZUFyZ3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2VsZXJhdGlvbk9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6OnRyeUdl
dFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
QWxsQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0
aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjphbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OnNldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxEb2N1bWVudDo6b3Blbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3Rv
cmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJREJPYmplY3RTdG9yZTo6Y3JlYXRl
SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9y
RnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlQ29udGV4
dE1lbnVJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFsaXplSlNG
dW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
U3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW1KU1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbnRlcm5hbFNs
b3RUb09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRJbnRlcm5hbFNsb3RGcm9tT2JqZWN0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFs
T2JqZWN0OjpyZW1vdmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFs
aXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mv
b2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBjYWxs
V2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVudHM6XSk6CisgICAgICAgICgtW1dlYlNjcmlwdE9i
amVjdCBzZXRWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCB2YWx1
ZUZvcktleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtl
eTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IGhhc1dlYlNjcmlwdEtleTpdKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5Lmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVB
dHRyaWJ1dGUpOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6CisgICAgICAgIChf
TlBOX0VudW1lcmF0ZSk6CisgICAgICAgICogYnJpZGdlL2MvY191dGlsaXR5LmNwcDoKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OmlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKToKKyAgICAgICAg
KiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpP
YmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS90ZXN0YmluZGluZ3MuY3BwOgorICAgICAgICAo
bWFpbik6CisgICAgICAgICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmxvYWRUcmlnZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkQWN0aW9uKToKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpk
aWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVU
ZXN0U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OmluamVjdEludGVy
bmFsc09iamVjdCk6CisKIDIwMTUtMDMtMjEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSB0aGUgcHJlZml4IGZvciBDU1MgVHJhbnNmb3JtcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDgwYTIyZGNmNmZmNzBkMDBhYzRhNDNmNWI2OThmMWQxMTMxNDQwOGEuLjkw
NmQ4M2JmOWIxYjg1MmQxNDk5OGJmY2QwZGE0MjJlMzc0ZmZlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAxNS0wMy0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nIGFuZCBJZGVudGlmaWVyOjpmcm9tVWlkLgorCisg
ICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW06CisgICAg
ICAgIChpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXApOgorICAgICAgICAqIFBsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUpOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6
OmdldFByb3BlcnR5TmFtZXMpOgorCiAyMDE1LTAzLTE5ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmddIEFkZCB0ZXN0cyBmb3IgdW5i
bG9jayByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ1ODdhNDljOTU5OWVjMzMyODRjNWFjYzdiODRm
MTU1MzcyZGM0Y2EuLjU3MTZiNGE1NWM0MmU0NDdjMTJiZjE4NWRiOTQxYmRiZmNlNzYyNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wMy0yMiAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nIGFuZCBJZGVudGlmaWVyOjpmcm9t
VWlkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5QSlNPYmplY3Q6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDMtMjEgIERlYW4gSmFja3Nv
biAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgcHJlZml4IGZvciBDU1Mg
VHJhbnNmb3JtcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCA5YjFjYjhmNWYzZjFkZGNmN2E2ZjhhYTFiN2QwYmFm
YmUzMjE4OWZlLi5jNjM5YWVkYTBhY2FlNTAyMDEwNDgzNzZhMDIyZjA4MDhjZTg2ZjAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaApAQCAtNTIxLDggKzUyMSwxMCBAQAogICAgICAgICAgICAgZm9yIChpdGVyYXRvciBp
dCA9IHN0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAg
ICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5rZXkuZ2V0KCk7CiAgICAgICAgICAgICAgICAg
U3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGVudHJ5LT5nZXRQcm9wZXJ0eSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMobW9kZSkpKQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyKGV4ZWMsIG5hbWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmdldFByb3BlcnR5
ICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkg
fHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpKSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVCghbmFtZS0+aXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKG5h
bWUpKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIApAQCAtNTMyLDggKzUzNCwxMCBAQAogICAgICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9
IHN0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAg
ICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5rZXkuZ2V0KCk7CiAgICAgICAgICAgICAgICAg
U3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRF
bnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQotICAgICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udEVudW0pIHx8IG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbmFtZS0+aXNTeW1ib2woKSk7CisgICAgICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgU3RyaW5nKG5hbWUpKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApp
bmRleCAyMzRkMjQ4OGZmODkwYjhiZWU2OTdlZjU1YWE2ODAzODBhMTgxYTQyLi41OTBhNTM3MDE2
OTk1MmIxMjlmMGEzNDQ2NGNkNGE1ZThlZjNlYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0TWFrZUZ1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUsIHVuc2ln
bmVkIHBhCiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIHN0YXJ0aW5nTGlu
ZU51bWJlciA9IHN0ZDo6bWF4KDEsIHN0YXJ0aW5nTGluZU51bWJlcik7Ci0gICAgSWRlbnRpZmll
ciBuYW1lSUQgPSBuYW1lID8gbmFtZS0+aWRlbnRpZmllcigmZXhlYy0+dm0oKSkgOiBJZGVudGlm
aWVyKGV4ZWMsICJhbm9ueW1vdXMiKTsKKyAgICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBu
YW1lLT5pZGVudGlmaWVyKCZleGVjLT52bSgpKSA6IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgImFub255bW91cyIpOwogICAgIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlckNvdW50OyBpKyspCkBAIC02OTgs
NyArNjk4LDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0eU5h
bWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICAgICBKU09iamVjdCoganNPYmpl
Y3QgPSB0b0pTKG9iamVjdCk7CiAgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBwcm9wZXJ0eU5h
bWVzID0gbmV3IE9wYXF1ZUpTUHJvcGVydHlOYW1lQXJyYXkodm0pOwogICAgIFByb3BlcnR5TmFt
ZUFycmF5IGFycmF5KHZtKTsKLSAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVy
dHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OworICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKGpzT2JqZWN0
LCBleGVjLCBhcnJheSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKIAogICAgIHNpemVfdCBzaXplID0gYXJyYXkuc2l6ZSgpOwogICAgIHByb3BlcnR5TmFtZXMt
PmFycmF5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCmluZGV4IDIyYzE2MjMwYzdjMWQzNjkxMWM3ZDU4
OWNlNTBmMDk0Mjg3YTFkOWUuLjdmOWVkYjQxMzZlMjc0OTk3NDdkMjk2ZDJmMWEyZGM0ODliMDQ0
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIApAQCAtNjks
OSArNzAsOSBAQCBJZGVudGlmaWVyIE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKFZNKiB2bSkg
Y29uc3QKICAgICAgICAgcmV0dXJuIElkZW50aWZpZXIoSWRlbnRpZmllcjo6RW1wdHlJZGVudGlm
aWVyKTsKIAogICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIElkZW50
aWZpZXIodm0sIG1fc3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIG1fc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBt
X3N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAgIHJldHVybiBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbV9zdHJp
bmcubGVuZ3RoKCkpOwogfQogCiBjb25zdCBVQ2hhciogT3BhcXVlSlNTdHJpbmc6OmNoYXJhY3Rl
cnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcAppbmRleCAyZGY3ODc2NDEwZTc4Y2Y5ZmFiZjI0MTc4NmU2MDI0MmZlNGVl
ZTA5Li5mM2EyMjM4ZWJhOThmYzEyODI3YjgxZGVmMmM4MGM2MzE0Y2UwNWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBw
ZW5kQXJndW1lbnQoYm9vbCBhcmd1bWVudCkKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhl
Yyk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gdGhpc09iamVjdC0+Z2V0KG1fZXhlYywgSWRl
bnRpZmllcihtX2V4ZWMsIG1fbmFtZSkpOworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlzT2Jq
ZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fZXhlYywgbV9uYW1lKSk7
CiAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9u
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA3NmE3
YjExMWE4ZDg3N2E2NzliNWM4YjhlODk2ZTFhN2IxYjZiOGFjLi41YTA1YmE4OWI5ZTkwY2E5NDA3
Y2EzYThlYWU2MjA3NDcyOGExMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIFNjcmlwdFZhbHVl
Ojppc0Z1bmN0aW9uKCkgY29uc3QKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gaW5zcGVj
dG9yT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKHNjcmlwdFN0YXRlKTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKICAgICAg
ICAgICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNjcmlwdFN0YXRlLCBu
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHAKaW5kZXggMjg5M2M0MDVkZDc2ODZkMDQwNjg5YjJiZTM0ODc0NTRlODNj
Zjg4MS4uMGI5NjI3YjM3MGZmYzY5OGYzOWJkYjJlN2RhMzk4MDc1NzllMmE5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAKQEAgLTk3LDExICs5NywxMSBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRp
bkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoY29uc3QgUwogICAgIFJFTEVB
U0VfQVNTRVJUKGJvZHkpOwogICAgIGZvciAoY29uc3QgYXV0byYgY2xvc2VkVmFyaWFibGUgOiBw
cm9ncmFtLT5jbG9zZWRWYXJpYWJsZXMoKSkgewogICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUg
PT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQotICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYgKGNsb3NlZFZh
cmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFi
bGUtPmlzVW5pcXVlKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZtLnByb3BlcnR5TmFt
ZXMtPmlzUHJpdmF0ZU5hbWUoY2xvc2VkVmFyaWFibGUuZ2V0KCkpKTsKICAgICB9CiAgICAgYm9k
eS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZt
X3ZtLCBzb3VyY2UsIGJvZHksIGtpbmQsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDliODg5
NmI5NjgwMTQ5MTNmNDZiMzJjNDgwZTA1Nzg5NjM3OWRmYTQuLjg2ODQ3N2IxZDY1MDUzZTI2YjI4
YzAzZjZjNDE5NmNjNWE4ZmU1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKQEAgLTMxLDEyICszMSwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
ICAgICAKLSNkZWZpbmUgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUpICwgbV8jI25hbWUo
dm0sICNuYW1lKSwgbV8jI25hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0
ZU5hbWUoQVNDSUlMaXRlcmFsKCJTeW1ib2wuIiAjbmFtZSkpKSkKLSNkZWZpbmUgREVDTEFSRV9C
VUlMVElOX05BTUVTKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbV8jI25hbWU7IGNvbnN0IElkZW50
aWZpZXIgbV8jI25hbWUjI1ByaXZhdGVOYW1lOzsKKyNkZWZpbmUgSU5JVElBTElTRV9CVUlMVElO
X05BTUVTKG5hbWUpICwgbV8jI25hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUp
KSwgbV8jI25hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUo
KSkpCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhuYW1lKSBjb25zdCBJZGVudGlmaWVy
IG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lIyNQcml2YXRlTmFtZTsKICNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IobmFtZSkgXAogICAgIGNvbnN0
IElkZW50aWZpZXImIG5hbWUjI1B1YmxpY05hbWUoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZTsg
fSBcCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSMjUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJl
dHVybiBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7IH0KIAorI2RlZmluZSBJTklUSUFMSVNFX0JVSUxU
SU5fU1lNQk9MUyhuYW1lKSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSksIG1fIyNuYW1l
IyNTeW1ib2woSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZShBU0NJSUxpdGVyYWwoIlN5
bWJvbC4iICNuYW1lKSkpKQorI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1lNQk9MUyhuYW1lKSBE
RUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjU3lt
Ym9sOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SKG5hbWUpIFwKKyAg
ICBERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUihuYW1lKSBcCisgICAgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSMjU3ltYm9sKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1N5bWJv
bDsgfQorCiAjZGVmaW5lIElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkobmFtZSkg
bV9wcml2YXRlVG9QdWJsaWNNYXAuYWRkKG1fIyNuYW1lIyNQcml2YXRlTmFtZS5pbXBsKCksICZt
XyMjbmFtZSk7CiAjZGVmaW5lIElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkobmFt
ZSkgbV9wdWJsaWNUb1ByaXZhdGVNYXAuYWRkKG1fIyNuYW1lLmltcGwoKSwgJm1fIyNuYW1lIyNQ
cml2YXRlTmFtZSk7CiAgICAgCkBAIC00OCwyMyArNTQsMzAgQEAgY2xhc3MgQnVpbHRpbk5hbWVz
IHsKICAgICAgICAgOiBtX2VtcHR5SWRlbnRpZmllcihjb21tb25JZGVudGlmaWVycy0+ZW1wdHlJ
ZGVudGlmaWVyKQogICAgICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5J
VElBTElTRV9CVUlMVElOX05BTUVTKQogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJ
RklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUykKKyAgICAg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wo
SU5JVElBTElTRV9CVUlMVElOX1NZTUJPTFMpCiAgICAgewogICAgICAgICBKU0NfRk9SRUFDSF9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkK
ICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFN
RShJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKQorICAgICAgICBKU0NfQ09NTU9O
X1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVNFX1BS
SVZBVEVfVE9fUFVCTElDX0VOVFJZKQogICAgICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKICAgICAgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVNF
X1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKQorICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVNFX1BVQkxJQ19UT19QUklW
QVRFX0VOVFJZKQogICAgIH0KIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1
aWQpIGNvbnN0OworICAgIGJvb2wgaXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7CiAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYpIGNvbnN0OwogICAgIGNvbnN0IElkZW50aWZpZXImIGdldFB1YmxpY05hbWUoY29uc3QgSWRl
bnRpZmllciYpIGNvbnN0OwogICAgIAogICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKICAgICBKU0NfQ09NTU9O
X1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVfQlVJTFRJTl9J
REVOVElGSUVSX0FDQ0VTU09SKQorICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1dFTExfS05PV05fU1lNQk9MKERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xfQUNDRVNTT1IpCiAK
IHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBtX2VtcHR5SWRlbnRpZmllcjsKICAgICBKU0NfRk9S
RUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQogICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoREVDTEFSRV9C
VUlMVElOX05BTUVTKQorICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dF
TExfS05PV05fU1lNQk9MKERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xTKQogICAgIHR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGNvbnN0IElkZW50aWZpZXIqLCBJZGVudGlmaWVyUmVw
SGFzaD4gQnVpbHRpbk5hbWVzTWFwOwogICAgIEJ1aWx0aW5OYW1lc01hcCBtX3B1YmxpY1RvUHJp
dmF0ZU1hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wcml2YXRlVG9QdWJsaWNNYXA7CkBAIC03
Myw3ICs4NiwyMSBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewogI3VuZGVmIERFQ0xBUkVfQlVJTFRJ
Tl9OQU1FUwogI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUwogI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NZTUJP
TFMKKyN1bmRlZiBJTklUSUFMSVNFX0JVSUxUSU5fU1lNQk9MUworI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9TWU1CT0xfQUNDRVNTT1IKKworaW5saW5lIGJvb2wgQnVpbHRpbk5hbWVzOjppc1ByaXZh
dGVOYW1lKFN0cmluZ0ltcGwqIHVpZCkgY29uc3QKK3sKKyAgICBpZiAoIXVpZC0+aXNTeW1ib2wo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3ByaXZhdGVUb1B1YmxpY01h
cC5maW5kKHVpZCkgIT0gbV9wcml2YXRlVG9QdWJsaWNNYXAuZW5kKCk7Cit9CiAKK2lubGluZSBi
b29sIEJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaXNQcml2YXRlTmFtZShpZGVudC5pbXBsKCkpOworfQogCiBp
bmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVzOjpnZXRQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKQEAgLTkxLDcgKzExOCw3IEBAIGlubGluZSBj
b25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KSBjCiAgICAgcmV0dXJuIG1fZW1wdHlJZGVudGlmaWVyOwogfQogCi0gICAg
CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCmluZGV4IDlhOWRiMGJjNzBiOWYxMzVmNjVk
ZDJkNzk2ZGU2NTI4OTZhZTBmYjEuLjU3ODBmMDBjNzI4MTRhMzE4NTBlMWM4MmE1YWRjMmUyZWIy
ODgzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RB
bGxvY2F0aW9uUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCkBAIC0xMTgsNyArMTE4LDcgQEAgY2xhc3MgT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUgewogCiAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgICAg
IFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSk7Ci0gICAgICAgIHByb3Rv
dHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9w
ZXJ0eU5hbWVBcnJheSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIHByb3Rv
dHlwZS0+c3RydWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9w
ZXJ0eU5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
QW5kSW5jbHVkZVN5bWJvbHMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3Bl
cnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXkuZGF0
YSgpLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm9wZXJ0eU5hbWVWZWN0b3Iuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBwcm90b3R5cGUtPmdldERpcmVjdCh2bSwgcHJvcGVydHlOYW1lVmVjdG9yW2ldKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKaW5kZXggZjQ0ZDk3MDMzNTI4YTVhOTNhYTFkZjE2NDFlNTBlMTdhMjYy
NjU4OC4uMWFiY2RjYTZlMDcyN2RiZTAxNjMxYTUxM2YxYTg4NzY3ZWI2NGFjNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6YWRkVmFyKAogICAgIFZlY3RvcjxJZGVudGlmaWVyLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxv
dz4gdmFyaWFibGVzOwogICAgIHZhcmlhYmxlcy5yZXNlcnZlQ2FwYWNpdHkobnVtVmFyaWFibGVz
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytpKSB7Ci0gICAg
ICAgIEFTU0VSVCh2YXJTdGFja1tpXS5maXJzdC5pbXBsKCktPmlzQXRvbWljKCkpOworICAgICAg
ICBBU1NFUlQodmFyU3RhY2tbaV0uZmlyc3QuaW1wbCgpLT5pc0F0b21pYygpIHx8IHZhclN0YWNr
W2ldLmZpcnN0LmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgICAgIHZhcmlhYmxlcy5hcHBlbmQo
dmFyU3RhY2tbaV0uZmlyc3QpOwogICAgIH0KICAgICBjb2RlQmxvY2stPmFkb3B0VmFyaWFibGVz
KHZhcmlhYmxlcyk7CkBAIC0yMzc2LDE0ICsyMzc2LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwb3BUcnlBbmRFbWl0Q2F0Y2goVHJ5RGF0YSogdHJ5RGF0YSwgUmVnaXN0ZXJJ
RCoKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0YXRpY19lcnJv
cik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5n
Q29uc3RhbnQoSWRlbnRpZmllcihtX3ZtLCBtZXNzYWdlKSkpLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJpbmdDb25zdGFudChJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0sIG1lc3NhZ2UpKSktPmluZGV4KCkpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCh0cnVlKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFRocm93VHlwZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBlbWl0T3Bjb2Rl
KG9wX3Rocm93X3N0YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENv
bnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcihtX3ZtLCBtZXNzYWdlKSkp
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShh
ZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0sIG1lc3NhZ2UpKSkt
PmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmYWxzZSk7CiB9CiAKQEAgLTI1
NTAsNyArMjU1MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2Vw
dGlvbklmTmVlZGVkKCkKICAgICBpZiAoIWlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1cm47
CiAgICAgZW1pdE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXIo
bV92bSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSkpLT5pbmRleCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJpbmdDb25z
dGFudChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0sIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZh
bHNlKTsKIH0KICAgICAKQEAgLTI1ODQsNyArMjU4NCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVz
c2lvCiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IG5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6
TG9vcCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1YmplY3QgPSBuZXdUZW1wb3JhcnkoKTsK
ICAgICBlbWl0Tm9kZShzdWJqZWN0LmdldCgpLCBzdWJqZWN0Tm9kZSk7Ci0gICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHN1YmplY3Qu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgc3ViamVj
dC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKICAgICB7CiAgICAgICAg
IENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGVtaXRNb3ZlKGFy
Z3MudGhpc1JlZ2lzdGVyKCksIHN1YmplY3QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCmluZGV4IDYwYTQ5NGRkY2Y0
YjE1MzgxYWNhZjBjNTgxODk2NDY0ZTdhMmU0M2IuLjY1YzMwMWRiZWUxNmQzZjc0YjU0MjdiN2Ew
ZjY5MjQ4ODQxYzRlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZElkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBEZXNpcmVkSWRl
bnRpZmllcnM6OnJlYWxseUFkZChWTSYgdm0sIENvbW1vbkRhdGEqIGNvbW1vbkRhdGEpCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYWRkZWRJZGVudGlmaWVycy5zaXplKCk7ICsraSkg
ewogICAgICAgICBTdHJpbmdJbXBsKiByZXAgPSBtX2FkZGVkSWRlbnRpZmllcnNbaV07CiAgICAg
ICAgIEFTU0VSVChyZXAtPmhhc0F0TGVhc3RPbmVSZWYoKSk7Ci0gICAgICAgIGNvbW1vbkRhdGEt
PmRmZ0lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKCZ2bSwgcmVwKSk7CisgICAgICAgIGNv
bW1vbkRhdGEtPmRmZ0lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwg
cmVwKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGQxNWFmMzIxYTIzYzk1NDVk
MmYwZWZlNjAwZDc4NzI3Mzg2NjFmMjYuLjNkMGY2MGVkMTNhZWQyNWMwMDdmZmFmYmRlZWJhZTQ3
NzkwMGY5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xOTYsMjAgKzE5NiwyMCBAQCBKU1ZhbHVl
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgU3RyaW5nIHNjcmlwdElEID0gU3RyaW5nOjpudW1iZXIoc291cmNlQ29kZS0+cHJvdmlk
ZXIoKS0+YXNJRCgpKTsKICAgICBKU09iamVjdCogbG9jYXRpb24gPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjKTsKLSAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXIoZXhlYywgInNjcmlwdElkIiksIGpzU3RyaW5nKGV4ZWMsIHNjcmlwdElEKSk7Ci0gICAgbG9j
YXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lTnVtYmVy
IiksIGpzTnVtYmVyKGxpbmVOdW1iZXIpKTsKLSAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgImNvbHVtbk51bWJlciIpLCBqc051bWJlcihjb2x1bW5O
dW1iZXIpKTsKKyAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgInNjcmlwdElkIiksIGpzU3RyaW5nKGV4ZWMsIHNjcmlwdElEKSk7
CisgICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJsaW5lTnVtYmVyIiksIGpzTnVtYmVyKGxpbmVOdW1iZXIpKTsKKyAgICBsb2Nh
dGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
ImNvbHVtbk51bWJlciIpLCBqc051bWJlcihjb2x1bW5OdW1iZXIpKTsKIAogICAgIEpTT2JqZWN0
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpLCBsb2NhdGlvbik7
CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAibG9jYXRpb24iKSwgbG9jYXRpb24pOwogCiAgICAgU3RyaW5nIG5hbWUgPSBmdW5j
dGlvbi0+bmFtZShleGVjKTsKICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXN1
bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJuYW1lIiksIGpzU3Ry
aW5nKGV4ZWMsIG5hbWUpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1l
KSk7CiAKICAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSBmdW5jdGlvbi0+ZGlzcGxheU5hbWUoZXhl
Yyk7CiAgICAgaWYgKCFkaXNwbGF5TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImRpc3BsYXlOYW1lIiksIGpzU3Ry
aW5nKGV4ZWMsIGRpc3BsYXlOYW1lKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImRpc3BsYXlOYW1lIiksIGpzU3Ry
aW5nKGV4ZWMsIGRpc3BsYXlOYW1lKSk7CiAKICAgICAvLyBGSVhNRTogcHJvdmlkZSBmdW5jdGlv
biBzY29wZSBkYXRhIGluICJzY29wZXNSYXciIHByb3BlcnR5IHdoZW4gSlNDIHN1cHBvcnRzIGl0
LgogICAgIC8vIDxodHRwczovL3dlYmtpdC5vcmcvYi84NzE5Mj4gW0pTQ10gZXhwb3NlIGZ1bmN0
aW9uIChjbG9zdXJlKSBpbm5lciBjb250ZXh0IHRvIGRlYnVnZ2VyCkBAIC0yMjAsOCArMjIwLDgg
QEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzKEV4ZWNTdGF0
ZSogZXhlYykKIHN0YXRpYyBKU09iamVjdCogY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBK
U09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgcmVzdWx0
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAibmFtZSIpLCBqc1N0cmlu
ZyhleGVjLCBuYW1lKSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
ZmllcihleGVjLCAidmFsdWUiKSwgdmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhl
YywgbmFtZSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgInZhbHVlIiksIHZhbHVlKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC0zNzQsOCArMzc0LDggQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6d2Vh
a01hcEVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKICAgICBmb3IgKGF1dG8gaXQgPSB3ZWFrTWFw
LT53ZWFrTWFwRGF0YSgpLT5iZWdpbigpOyBpdCAhPSB3ZWFrTWFwLT53ZWFrTWFwRGF0YSgpLT5l
bmQoKTsgKytpdCkgewogICAgICAgICBKU09iamVjdCogZW50cnkgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjKTsKLSAgICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJrZXkiKSwgaXQtPmtleSk7Ci0gICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAidmFsdWUiKSwgaXQtPnZhbHVlLmdldCgpKTsKKyAg
ICAgICAgZW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJrZXkiKSwgaXQtPmtleSk7CisgICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSwgaXQtPnZhbHVlLmdl
dCgpKTsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGZldGNoZWQrKywgZW50
cnkpOwogICAgICAgICBpZiAobnVtYmVyVG9GZXRjaCAmJiBmZXRjaGVkID49IG51bWJlclRvRmV0
Y2gpCiAgICAgICAgICAgICBicmVhazsKQEAgLTQyNCw3ICs0MjQsNyBAQCBKU1ZhbHVlIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjppdGVyYXRvckVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgSlNPYmplY3QqIGVudHJ5ID0gY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYyk7Ci0gICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
ZmllcihleGVjLCAidmFsdWUiKSwgbmV4dFZhbHVlKTsKKyAgICAgICAgZW50cnktPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2YWx1ZSIpLCBuZXh0
VmFsdWUpOwogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgZW50cnkpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAppbmRleCA0YmZmYWQxZTEw
MDBiOTE5YmY1NDhhZmRiNDc1NDYxMjRlMTMwOWZjLi5iMWNlMGExMzhiYzA1ZjEwMDc3MTU3NWU5
YTNiOWI1YzU0NzkwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcApAQCAt
NjYsNyArNjYsNyBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04oIndlYWtNYXBFbnRyaWVzIiwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbldlYWtNYXBFbnRyaWVzLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
TigiaXRlcmF0b3JFbnRyaWVzIiwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkl0ZXJhdG9yRW50cmllcywgRG9udEVudW0sIDEpOwogCi0gICAgSWRlbnRpZmllciBldmFsdWF0
ZUlkZW50aWZpZXIoJnZtLCAiZXZhbHVhdGUiKTsKKyAgICBJZGVudGlmaWVyIGV2YWx1YXRlSWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZXZhbHVhdGUiKTsKICAgICBH
ZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCk7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgMCwgZXZhbHVhdGVJZGVudGlmaWVyLnN0cmluZygpLCBqc0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKTsKICAgICBhY2Nlc3Nvci0+c2V0
R2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmNwcAppbmRleCA1OGJiNjhiMGExZjM4OGYyMWNhZjhiNWY2MjJjYWQ3N2IyMDc5
ZTJkLi40ODI4Mzg2NTI0ZGMyNmFiNDZjODQxMzU2ODMxYzcwZGM2ZTlmZjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFT
Y3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCkBAIC02Myw3ICs2Myw3IEBACiAKICNkZWZpbmUg
SlNDX05BVElWRV9OT05fSU5ERVhfQUNDRVNTT1IoanNOYW1lLCBjcHBOYW1lLCBhdHRyaWJ1dGVz
KSBcCiAgICAgeyBcCi0gICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGpzTmFtZSk7
IFwKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sIGpzTmFtZSk7IFwKICAgICAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOyBcCiAgICAgICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIGlkZW50
aWZpZXIuc3RyaW5nKCksIGNwcE5hbWUpOyBcCiAgICAgICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIo
dm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCAy
N2RjMDk5YmRiNThiMDc0M2EzYmI2ZTE1YTJkMzBkNTNiMDFiY2IyLi5mOWY2YzFjNDlhYWE2MDZh
MzczMzQ4YjZlMmQ4ZmMyNzBmY2RlOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAgLTExOSwx
MSArMTE5LDExIEBAIGNsYXNzIENyZWF0ZVNjcmlwdENhbGxTdGFja0Z1bmN0b3Igewogc3RhdGlj
IHZvaWQgZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGV4Y2VwdGlvbk9iamVjdCwgaW50KiBsaW5lTnVtYmVyLCBpbnQq
IGNvbHVtbk51bWJlciwgU3RyaW5nKiBzb3VyY2VVUkwpCiB7CiAgICAgLy8gRklYTUU6IDxodHRw
Oi8vd2Via2l0Lm9yZy9iLzExNTA4Nz4gV2ViIEluc3BlY3RvcjogU2hvdWxkIG5vdCBuZWVkIHRv
IGV2YWx1YXRlIEphdmFTY3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9ucwotICAgIEpTVmFsdWUgbGlu
ZVZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cihleGVjLCAibGluZSIpKTsKKyAgICBKU1ZhbHVlIGxpbmVWYWx1ZSA9IGV4Y2VwdGlvbk9iamVj
dC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxp
bmUiKSk7CiAgICAgKmxpbmVOdW1iZXIgPSBsaW5lVmFsdWUgJiYgbGluZVZhbHVlLmlzTnVtYmVy
KCkgPyBpbnQobGluZVZhbHVlLnRvTnVtYmVyKGV4ZWMpKSA6IDA7Ci0gICAgSlNWYWx1ZSBjb2x1
bW5WYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXIoZXhlYywgImNvbHVtbiIpKTsKKyAgICBKU1ZhbHVlIGNvbHVtblZhbHVlID0gZXhjZXB0aW9u
T2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAiY29sdW1uIikpOwogICAgICpjb2x1bW5OdW1iZXIgPSBjb2x1bW5WYWx1ZSAmJiBjb2x1bW5W
YWx1ZS5pc051bWJlcigpID8gaW50KGNvbHVtblZhbHVlLnRvTnVtYmVyKGV4ZWMpKSA6IDA7Ci0g
ICAgSlNWYWx1ZSBzb3VyY2VVUkxWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKTsKKyAgICBKU1ZhbHVlIHNv
dXJjZVVSTFZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic291cmNlVVJMIikpOwogICAgICpzb3VyY2VVUkwg
PSBzb3VyY2VVUkxWYWx1ZSAmJiBzb3VyY2VVUkxWYWx1ZS5pc1N0cmluZygpID8gc291cmNlVVJM
VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIDogQVNDSUlMaXRlcmFsKCJ1bmRlZmlu
ZWQiKTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNWZhOGJmZjhlYjlhZjYyYzgyODAwZTJm
YjVlZTg5NGYwYWM4NWQxMS4uZGFmY2FhMmIzZTI0NzllOTNkMjk0MTIzYzJhZTMyYTE0YmYxYjBl
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8KICAgICAKICAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlVmFsdWUpOwotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7CiB9CiAKQEAg
LTE2Miw3ICsxNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5SWRCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cgogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
Ci0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0g
SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUg
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKQEAgLTE3OSw3ICsxNzks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIElkZW50
aWZpZXIgaWRlbnQgPSB1aWQtPmlzVW5pcXVlKCkgPyBJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVO
YW1lKHVpZCkpIDogSWRlbnRpZmllcih2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0g
SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7
CkBAIC0yMDYsNyArMjA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Jbk9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkkKICAgICAKICAgICBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+
YWNjZXNzVHlwZSk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCBrZXkpOworICAgIElkZW50
aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBrZXkpOwogICAgIFByb3BlcnR5
U2xvdCBzbG90KGJhc2UpOwogICAgIGJvb2wgcmVzdWx0ID0gYXNPYmplY3QoYmFzZSktPmdldFBy
b3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CiAgICAgCkBAIC0yMzAsNyArMjMwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgSlMKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCBrZXkpOwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBrZXkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KGJhc2UpLT5oYXNQcm9w
ZXJ0eShleGVjLCBpZGVudCkpKTsKIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qLCBFCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2
bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
dWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZVN0dWJJbmZvKgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQo
dm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0s
IHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKSwgZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnB1dChleGVjLCBpZGVudCwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlU3R1YkluCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVu
dCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAg
YXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSktPnB1dERpcmVjdChleGVjLT52
bSgpLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQpAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAg
ICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCkt
PnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlU3R1YgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVp
ZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7
CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsK
KyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAg
ICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5m
by0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHUK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydQogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vz
c1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
ZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlm
aWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlw
ZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRO
b25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIg
aWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsK
IAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAg
LTQyNSw3ICs0MjUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVj
dFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdAogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
ICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogICAg
IAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAg
LTQ0Niw3ICs0NDYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVj
dE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cgogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
ICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMTM5
MSwxMCArMTM5MSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QXJndW1lbnRzTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfCiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIC8vIEhlcmUgd2UgY2FuIGFzc3VtZSB0
aGF0IHRoZSBhcmd1bWVybnRzIHdlcmUgY3JlYXRlZC4gQmVjYXVzZSBvdGhlcndpc2UgdGhlIEpJ
VCBjb2RlIHdvdWxkCiAgICAgLy8gaGF2ZSBub3QgbWFkZSB0aGlzIGNhbGwuCi0gICAgSWRlbnRp
ZmllciBpZGVudCgmdm0sICJsZW5ndGgiKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGV4ZWMt
PnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIpLmpzVmFsdWUoKTsKICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlVmFsdWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVl
LmdldChleGVjLCBpZGVudCwgc2xvdCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFz
ZVZhbHVlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBzbG90KSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYTEwNmM4ZDNkNGM2MzY2MjQyMTI3ZTljODE1
MzRjYTIzNGMxZGNhYy4uNTdlNzc2ZGIyNDdhZGMxZmJkNDYwMTQ1ODM5YWU4YTc4NTQxMDU2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTYxNSwxMSArNjE1LDExIEBAIGNsYXNzIEdsb2JhbE9i
amVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAi
Z2V0RWxlbWVudCIsIGZ1bmN0aW9uR2V0RWxlbWVudCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAic2V0RWxlbWVudFJvb3QiLCBmdW5jdGlvblNldEVsZW1lbnRSb290LCAyKTsKICAgICAg
ICAgCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVy
KCZ2bSwgIkRGR1RydWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1RydWVJbnRyaW5zaWMsIERv
bnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgIk9TUkV4aXQiKSwgMCwgZnVuY3Rpb25VbmRlZmlu
ZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJpc0Zp
bmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlMiwgSXNGaW5hbFRpZXJJbnRyaW5zaWMsIERvbnRF
bnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgInByZWRpY3RJbnQzMiIpLCAwLCBmdW5jdGlvblVuZGVm
aW5lZDIsIFNldEludDMySGVhcFByZWRpY3Rpb25JbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpG
dW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVu
dGlmaWVyKCZ2bSwgImZpYXRJbnQ1MiIpLCAwLCBmdW5jdGlvbklkZW50aXR5LCBGaWF0SW50NTJJ
bnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkRGR1Ry
dWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1RydWVJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlND
OjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk9TUkV4aXQiKSwgMCwgZnVuY3Rpb25VbmRlZmlu
ZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJpc0ZpbmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlMiwgSXNGaW5hbFRpZXJJbnRy
aW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInByZWRpY3RJ
bnQzMiIpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDIsIFNldEludDMySGVhcFByZWRpY3Rpb25JbnRy
aW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImZpYXRJbnQ1
MiIpLCAwLCBmdW5jdGlvbklkZW50aXR5LCBGaWF0SW50NTJJbnRyaW5zaWMsIERvbnRFbnVtIHwg
SlNDOjpGdW5jdGlvbik7CiAgICAgICAgIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImVmZmVj
dGZ1bDQyIiwgZnVuY3Rpb25FZmZlY3RmdWw0MiwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAibWFrZU1hc3F1ZXJhZGVyIiwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIsIDApOwpAQCAtNjQx
LDIwICs2NDEsMjAgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0
IHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4
ZWMoKSwgMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUo
KTsgKytpKQogICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbEV4ZWMoKSwg
aSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsKLSAgICAgICAgcHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7Cisg
ICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxFeGVjKCks
ICJhcmd1bWVudHMiKSwgYXJyYXkpOwogICAgICAgICAKLSAgICAgICAgcHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNvbnNvbGUiKSwganNVbmRlZmluZWQoKSk7CisgICAg
ICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxFeGVjKCksICJj
b25zb2xlIiksIGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAogICAgIHZvaWQgYWRkRnVuY3Rpb24o
Vk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgdW5zaWdu
ZWQgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwg
bmFtZSk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRpZmllci5zdHJpbmcoKSwg
ZnVuY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRDb25zdHJ1Y3RhYmxlRnVuY3Rp
b24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgdW5z
aWduZWQgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2
bSwgbmFtZSk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRpZmllci5zdHJpbmco
KSwgZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5jdGlvbikpOwogICAgIH0KIH07CkBAIC04ODYs
NyArODg2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAg
Z2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCi0gICAgICAgIGV4ZWMtPnZtKCksIElkZW50aWZpZXIo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOworICAgICAg
ICBleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwog
ICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CkBAIC0xMjY3LDcgKzEyNjcsNyBAQCBzdGF0aWMgYm9v
bCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9y
PFNjcmlwdD4mIHNjcgogICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCByZXR1cm5WYWx1
ZS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGV2YWx1YXRpb25F
eGNlcHRpb24pIHsKICAgICAgICAgICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVh
dGlvbkV4Y2VwdGlvbi50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVl
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IElkZW50aWZpZXIgc3RhY2tJRChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7
CisgICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKICAgICAgICAgICAgIEpTVmFs
dWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24uZ2V0KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBzdGFja0lEKTsKICAgICAgICAgICAgIGlmICghc3RhY2tWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHN0YWNrVmFsdWUu
dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCmluZGV4IGFiMDE1MDFiMTI5MTdkOWVlODBlZDMxNTIzZjkyNThkYzQ0
MmRhMmUuLmVkZmQ2NzAxZGMwZjNkNTkxY2IzNzhkMzk5OGNiN2Q0MmY5MDRjNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAg
dm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKGJpdHdpc2Vf
Y2FzdDxpbnQqKj4oJnRlc3RWZWN0b3IpWzBdID09IHRlc3RWZWN0b3IuYmVnaW4oKSk7CiAjZW5k
aWYKIAotICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9PSAzMik7
CisgICAgQVNTRVJUKFN0cmluZ0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVmZmVyID09IDgpOwogfQog
I2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmlu
ZGV4IGQ3MWEzZWZlNzY4OWRmOWRmNWU4NzllNjNlODI0N2FjODA0ODM5NTcuLmE5MWU0Njc5MDZi
NWFmZmZhNDdkZjdjZWU3YjVlNTJjNmZjMjNlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE3Niw3ICsxNzYsNyBA
QCBjb25zdCBGdW5jdGlvbkNvZGUgPSAyCiBjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldAogCiAjIFN0cmluZyBmbGFncy4KLWNvbnN0IEhhc2hGbGFnczhCaXRC
dWZmZXIgPSAzMgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDgKIAogIyBDb3BpZWQgZnJv
bSBQcm9wZXJ0eU9mZnNldC5oCiBjb25zdCBmaXJzdE91dE9mTGluZU9mZnNldCA9IDEwMApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBjNDhlNDFjNTg2NWRm
ZDUwMDc0ZjQ5ZGJhMTNkYzc0NjI5NjYzZWQxLi4wYzY4MDc4ZTNiOTZkMzU4ZDI0NmJkOTRjNjA0
NTI1NDkzMjViZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aApAQCAtNTcxLDcgKzU3MSw3IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAg
aWYgKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQpCiAgICAgICAgICAg
ICB1c2VzQXJndW1lbnRzKCk7Ci0gICAgICAgIEFTU0VSVChpZGVudC0+aW1wbCgpLT5pc0F0b21p
YygpKTsKKyAgICAgICAgQVNTRVJUKGlkZW50LT5pbXBsKCktPmlzQXRvbWljKCkgfHwgaWRlbnQt
PmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgICAgIG1fc2NvcGUubV92YXJEZWNsYXJhdGlvbnMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCppZGVudCwgYXR0cnMpKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzNWVlMzAyZDcxOTFkMGRlNDA0ZTgy
NTk3MmJlMmY0Yjc3NzVlMTNjLi44N2Q4OGY3MzdlNDg0ZjExODkyZWI0NGYxMWM2NzNkYzZjM2Jh
OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yOTEsMTAg
KzI5MSwxMCBAQAogICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7CiAgICAgICAg
IHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwogICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewotICAgICAgICAgICAgaWYgKHNj
b3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkp
KSkKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVy
Ojpmcm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJh
bWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgaWYg
KHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZh
cmlhYmxlLmdldCgpKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAg
IGlmICh2YXJpYWJsZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQpA
QCAtNTIzLDcgKzUyMyw3IEBACiAgICAgQVNTRVJUKCFuYW1lLmlzRW1wdHkoKSk7CiAgICAgQVNT
RVJUKCFuYW1lLmlzTnVsbCgpKTsKICAgICAKLSAgICBBU1NFUlQobmFtZS5pbXBsKCktPmlzQXRv
bWljKCkpOworICAgIEFTU0VSVChuYW1lLmltcGwoKS0+aXNBdG9taWMoKSB8fCBuYW1lLmltcGwo
KS0+aXNTeW1ib2woKSk7CiAgICAgaWYgKGRlcHRoKSB7CiAgICAgICAgIGlmIChraW5kID09IERl
Y29uc3RydWN0VG9WYXJpYWJsZXMpCiAgICAgICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGRl
Y2xhcmVWYXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVjb25zdHJ1Y3QgdG8gYSB2YXJpYWJsZSBu
YW1lZCAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXggNDI3Yjg0Y2RhNTMyMzFhNTQ3MDZm
NGNlZmVjM2Q4MWQ3OGI1MGRkYi4uNDBlY2U1M2EwYjY0NGMwODIwNzljMjJkZjBmOTQzYmMyNWRi
ZGEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVu
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAt
NzMsMjAgKzczLDIwIEBACiAgICAgICAgIGlmICghbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
IHZtLT5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXI7CiAgICAgICAgIGlmIChjaGFyYWN0
ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikgewotICAgICAgICAgICAgbV9pZGVu
dGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAg
ICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBj
aGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxh
c3QoKTsKICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgICAg
IGlmIChJZGVudGlmaWVyKiBpZGVudCA9IG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBd
XSkKICAgICAgICAgICAgICAgICByZXR1cm4gKmlkZW50OwotICAgICAgICAgICAgbV9pZGVudGlm
aWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAgICAg
ICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0
ZXJzWzBdXSA9ICZtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgICAgIHJldHVybiBtX2lk
ZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgfQogICAgICAgICBJZGVudGlmaWVyKiBpZGVudCA9
IG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07CiAgICAgICAgIGlmIChpZGVudCAm
JiBJZGVudGlmaWVyOjplcXVhbChpZGVudC0+aW1wbCgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKQog
ICAgICAgICAgICAgcmV0dXJuICppZGVudDsKLSAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQo
SWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAgICAgIG1faWRlbnRpZmll
cnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkp
OwogICAgICAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gJm1faWRlbnRp
ZmllcnMubGFzdCgpOwogICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiAgICAg
fQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAg
ICAgICAgaWYgKElkZW50aWZpZXIqIGlkZW50ID0gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3Rl
cnNbMF1dKQogICAgICAgICAgICAgICAgIHJldHVybiAqaWRlbnQ7Ci0gICAgICAgICAgICBtX2lk
ZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAg
ICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgICAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2No
YXJhY3RlcnNbMF1dID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICAgICAgcmV0dXJu
IG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICB9CkBAIC0xMTYsNyArMTE2LDcgQEAKICAg
ICAKICAgICBpbmxpbmUgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlTnVt
ZXJpY0lkZW50aWZpZXIoVk0qIHZtLCBkb3VibGUgbnVtYmVyKQogICAgIHsKLSAgICAgICAgbV9p
ZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VD
TUFTY3JpcHQobnVtYmVyKSkpOworICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChudW1i
ZXIpKSk7CiAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDk4NTQ4ZDJh
NDFkODZiNzdlNWQ1N2JmNDdmY2NmOTYwZjgyZmE4YjkuLmZkOTAzZTU0ZDE4MGZkYmNjMmJjODVi
YzM0ODcyYTM1MmY4YmIzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmNwcApAQCAtMTgwLDEwICsxODAsMTAgQEAgYm9vbCBBcmd1bWVudHM6OmdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEK
IAogICAgIGlmIChKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUpIHsK
KyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5
bWJvbCkgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgICAg
ICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNUSU9OKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5p
dGVyYXRvclByaXZhdGVOYW1lLCBhcmd1bWVudHNGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsK
KyAgICAgICAgdGhpc09iamVjdC0+SlNDX05BVElWRV9GVU5DVElPTihleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuaXRlcmF0b3JTeW1ib2wsIGFyZ3VtZW50c0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDAp
OwogICAgICAgICBpZiAoSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBpKSk7CiAgICAgfQotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKSB7CisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygp
KSB7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxs
ZWUpOwogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggYWQ4Yjc1OTBkODVlNjU2
YTkxMmI0YWE5OTE3NjBmYWQzNjMwNjBiZi4uZmMzNWE5ZmM1MTI4NGMwNTRkMDBmZGU3ZmY4NmNm
ZjcwMTkyNDgzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDMsNyArNDMsNyBAQCB2
b2lkIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAg
ICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcmd1bWVudHNJ
dGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFyZ3VtZW50c0l0
ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBhcmd1bWVudHNJdGVyYXRvclByb3Rv
dHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggZjc2
ODY4YzAzZWE1MzM4MDEwYTJiN2IwNjFmZjBkNDI5MDg1NGJjMi4uYjg2MjY3NzAxZjQwOTkwNjgy
NTU5M2MzZjlkNjQ1YmQxZmEzNmZiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTU5LDcgKzU5LDcg
QEAgdm9pZCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQ
cm90b3R5cGUodGhpcyk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yUHJvdG9GdW5jSXRlcmF0b3IsIERv
bnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yU3ltYm9sLCBhcnJheUl0ZXJhdG9yUHJvdG9GdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAw
KTsKIH0KIAogYm9vbCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggM2ZkMDM0YTFjMzI4NDYxYTQ2NWNlNjYyYzA5
OGQyM2RlMWI0ODc0ZC4uYzRhNzBkODkzMTVlYTk5YzNmZTM5MGM3NGYyMDYwYTBjYzFkODlkMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3Rv
dHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheVByb3RvRnVuY1ZhbHVlcywg
RG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wsIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiB9CiAK
IGJvb2wgQXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKQEAgLTUzMCw3ICs1MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICB0aGlzT2Jq
LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCArIG4sIGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKLSAgICAgICAgICAgIElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKGV4ZWMsIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGVuZ3Ro
KSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhleGVjKSk7CisgICAgICAg
ICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8aW50
NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPnB1dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KG4pLCBzbG90KTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCkBAIC03MzUsNyArNzM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIAogICAgIFByb3BlcnR5TmFtZUFycmF5
IG5hbWVBcnJheShleGVjKTsKLSAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOworICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQ
cm9wZXJ0eU5hbWVzKHRoaXNPYmosIGV4ZWMsIG5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlOjpJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApp
bmRleCA1NmRmMzQ1MDI4N2ZmOTk5YTM4ZmNmNGNiNzE1MGU4NjFhNTY0M2U4Li5hNmQxOTFlNjVk
NTM3ZTllMzAxNWZiZGZmOTliZDkxNDkwMGIwZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yMiwyNSArMjIsMjgg
QEAKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogCiAjaW5jbHVkZSAiQnVpbHRpbk5h
bWVzLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NCdWls
dGlucy5oIgogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0j
ZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUodm0sICNuYW1lKQot
I2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKHZtLCAjbmFt
ZSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZShJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCisjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChu
YW1lKSAsIG5hbWUjI0tleXdvcmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQog
I2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1l
KG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQorI2RlZmluZSBJTklUSUFMSVpF
X1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMjU3ltYm9s
KCkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAgICAg
OiBudWxsSWRlbnRpZmllcigpCiAgICAgLCBlbXB0eUlkZW50aWZpZXIoSWRlbnRpZmllcjo6RW1w
dHlJZGVudGlmaWVyKQotICAgICwgdW5kZXJzY29yZVByb3RvKHZtLCAiX19wcm90b19fIikKLSAg
ICAsIHRoaXNJZGVudGlmaWVyKHZtLCAidGhpcyIpCi0gICAgLCB1c2VTdHJpY3RJZGVudGlmaWVy
KHZtLCAidXNlIHN0cmljdCIpCisgICAgLCB1bmRlcnNjb3JlUHJvdG8oSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIl9fcHJvdG9fXyIpKQorICAgICwgdGhpc0lkZW50aWZpZXIoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInRoaXMiKSkKKyAgICAsIHVzZVN0cmljdElkZW50aWZpZXIoSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZSBzdHJpY3QiKSkKICAgICAsIG1fYnVpbHRpbk5h
bWVzKG5ldyBCdWlsdGluTmFtZXModm0sIHRoaXMpKQogICAgIEpTQ19DT01NT05fSURFTlRJRklF
UlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5U
SUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFM
SVpFX1BSSVZBVEVfTkFNRSkKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX1NZTUJPTCkKIHsKIH0KIApAQCAtNDgsNiAr
NTEsMTYgQEAKIHsKIH0KIAorYm9vbCBDb21tb25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZShT
dHJpbmdJbXBsKiB1aWQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5pc1By
aXZhdGVOYW1lKHVpZCk7Cit9CisKK2Jvb2wgQ29tbW9uSWRlbnRpZmllcnM6OmlzUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVpbHRp
bk5hbWVzLT5pc1ByaXZhdGVOYW1lKGlkZW50KTsKK30KKwogY29uc3QgSWRlbnRpZmllciogQ29t
bW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBj
b25zdAogewogICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoaWRlbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKaW5kZXggNmYzNGZhOTMwZDNiMTYyODc1ODBiYTQ1ZGQ1YjU3ZDQwN2VkM2U0Ni4uZTYwMWI3
NGRmMzRhMDNlMjcxMDE3MmRkNjc5YzQzY2JjOTdhMjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMzQsNyArMjM0LDYg
QEAKICAgICBtYWNybyh1bnNjb3BhYmxlKQogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9J
REVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwKLSAgICBKU0NfQ09NTU9OX1BS
SVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChtYWNybykgXAogICAgIG1h
Y3JvKGl0ZXJhdGVkT2JqZWN0KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvck5leHRJbmRleCkg
XAogICAgIG1hY3JvKGFycmF5SXRlcmF0aW9uS2luZCkgXApAQCAtMjk4LDcgKzI5NywxMyBAQAog
I2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9C
QUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKICAgICAgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lE
RU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCi0gICAgICAgIAor
CisjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJP
TF9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNTeW1ib2w7CisgICAgICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwpCisjdW5k
ZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JB
TAorCisgICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZShTdHJpbmdJbXBsKiB1aWQpIGNvbnN0Owor
ICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7CiAgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVy
JikgY29uc3Q7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0VudW1lcmF0aW9uTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51
bWVyYXRpb25Nb2RlLmgKaW5kZXggNGRiYWY3YjQxN2RjNzA4ZmJjNmM3MjUwOWYxOWY1NDRmMDFi
OTZiZC4uZWRhMmNiMTRiNTU5NDczMDZmMzMwNDQ0Yjg5YzQwZTJjNzg0YzBhZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKQEAgLTI4LDYz
ICsyOCw1MiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBFbnVtZXJhdGlvbk1vZGUgewot
ICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCi0gICAgRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllc0FuZFNraXBKU09iamVjdCwKLSAgICBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLAotICAg
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3QKLX07CitjbGFzcyBFbnVt
ZXJhdGlvbk1vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzID0gMXUgPDwgMDsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19mbGFnU2tpcEpTT2JqZWN0ID0gMXUgPDwgMTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19mbGFnSW5jbHVkZVN5bWJvbHMgPSAxdSA8PCAyOworCisgICAgZW51bSBFbnVtZXJh
dGlvbk1vZGVSZXByZXNlbnRhdGlvblRhZyA6IHVuc2lnbmVkIHsKKyAgICAgICAgRXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyA9IDAsCisgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXNB
bmRJbmNsdWRlU3ltYm9scyA9IHNfZmxhZ0luY2x1ZGVTeW1ib2xzLAorICAgICAgICBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzID0gc19mbGFnSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcywKKyAg
ICAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzID0gc19mbGFn
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyB8IHNfZmxhZ0luY2x1ZGVTeW1ib2xzLAorICAgIH07
CisKKyAgICBFbnVtZXJhdGlvbk1vZGUoRW51bWVyYXRpb25Nb2RlUmVwcmVzZW50YXRpb25UYWcg
dGFnKQorICAgICAgICA6IG1fZmxhZ3ModGFnKQorICAgIHsKKyAgICB9CiAKLWlubGluZSBib29s
IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoRW51bWVyYXRpb25Nb2RlIG1vZGUpCi17
Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
OgotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDoKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGJvb2wgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9mbGFncyAmIHNfZmxhZ0luY2x1ZGVEb250RW51bVByb3BlcnRpZXM7
CiAgICAgfQotfQogCi1pbmxpbmUgYm9vbCBzaG91bGRFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2Ug
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHNob3VsZEluY2x1ZGVKU09iamVjdFBy
b3BlcnR5TmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEobV9mbGFncyAmIHNf
ZmxhZ1NraXBKU09iamVjdCk7CiAgICAgfQotfQogCi1pbmxpbmUgYm9vbCBzaG91bGRJbmNsdWRl
SlNPYmplY3RQcm9wZXJ0eU5hbWVzKEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRj
aCAobW9kZSkgewotICAgIGNhc2UgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllczoKLSAgICBjYXNl
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNh
c2UgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICBjYXNlIElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBib29sIHNob3VsZEluY2x1ZGVTeW1ib2xzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2ZsYWdzICYgc19mbGFnSW5jbHVkZVN5bWJvbHM7CiAgICAgfQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KIAotaW5saW5lIEVudW1l
cmF0aW9uTW9kZSBtb2RlVGhhdFNraXBzSlNPYmplY3QoRW51bWVyYXRpb25Nb2RlIG1vZGUpCi17
Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
OgotICAgICAgICByZXR1cm4gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVj
dDsKLSAgICBjYXNlIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXM6Ci0gICAgICAgIHJldHVybiBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kU2tpcEpTT2JqZWN0OwotICAgIGNhc2UgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllc0FuZFNraXBKU09iamVjdDoKLSAgICBjYXNlIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXNBbmRTa2lwSlNPYmplY3Q6Ci0gICAgICAgIHJldHVybiBtb2RlOworICAg
IHN0YXRpYyBFbnVtZXJhdGlvbk1vZGUgY3JlYXRlVGhhdFNraXBzSlNPYmplY3QoRW51bWVyYXRp
b25Nb2RlIG1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gRW51bWVyYXRpb25Nb2RlKG1vZGUu
bV9mbGFncyB8IHNfZmxhZ1NraXBKU09iamVjdCk7CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBtb2RlOwotfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEVu
dW1lcmF0aW9uTW9kZSh1bnNpZ25lZCBmbGFncykKKyAgICAgICAgOiBtX2ZsYWdzKGZsYWdzKQor
ICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2ZsYWdzOworfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCA5MzBi
NmZhZjZiYzFmYzY1ZGU5ZTYxYTFmYzdlNjJhOWU1ZmM2ODBlLi4zNjE1NmExZTA1MTY4MWY1Y2Vi
NTYxODJiNmU0ZWI5NDI5YjhmNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuY3BwCkBAIC0xMzcsMTcgKzEzNywxNyBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZvKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTbwogICAg
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMID0gc291cmNlLnByb3ZpZGVyKCktPnVybCgpOwogCiAg
ICAgaWYgKGxpbmUgIT0gLTEpCi0gICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlm
aWVyKHZtLCBsaW5lUHJvcGVydHlOYW1lKSwganNOdW1iZXIobGluZSksIFJlYWRPbmx5IHwgRG9u
dERlbGV0ZSk7CisgICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBsaW5lUHJvcGVydHlOYW1lKSwganNOdW1iZXIobGluZSksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSk7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCi0gICAgICAgIGVycm9y
LT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVyKHZtLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpLCBq
c1N0cmluZyh2bSwgc291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAg
ZXJyb3ItPnB1dERpcmVjdCgqdm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHNvdXJjZVVS
TFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKHZtLCBzb3VyY2VVUkwpLCBSZWFkT25seSB8IERvbnRE
ZWxldGUpOwogICAgIHJldHVybiBlcnJvcjsKIH0KIAogCiBib29sIGhhc0Vycm9ySW5mbyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikKIHsKLSAgICByZXR1cm4gZXJyb3ItPmhhc1By
b3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgbGluZVByb3BlcnR5TmFtZSkpCi0gICAgICAg
IHx8IGVycm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHNvdXJjZVVSTFBy
b3BlcnR5TmFtZSkpOworICAgIHJldHVybiBlcnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBsaW5lUHJvcGVydHlOYW1lKSkKKyAgICAgICAgfHwgZXJy
b3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgc291cmNl
VVJMUHJvcGVydHlOYW1lKSk7CiB9CiAKIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwCmluZGV4IDEwNWFhZWY3ZjA5YWFlMTUyYjg1ZjMyMDhiMTRiYmY5MGExZjVh
YzMuLjU0OTVkOTM3NWRkYjU0YTQ0NGU4YTUwMWI2ZjZiMDcyMjM1NjUwMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04
MSw4ICs4MSw3IEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxl
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKLSAgICAK
LSAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc1VuaXF1ZSgpKSB7CisgICAgaWYgKGlkZW50LmltcGwo
KS0+aXNTeW1ib2woKSAmJiBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRlTmFtZShpZGVu
dCkpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBwcml2
YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05hbWUoaWRl
bnQpLnN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVj
LCBtZXNzYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVyLmgKaW5kZXggMDEzMmQwZTc1MjhlYTM2M2I4YzMxMzZlY2U1YjAwOGM1MzlhMzhlZi4uZGU0
YWNiYzJhNTc1YjY2ODA5ZTQyNzE2MGFhYTRkMzk2Njk5YzkxNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMzgsMjMgKzM4LDYgQEAgY2xhc3MgSWRl
bnRpZmllciB7CiAgICAgZW51bSBFbXB0eUlkZW50aWZpZXJGbGFnIHsgRW1wdHlJZGVudGlmaWVy
IH07CiAgICAgSWRlbnRpZmllcihFbXB0eUlkZW50aWZpZXJGbGFnKSA6IG1fc3RyaW5nKFN0cmlu
Z0ltcGw6OmVtcHR5KCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0K
IAotICAgIC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KLSAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+Ci0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKSA6IG1fc3Ry
aW5nKGFkZChleGVjLCBjaGFyYWN0ZXJzKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0
b21pYygpKTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KLSAgICBJ
ZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3Vu
dF0pIDogbV9zdHJpbmcoYWRkKHZtLCBjaGFyYWN0ZXJzKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1w
bCgpLT5pc0F0b21pYygpKTsgfQotCi0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUqLCBBdG9taWNT
dHJpbmdJbXBsKik7Ci0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUqLCBjb25zdCBBdG9taWNTdHJp
bmcmKTsKLSAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcmVwKSA6
IG1fc3RyaW5nKGFkZChleGVjLCByZXApKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRv
bWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
cykgOiBtX3N0cmluZyhhZGQoZXhlYywgcy5pbXBsKCkpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBs
KCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IGNoYXIqIHMpIDogSWRlbnRpZmllcihleGVjLCBBdG9taWNTdHJpbmcocykpIHsgfQotCi0gICAg
SWRlbnRpZmllcihWTSogdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5n
KGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygp
KTsgfQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkg
OiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+
aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKFZNKiB2bSwgU3RyaW5nSW1wbCogcmVwKSA6
IG1fc3RyaW5nKGFkZCh2bSwgcmVwKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21p
YygpKTsgfQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJp
bmcoYWRkKHZtLCBzLmltcGwoKSkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMo
KSk7IH0KLQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmc7IH0KICAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KG1fc3RyaW5nLmltcGwoKSk7IH0KIApAQCAtNjMsMTIg
KzQ2LDMzIEBAIGNsYXNzIElkZW50aWZpZXIgewogICAgIENTdHJpbmcgYXNjaWkoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5hc2NpaSgpOyB9CiAgICAgQ1N0cmluZyB1dGY4KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcudXRmOCgpOyB9CiAKLSAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKGNv
bnN0IFByaXZhdGVOYW1lJiBuYW1lKQotICAgIHsKLSAgICAgICAgSWRlbnRpZmllciByZXN1bHQ7
Ci0gICAgICAgIHJlc3VsdC5tX3N0cmluZyA9IG5hbWUudWlkKCk7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQorICAgIC8vIFRoZXJlJ3MgMiBmdW5jdGlvbnMgdG8gY29uc3RydWN0IElk
ZW50aWZpZXIgZnJvbSBzdHJpbmcsICgxKSBmcm9tU3RyaW5nIGFuZCAoMikgZnJvbVVpZC4KKyAg
ICAvLyBUaGV5IGhhdmUgZGlmZmVyZW50IG1lYW5pbmdzIGluIGtlZXBpbmcgb3IgZGlzY2FyZGlu
ZyBzeW1ib2wtbmVzcyBvZiBzdHJpbmdzLgorICAgIC8vICgxKTogZnJvbVN0cmluZworICAgIC8v
IEp1c3QgY29uc3RydWN0IElkZW50aWZpZXIgZnJvbSBzdHJpbmcuIFN0cmluZyBoZWxkIGJ5IElk
ZW50aWZpZXIgaXMgYWx3YXlzIGF0b21pemVkLgorICAgIC8vIFN5bWJvbC1uZXNzIG9mIFN0cmlu
Z0ltcGwqLCB3aGljaCByZXByZXNlbnRzIHRoYXQgdGhlIHN0cmluZyBpcyBpbnRlZGVkIHRvIGJl
IHVzZWQgZm9yIEVTNiBTeW1ib2xzLCBpcyBkaXNjYXJkZWQuCisgICAgLy8gU28gYSBjb25zdHJ1
Y3RlZCBJZGVudGlmaWVyIG5ldmVyIHJlcHJlc2VudHMgYSBzeW1ib2wuCisgICAgLy8gKDIpOiBm
cm9tVWlkCisgICAgLy8gYFN0cmluZ0ltcGwqIHVpZGAgcmVwcmVzZW50cyBldGhlciBTdHJpbmcg
b3IgU3ltYm9sIHByb3BlcnR5LgorICAgIC8vIGZyb21VaWQga2VlcHMgc3ltYm9sLW5lc3Mgb2Yg
cHJvdmlkZWQgU3RyaW5nSW1wbCogd2hpbGUgZnJvbVN0cmluZyBkaXNjYXJkcyBpdC4KKyAgICAv
LyBVc2UgZnJvbVVpZCB3aGVuIGNvbnN0cnVjdGluZyBJZGVudGlmaWVyIGZyb20gU3RyaW5nSW1w
bCogd2hpY2ggbWF5IHJlcHJlc2VudCBzeW1ib2xzLgorCisgICAgLy8gT25seSB0byBiZSB1c2Vk
IHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnND
b3VudD4KKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgY2hhciAo
JmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pOworICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNo
YXJhY3RlcnNDb3VudD4KKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0
ZSosIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKTsKKyAgICBzdGF0
aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgTENoYXIqLCBpbnQgbGVuZ3RoKTsK
KyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgVUNoYXIqLCBpbnQg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgU3Ry
aW5nJik7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBBdG9t
aWNTdHJpbmdJbXBsKik7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3Rh
dGUqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3Ry
aW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b21TdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOworCisgICAgc3RhdGljIElkZW50aWZp
ZXIgZnJvbVVpZChWTSosIFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIElkZW50aWZpZXIg
ZnJvbVVpZChFeGVjU3RhdGUqLCBTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBJZGVudGlm
aWVyIGZyb21VaWQoY29uc3QgUHJpdmF0ZU5hbWUmKTsKIAogICAgIHN0YXRpYyBJZGVudGlmaWVy
IGNyZWF0ZUxDaGFyRnJvbVVDaGFyKFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgp
IHsgcmV0dXJuIElkZW50aWZpZXIodm0sIGFkZDgodm0sIHMsIGxlbmd0aCkpOyB9CiAKQEAgLTgx
LDYgKzg1LDcgQEAgY2xhc3MgSWRlbnRpZmllciB7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0
IHsgcmV0dXJuIGltcGwoKS0+aXNTeW1ib2woKTsgfQogCiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgIGZyaWVuZCBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXImKTsKQEAg
LTEwNSw2ICsxMTAsMjAgQEAgY2xhc3MgSWRlbnRpZmllciB7CiBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX3N0cmluZzsKIAorICAgIC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFs
cy4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+CisgICAgSWRlbnRpZmll
cihWTSogdm0sIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKSA6IG1f
c3RyaW5nKGFkZCh2bSwgY2hhcmFjdGVycykpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNB
dG9taWMoKSk7IH0KKworICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBMQ2hhciogcywgaW50
IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5n
LmltcGwoKS0+aXNBdG9taWMoKSk7IH0KKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgVUNo
YXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VS
VChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CisgICAgSWRlbnRpZmllcihFeGVjU3Rh
dGUqLCBBdG9taWNTdHJpbmdJbXBsKik7CisgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqLCBjb25z
dCBBdG9taWNTdHJpbmcmKTsKKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBz
dHJpbmcpIDogbV9zdHJpbmcoYWRkKHZtLCBzdHJpbmcuaW1wbCgpKSkgeyBBU1NFUlQobV9zdHJp
bmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorICAgIElkZW50aWZpZXIoVk0qIHZtLCBTdHJpbmdJ
bXBsKiByZXApIDogbV9zdHJpbmcoYWRkKHZtLCByZXApKSB7IEFTU0VSVChtX3N0cmluZy5pbXBs
KCktPmlzQXRvbWljKCkpOyB9CisKKyAgICBlbnVtIFVuaXF1ZUlkZW50aWZpZXJGbGFnIHsgVW5p
cXVlSWRlbnRpZmllciB9OworICAgIElkZW50aWZpZXIoVW5pcXVlSWRlbnRpZmllckZsYWcsIFN0
cmluZ0ltcGwqIHVpZCkgOiBtX3N0cmluZyh1aWQpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+
aXNTeW1ib2woKSk7IH0KKwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KICAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMkZyb21DaGFyYWN0ZXJzKGNvbnN0
IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wmIG9rKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKaW5k
ZXggNzQ3MmQ4NDdkNzViMzAzZTY0NTRmMDZkNjllZDZmYzVlZTY5MjNhYy4uNDA2MjIxYTYzYWFk
OTY1ZjQ3MzBlNDY4ODM0NzM2N2MzYjI2NzA0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0zNyw3ICszNyw3IEBAIGlubGlu
ZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgQXRvbWljU3RyaW5nSW1w
bCogc3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICBjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdU
YWJsZShleGVjKTsKICAgICBpZiAoc3RyaW5nKQotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCFzdHJpbmctPmxlbmd0aCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxl
KHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEi
KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLT5sZW5ndGgoKSB8fCBzdHJp
bmctPmlzU3ltYm9sKCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3Ry
aW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAjZW5kaWYKQEAgLTQ5LDcgKzQ5LDcgQEAg
aW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHN0cmluZykKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWlj
U3RyaW5nVGFibGUoZXhlYyk7CiAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5B
dG9taWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVz
IGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFz
dHJpbmcubGVuZ3RoKCkgfHwgc3RyaW5nLmltcGwoKS0+aXNTeW1ib2woKSB8fCBBdG9taWNTdHJp
bmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9taWMgc3Ry
aW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CiAjZW5kaWYKQEAgLTcwLDYgKzcwLDcwIEBAIGlubGluZSBJZGVudGlmaWVyOjpJ
ZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiAg
ICAgcmV0dXJuICpBdG9taWNTdHJpbmc6OmFkZFdpdGhTdHJpbmdUYWJsZVByb3ZpZGVyKCp2bSwg
cik7CiB9CiAKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21VaWQoVk0qIHZtLCBT
dHJpbmdJbXBsKiB1aWQpCit7CisgICAgaWYgKCF1aWQgfHwgIXVpZC0+aXNTeW1ib2woKSkKKyAg
ICAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHVpZCk7CisgICAgcmV0dXJuIElkZW50aWZpZXIo
VW5pcXVlSWRlbnRpZmllciwgdWlkKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmll
cjo6ZnJvbVVpZChFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICByZXR1
cm4gZnJvbVVpZCgmZXhlYy0+dm0oKSwgdWlkKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRl
bnRpZmllcjo6ZnJvbVVpZChjb25zdCBQcml2YXRlTmFtZSYgbmFtZSkKK3sKKyAgICByZXR1cm4g
SWRlbnRpZmllcihVbmlxdWVJZGVudGlmaWVyLCBuYW1lLnVpZCgpKTsKK30KKwordGVtcGxhdGU8
dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgoraW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhWTSogdm0sIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291
bnRdKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJzKTsKK30KKwordGVt
cGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgoraW5saW5lIElkZW50aWZpZXIgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJz
KVtjaGFyYWN0ZXJzQ291bnRdKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKCZleGVjLT52bSgp
LCBjaGFyYWN0ZXJzKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhWTSogdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBJ
ZGVudGlmaWVyKHZtLCBzLCBsZW5ndGgpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpCit7Cisg
ICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHMsIGxlbmd0aCk7Cit9CisKK2lubGluZSBJZGVudGlm
aWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
K3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgc3RyaW5nLmltcGwoKSk7Cit9CisKK2lubGlu
ZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcigmZXhlYy0+dm0oKSwg
c3RyaW5nLmltcGwoKSk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNTdHJpbmcpCit7
CisgICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgYXRvbWljU3RyaW5nKTsKK30KKworaW5saW5l
IElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXRvbWljU3RyaW5nKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKGV4
ZWMsIGF0b21pY1N0cmluZyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKQoreworICAgIHJldHVybiBJ
ZGVudGlmaWVyKGV4ZWMsIEF0b21pY1N0cmluZyhzKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gSWRlbnRpZmllcklubGluZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAppbmRleCAyMGQ0OWRiOGJhMmUyYzU4NTUwNjY3NDllZjlkZjUx
NTU0MTU3NjgxLi5jMWIwNGE2ZTIyZWQyOGEyZjkzZDIzMGQ1NjNjMzA4ZTYyNmUxMmQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMjI2LDcgKzIyNiw3
IEBAIHZvaWQgSlNBcnJheTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKIAotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCk7CiAKICAgICBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCBjMWNhZDEwNWM3ZTBk
NWFkN2VmZDI5NmEzYmVmMDY5NmM5NWY2MDA3Li41YjY2YzQ0ZjNlODE4NDI1MDA4YjYwYWVkNDI2
MTNhYmM3ZTE4ZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSlNBcnJheUJ1ZmZlcjo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKAogewogICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KG9iamVjdCk7CiAgICAgCi0gICAgaWYgKHNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmJ5dGVMZW5ndGgpOwogICAgIAogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggMGEx
MTZjMDYwNzhiZDgwMDNiNmRmMjllNzM1MjViOGFjYTRlMTQ2NS4uNjA3ZTM0ODE2YmUyNjY3ZjU4
ZTYxZDVlOTZmMWQ0ZTZhZDIxYzNkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQg
SlNBcnJheUJ1ZmZlclZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKICAgICBKU0Fy
cmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KG9i
amVjdCk7CiAgICAgCiAgICAgLy8gbGVuZ3RoL2J5dGVPZmZzZXQvYnl0ZUxlbmd0aCBhcmUgRG9u
dEVudW0sIGF0IGxlYXN0IGluIEZpcmVmb3guCi0gICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMobW9kZSkpIHsKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKCkpIHsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5i
eXRlT2Zmc2V0KTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRl
TGVuZ3RoKTsKICAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA0
ODc1NmJhM2IzM2Y2Y2RlODkwNGUwMWY3ZjdiMDkzNGRkM2UwYWQ3Li43ZDYxY2EyZDkwMjFkODBj
N2UyYzk2NzBkZmRiMjE1NjcwY2UyNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjMzLDggKzIzMyw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVt
cEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIiAoYXRvbWljKSIpOwogICAgICAgICAgICAgICAgIGlmIChpbXBsLT5pc0F0b21pYygpKQog
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAoaWRlbnRpZmllcikiKTsKLSAgICAgICAg
ICAgICAgICBpZiAoaW1wbC0+aXNVbmlxdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIgKHVuaXF1ZSkiKTsKKyAgICAgICAgICAgICAgICBpZiAoaW1wbC0+aXNTeW1ib2woKSkK
KyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKHN5bWJvbCkiKTsKICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgIG91dC5wcmludCgiICh1bnJlc29sdmVkKSIpOwogICAg
ICAgICAgICAgb3V0LnByaW50KCI6ICIsIGltcGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggNDYzZjlmYWE4Y2M2MWQyMzQx
OTJiZDhlYTg2NjlmYjU2NDM5NzFlOC4uZDIyYTFjMjUyZWQ4ZjdlMjE0NzI1ZWJlNTRlYzJlN2Zm
NmQyNDExZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCkBAIC02MTcsNyArNjE3LDcgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVy
IEpTVmFsdWU6OnRvUHJvcGVydHlLZXkoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogCiAgICAgSlNW
YWx1ZSBwcmltaXRpdmUgPSB0b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJTdHJpbmcpOwogICAgIGlm
IChwcmltaXRpdmUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb20o
YXNTeW1ib2wocHJpbWl0aXZlKS0+cHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIHJldHVybiBJZGVu
dGlmaWVyOjpmcm9tVWlkKGFzU3ltYm9sKHByaW1pdGl2ZSktPnByaXZhdGVOYW1lKCkpOwogICAg
IHJldHVybiBwcmltaXRpdmUudG9TdHJpbmcoZXhlYyktPnRvSWRlbnRpZmllcihleGVjKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4
NTFiNjZmMTViMzY2MDczNTYyMzY5MjA1NzdlODFhNzY4ZDFkNTViLi41YmVjODU4OTk5MTU2MmE4
ZTI0ZDgwMjY3OGRiMGExMmU3NjZhYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOCiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKG1vZGUpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlv
bigpICYmIG1vZGUuc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFz
IGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYmUwYmRjNzg0
MmY5NzMzYzc2YjA2NDQzYmRhMzY2MTQxOGVhNTk5Ny4uMzRlZDQwOGI1ZDFiMDgxZmZiNGI0Yzlh
YWY4NjljNWZhNDlkNDZiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaApAQCAtMTM4LDcgKzEzOCw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlND
YWxsZWUgewogICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJv
ZmlsZShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDAxYjhkYTJkODQ0NzYyZTVhM2NlNmNhZmJmZWQz
NjAyOTQwZjdmYy4uMjQzNzRmNjBmYzE4MjI3ODcyOWQwNjNhY2MxYTgxYjEwZjcxYjg2MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQxNSw3ICs0MTUsNyBAQAogewogICAgIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKCkpCiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
KTsKICAgICAKICAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVj
dCwgZXhlYywgYXJyYXksIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDc3Mjc2ZDU4MmJjMWFlNTY2ZmEyZDQ0ZTkxOGQ2
ODdiMGUyYzBlMDIuLjA0MWVmZDUxNjYyMmJlMTdhODljOTY1NDdiMjljMzI0MWJhYTQwYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAg
ICAKICAgICAvLyBDb25zdHJ1Y3RvcnMKICAgICAKLSAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2Jq
ZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9yKiBv
YmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9i
amVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25z
dHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1
bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJy
YXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCB0eXBlZEFy
cmF5SW5kZXggPSBOVU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM7IHR5cGVkQXJyYXlJbmRleC0t
OykgewogICAgICAgICBtX3R5cGVkQXJyYXlzW3R5cGVkQXJyYXlJbmRleF0ucHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwot
ICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcihleGVjLCB0
eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0tPm5hbWUoZXhlYykpLCB0eXBl
ZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0sIERvbnRFbnVtKTsKKyAgICAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5SW5kZXhdLT5uYW1lKGV4ZWMpKSwg
dHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5SW5kZXhdLCBEb250RW51bSk7CiAgICAg
fQogICAgIAogICAgIEpTRnVuY3Rpb24qIGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwg
Z2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmluaXQoVk0mIHZtKQogICAgIENvbnNvbGVQcm90b3R5cGUqIGNvbnNvbGVQcm90b3R5
cGUgPSBDb25zb2xlUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIENvbnNvbGVQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAg
ICBtX2NvbnNvbGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NvbnNvbGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgY29uc29sZVByb3RvdHlwZSkpOwogICAgIEpTQ29uc29sZSogY29uc29s
ZU9iamVjdCA9IEpTQ29uc29sZTo6Y3JlYXRlKHZtLCBtX2NvbnNvbGVTdHJ1Y3R1cmUuZ2V0KCkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKGV4ZWMsICJj
b25zb2xlIiksIGNvbnNvbGVPYmplY3QsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29uc29sZSIpLCBj
b25zb2xlT2JqZWN0LCBEb250RW51bSk7CiAKICAgICByZXNldFByb3RvdHlwZSh2bSwgcHJvdG90
eXBlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggOTAzNTQ2YjA3NGExYzEyN2M3ZTk5YWI0MTlkNzcyZjgzMWViMjFjNS4uMDgx
ZTNkZDY5NDVkZGRhODkzYzdkNmNhMDVkZjE3Y2ZmYzkxM2IxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0zMDYsNiArMzA2LDcgQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAKICAgICBib29sIGhhc0RlYnVnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQog
ICAgIGJvb2wgaGFzUHJvZmlsZXIoKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3RNZXRob2RU
YWJsZSgpLT5zdXBwb3J0c1Byb2ZpbGluZyh0aGlzKTsgfQorICAgIGNvbnN0IFJ1bnRpbWVGbGFn
cyYgcnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAogcHJv
dGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IEpTR2xvYmFsT2JqZWN0KFZN
JiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqID0gMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5jcHAKaW5kZXggODQwMzdhMzQ1Zjk5ZTg1MDBiZjZkMDU2YTUxODQ5ZGMxOWI1NmZhMC4uMGZh
MGRkYjhmYTMxZmIzZDBlYjdiYTc0M2U1MGI2NWZiZGY1ZGM3NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAt
MTE0LDExICsxMTQsMTMgQEAgdm9pZCBKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGEKICAgICAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsK
ICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3lt
Ym9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6
aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmIChpdC0+dmFsdWUuZ2V0QXR0cmlidXRl
cygpICYgRG9udEVudW0gJiYgIXNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkp
CisgICAgICAgICAgICBpZiAoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtICYm
ICFtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghdGhpc09iamVjdC0+aXNWYWxpZChpdC0+dmFs
dWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CisgICAgICAgICAgICBpZiAo
aXQtPmtleS0+aXNTeW1ib2woKSAmJiAhbW9kZS5zaG91bGRJbmNsdWRlU3ltYm9scygpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcjo6ZnJvbVVpZChleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgLy8gU2tpcCB0aGUgSlNFbnZpcm9ubWVudFJlY29yZCBpbXBsZW1lbnRhdGlvbiBvZiBn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKaW5kZXggYmRiODIxY2RmNTY0ODBkNjhkYzFjNGRhMmVkMDU2Y2I1
NTgxZTFhOS4uYzg5OGEzNDI4NTk1YjZkMTE5MzJjMGVhOGUwZDliODBmMWJhMzVhYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTQ5MCw3ICs0
OTAsNyBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJp
bmdpZmllciYgc3RyaW5naWZpZXIsIFN0cmluZ0J1aQogICAgICAgICAgICAgICAgIG1fcHJvcGVy
dHlOYW1lcyA9IHN0cmluZ2lmaWVyLm1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMuZGF0YSgp
OwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkg
b2JqZWN0UHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICAgICAgICAgICAgICBtX29iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX29iamVjdC5nZXQoKSwgZXhlYywgb2Jq
ZWN0UHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgICAg
ICAgICAgbV9vYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMobV9vYmpl
Y3QuZ2V0KCksIGV4ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZTo6RXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWVz
ID0gb2JqZWN0UHJvcGVydHlOYW1lcy5yZWxlYXNlRGF0YSgpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbV9zaXplID0gbV9wcm9wZXJ0eU5hbWVzLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5z
aXplKCk7CkBAIC03MDcsNyArNzA3LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3
YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5wdXNo
KG9iamVjdCk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7
Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51
bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAgICAgICAgICBGQUxMVEhS
T1VHSDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBk
YjJhNzIyY2JhODg1YzgwODZkZWI3OTBjMmMyODU3Mzc0ZjZmNzk5Li5lZDEzZWEwYThiZTNiMzUy
OWFiMjZkODQzMTYyYzMwNDNjZWY0OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRD
bGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNz
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxl
LT5iZWdpbigpOyBpdGVyICE9IHRhYmxlLT5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBp
ZiAoKCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMobW9kZSkpICYmICEoKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5P
ckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCi0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcigmdm0sIGl0ZXIua2V5KCkpKTsKKyAgICAgICAgICAgIGlmICgoIShpdGVy
LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKCkpICYmICEoKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9u
KSAmJiBkaWRSZWlmeSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIGl0ZXIua2V5KCkpKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTE1MTgsNyArMTUxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBCiAKIHZvaWQgSlNP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpCiB7Ci0gICAgaWYgKCFzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKG1vZGUp
KSB7CisgICAgaWYgKCFtb2RlLnNob3VsZEluY2x1ZGVKU09iamVjdFByb3BlcnR5TmFtZXMoKSkg
ewogICAgICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGdldCBub24taW5kZXhlZCBwcm9wZXJ0aWVz
IGZyb20gYW55IHN1YmNsYXNzZXMgb2YgSlNPYmplY3QgdGhhdCBoYXZlIHRoZW0uCiAgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogICAgICAgICByZXR1cm47
CkBAIC0xNTcyLDcgKzE1NzIsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBtYXAtPmVuZCgpOwogICAgICAgICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkgfHwgIShp
dC0+dmFsdWUuYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKKyAgICAgICAgICAgICAgICBpZiAobW9k
ZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkgfHwgIShpdC0+dmFsdWUuYXR0cmli
dXRlcyAmIERvbnRFbnVtKSkKICAgICAgICAgICAgICAgICAgICAga2V5cy51bmNoZWNrZWRBcHBl
bmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0LT5rZXkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtMTU5NCw3ICsxNTk0LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHIKIHsK
ICAgICBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoZXhlYywgb2JqZWN0LT5jbGFzc0luZm8oKSwgcHJv
cGVydHlOYW1lcywgbW9kZSwgb2JqZWN0LT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpOwogCi0g
ICAgaWYgKCFzaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKG1vZGUpKQorICAgIGlm
ICghbW9kZS5zaG91bGRJbmNsdWRlSlNPYmplY3RQcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTY3OSw3ICsxNjc5LDcg
QEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChh
dXRvIGl0ZXIgPSBoYXNoVGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQoKTsg
KytpdGVyKSB7CiAgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9y
RnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaXRlci52YWx1ZSgpLCB0aGlzLCBJZGVudGlmaWVyKCZ2
bSwgaXRlci5rZXkoKSksIHNsb3QpOworICAgICAgICAgICAgICAgIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGl0ZXIudmFsdWUoKSwgdGhpcywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGl0ZXIua2V5KCkpLCBzbG90KTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMjgwMCw3ICsyODAwLDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0U3RydWN0
dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AK
IHZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlVGhhdFNraXBzSlNPYmplY3QobW9kZSkpOworICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlOjpjcmVhdGVUaGF0U2tpcHNKU09iamVjdChtb2RlKSk7CiAK
ICAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggM2Y1ZTI1ZDE1YjAz
ZTYwZDU3OGM4MzRjM2ZkNTA5Mjc2OGFkYTBkNC4uNzg2Nzc1YTBkYzQ5YzEyMzA3ZGFmNDUyMjE2
YWI3ODM0ZTFhYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBpbmxpbmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkKIAogQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVu
dGlmaWVyKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRlbnRpZmll
cigmdm0sIG5hbWUpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFt
ZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBtYWtlSWRlbnRpZmllcihWTSYsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWZkZmMyN2QyMGE4NjVhMzQz
YWYyMWQ1Yzc0ODhkYzQzNjViMTcxNS4uYjhhNWFkYWU5ODdlNDAzN2Q2NTVlMGEzZjZhZDAyOGY4
NDFlMjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0ganNDYXN0PEpTUHJvbWlzZURl
ZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBiZSB0
aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRlcmFibGUpLgotICAgIEpTVmFsdWUg
aXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVy
YWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShh
YnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApAQCAtNDgwLDcgKzQ4MCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jQWxsKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBqc0Nhc3Q8
SlNQcm9taXNlRGVmZXJyZWQqPihkZWZlcnJlZFZhbHVlKTsKIAogICAgIC8vIDQuIExldCAnaXRl
cmF0b3InIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBHZXRJdGVyYXRvcihpdGVyYWJsZSkuCi0g
ICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5j
dGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFicnVwdFJlamVjdGlvbihleGVjLCBkZWZlcnJlZCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oCmluZGV4IGVlMThhYmY2ZWIzZjMyY2ZjMDEyOTFlYjE0NDc0MGVmNzhhOTZhMWMuLjBiOWU3
MzlmNWE3MDM5NjlhNTQwNjNlZjA5M2Q1NzUzYjgwMjMyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCkBA
IC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogc3RydWN0
dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMKICAgICAgICAgcmV0dXJu
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtKTsKIAogICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5n
ZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0U3Ry
dWN0dXJlUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogCiAgICAgSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yKiBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUo
dm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lcyk7CiAgICAgaWYgKHN0cnVjdHVyZS0+Y2FuQ2Fj
aGVTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpCkBAIC0xNDIsOSArMTQyLDkgQEAg
aW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZ2VuZXJpY1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IoRXhlY1N0YXRlKiBleGVjLAogICAgIC8vIHRoZSBuZXcgZ2VuZXJpYyBQcm9wZXJ0eU5h
bWVBcnJheSBhbmQgZmFpbGluZyBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGVtLgog
ICAgIFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlID0gc3RydWN0dXJlRW51bWVyYXRvci0+Y2Fj
aGVkU3RydWN0dXJlKHZtKTsKICAgICBpZiAoc3RydWN0dXJlID09IGNhY2hlZFN0cnVjdHVyZSAm
JiBzdHJ1Y3R1cmUtPmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5KCkgJiYgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGxlbmd0aCkgPT0gYmFzZS0+Z2V0QXJyYXlMZW5ndGgoKSkKLSAgICAgICAgYmFz
ZS0+bWV0aG9kVGFibGUodm0pLT5nZXRHZW5lcmljUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYmFzZS0+
bWV0aG9kVGFibGUodm0pLT5nZXRHZW5lcmljUHJvcGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwog
ICAgIGVsc2UKLSAgICAgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVz
KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwor
ICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMoYmFzZSwgZXhl
YywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKICAgICAKICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyODFhZTQ2
MjAzOTIwNGI0NTI4YjRlYTUxMWMwNzVjNmU4NWVmYmQ5Li5jMWFmMGNhZTFjNjIzYjM2MmNmNGRi
MzYyYjVjOTU0OTVlOGM3NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0
cmluZyhWTSogdm0sIFN0cmluZyYmIHMpCiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBKU1N0
cmluZzo6dG9JZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICByZXR1cm4g
SWRlbnRpZmllcihleGVjLCB0b0F0b21pY1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdG9BdG9taWNTdHJpbmcoZXhlYykpOwogfQogCiBBTFdB
WVNfSU5MSU5FIEF0b21pY1N0cmluZyBKU1N0cmluZzo6dG9BdG9taWNTdHJpbmcoRXhlY1N0YXRl
KiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBiOGZiMjI4MmFmYWU4N2VjYzQxMTAyNDVjZTli
Yjg3M2U5NTBmMGZmLi4zNjAyNjhmMjllYmI5OWRkMTBhMzY1YWYwNjI1YzA5MTY3NTA5YWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcApAQCAtNjEsMTAgKzYxLDExIEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0CiAg
ICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRo
aXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJv
bFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVn
aW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPmtleS0+
aXNVbmlxdWUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICgh
KGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyhtb2RlKSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlmICghKGl0
LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNT
eW1ib2woKSAmJiAhbW9kZS5zaG91bGRJbmNsdWRlU3ltYm9scygpKQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyOjpmcm9tVWlkKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0
ZXJhbFBhcnNlci5jcHAKaW5kZXggZjZmNWZlMTczYzcwNGVkZTBmNjUzYjY4MzhlMDk4MDZjYTQ0
MmViNy4uZDQ1NDRhNGY2ZjI2Y2FhOGMzODQ1ZGFmMGZjYWZlNzMyMzI4YmRjYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTU3LDE3
ICs1NywxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNKU09OV2hpdGVTcGFjZShjb25zdCBDaGFy
VHlwZSYgYykKICAgICBkbyB7CiAgICAgICAgIFZlY3RvcjxKU09OUFBhdGhFbnRyeT4gcGF0aDsK
ICAgICAgICAgLy8gVW5ndWFyZGVkIG5leHQgdG8gc3RhcnQgb2ZmIHRoZSBsZXhlcgotICAgICAg
ICBJZGVudGlmaWVyIG5hbWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3Vy
cmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5j
dXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFy
dCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0
YXJ0KTsKICAgICAgICAgSlNPTlBQYXRoRW50cnkgZW50cnk7CiAgICAgICAgIGlmIChuYW1lID09
IG1fZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT52YXJLZXl3b3JkKSB7CiAgICAgICAgICAgICBp
ZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICBlbnRyeS5tX3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVE
ZWNsYXJlOwotICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcigm
bV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJl
bnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOworICAgICAgICAg
ICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVj
LT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tl
bigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOwogICAgICAgICAgICAgcGF0
aC5hcHBlbmQoZW50cnkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW50cnkubV90
eXBlID0gSlNPTlBQYXRoRW50cnlUeXBlRG90OwotICAgICAgICAgICAgZW50cnkubV9wYXRoRW50
cnlOYW1lID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigp
LnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2Vu
KCkuc3RhcnQpOworICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0
LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3Rh
cnQpOwogICAgICAgICAgICAgcGF0aC5hcHBlbmQoZW50cnkpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChtX2V4ZWMtPnZtKCkua2V5d29yZHMtPmlzS2V5d29yZChlbnRyeS5tX3BhdGhFbnRyeU5h
bWUpKQpAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNKU09OV2hpdGVTcGFj
ZShjb25zdCBDaGFyVHlwZSYgYykKICAgICAgICAgICAgICAgICBlbnRyeS5tX3R5cGUgPSBKU09O
UFBhdGhFbnRyeVR5cGVEb3Q7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9
IFRva0lkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZt
KCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
ZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAgICAgICAgZW50
cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgp
LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLmVu
ZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBUb2tMUGFyZW46IHsKQEAgLTEzNSwx
NyArMTM1LDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENo
YXJUeXBlJiBjKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbV9leGVjLT52bSgp
LnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcjsKICAgICBpZiAoY2hhcmFjdGVyc1swXSA+
PSBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXIpCi0gICAgICAgIHJldHVybiBJZGVudGlmaWVyKCZt
X2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAKICAg
ICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgaWYgKCFtX3Nob3J0SWRlbnRpZmllcnNbY2hh
cmFjdGVyc1swXV0uaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZp
ZXJzW2NoYXJhY3RlcnNbMF1dOwotICAgICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVy
c1swXV0gPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7Cisg
ICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICAgICAgcmV0
dXJuIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKICAgICB9CiAgICAgaWYgKCFt
X3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dLmlzTnVsbCgpICYmIElkZW50aWZpZXI6
OmVxdWFsKG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaW1wbCgpLCBjaGFyYWN0
ZXJzLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0
ZXJzWzBdXTsKLSAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRp
ZmllcigmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIG1fcmVjZW50SWRl
bnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMt
PnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgcmV0dXJuIG1fcmVjZW50SWRlbnRpZmll
cnNbY2hhcmFjdGVyc1swXV07CiB9CiAKQEAgLTE1NSwxNyArMTU1LDE3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENoYXJUeXBlJiBjKQogICAgIGlmICghbGVu
Z3RoKQogICAgICAgICByZXR1cm4gbV9leGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRl
bnRpZmllcjsKICAgICBpZiAoY2hhcmFjdGVyc1swXSA+PSBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0
ZXIpCi0gICAgICAgIHJldHVybiBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMs
IGxlbmd0aCk7CisgICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMt
PnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAKICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAg
ICAgICAgaWYgKCFtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwotICAg
ICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4
ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgICAgIG1fc2hvcnRJZGVudGlmaWVy
c1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwg
Y2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIG1fc2hvcnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXTsKICAgICB9CiAgICAgaWYgKCFtX3JlY2VudElkZW50aWZpZXJzW2NoYXJh
Y3RlcnNbMF1dLmlzTnVsbCgpICYmIElkZW50aWZpZXI6OmVxdWFsKG1fcmVjZW50SWRlbnRpZmll
cnNbY2hhcmFjdGVyc1swXV0uaW1wbCgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKQogICAgICAgICBy
ZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKLSAgICBtX3JlY2VudElk
ZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcigmbV9leGVjLT52bSgpLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpOworICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0g
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0
aCk7CiAgICAgcmV0dXJuIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYjdlY2JiMTkwYTA0YjUw
OWQ5MDQxMGZmYzRjYzMyZGQwMzk0ODBmYS4uYThhMzM2N2Y1M2ZhNmM1MThiOWRhMWU1ZGU3N2Y0
OTAwZTljZmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTI5
Myw3ICsyOTMsNyBAQCBpbmxpbmUgdm9pZCByZWlmeVN0YXRpY1Byb3BlcnRpZXMoVk0mIHZtLCBj
b25zdCBIYXNoVGFibGVWYWx1ZSAoJnZhbHVlcylbbnVtYmVyTwogICAgICAgICBpZiAoIXZhbHVl
Lm1fa2V5KQogICAgICAgICAgICAgY29udGludWU7ICAgICAgICAgICAgICAgIAogCi0gICAgICAg
IElkZW50aWZpZXIgcHJvcGVydHlOYW1lKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KHZhbHVlLm1fa2V5KSwgc3RybGVuKHZhbHVlLm1fa2V5KSk7CisgICAgICAgIElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPih2YWx1ZS5tX2tleSksIHN0cmxlbih2YWx1ZS5tX2tleSkpOwog
ICAgICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgQnVpbHRpbikgewogICAgICAgICAgICAg
dGhpc09iai5wdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuYnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgdmFsdWUuYXR0
cmlidXRlcygpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCmluZGV4IGFiNTU4Mzk0OTBiOGVmYzAw
MjE2ZWMyZDllZjFkMmRmYTkxYjM2YjcuLmZhZDUyYzA1NjA0OGUxOGI3ZWVjNDk4ZmYxNDk1M2Zk
OTBmY2ZlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoYWRkZXJGdW5j
dGlvbkNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CiAKLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rp
b24gPSBpdGVyYWJsZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJp
dmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDgwNjdjYjIwZjBjMzdkNjZhNzc4YmU5ZDFlZjZh
ZmRiM2M2ZGU4MjguLmNhN2RjMDhmMjhlMGY2NmZiZDZlYmJhZjVkOGI2OGFiNGU4ZmQ2MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclBy
b3RvdHlwZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBNYXBJdGVyYXRvclByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90
eXBlKHRoaXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclByaXZhdGVOYW1lLCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9u
dEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwg
MCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBNYXBJ
dGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IDZkN2ExMWQ4ZmJi
YjRlMTVhNDMxNmZlNTg4MWFkMGQ3MTQwNTA5MDguLmE2OTkwMGY4YTNiMWVmM2U1YjU3NWQxZmY4
M2NkNDFlZmFhMDBlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
UHJvdG90eXBlLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgbWFwUHJvdG9GdW5jS2V5cywg
RG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
dmFsdWVzLCBtYXBQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIG1hcFByb3RvRnVuY0VudHJpZXMs
IERvbnRFbnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yUHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7CiAKICAgICBHZXR0ZXJTZXR0ZXIq
IGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZS5zdHJpbmcoKSwgbWFwUHJvdG9GdW5jU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDI4
ZmY1YzhkOTI3OWVlNTllNWIxMWU3NTFiOTliNTRiMmY2ZjAzOTQuLjUxNTZlZDJlZmQ1ZjAwNDEy
ZmMyNzA0NjcwYWQ4ZGFiM2ZiMjc4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhPYmplY3QuY3BwCkBAIC04Nyw0OSArODcsNDkgQEAgdm9pZCBNYXRoT2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsK
IAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkUi
KSwganNOdW1iZXIoZXhwKDEuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE4y
IiksIGpzTnVtYmVyKGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkxO
MTAiKSwganNOdW1iZXIobG9nKDEwLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9u
bHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwg
IkxPRzJFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyKCZ2bSwgIkxPRzEwRSIpLCBqc051bWJlcigwLjQzNDI5NDQ4MTkwMzI1MTgpLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXIoJnZtLCAiUEkiKSwganNOdW1iZXIocGlEb3VibGUpLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXIoJnZtLCAiU1FSVDFfMiIpLCBqc051bWJlcihzcXJ0KDAuNSkpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiU1FSVDIiKSwganNOdW1iZXIoc3FydCgyLjAp
KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotCi0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
KCZ2bSwgImFicyIpLCAxLCBtYXRoUHJvdG9GdW5jQWJzLCBBYnNJbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhY29zIiksIDEsIG1hdGhQcm90
b0Z1bmNBQ29zLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgImFzaW4iKSwgMSwgbWF0aFByb3RvRnVuY0FTaW4sIE5vSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXRhbiIpLCAxLCBt
YXRoUHJvdG9GdW5jQVRhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcigmdm0sICJhY29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvc2gsIE5vSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXNp
bmgiKSwgMSwgbWF0aFByb3RvRnVuY0FTaW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImF0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNB
VGFuaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cigmdm0sICJhdGFuMiIpLCAyLCBtYXRoUHJvdG9GdW5jQVRhbjIsIE5vSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiY2JydCIpLCAxLCBtYXRo
UHJvdG9GdW5jQ2JydCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcigmdm0sICJjZWlsIiksIDEsIG1hdGhQcm90b0Z1bmNDZWlsLCBDZWlsSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiY29zIiks
IDEsIG1hdGhQcm90b0Z1bmNDb3MsIENvc0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImNvc2giKSwgMSwgbWF0aFByb3RvRnVuY0Nvc2gsIE5v
SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAi
ZXhwIiksIDEsIG1hdGhQcm90b0Z1bmNFeHAsIEV4cEludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImV4cG0xIiksIDEsIG1hdGhQcm90b0Z1bmNF
eHBtMSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cigmdm0sICJmbG9vciIpLCAxLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiZnJvdW5kIiksIDEs
IG1hdGhQcm90b0Z1bmNGcm91bmQsIEZSb3VuZEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImh5cG90IiksIDIsIG1hdGhQcm90b0Z1bmNIeXBv
dCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigm
dm0sICJsb2ciKSwgMSwgbWF0aFByb3RvRnVuY0xvZywgTG9nSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibG9nMTAiKSwgMSwgbWF0aFByb3Rv
RnVuY0xvZzEwLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgImxvZzFwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxcCwgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJsb2cyIiksIDEs
IG1hdGhQcm90b0Z1bmNMb2cyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0g
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyKCZ2bSwgIm1heCIpLCAyLCBtYXRoUHJvdG9GdW5jTWF4LCBNYXhJbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJtaW4i
KSwgMiwgbWF0aFByb3RvRnVuY01pbiwgTWluSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9u
KTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAicG93IiksIDIsIG1hdGhQcm90b0Z1bmNQb3csIFBv
d0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwg
InJhbmRvbSIpLCAwLCBtYXRoUHJvdG9GdW5jUmFuZG9tLCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInJvdW5kIiksIDEsIG1hdGhQcm90
b0Z1bmNSb3VuZCwgUm91bmRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcigmdm0sICJzaWduIiksIDEsIG1hdGhQcm90b0Z1bmNTaWduLCBOb0ludHJpbnNp
YywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNpbiIpLCAx
LCBtYXRoUHJvdG9GdW5jU2luLCBTaW5JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcigmdm0sICJzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNTaW5oLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNx
cnQiKSwgMSwgbWF0aFByb3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJ0YW4iKSwgMSwgbWF0aFByb3RvRnVuY1Rh
biwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigm
dm0sICJ0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNUYW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRydW5jIiksIDEsIG1hdGhQcm90
b0Z1bmNUcnVuYywgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcigmdm0sICJpbXVsIiksIDEsIG1hdGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJFIiksIGpzTnVtYmVyKGV4cCgxLjApKSwg
RG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxOMiIpLCBqc051bWJl
cihsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJM
TjEwIiksIGpzTnVtYmVyKGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRP
bmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJMT0cyRSIpLCBqc051bWJlcigxLjAgLyBsb2coMi4wKSksIERvbnREZWxl
dGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJMT0cxMEUiKSwganNOdW1iZXIoMC40
MzQyOTQ0ODE5MDMyNTE4KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgIlBJIiksIGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVh
ZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgIlNRUlQxXzIiKSwganNOdW1iZXIoc3FydCgwLjUpKSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlNRUlQyIiksIGpzTnVtYmVyKHNxcnQo
Mi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKworICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJhYnMiKSwgMSwgbWF0aFByb3RvRnVuY0FicywgQWJzSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiYWNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvcywgTm9JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhc2lu
IiksIDEsIG1hdGhQcm90b0Z1bmNBU2luLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImF0YW4iKSwgMSwgbWF0aFBy
b3RvRnVuY0FUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYWNvc2giKSwgMSwgbWF0aFByb3RvRnVuY0FDb3No
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImFzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNBU2luaCwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJhdGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbmgsIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYXRhbjIi
KSwgMiwgbWF0aFByb3RvRnVuY0FUYW4yLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNicnQiKSwgMSwgbWF0aFBy
b3RvRnVuY0NicnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY2VpbCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2VpbCwg
Q2VpbEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQ29zLCBDb3NJbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJjb3NoIiksIDEsIG1hdGhQcm90b0Z1bmNDb3NoLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4cCIpLCAxLCBt
YXRoUHJvdG9GdW5jRXhwLCBFeHBJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJleHBtMSIpLCAxLCBtYXRoUHJvdG9GdW5j
RXhwbTEsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiZmxvb3IiKSwgMSwgbWF0aFByb3RvRnVuY0Zsb29yLCBGbG9v
ckludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgImZyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jRnJvdW5kLCBGUm91bmRJbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJoeXBvdCIpLCAyLCBtYXRoUHJvdG9GdW5jSHlwb3QsIE5vSW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibG9n
IiksIDEsIG1hdGhQcm90b0Z1bmNMb2csIExvZ0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImxvZzEwIiksIDEsIG1hdGhQ
cm90b0Z1bmNMb2cxMCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb2cxcCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9n
MXAsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAibG9nMiIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMiwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJtYXgiKSwgMiwgbWF0aFByb3RvRnVuY01heCwgTWF4SW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibWluIiksIDIs
IG1hdGhQcm90b0Z1bmNNaW4sIE1pbkludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Cisg
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBvdyIpLCAyLCBtYXRoUHJvdG9GdW5j
UG93LCBQb3dJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJyYW5kb20iKSwgMCwgbWF0aFByb3RvRnVuY1JhbmRvbSwgTm9J
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jUm91bmQsIFJvdW5kSW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAic2lnbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2lnbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzaW4iKSwgMSwg
bWF0aFByb3RvRnVuY1NpbiwgU2luSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAic2luaCIpLCAxLCBtYXRoUHJvdG9GdW5j
U2luaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJzcXJ0IiksIDEsIG1hdGhQcm90b0Z1bmNTcXJ0LCBTcXJ0SW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAidGFuIiksIDEsIG1hdGhQcm90b0Z1bmNUYW4sIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidGFuaCIp
LCAxLCBtYXRoUHJvdG9GdW5jVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0cnVuYyIpLCAxLCBtYXRoUHJv
dG9GdW5jVHJ1bmMsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW11bCIpLCAxLCBtYXRoUHJvdG9GdW5jSU11bCwg
SU11bEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0
cnVjdG9yLmNwcAppbmRleCAzY2ZlOTQxMTZmYTA2MWJjYjVhMjEyNzE2NWE0ZDAxNDg0MTcyZjVk
Li45NWE4ZGNhOTA4ZmE1YjdmZWExNTkxMjk1MTA5MTcyNDNhYjdjMDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCkBAIC01
OSwyMSArNTksMjEgQEAgdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKICAgICAvLyBuby4gb2YgYXJn
dW1lbnRzIGZvciBjb25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRF
bnVtIHwgRG9udERlbGV0ZSk7CiAKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcigmdm0sICJFUFNJTE9OIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9u
bHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwg
Ik1BWF9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCksIERv
bnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJNSU5fVkFMVUUiKSwganNEb3VibGVOdW1iZXIo
NUUtMzI0KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk1BWF9TQUZFX0lOVEVHRVIi
KSwganNEb3VibGVOdW1iZXIoOTAwNzE5OTI1NDc0MDk5MS4wKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyKCZ2bSwgIk1JTl9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIoLTkwMDcxOTky
NTQ3NDA5OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJORUdBVElWRV9JTkZJ
TklUWSIpLCBqc0RvdWJsZU51bWJlcigtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIlBPU0lUSVZFX0lORklOSVRZ
IiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJOYU4iKSwganNOYU4oKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotCi0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwg
SWRlbnRpZmllcigmdm0sICJpc0Zpbml0ZSIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0Zp
bml0ZSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNJbnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVj
dG9yRnVuY0lzSW50ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNOYU4iKSwgMSwgbnVtYmVy
Q29uc3RydWN0b3JGdW5jSXNOYU4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
LSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQ
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgImlzU2FmZUludGVnZXIi
KSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZlSW50ZWdlciwgTm9JbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIo
JnZtLCAicGFyc2VGbG9hdCIpLCAxLCBnbG9iYWxGdW5jUGFyc2VGbG9hdCwgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZp
ZXIoJnZtLCAicGFyc2VJbnQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNlSW50LCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiRVBTSUxPTiIpLCBqc0RvdWJsZU51bWJlcihz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNQVhfVkFMVUUiKSwganNEb3VibGVOdW1iZXIoMS43
OTc2OTMxMzQ4NjIzMTU3RSszMDgpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiTUlOX1ZBTFVFIiksIGpzRG91YmxlTnVtYmVyKDVFLTMyNCksIERvbnREZWxldGUg
fCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNQVhfU0FGRV9JTlRFR0VSIiksIGpzRG91
YmxlTnVtYmVyKDkwMDcxOTkyNTQ3NDA5OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJl
YWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJNSU5fU0FGRV9JTlRFR0VSIiksIGpzRG91YmxlTnVtYmVyKC05MDA3
MTk5MjU0NzQwOTkxLjApLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiTkVHQVRJVkVfSU5GSU5JVFkiKSwganNEb3VibGVOdW1iZXIoLXN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJQT1NJVElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiTmFOIiksIGpzTmFOKCksIERvbnREZWxldGUgfCBEb250RW51bSB8
IFJlYWRPbmx5KTsKKworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAiaXNGaW5pdGUiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNGaW5pdGUs
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzSW50ZWdlciIpLCAxLCBudW1iZXJD
b25zdHJ1Y3RvckZ1bmNJc0ludGVnZXIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9u
KTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1i
ZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
ImlzTmFOIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzTmFOLCBOb0ludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJpc1NhZmVJbnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVu
Y0lzU2FmZUludGVnZXIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBhcnNlRmxv
YXQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgInBhcnNlSW50IiksIDEsIGdsb2JhbEZ1bmNQYXJzZUludCwgTm9JbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOwogfQogCiAvLyBFQ01BIDE1LjcuMQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDhmNTA1
ZjZhMDA2YTlmOGI1MzcwOGUxZDVmMTVmYmY5ZmNlMjE0MDcuLmUzMzhlMjU2YTMzZjllOTVlNWMz
NmE3ZDA3YzVhMzdjMmRjZGVhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAogI2luY2x1
ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5Lmgi
CiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSop
OwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKik7
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJv
cGVydHkoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKQEAgLTg0LDEzICs4NiwxNiBA
QAogewogfQogCi12b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQordm9pZCBPYmplY3RDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBP
YmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJPYmplY3QiKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIG9iamVjdFByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFt
ZSk7CiAgICAgLy8gRUNNQSAxNS4yLjMuMQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9y
IGNvbnN0cnVjdG9yCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250
RGVsZXRlKTsKKworICAgIGlmIChnbG9iYWxPYmplY3QtPnJ1bnRpbWVGbGFncygpLmlzU3ltYm9s
RW5hYmxlZCgpKQorICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJnZXRPd25Qcm9wZXJ0eVN5
bWJvbHMiLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scywgRG9udEVudW0s
IDEpOwogfQogCiBib29sIE9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QgJnNsb3QpCkBAIC0yMDYsNyArMjExLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0
YXRlKiBleGUKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4g
b2JqZWN0LiIpKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJv
cGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3QoZXhlYy0+
YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0
aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgSlNBcnJheSogbmFtZXMg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVz
ID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9w
ZXJ0aWVzOyBpKyspCkBAIC0yMTUsMTIgKzIyMCwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4
ZQogfQogCiAvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0
IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKKyAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVz
KGV4ZWMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkp
LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CisgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RF
bXB0eUFycmF5KGV4ZWMsIDApOworICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGll
cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKysp
IHsKKyAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnRpZXNbaV0uaW1wbCgp
OworICAgICAgICBpZiAoaW1wbC0+aXNTeW1ib2woKSAmJiAhZXhlYy0+cHJvcGVydHlOYW1lcygp
LmlzUHJpdmF0ZU5hbWUoaW1wbCkpCisgICAgICAgICAgICBuYW1lcy0+cHVzaChleGVjLCBTeW1i
b2w6OmNyZWF0ZShleGVjLT52bSgpLCBpbXBsKSk7CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobmFtZXMpOworfQorCisvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNo
ZS4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIGtleXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBv
YmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAg
IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9w
ZXJ0aWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5h
cmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRp
b25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBKU0FycmF5KiBrZXlzID0g
Y29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9
IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVy
dGllczsgaSsrKQpAQCAtMzMxLDcgKzM1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0
aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9i
amVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCiB7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJv
cGVydHlOYW1lcyhleGVjKTsKLSAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGllcyksIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2Jq
ZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzQW5kSW5jbHVkZVN5bWJvbHMpOwogICAg
IHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydHlOYW1lcy5zaXplKCk7CiAgICAgVmVjdG9y
PFByb3BlcnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRvcnM7CiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgbWFya0J1ZmZlcjsKQEAgLTM1NCw3ICszNzYsMTAgQEAgc3RhdGljIEpTVmFsdWUgZGVmaW5l
UHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIEpTT2JqZWN0KiBw
cm8KICAgICAgICAgfQogICAgIH0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3Bl
cnRpZXM7IGkrKykgewotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5k
ZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXNbaV0sIGRlc2NyaXB0
b3JzW2ldLCB0cnVlKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0
eU5hbWVzW2ldOworICAgICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkgJiYgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmlzUHJpdmF0ZU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZp
bmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcnNbaV0s
IHRydWUpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4ganNOdWxsKCk7CiAgICAgfQpAQCAtMzk4LDE3ICs0MjMsMjAgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAg
IFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0
aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250RW51bVByb3BlcnRpZXNBbmRJbmNsdWRl
U3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBy
b3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAg
ICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9ICppdGVyOworICAgICAgICBpZiAocHJvcGVy
dHlOYW1lLmlzU3ltYm9sKCkgJiYgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJpdmF0ZU5hbWUo
cHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBhLiBMZXQg
ZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRl
cm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCiAgICAgICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNj
OwotICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsICpp
dGVyLCBkZXNjKSkKKyAgICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2MpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIC8vIGIuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0cnVlLCBzZXQgZGVzYy5bW0Nv
bmZpZ3VyYWJsZV1dIHRvIGZhbHNlLgogICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShmYWxz
ZSk7CiAgICAgICAgIC8vIGMuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5h
bCBtZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0cnVlIGFzIGFyZ3VtZW50cy4KLSAgICAg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkob2Jq
ZWN0LCBleGVjLCAqaXRlciwgZGVzYywgdHJ1ZSk7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBkZXNjLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogICAgIH0KQEAgLTQzNSwxMiAr
NDYzLDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JG
cmVlemUoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHBy
b3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
Yyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGU6OkluY2x1ZGVEb250
RW51bVByb3BlcnRpZXNBbmRJbmNsdWRlU3ltYm9scyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0
eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9ICpp
dGVyOworICAgICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkgJiYgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmlzUHJpdmF0ZU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhl
IFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCiAgICAgICAg
IFByb3BlcnR5RGVzY3JpcHRvciBkZXNjOwotICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGV4ZWMsICppdGVyLCBkZXNjKSkKKyAgICAgICAgaWYgKCFvYmplY3Qt
PmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2MpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIC8vIGIuIElmIElzRGF0YURlc2NyaXB0b3IoZGVz
YykgaXMgdHJ1ZSwgdGhlbgogICAgICAgICAvLyBpLiBJZiBkZXNjLltbV3JpdGFibGVdXSBpcyB0
cnVlLCBzZXQgZGVzYy5bW1dyaXRhYmxlXV0gdG8gZmFsc2UuCkBAIC00NDksNyArNDgwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIC8vIGMuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0
cnVlLCBzZXQgZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIHRvIGZhbHNlLgogICAgICAgICBkZXNjLnNl
dENvbmZpZ3VyYWJsZShmYWxzZSk7CiAgICAgICAgIC8vIGQuIENhbGwgdGhlIFtbRGVmaW5lT3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0cnVlIGFz
IGFyZ3VtZW50cy4KLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVm
aW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCAqaXRlciwgZGVzYywgdHJ1ZSk7CisgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwog
ICAgIH0KQEAgLTQ4MywxMiArNTE0LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBG
b3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0
aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0FuZEluY2x1ZGVTeW1ib2xzKTsKICAg
ICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQo
KTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJv
cGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSAmJiBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRlTmFtZShwcm9wZXJ0eU5hbWUp
KQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSBy
ZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBv
ZiBPIHdpdGggUC4KICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2M7Ci0gICAgICAgIGlm
ICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgKml0ZXIsIGRlc2MpKQor
ICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzYykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgLy8gYi4gSWYg
ZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIGlzIHRydWUsIHRoZW4gcmV0dXJuIGZhbHNlLgogICAgICAg
ICBpZiAoZGVzYy5jb25maWd1cmFibGUoKSkKQEAgLTUxMywxMiArNTQ3LDE1IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9m
IE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMs
IHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZTo6SW5jbHVkZURvbnRFbnVtUHJvcGVydGllc0Fu
ZEluY2x1ZGVTeW1ib2xzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25z
dF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVy
KSB7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7CisgICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSAmJiBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2
YXRlTmFtZShwcm9wZXJ0eU5hbWUpKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIC8v
IGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0
eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KICAgICAgICAgUHJvcGVydHlEZXNjcmlw
dG9yIGRlc2M7Ci0gICAgICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgKml0ZXIsIGRlc2MpKQorICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzYykpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgLy8gYi4gSWYgSXNEYXRhRGVzY3JpcHRvcihkZXNjKSBpcyB0cnVlIHRoZW4K
ICAgICAgICAgLy8gaS4gSWYgZGVzYy5bW1dyaXRhYmxlXV0gaXMgdHJ1ZSwgcmV0dXJuIGZhbHNl
LiBjLiBJZiBkZXNjLltbQ29uZmlndXJhYmxlXV0gaXMgdHJ1ZSwgdGhlbiByZXR1cm4gZmFsc2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aAppbmRleCAxMjUyNzgxYTVlODkwMDY5ZWE3ZDkwMTMwZmYzMWVlOWU5MGQzOGQ1Li5iYjA2N2Ix
NTU1ZmUwOTg2MWJlYTQyZDE5MmFhOTZhZjM3YzMwMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTMzLDEwICszMywxMCBA
QCBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAotICAgIHN0YXRpYyBP
YmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9i
amVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQorICAgIHN0YXRpYyBPYmplY3RDb25zdHJ1
Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogICAgIHsK
ICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBPYmplY3RDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZt
LCBvYmplY3RQcm90b3R5cGUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgb2JqZWN0UHJvdG90eXBlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdG9yOwogICAgIH0KIApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBPYmplY3RDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgT2JqZWN0UHJvdG90eXBlKik7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAppbmRleCAyMTQx
NjQ0NjY0NWM3ZmZmMDNmN2M4MmQxNzg3MzlhZDU2MDhiZjY0Li5jY2NjYzM5ZmE5MzkxM2IzZmE2
MWM3NTBlNjhkYzcyOTE2ZTViNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcml2YXRlTmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ByaXZhdGVOYW1lLmgKQEAgLTMzLDE5ICszMywxOSBAQAogY2xhc3MgUHJpdmF0ZU5hbWUgewog
cHVibGljOgogICAgIFByaXZhdGVOYW1lKCkKLSAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6
Y3JlYXRlVW5pcXVlRW1wdHkoKSkKKyAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRl
U3ltYm9sRW1wdHkoKSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkp
OwotICAgIH0KLSAgICBQcml2YXRlTmFtZShjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQotICAg
ICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWUoZGVzY3JpcHRpb24uaW1wbCgp
KSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzVW5pcXVlKCkpOwogICAgIH0KKwog
ICAgIGV4cGxpY2l0IFByaXZhdGVOYW1lKFN0cmluZ0ltcGwqIHVpZCkKICAgICAgICAgOiBtX2lt
cGwodWlkKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7CisgICAg
ICAgIEFTU0VSVChtX2ltcGwtPmlzU3ltYm9sKCkpOworICAgIH0KKworICAgIGV4cGxpY2l0IFBy
aXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCisgICAgICAgIDogbV9pbXBsKFN0
cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChkZXNjcmlwdGlvbi5pbXBsKCkpKQorICAgIHsKICAgICB9
CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxBdG9taWNTdHJpbmdJbXBsKj4obV9pbXBsLmdldCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKaW5kZXggMDM3MGEz
NTQ4ZGE5ODZkMDQxMTMxM2UwNGRhYzJkMTVjNmJhMDkwNC4uNzU0ZGEyZDhlODE1NTU0Yjc3YjY4
ZmUzZTUyZmM0YzgyMmQzMDIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCkBAIC0yNzEsNyArMjcxLDcgQEAgaW5saW5l
IFByb3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmVuZCgpIGNvbnN0
CiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6ZmluZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5k
KGNvbnN0IEtleVR5cGUmIGtleSkKIHsKICAgICBBU1NFUlQoa2V5KTsKLSAgICBBU1NFUlQoa2V5
LT5pc0F0b21pYygpIHx8IGtleS0+aXNVbmlxdWUoKSk7CisgICAgQVNTRVJUKGtleS0+aXNBdG9t
aWMoKSB8fCBrZXktPmlzU3ltYm9sKCkpOwogICAgIHVuc2lnbmVkIGhhc2ggPSBrZXktPmV4aXN0
aW5nSGFzaCgpOwogICAgIHVuc2lnbmVkIHN0ZXAgPSAwOwogCkBAIC0zMDUsNyArMzA1LDcgQEAg
aW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6ZmluZChj
b25zdCBLZXlUeXBlJiBrZXkpCiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQcm9w
ZXJ0eVRhYmxlOjpnZXQoY29uc3QgS2V5VHlwZSYga2V5KQogewogICAgIEFTU0VSVChrZXkpOwot
ICAgIEFTU0VSVChrZXktPmlzQXRvbWljKCkgfHwga2V5LT5pc1VuaXF1ZSgpKTsKKyAgICBBU1NF
UlQoa2V5LT5pc0F0b21pYygpIHx8IGtleS0+aXNTeW1ib2woKSk7CiAKICAgICBpZiAoIW1fa2V5
Q291bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU5hbWUuaAppbmRleCAzMDc0YzcyZTEwNzAxMzNiOTdiMDNiMWRmZjRh
NDNkZTEzMmZjMGE2Li42NTVlNzRkNjJhYzM2MTIwYTE5NjFhYmQ3MDExZmY2YmVjNTIxNWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaApAQCAtODEs
NyArODEsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWUgewogICAgIFByb3BlcnR5TmFtZShBdG9taWNT
dHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIDogbV9pbXBsKHByb3BlcnR5TmFtZSkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9pbXBsIHx8IG1faW1wbC0+aXNBdG9taWMoKSk7Cisg
ICAgICAgIEFTU0VSVCghbV9pbXBsIHx8IG1faW1wbC0+aXNBdG9taWMoKSB8fCBtX2ltcGwtPmlz
U3ltYm9sKCkpOwogICAgIH0KIAogICAgIFByb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCkBAIC05Myw4ICs5Myw3IEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAgICAg
ICAgIDogbV9pbXBsKHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihwcm9wZXJ0eU5hbWUu
dWlkKCkpKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faW1wbCk7Ci0gICAgICAgIEFTU0VSVCht
X2ltcGwtPmlzVW5pcXVlKCkpOwotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc0F0b21pYygpKTsK
KyAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNTeW1ib2woKSk7CiAgICAgfQogCiAgICAgQXRvbWlj
U3RyaW5nSW1wbCogdWlkKCkgY29uc3QKQEAgLTEwNCwxNCArMTAzLDE0IEBAIGNsYXNzIFByb3Bl
cnR5TmFtZSB7CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiBwdWJsaWNOYW1lKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmlzVW5pcXVlKCkgPyBudWxscHRyIDogbV9pbXBs
OworICAgICAgICByZXR1cm4gKCFtX2ltcGwgfHwgbV9pbXBsLT5pc1N5bWJvbCgpKSA/IG51bGxw
dHIgOiBtX2ltcGw7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5k
ZXggPSBVSU5UX01BWDsKIAogICAgIHVpbnQzMl90IGFzSW5kZXgoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1faW1wbCA/IHRvVUludDMyRnJvbVN0cmluZ0ltcGwobV9pbXBsKSA6IE5vdEFuSW5k
ZXg7CisgICAgICAgIHJldHVybiAobV9pbXBsICYmICFtX2ltcGwtPmlzU3ltYm9sKCkpID8gdG9V
SW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDogTm90QW5JbmRleDsKICAgICB9CiAgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKaW5kZXggNDQ3NWI4OThh
OTc0OTc3Y2U2OGU0NzU5ZGNhZDA2YmQ2YTA0ODM3My4uZTRlNWUyN2EwNGZhMDRmNjg1ZTZjN2Iz
Y2VlZjk3YmQ1YTExYjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcApAQCAtMzEsOSArMzEsOSBAQAogCiB2b2lkIFByb3Bl
cnR5TmFtZUFycmF5OjphZGQoU3RyaW5nSW1wbCogaWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQo
IWlkZW50aWZpZXIgfHwgaWRlbnRpZmllciA9PSBTdHJpbmdJbXBsOjplbXB0eSgpIHx8IGlkZW50
aWZpZXItPmlzQXRvbWljKCkpOworICAgIEFTU0VSVCghaWRlbnRpZmllciB8fCAoaWRlbnRpZmll
ciA9PSBTdHJpbmdJbXBsOjplbXB0eSgpIHx8IGlkZW50aWZpZXItPmlzQXRvbWljKCkgfHwgaWRl
bnRpZmllci0+aXNTeW1ib2woKSkpOwogICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAg
ICAgIHVpbnQzMl90IGluZGV4ID0gUHJvcGVydHlOYW1lKElkZW50aWZpZXIobV92bSwgaWRlbnRp
ZmllcikpLmFzSW5kZXgoKTsKKyAgICAgICAgdWludDMyX3QgaW5kZXggPSBQcm9wZXJ0eU5hbWUo
SWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBpZGVudGlmaWVyKSkuYXNJbmRleCgpOwogICAgICAg
ICBBU1NFUlRfVU5VU0VEKGluZGV4LCBpbmRleCA9PSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgg
fHwgaW5kZXggPj0gbV9wcmV2aW91c2x5RW51bWVyYXRlZExlbmd0aCk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRl
eCA5OTRmMDljOTA1NDAxMWU0MWIyMzM4ZjlkMDUwNGIyZDQ5YmZmMzlhLi44OWZjYmRlY2Y3ZTgx
Y2UyMzVkNGIxMDNlNTk0NjljOTgxMWE3YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3Mg
UHJvcGVydHlOYW1lQXJyYXkgewogICAgIHZvaWQgYWRkS25vd25VbmlxdWUoU3RyaW5nSW1wbCog
aWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIG1fc2V0LT5hZGQoaWRlbnRpZmllcik7Ci0gICAg
ICAgIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXIobV92bSwg
aWRlbnRpZmllcikpOworICAgICAgICBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVu
ZChJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICBJ
ZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVy
dHlOYW1lVmVjdG9yKClbaV07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCA0NWU4MGY1Y2RjMTVhNTZmMmM2NjJiNTM0
YjVkMmRkZGI1YmZlOTkyLi5lZTFkOGIzZmM2OWY5NDNiOTRhNTI1OWNmN2MxODZjYWM2MzczZjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwCkBAIC05MSw3ICs5MSw3IEBACiAKIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUpCiB7
Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiUmVnRXhwIiku
c3RyaW5nKCkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCByZWdFeHBQcm90b3R5cGUt
PmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsK
IAogICAgIC8vIEVDTUEgMTUuMTAuNS4xIFJlZ0V4cC5wcm90b3R5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IDRkOWQwYjI3ZTRkMGM4
YzkxZjlmZWI0NWExZDU0ZTU5NWQzM2Q1MTkuLjU0OWEzYTJmOWE3NGMzYTFhOWRjNzAwMTA0MTJm
YTQ3OWQ5MWE4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcApAQCAtMTA1LDIxICsxMDUsMjEgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHIK
IAogdm9pZCBSZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAobW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sYXN0SW5kZXgpOwogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhv
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVj
dDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsK
LSAgICBpZiAoc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkKKyAgICBpZiAo
bW9kZS5zaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpOwogICAgIEJhc2U6Omdl
dFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAog
dm9pZCBSZWdFeHBPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKG1vZGUpKQorICAgIGlmIChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxh
c3RJbmRleCk7CiAgICAgQmFzZTo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCA0MjNhNmJkNWViYWRmOWI5MmI1ZTViYmZk
YTQ3MTZiODI5MGYyNTgxLi5mYjk3YjZkOWZhMGQwZWU2M2ExZDUyYTk4ODdlYzc3Njk4Zjc1M2Rm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3Iu
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxs
VHlwZSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYykpOwogCi0gICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRl
cmFibGUuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1l
KTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmNwcAppbmRleCA1MjYxYmYzY2FjYzFkNGUwZTQ1NzU1MWEwMjJkZTY3YzkxOTRk
ZmY5Li5mMWI4Yjc5NDgxMTg5MDkzYTAxYTYyYzU4NjE0ZGQ5ZGVlZDhmMzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQo
aW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlz
KTsKIAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQ
cml2YXRlTmFtZSwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAw
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgU2V0SXRlcmF0b3JQ
cm90b3R5cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCA2YTZjNDliNDhlMGM2YTkwYzkz
MDc2OTlkOGNkNzliNGM5NWQyYzUxLi43NjgyNmFkZTVkMDQ0YjA5YzRmNTM4ZjhiMWI4NzA0OGQ4
MjIzODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlw
ZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVt
LCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywg
c2V0UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51
bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lLCBzZXRQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CisgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgc2V0UHJvdG9G
dW5jS2V5cywgRG9udEVudW0sIDApOwogCiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3Bl
cnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIHNldFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUu
Y3BwCmluZGV4IDUzZTBjY2IzMTQ0ZjM5NTk2ZTY0NTVlYTdiMzJmNzU3MGJiZjFhZGIuLjQ2OGI3
MmQwZmNhNzRmOTI0NzUyMTFiYzQxZDlhZWYwYzU5Zjc2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsK
IAotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2
YXRlTmFtZSwgc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVJdGVyYXRvciwgRG9udEVudW0sIDApOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2ws
IHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKIH0KIAogYm9v
bCBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKaW5kZXggNTAwMWJjYzRlMWI3ZTM3OTNlZDI2ZTE0MjBhODBhNjA0NjhlMTNjNi4u
YWIzOTQ5ZTA3ZTMzZTFhMTlmNzUzNTlmMjk5ODFhMjE0OWFmMGJkNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0xNTAsNyArMTUwLDcg
QEAgdm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICBpbnQgc2l6ZSA9IHRoaXNPYmplY3QtPmlu
dGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkp
OwotICAgIGlmIChzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQorICAgIGlm
IChtb2RlLnNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkKICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgcmV0dXJuIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHAKaW5kZXggYWVhNTkyNjk1MjJiODU5ODg5NGM0N2VlNWQ0OWE0ZWJjNjJk
MjEzMy4uY2E2MmM0MWIwZjM1ODk2OTE2ZDFjNjI1ZDdjMzQwZmE0ZGYyNDkyMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0x
NDIsNyArMTQyLDcgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHIKICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKCJzdGFydHNXaXRoIiwgc3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0aCwgRG9udEVudW0s
IDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImVuZHNXaXRoIiwgc3RyaW5nUHJvdG9GdW5j
RW5kc1dpdGgsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJpbmNsdWRl
cyIsIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBzdHJpbmdQ
cm90b0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9y
LCBEb250RW51bSwgMCk7CiAKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5jaGFyQ29kZUF0UHJpdmF0ZU5hbWUsIHN0cmluZ1Byb3RvRnVuY0NoYXJD
b2RlQXQsIERvbnRFbnVtLCAxLCBDaGFyQ29kZUF0SW50cmluc2ljKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggODY5Y2JjNTdjMjA2OWZhYzI0
MTg4ZTEwZjUwMTU1Y2ZjNWFiZjk3OC4uOWVmMjM1OTA3YTRiZDA4MDM4OWI1MTEyZDIyMmJiYTNm
OTU0MDllYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CkBAIC05NDgsNyArOTQ4LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9t
U3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAgICBQcm9wZXJ0
eVRhYmxlOjppdGVyYXRvciBlbmQgPSBwcm9wZXJ0eVRhYmxlKCktPmVuZCgpOwogICAgIGZvciAo
UHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsg
aXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBBU1NFUlQoaGFzTm9uRW51bWVyYWJsZVBy
b3BlcnRpZXMoKSB8fCAhKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkpOwotICAgICAgICBp
ZiAoIWl0ZXItPmtleS0+aXNVbmlxdWUoKSAmJiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVu
dW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAg
IGlmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgbW9kZS5zaG91bGRJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgICAgIGlmIChpdGVyLT5rZXktPmlzU3lt
Ym9sKCkgJiYgIW1vZGUuc2hvdWxkSW5jbHVkZVN5bWJvbHMoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGlmIChrbm93blVuaXF1ZSkKICAgICAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZEtub3duVW5pcXVlKGl0ZXItPmtleSk7CiAgICAgICAgICAgICBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggOTljZTY4NjI3NGZkNzczOTI4ZGRkNTlmZjFmOWNhZjRlZWJlMjExZS4uYWE5
NGZhMzFmMWEwOTViZTM4ODRjNDE3ODAyNDRiNzE4OGIzMDI4OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtNDQsNyAr
NDQsNyBAQAogfQogCiAjZGVmaW5lIElOSVRJQUxJWkVfV0VMTF9LTk9XTl9TWU1CT0xTKG5hbWUp
IFwKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICNu
YW1lKSwgU3ltYm9sOjpjcmVhdGUodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUjI1ByaXZhdGVO
YW1lLmltcGwoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICNu
YW1lKSwgU3ltYm9sOjpjcmVhdGUodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUjI1N5bWJvbC5p
bXBsKCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAKIHZvaWQgU3ltYm9s
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3ltYm9sUHJvdG90eXBlKiBwcm90
b3R5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZThmYzBlMzIw
YjVjYTNhZTEzM2JhOGY0NmFhNThlYzU5YzdlMWQyOC4uZTk4MGZiZjk5ZmJlMjYzNzhhZDliZWQz
ZjAzOGNlZTE3YzhmN2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAt
NjU0LDEwICs2NTQsMTAgQEAgSlNWYWx1ZSBWTTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGVycm9yKQogICAgICAgICB1bnNpZ25lZCBsaW5lOwogICAgICAgICB1bnNp
Z25lZCBjb2x1bW47CiAgICAgICAgIHN0YWNrRnJhbWUuY29tcHV0ZUxpbmVBbmRDb2x1bW4obGlu
ZSwgY29sdW1uKTsKLSAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZp
ZXIodGhpcywgImxpbmUiKSwganNOdW1iZXIobGluZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7
Ci0gICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyKHRoaXMsICJj
b2x1bW4iKSwganNOdW1iZXIoY29sdW1uKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAg
ICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodGhp
cywgImxpbmUiKSwganNOdW1iZXIobGluZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAg
ICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHRo
aXMsICJjb2x1bW4iKSwganNOdW1iZXIoY29sdW1uKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsK
ICAgICAgICAgaWYgKCFzdGFja0ZyYW1lLnNvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcih0aGlzLCAic291cmNlVVJM
IiksIGpzU3RyaW5nKHRoaXMsIHN0YWNrRnJhbWUuc291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250
RGVsZXRlKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHRoaXMsICJzb3VyY2VVUkwiKSwganNTdHJpbmcodGhpcywgc3RhY2tG
cmFtZS5zb3VyY2VVUkwpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIH0KICAgICBpZiAo
ZXhjZXB0aW9uLT5pc0Vycm9ySW5zdGFuY2UoKSAmJiBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNl
Kj4oZXhjZXB0aW9uKS0+YXBwZW5kU291cmNlVG9NZXNzYWdlKCkpIHsKICAgICAgICAgRmluZEZp
cnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3RvciBmdW5jdG9yKGV4ZWMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggMDlhZmYwMzUxMDAwNjg5YWY4ZTdhYjg0M2I3MjFiYTRlODE1MDJiZS4uMjNjNDMzMzBk
NjJlZjA5NzI3ZmY2YjkxMjQ1NmE1MDQwNGRhNzhhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAo
RXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5
cGVOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMpKTsKIAotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1
ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3Bl
cnR5LXN5bWJvbHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL29iamVj
dC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBlOTNkOGIyNDc5ZGU5
MmFkOTYwZTc1YjQyZTc5MWZkOTI1ZjE2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5q
cwpAQCAtMCwwICsxLDM1IEBACisvLyBUaGlzIHRlc3RzIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMuCisKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikoKSk7CisKKy8v
IHByaXZhdGUgbmFtZXMgZm9yIHByaXZpbGVnZWQgY29kZSBzaG91bGQgbm90IGJlIGV4cG9zZWQu
CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhnbG9iYWwpLmxlbmd0aCAhPT0gMCkK
KyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyhnbG9iYWwpLmxlbmd0aDsKKwordmFyIG9iamVjdCA9IHt9OwordmFyIHN5bWJvbCA9IFN5
bWJvbCgiQ29jb2EiKTsKK29iamVjdFtzeW1ib2xdID0gIkNhcHB1Y2Npbm8iOworaWYgKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJF
cnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxl
bmd0aDsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoICE9
PSAxKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMob2JqZWN0KVswXSAhPT0gc3ltYm9sKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIg
KyBTdHJpbmcoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBdKTsKKworZnVu
Y3Rpb24gZm9ySW4ob2JqKSB7CisgICAgdmFyIGFycmF5ID0gW107CisgICAgLy8gU3ltYm9sIHNo
b3VsZCBub3QgYmUgZW51bWVyYXRlZC4KKyAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBhcnJheS5w
dXNoKGtleSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCitpZiAoZm9ySW4ob2JqZWN0KS5sZW5n
dGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIGZvckluKG9iamVjdCku
bGVuZ3RoOworaWYgKE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93
ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aDsKKworZGVs
ZXRlIG9iamVjdFtzeW1ib2xdOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aDsKK2lmIChPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJFcnJvcjogYmFk
IHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtZGVm
aW5lLXByb3BlcnR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1i
b2wtZGVmaW5lLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYzNlYzA1ZjgwNmUzNzI1NzczNjI0
ODI2MTk4MTUyMzBiNmIzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHkuanMKQEAgLTAsMCArMSwzMyBA
QAorLy8gVGhpcyB0ZXN0cyBPYmplY3QuY3JlYXRlLCBPYmplY3QuZGVmaW5lUHJvcGVydHksIE9i
amVjdC5kZWZpbmVQcm9wZXJ0aWVzIHdvcmsgd2l0aCBTeW1ib2wuCisKK2Z1bmN0aW9uIHRlc3RT
eW1ib2wob2JqZWN0KSB7CisgICAgaWYgKCFvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0
ZXJhdG9yKSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBvYmplY3QgZG9lc24ndCBoYXZlIFN5bWJv
bC5pdGVyYXRvciI7CisgICAgaWYgKG9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZShTeW1ib2wu
aXRlcmF0b3IpKQorICAgICAgICB0aHJvdyAiRXJyb3I6IFN5bWJvbC5pdGVyYXRvciBpcyBkZWZp
bmVkIGFzIGVudW1lcmFibGUiOworICAgIGlmIChKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgIT09ICd7InZhbHVl
Ijo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjpmYWxzZSwiY29uZmlndXJhYmxlIjpm
YWxzZX0nKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBwcm9wZXJ0eSBkZXNjcmlwdG9yICIg
KyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwg
U3ltYm9sLml0ZXJhdG9yKSk7CisgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMo
b2JqZWN0KS5sZW5ndGggIT09IDEpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGg7CisgICAgaWYgKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSAhPT0gU3ltYm9sLml0ZXJhdG9yKQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgU3RyaW5nKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSk7Cit9CisKK3ZhciBvYmplY3QgPSBPYmplY3QuY3Jl
YXRlKE9iamVjdC5wcm90b3R5cGUsIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogeworICAgICAg
ICB2YWx1ZTogNDIKKyAgICB9Cit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsKKwordmFyIG9iamVj
dCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHt9LCB7CisgICAgW1N5bWJvbC5pdGVyYXRvcl06
IHsKKyAgICAgICAgdmFsdWU6IDQyCisgICAgfQorfSk7Cit0ZXN0U3ltYm9sKG9iamVjdCk7CisK
K3ZhciBvYmplY3QgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIFN5bWJvbC5pdGVyYXRvciwg
eworICAgIHZhbHVlOiA0MgorfSk7Cit0ZXN0U3ltYm9sKG9iamVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1zZWFsLWFuZC1mcmVlemUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1zZWFsLWFuZC1m
cmVlemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY1MDdjZDllZTUzYzUxYjJjMjE5YzcyOGM0ZDNjNTVlZGQ3
N2M1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qcwpAQCAtMCwwICsxLDI2IEBACisvLyBUaGlzIHRl
c3RzIE9iamVjdC5zZWFsIGFuZCBPYmplY3QuZnJlZXplIGFmZmVjdCBvbiBTeW1ib2wgcHJvcGVy
dGllcy4KKwordmFyIG9iamVjdCA9IHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogNDIKK307CisK
K2lmICghb2JqZWN0Lmhhc093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikpCisgICAgdGhyb3cg
IkVycm9yOiBvYmplY3QgZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVyYXRvciI7CitpZiAoSlNPTi5z
dHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5p
dGVyYXRvcikpICE9PSAneyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0
cnVlLCJjb25maWd1cmFibGUiOnRydWV9JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBwcm9wZXJ0
eSBkZXNjcmlwdG9yICIgKyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSk7CitpZiAoT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aCAhPT0gMSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2
YWx1ZSAiICsgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aDsKK2lm
IChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0gIT09IFN5bWJvbC5pdGVy
YXRvcikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgU3RyaW5nKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSk7CisKK09iamVjdC5zZWFsKG9iamVjdCk7Citp
ZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpKQorICAgIHRocm93ICJF
cnJvcjogb2JqZWN0IGRvZXNuJ3QgaGF2ZSBTeW1ib2wuaXRlcmF0b3IiOworaWYgKEpTT04uc3Ry
aW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRl
cmF0b3IpKSAhPT0gJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6dHJ1ZSwiZW51bWVyYWJsZSI6dHJ1
ZSwiY29uZmlndXJhYmxlIjpmYWxzZX0nKQorICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5
IGRlc2NyaXB0b3IgIiArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKTsKKworT2JqZWN0LmZyZWV6ZShvYmplY3Qp
OworaWYgKCFvYmplY3QuaGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICB0aHJv
dyAiRXJyb3I6IG9iamVjdCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsKK2lmIChKU09O
LnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9s
Lml0ZXJhdG9yKSkgIT09ICd7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxl
Ijp0cnVlLCJjb25maWd1cmFibGUiOmZhbHNlfScpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcHJv
cGVydHkgZGVzY3JpcHRvciAiICsgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtd2l0aC1qc29uLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtd2l0aC1qc29uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNjMDNkNWQ1YTExZDQ4MmFhZjYwMzhjYzBhNDdmOTcxOWM1ZDlmOWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpz
b24uanMKQEAgLTAsMCArMSwxNCBAQAorLy8gVGhpcyB0ZXN0cyBKU09OIGNvcnJlY3RseSBiZWhh
dmVzIHdpdGggU3ltYm9sLgorCitpZiAoSlNPTi5zdHJpbmdpZnkoU3ltYm9sKCdDb2NvYScpKSAh
PT0gdW5kZWZpbmVkKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBKU09OLnN0cmlu
Z2lmeShTeW1ib2woJ0NvY29hJykpOworCit2YXIgb2JqZWN0ID0ge307Cit2YXIgc3ltYm9sID0g
U3ltYm9sKCJDb2NvYSIpOworb2JqZWN0W3N5bWJvbF0gPSA0MjsKK29iamVjdFsnQ2FwcHVjY2lu
byddID0gNDI7CitpZiAoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSAhPT0gJ3siQ2FwcHVjY2lubyI6
NDJ9JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgSlNPTi5zdHJpbmdpZnkob2Jq
ZWN0KTsKKworaWYgKEpTT04uc3RyaW5naWZ5KG9iamVjdCwgWyBTeW1ib2woJ0NvY29hJykgXSkg
IT09ICJ7fSIpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIEpTT04uc3RyaW5naWZ5
KG9iamVjdCwgWyBTeW1ib2woJ0NvY29hJykgXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5jcHAKaW5kZXggMTk2MzljYWIzMTRmOTY4YTE1ZDcyZTY3OTQ1YmYwZDk2YThmYmE5MS4uZmE3
ZTQzNDdhMTIzYmY2YjE3NWIwNmEzOGM1ZTljYTIyYjhlZDQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmNwcApAQCAtNDAzLDYgKzQwMyw5IEBAIHN0cnVjdCBDaGFyQnVmZmVyRnJv
bUxpdGVyYWxEYXRhVHJhbnNsYXRvciB7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiAqU3RyaW5nSW1wbDo6ZW1wdHkoKTsKIAorICAgIGlmIChzdHJpbmcuaXNTeW1i
b2woKSkKKyAgICAgICAgcmV0dXJuIGFkZChzdHJpbmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luU3lt
Ym9sKCkpOworCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJB
dG9taWNTdHJpbmcgc2hvdWxkIG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlz
IGFscmVhZHkgYXRvbWljLiIpOwogCiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2Vy
OwpAQCAtNDIxLDYgKzQyNCw5IEBAIHN0cnVjdCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJh
bnNsYXRvciB7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAqU3Ry
aW5nSW1wbDo6ZW1wdHkoKTsKIAorICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkKKyAgICAgICAg
cmV0dXJuIGFkZChzdHJpbmdUYWJsZSwgc3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJv
bCgpKTsKKwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRv
bWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmluZyBpcyBh
bHJlYWR5IGF0b21pYy4iKTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsK
QEAgLTUwMyw2ICs1MDksMTIgQEAgQXRvbWljU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjpmaW5k
U2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IXN0cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5nSW1wbHMgc2hvdWxkIHJldHVybiBmcm9t
IHRoZSBmYXN0IGNhc2UuIik7CiAKKyAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgp
KTsKKworICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIGZpbmQoJnN0
cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKSk7CisKICAgICBBdG9taWNTdHJpbmdU
YWJsZUxvY2tlciBsb2NrZXI7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0cmlu
Z1RhYmxlID0gc3RyaW5nVGFibGUoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gYXRvbWljU3RyaW5n
VGFibGUuZmluZCgmc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IDY2
MTg4NDg5YjNkMDkyMGRiY2M0MGU4NDc5YjQ0YjI5YmVkMjgzN2UuLmM3ZDQ5NGE2OGFlNDEwYjc1
OWI1Mzc5YjY4NGYwMjBlMDczNzVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaApA
QCAtMTkxLDExICsxOTEsOSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIHsKLSAgICAg
ICAgaWYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKSB7Ci0gICAgICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcgfHwgIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5p
c1VuaXF1ZSgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBz
dHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgIGlmICghc3RyaW5n
KQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
YWRkU2xvd0Nhc2UoKnN0cmluZyk7CisgICAgICAgIHJldHVybiBhZGQoKnN0cmluZyk7CiAgICAg
fQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZEZy
b21MaXRlcmFsRGF0YShjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwog
I2lmIFVTRShDRikKQEAgLTIwNSwxMSArMjAzLDkgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUYWJsZVByb3ZpZGVyPgogICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcihT
dHJpbmdUYWJsZVByb3ZpZGVyJiBzdHJpbmdUYWJsZVByb3ZpZGVyLCBTdHJpbmdJbXBsKiBzdHJp
bmcpCiAgICAgewotICAgICAgICBpZiAoIXN0cmluZyB8fCBzdHJpbmctPmlzQXRvbWljKCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZyB8fCAhc3RyaW5nLT5sZW5n
dGgoKSB8fCBzdHJpbmctPmlzVW5pcXVlKCkgfHwgaXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmlu
ZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAg
ICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBhZGRTbG93Q2FzZSgqc3RyaW5nVGFibGVQcm92aWRlci5hdG9taWNT
dHJpbmdUYWJsZSgpLCAqc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIGFkZCgqc3RyaW5nVGFibGVQ
cm92aWRlci5hdG9taWNTdHJpbmdUYWJsZSgpLCAqc3RyaW5nKTsKICAgICB9CiAKICNpZiAhQVNT
RVJUX0RJU0FCTEVECkBAIC0yMjEsNyArMjE3LDI1IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAg
ICAgQXRvbWljU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7Ci0g
ICAgCisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKFN0cmlu
Z0ltcGwmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmIChzdHJpbmcuaXNBdG9taWMoKSkgewor
ICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IGlzSW5B
dG9taWNTdHJpbmdUYWJsZSgmc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20g
YW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3RyaW5nKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKEF0b21pY1N0cmluZ1RhYmxlJiBz
dHJpbmdUYWJsZSwgU3RyaW5nSW1wbCYgc3RyaW5nKQorICAgIHsKKyAgICAgICAgaWYgKHN0cmlu
Zy5pc0F0b21pYygpKSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcu
bGVuZ3RoKCkgfHwgaXNJbkF0b21pY1N0cmluZ1RhYmxlKCZzdHJpbmcpLCAiVGhlIGF0b21pYyBz
dHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgICAgICByZXR1cm4g
c3RyaW5nOworICAgICAgICB9CisgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShzdHJpbmdUYWJs
ZSwgc3RyaW5nKTsKKyAgICB9CisKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsJik7CiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5n
VGFibGUmLCBTdHJpbmdJbXBsJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4
IGZiMjNhNTRiZDM1ZWE2NzBmNDA1ZGUzOTc4OTJiZTliZjBlZWEyODMuLmQ2ZjM3ZWI5NDVjNTc2
ZGU5NWUzMzdlNDk4M2Q0MDU0YjQ1OTAyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3RyaW5nU3RhdHM6OnByaW50U3RhdHMoKQogCiAg
ICAgU1RSSU5HX1NUQVRTX1JFTU9WRV9TVFJJTkcoKnRoaXMpOwogCi0gICAgaWYgKGlzQXRvbWlj
KCkgJiYgbGVuZ3RoKCkgJiYgIWlzVW5pcXVlKCkpCisgICAgaWYgKGlzQXRvbWljKCkgJiYgbGVu
Z3RoKCkgJiYgIWlzU3ltYm9sKCkpCiAgICAgICAgIEF0b21pY1N0cmluZzo6cmVtb3ZlKHRoaXMp
OwogCiAgICAgQnVmZmVyT3duZXJzaGlwIG93bmVyc2hpcCA9IGJ1ZmZlck93bmVyc2hpcCgpOwpA
QCAtMjg2LDEzICsyODYsMTQgQEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0ltcGwq
IHN0cmluZ0ltcGwpCiAgICAgcmV0dXJuIGNyZWF0ZShzdHJpbmcsIGxlbmd0aCk7CiB9CiAKLVJl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWUoUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXApCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sKFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVwKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHJlcC0+bGVu
Z3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBjcmVhdGVVbmlxdWVFbXB0
eSgpOworICAgICAgICByZXR1cm4gY3JlYXRlU3ltYm9sRW1wdHkoKTsKICAgICBSZWY8U3RyaW5n
SW1wbD4gc3RyaW5nID0gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwocmVwLCAwLCBsZW5ndGgp
OwotICAgIHN0cmluZy0+bV9oYXNoQW5kRmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JVbmlxdWUoc3Ry
aW5nLT5tX2hhc2hBbmRGbGFncyk7CisgICAgQVNTRVJUKCFzdHJpbmctPmlzQXRvbWljKCkpOwor
ICAgIHN0cmluZy0+bV9oYXNoQW5kRmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JTeW1ib2woc3RyaW5n
LT5tX2hhc2hBbmRGbGFncyk7CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAppbmRleCA4Y2MwYWJmNWY5NGVjMmY1YWUzZTBjYzMwNDFmMGUwMTYzOWEzYTQ3
Li5mYjNlZTZjNmM2ZmE5MTZjYzc1Mjk0MGZiYjAxMjkxZGE0ZjIyMDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaApAQCAtMTQxLDYgKzE0MSwyNSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAg
ICAgICAgQnVmZmVyU3Vic3RyaW5nLAogICAgIH07CiAKKyAgICAvLyBUaGUgYm90dG9tIDYgYml0
cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3MuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxh
Z0NvdW50ID0gNjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnTWFzayA9ICgxdSA8
PCBzX2ZsYWdDb3VudCkgLSAxOworICAgIENPTVBJTEVfQVNTRVJUKHNfZmxhZ0NvdW50IDw9IFN0
cmluZ0hhc2hlcjo6ZmxhZ0NvdW50LCBTdHJpbmdIYXNoZXJfcmVzZXJ2ZXNfZW5vdWdoX2JpdHNf
Zm9yX1N0cmluZ0ltcGxfZmxhZ3MpOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdT
dHJpbmdLaW5kQ291bnQgPSA0OworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZs
YWdTdHJpbmdLaW5kSXNBdG9taWMgPSAxdSA8PCAoc19mbGFnU3RyaW5nS2luZENvdW50KTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbCA9IDF1
IDw8IChzX2ZsYWdTdHJpbmdLaW5kQ291bnQgKyAxKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc19oYXNoTWFza1N0cmluZ0tpbmQgPSBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljIHwg
c19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c19oYXNoRmxhZzhCaXRCdWZmZXIgPSAxdSA8PCAzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCA9IDF1IDw8IDI7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXAgPSAoMXUgPDwgMCkgfCAoMXUgPDwgMSk7
CisKKyAgICBlbnVtIFN0cmluZ0tpbmQgeworICAgICAgICBTdHJpbmdOb3JtYWwgPSAwdSwgLy8g
bm9uLXN5bWJvbCwgbm9uLWF0b21pYworICAgICAgICBTdHJpbmdBdG9taWMgPSBzX2hhc2hGbGFn
U3RyaW5nS2luZElzQXRvbWljLCAvLyBub24tc3ltYm9sLCBhdG9taWMKKyAgICAgICAgU3RyaW5n
U3ltYm9sID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbCwgLy8gc3ltYm9sLCBub24tYXRv
bWljCisgICAgfTsKKwogICAgIC8vIFVzZWQgdG8gY29uc3RydWN0IHN0YXRpYyBzdHJpbmdzLCB3
aGljaCBoYXZlIGFuIHNwZWNpYWwgcmVmQ291bnQgdGhhdCBjYW4gbmV2ZXIgaGl0IHplcm8uCiAg
ICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBzdGF0aWMgc3RyaW5nIHdpbGwgbmV2ZXIgYmUgZGVz
dHJveWVkLCB3aGljaCBpcyBpbXBvcnRhbnQgYmVjYXVzZQogICAgIC8vIHN0YXRpYyBzdHJpbmdz
IHdpbGwgYmUgc2hhcmVkIGFjcm9zcyB0aHJlYWRzICYgcmVmLWNvdW50ZWQgaW4gYSBub24tdGhy
ZWFkc2FmZSBtYW5uZXIuCkBAIC0xNTAsNyArMTY5LDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAg
ICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nKQogICAgICAg
ICAsIG1fbGVuZ3RoKDApCiAgICAgICAgICwgbV9kYXRhOChyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oJm1fbGVuZ3RoKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFn
OEJpdEJ1ZmZlciB8IHNfaGFzaEZsYWdJc0F0b21pYyB8IEJ1ZmZlck93bmVkKQorICAgICAgICAs
IG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nQXRvbWljIHwgQnVm
ZmVyT3duZWQpCiAgICAgewogICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaGFzaCBpcyBjb21w
dXRlZCBzbyB0aGF0IEF0b21pY1N0cmluZ0hhc2ggY2FuIGNhbGwgZXhpc3RpbmdIYXNoKCkKICAg
ICAgICAgLy8gd2l0aCBpbXB1bml0eS4gVGhlIGVtcHR5IHN0cmluZyBpcyBzcGVjaWFsIGJlY2F1
c2UgaXQgaXMgbmV2ZXIgZW50ZXJlZCBpbnRvCkBAIC0xNjcsNyArMTg2LDcgQEAgY2xhc3MgU3Ry
aW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAg
ICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KHRhaWxQb2ludGVyPExD
aGFyPigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwg
QnVmZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRC
dWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTE4MCw3ICsxOTks
NyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJ
bmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2
KHRhaWxQb2ludGVyPFVDaGFyPigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlcklu
dGVybmFsKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlcklu
dGVybmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKICAgICAgICAgQVNTRVJU
KG1fbGVuZ3RoKTsKQEAgLTE5Myw3ICsyMTIsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAg
ICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgo
bGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycy5sZWFrUHRyKCkpCi0gICAgICAg
ICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJPd25lZCkKKyAg
ICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1h
bCB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwogICAgICAg
ICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjA2LDcgKzIyNSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwg
ewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBt
X2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKLSAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFn
cyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X2RhdGExNik7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0yMTgsNyArMjM3LDcgQEAg
Y2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVt
ZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KGNoYXJh
Y3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBC
dWZmZXJJbnRlcm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1
ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fZGF0YTgpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjMxLDcgKzI1MCw3
IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudElu
Y3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYo
Y2hhcmFjdGVycy5sZWFrUHRyKCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVyT3du
ZWQpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQp
CiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwogICAgICAgICBBU1NFUlQobV9sZW5n
dGgpOwpAQCAtMjQ0LDcgKzI2Myw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1f
cmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgp
CiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdz
KHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyU3Vic3RyaW5nKQorICAgICAgICAsIG1faGFz
aEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vi
c3RyaW5nKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzOEJpdCgpKTsKICAgICAgICAgQVNTRVJU
KG1fZGF0YTgpOwpAQCAtMjYxLDcgKzI4MCw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAg
ICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChs
ZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hB
bmRGbGFncyhCdWZmZXJTdWJzdHJpbmcpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5n
Tm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpczhCaXQo
KSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CkBAIC0yNzMsMTQgKzI5MiwxNCBAQCBjbGFz
cyBTdHJpbmdJbXBsIHsKICAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1f
bGVuZ3RoLCB0cnVlKTsKICAgICB9CiAKLSAgICBlbnVtIENyZWF0ZUVtcHR5VW5pcXVlVGFnIHsg
Q3JlYXRlRW1wdHlVbmlxdWUgfTsKLSAgICBTdHJpbmdJbXBsKENyZWF0ZUVtcHR5VW5pcXVlVGFn
KQorICAgIGVudW0gQ3JlYXRlU3ltYm9sRW1wdHlUYWcgeyBDcmVhdGVTeW1ib2xFbXB0eSB9Owor
ICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sRW1wdHlUYWcpCiAgICAgICAgIDogbV9yZWZDb3Vu
dChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgIC8v
IFdlIGV4cGVjdCBtX2xlbmd0aCB0byBiZSBpbml0aWFsaXplZCB0byAwIGFzIHdlIHVzZSBpdAog
ICAgICAgICAvLyB0byByZXByZXNlbnQgYSBudWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgogICAgICAg
ICAsIG1fZGF0YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0g
ICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHNfaGFzaEZsYWc4
Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwpKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhh
c2hBbmRGbGFnc0ZvclN5bWJvbChzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFs
KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKIApAQCAtMzc4LDEyICszOTcsMTIg
QEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxU
PihyZXN1bHRJbXBsLCBsZW5ndGgpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlxdWVFbXB0eSgpCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbEVtcHR5KCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWUpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xFbXB0eSkp
OwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0lt
cGw+IGNyZWF0ZVVuaXF1ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcCk7CisgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3ltYm9sKFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVwKTsKIAogICAgIC8vIFJlYWxsb2NhdGUgdGhlIFN0cmluZ0lt
cGwuIFRoZSBvcmlnaW5hbFN0cmluZyBtdXN0IGJlIG9ubHkgb3duZWQgYnkgdGhlIFBhc3NSZWZQ
dHIsCiAgICAgLy8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUgQnVmZmVySW50ZXJu
YWwuIEp1c3QgbGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCksCkBAIC0zOTMsOCAr
NDEyLDkgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NP
ZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxh
Z3MpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJczhCaXQoKSB7IHJldHVybiBzX2hhc2hG
bGFnOEJpdEJ1ZmZlcjsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNBdG9taWMoKSB7IHJl
dHVybiBzX2hhc2hGbGFnSXNBdG9taWM7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzVW5p
cXVlKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzVW5pcXVlOyB9CisgICAgc3RhdGljIHVuc2lnbmVk
IGZsYWdJc0F0b21pYygpIHsgcmV0dXJuIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0K
KyAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzU3ltYm9sKCkgeyByZXR1cm4gc19oYXNoRmxhZ1N0
cmluZ0tpbmRJc1N5bWJvbDsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBtYXNrU3RyaW5nS2luZCgp
IHsgcmV0dXJuIHNfaGFzaE1hc2tTdHJpbmdLaW5kOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGRh
dGFPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RyaW5nSW1wbCwgbV9kYXRhOCk7
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KQEAgLTQ1NCwxNyArNDc0LDIxIEBAIGNsYXNz
IFN0cmluZ0ltcGwgewogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBzaXplSW5C
eXRlcygpIGNvbnN0OwogCi0gICAgYm9vbCBpc1VuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
aEFuZEZsYWdzICYgc19oYXNoRmxhZ0lzVW5pcXVlOyB9CisgICAgU3RyaW5nS2luZCBzdHJpbmdL
aW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RyaW5nS2luZD4obV9oYXNoQW5kRmxh
Z3MgJiBzX2hhc2hNYXNrU3RyaW5nS2luZCk7IH0KKyAgICBib29sIGlzU3ltYm9sKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnU3RyaW5nS2luZElzU3ltYm9sOyB9
CisgICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19o
YXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsgfQogCi0gICAgYm9vbCBpc0F0b21pYygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0lzQXRvbWljOyB9CiAgICAgdm9p
ZCBzZXRJc0F0b21pYyhib29sIGlzQXRvbWljKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1N0
YXRpYygpKTsKLSAgICAgICAgQVNTRVJUKCFpc1VuaXF1ZSgpKTsKLSAgICAgICAgaWYgKGlzQXRv
bWljKQotICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ0lzQXRvbWljOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ0lz
QXRvbWljOworICAgICAgICBBU1NFUlQoIWlzU3ltYm9sKCkpOworICAgICAgICBpZiAoaXNBdG9t
aWMpIHsKKyAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5k
SXNBdG9taWM7CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5nS2luZCgpID09IFN0cmluZ0F0b21p
Yyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19o
YXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsKKyAgICAgICAgICAgIEFTU0VSVChzdHJpbmdLaW5k
KCkgPT0gU3RyaW5nTm9ybWFsKTsKKyAgICAgICAgfQogICAgIH0KIAogI2lmIFNUUklOR19TVEFU
UwpAQCAtNzEzLDYgKzczNywxNiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgY29uc3QgVUNoYXIgbGF0aW4xQ2FzZUZvbGRUYWJsZVsyNTZd
OwogCisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZ0ltcGwmIGV4dHJhY3RGb2xkZWRT
dHJpbmdJblN5bWJvbCgpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoKCkpOworICAgICAg
ICBBU1NFUlQoaXNTeW1ib2woKSk7CisgICAgICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9
PSBCdWZmZXJTdWJzdHJpbmcpOworICAgICAgICBBU1NFUlQoc3Vic3RyaW5nQnVmZmVyKCkpOwor
ICAgICAgICBBU1NFUlQoIXN1YnN0cmluZ0J1ZmZlcigpLT5pc1N5bWJvbCgpKTsKKyAgICAgICAg
cmV0dXJuICpzdWJzdHJpbmdCdWZmZXIoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgYm9vbCBy
ZXF1aXJlc0NvcHkoKSBjb25zdAogICAgIHsKQEAgLTc3OSwyMyArODEzLDEyIEBAIGNsYXNzIFN0
cmluZ0ltcGwgewogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiByZWFsbG9jYXRlSW50ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiwgdW5z
aWduZWQsIENoYXJUeXBlKiYpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSosIHVuc2ln
bmVkKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIGhhc2hT
bG93Q2FzZSgpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdW5zaWduZWQg
aGFzaEFuZEZsYWdzRm9yVW5pcXVlKHVuc2lnbmVkIGZsYWdzKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHVuc2lnbmVkIGhhc2hBbmRGbGFnc0ZvclN5bWJvbCh1bnNpZ25lZCBmbGFn
cyk7CiAKICAgICAvLyBUaGUgYm90dG9tIGJpdCBpbiB0aGUgcmVmIGNvdW50IGluZGljYXRlcyBh
IHN0YXRpYyAoaW1tb3J0YWwpIHN0cmluZy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19y
ZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZyA9IDB4MTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc19yZWZDb3VudEluY3JlbWVudCA9IDB4MjsgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcmVmIC8g
ZGVyZWYgd2l0aG91dCBkaXN0dXJiaW5nIHRoZSBzdGF0aWMgc3RyaW5nIGZsYWcuCiAKLSAgICAv
LyBUaGUgYm90dG9tIDcgYml0cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3MuCi0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNfZmxhZ0NvdW50ID0gNzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c19mbGFnTWFzayA9ICgxdSA8PCBzX2ZsYWdDb3VudCkgLSAxOwotICAgIENPTVBJTEVfQVNTRVJU
KHNfZmxhZ0NvdW50IDw9IFN0cmluZ0hhc2hlcjo6ZmxhZ0NvdW50LCBTdHJpbmdIYXNoZXJfcmVz
ZXJ2ZXNfZW5vdWdoX2JpdHNfZm9yX1N0cmluZ0ltcGxfZmxhZ3MpOwotCi0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdJc1VuaXF1ZSA9IDF1IDw8IDY7Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNfaGFzaEZsYWc4Qml0QnVmZmVyID0gMXUgPDwgNTsKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0lzQXRvbWljID0gMXUgPDwgNDsKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgPSAxdSA8PCAzOwotICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hNYXNrQnVmZmVyT3duZXJzaGlwID0gMXUgfCAoMXUg
PDwgMSk7Ci0KICNpZiBTVFJJTkdfU1RBVFMKICAgICBXVEZfRVhQT1JUREFUQSBzdGF0aWMgU3Ry
aW5nU3RhdHMgbV9zdHJpbmdTdGF0czsKICNlbmRpZgpAQCAtODEwLDcgKzgzMyw3IEBAIGNsYXNz
IFN0cmluZ0ltcGwgewogCiAgICAgICAgIC8vIFRoZXNlIHZhbHVlcyBtaW1pYyBDb25zdHJ1Y3RG
cm9tTGl0ZXJhbC4KICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlhbFJlZkNv
dW50ID0gc19yZWZDb3VudEluY3JlbWVudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNfaW5pdGlhbEZsYWdzID0gc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbDsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaW5pdGlhbEZsYWdzID0gc19oYXNoRmxh
ZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbDsKICAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaFNoaWZ0ID0gc19mbGFnQ291bnQ7CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKaW5kZXggNjViYjY3MjFkNzQzZmExMDQx
YzI5MmI2MGY0ZDAzMjkyODNkOGU1MS4uMzk0NWM3M2UwMDhjZDQzN2RhNTQ5YTE1YTVhYWJiNDg2
NTMzNmQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCkBAIC00NywxOCAr
NDcsMTggQEAgU3RyaW5nSW1wbCogU3RyaW5nSW1wbDo6ZW1wdHkoKQogICAgIHJldHVybiAmZW1w
dHlTdHJpbmcuZ2V0KCk7CiB9CiAKLS8vIFNldCB0aGUgaGFzaCBlYXJseSwgc28gdGhhdCBhbGwg
dW5pcXVlIFN0cmluZ0ltcGxzIGhhdmUgYSBoYXNoLAorLy8gU2V0IHRoZSBoYXNoIGVhcmx5LCBz
byB0aGF0IGFsbCBzeW1ib2wgU3RyaW5nSW1wbHMgaGF2ZSBhIGhhc2gsCiAvLyBhbmQgZG9uJ3Qg
dXNlIHRoZSBub3JtYWwgaGFzaGluZyBhbGdvcml0aG0gLSB0aGUgdW5pcXVlIG5hdHVyZSBvZiB0
aGVzZQogLy8ga2V5cyBtZWFucyB0aGF0IHdlIGRvbid0IG5lZWQgdGhlbSB0byBtYXRjaCBhbnkg
b3RoZXIgc3RyaW5nIChpbiBmYWN0LAogLy8gdGhhdCdzIGV4YWN0bHkgdGhlIG9wb3NpdGUgb2Yg
d2hhdCB3ZSB3YW50ISksIGFuZCB0aGUgbm9ybWFsIGhhc2ggd291bGQKIC8vIGxlYWQgdG8gbG90
cyBvZiBjb25mbGljdHMuCi11bnNpZ25lZCBTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JVbmlx
dWUodW5zaWduZWQgZmxhZ3MpCit1bnNpZ25lZCBTdHJpbmdJbXBsOjpoYXNoQW5kRmxhZ3NGb3JT
eW1ib2wodW5zaWduZWQgZmxhZ3MpCiB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNfbmV4dEhhc2hB
bmRGbGFnc0ZvclVuaXF1ZSA9IDA7Ci0gICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlICs9
IDEgPDwgc19mbGFnQ291bnQ7Ci0gICAgc19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlIHw9IDEg
PDwgMzE7Ci0gICAgdW5zaWduZWQgZmxhZ3NGb3JVbmlxdWUgPSAoZmxhZ3MgJiBzX2ZsYWdNYXNr
KSB8IHNfaGFzaEZsYWdJc0F0b21pYyB8IHNfaGFzaEZsYWdJc1VuaXF1ZTsKLSAgICByZXR1cm4g
c19uZXh0SGFzaEFuZEZsYWdzRm9yVW5pcXVlIHwgZmxhZ3NGb3JVbmlxdWU7CisgICAgc3RhdGlj
IHVuc2lnbmVkIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclN5bWJvbCA9IDA7CisgICAgc19uZXh0SGFz
aEFuZEZsYWdzRm9yU3ltYm9sICs9IDEgPDwgc19mbGFnQ291bnQ7CisgICAgc19uZXh0SGFzaEFu
ZEZsYWdzRm9yU3ltYm9sIHw9IDEgPDwgMzE7CisgICAgdW5zaWduZWQgZmxhZ3NGb3JTeW1ib2wg
PSAoKGZsYWdzICYgc19mbGFnTWFzaykgJiAofnNfaGFzaE1hc2tTdHJpbmdLaW5kKSkgfCBTdHJp
bmdTeW1ib2w7CisgICAgcmV0dXJuIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclN5bWJvbCB8IGZsYWdz
Rm9yU3ltYm9sOwogfQogCiBXVEZfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmlu
ZywgbnVsbEF0b20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KaW5kZXggN2VhN2NiYWFhN2U3ZmU3
N2JmMDI5Mjc2ZmRjYTdhMjYzNTliMTA0Zi4uYWM3NGZmNjEyMmZkOTY5MjRkZjM0MzNjOTMzYTdm
N2M2M2M5ZTkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpAQCAtMTU4LDcgKzE1OCw3IEBA
IGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50U2NyaXB0
SW5qZWN0ZWQoKQogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAKLSAgICBK
U0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMs
IEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7CisgICAg
SlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVj
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2Vt
ZW50IikpOwogICAgIGlmIChyZXBsYWNlbWVudEZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgCkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJvb3QpCiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAKICAgICAvLyBMb29rdXAgdGhl
ICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIgZnVuY3Rpb24uCi0gICAgSlNDOjpKU1ZhbHVlIHJl
cGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZp
ZXIoZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOworICAgIEpTQzo6SlNWYWx1ZSBy
ZXBsYWNlbWVudEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKICAgICBp
ZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgSlNDOjpKU09iamVjdCogcmVwbGFjZW1lbnRPYmplY3QgPSByZXBsYWNl
bWVudEZ1bmN0aW9uLnRvT2JqZWN0KGV4ZWMpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiBy
b290KQogICAgIH0KIAogICAgIC8vIEdldCB0aGUgPHZpZGVvPiBjcmVhdGVkIHRvIHJlcGxhY2Ug
dGhlIHBsdWctaW4uCi0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4
ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAidmlkZW8iKSk7CisgICAgSlNDOjpKU1ZhbHVlIHZh
bHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAidmlkZW8iKSk7CiAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSAmJiAhdmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgbV9tZWRpYUVsZW1lbnQgPSBKU0hUTUxWaWRl
b0VsZW1lbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCBib29sIFF1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCog
cm9vdCkKICAgICB9CiAKICAgICAvLyBHZXQgdGhlIHNjcmlwdGluZyBpbnRlcmZhY2UuCi0gICAg
dmFsdWUgPSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJzY3Jp
cHRPYmplY3QiKSk7CisgICAgdmFsdWUgPSByZXBsYWNlbWVudC5nZXQoZXhlYywgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzY3JpcHRPYmplY3QiKSk7CiAgICAgaWYgKCFleGVj
LT5oYWRFeGNlcHRpb24oKSAmJiAhdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAg
bV9zY3JpcHRPYmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAppbmRleCBkZjRkYzc4NjJkMmRhYWE5ZjJiNjc2ZDFl
ZDMxNzJhMmYzZWFmZDI5Li40Y2QwODM4ZjM2NDI1MzgzZThjMTg4ODI2NmY4MjEyMWEwMGU3NWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAtNjMsNyAr
NjMsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAo
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIG1hcCkgYwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1f
ZGljdGlvbmFyeS5leGVjU3RhdGUoKTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5
TmFtZXMoZXhlYyk7Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9w
ZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7
IGl0ICE9IHByb3BlcnR5TmFtZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHN0cmlu
Z0tleSA9IGl0LT5zdHJpbmcoKTsKICAgICAgICAgaWYgKHN0cmluZ0tleS5pc0VtcHR5KCkpCkBA
IC04OCw3ICs4OCw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyhWZWN0
b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0CiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9u
YXJ5LmV4ZWNTdGF0ZSgpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhl
eGVjKTsKLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBmb3IgKFByb3BlcnR5TmFt
ZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0g
cHJvcGVydHlOYW1lcy5lbmQoKTsgKytpdCkgewogICAgICAgICBTdHJpbmcgc3RyaW5nS2V5ID0g
aXQtPnN0cmluZygpOwogICAgICAgICBpZiAoIXN0cmluZ0tleS5pc0VtcHR5KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4
IGJiNTAxOGMxNzk5MmQ2MGQyZWYyNGJmZWQ2ODEwYjIyNDcxNzI3MTYuLjZmODA2NjE0ZWE0YjBj
YjQxNmE1M2YyNzI5MmQ5Y2VkOTVjZjY5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRp
YyBib29sIGdldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2JqZWN0LCBjb25zdCBTdHJpbmcm
IGtleVBhdGhFbGVtZW50LCBKCiAgICAgfQogICAgIGlmICghb2JqZWN0LmlzT2JqZWN0KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJmV4ZWMtPnZt
KCksIGtleVBhdGhFbGVtZW50LnV0ZjgoKS5kYXRhKCkpOworICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksIGtleVBhdGhFbGVtZW50
LnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmICghYXNPYmplY3Qob2JqZWN0KS0+aGFzUHJvcGVydHko
ZXhlYywgaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQgPSBh
c09iamVjdChvYmplY3QpLT5nZXQoZXhlYywgaWRlbnRpZmllcik7CkBAIC03MCw3ICs3MCw3IEBA
IHN0YXRpYyBib29sIHNldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUmIG9iamVjdCwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoRWxlbWVudCwKIHsKICAgICBpZiAoIWNhblNldChvYmplY3QsIGtleVBh
dGhFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllcigmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CisgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwg
a2V5UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CiAgICAgYXNPYmplY3Qob2JqZWN0KS0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50aWZpZXIsIGpzVmFsdWUpOwogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5
bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggMGM1MDY0ZDZiMTdkY2Y0ODY4OGFiOWJhNGJh
NzBiYjRmZDQxMTk3NS4uYjkzOTA3M2Q2MWI2NzFmNDQwM2IzMDdiYzUzNDllMDZkNzdjM2RjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxl
RGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBKU0NTU1N0eWxl
RGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGUKIAogICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzID0gbmV3IElkZW50aWZpZXJb
bnVtQ1NTUHJvcGVydGllc107CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJv
cGVydGllczsgKytpKQotICAgICAgICAgICAgcHJvcGVydHlJZGVudGlmaWVyc1tpXSA9IElkZW50
aWZpZXIoZXhlYywganNQcm9wZXJ0eU5hbWVzW2ldLmltcGwoKSk7CisgICAgICAgICAgICBwcm9w
ZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBqc1Byb3Bl
cnR5TmFtZXNbaV0pOwogICAgIH0KIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJv
cGVydGllczsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0Rh
dGEuY3BwCmluZGV4IGUxZDcyNWY4YzZkMTExMzQxMjE1ZTEwYmRkN2FiNjcyN2U3NGVhZDQuLjQ1
MWRhYzYyMzEzYjIzM2FkZjY1ZDhmNzBiYWIzMWMzODM2NTk3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSlNWYWx1ZSB0aGlzVmFsdWUsIE1h
cmtlZEFyZ3VtZW50QnVmZmVyJgogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gY2FsbGJhY2soKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2FsbGJh
Y2soKSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAg
ICAgICAgZnVuY3Rpb24gPSBjYWxsYmFjaygpLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAi
aGFuZGxlRXZlbnQiKSk7CisgICAgICAgIGZ1bmN0aW9uID0gY2FsbGJhY2soKS0+Z2V0KGV4ZWMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhbmRsZUV2ZW50IikpOwogICAgICAgICBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhv
c3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQ
SUhvc3RDdXN0b20uY3BwCmluZGV4IGRhNTJjZWMyY2ZkY2M3NmExY2Q0MGQyZTQ1YWUwOTU2NDY1
ZTFmNzYuLjhkMmQwMjA2NGU1N2VhYTQ3ODE4MGJiOGU0NWJkMzAwNGU4ZjMxN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9z
dEN1c3RvbS5jcHAKQEAgLTg5LDggKzg5LDggQEAgc3RhdGljIEpTQXJyYXkqIGdldEpTTGlzdGVu
ZXJGdW5jdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnMKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEpTT2JqZWN0KiBsaXN0ZW5lckVudHJ5ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaXN0ZW5lciIpLCBmdW5jdGlvbik7
Ci0gICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJ1c2VDYXB0dXJlIiksIGpzQm9vbGVhbihsaXN0ZW5lckluZm8uZXZlbnRMaXN0ZW5l
clZlY3RvcltpXS51c2VDYXB0dXJlKSk7CisgICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaXN0ZW5lciIpLCBm
dW5jdGlvbik7CisgICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ1c2VDYXB0dXJlIiksIGpzQm9vbGVhbihsaXN0
ZW5lckluZm8uZXZlbnRMaXN0ZW5lclZlY3RvcltpXS51c2VDYXB0dXJlKSk7CiAgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgb3V0cHV0SW5kZXgrKywgSlNWYWx1ZShsaXN0ZW5l
ckVudHJ5KSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTgsNyArMTE4LDcgQEAg
SlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBpZiAoIWxpc3RlbmVycy0+bGVuZ3RoKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZSA9IGxpc3RlbmVyc0FycmF5
W2ldLmV2ZW50VHlwZTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcihleGVjLCBldmVudFR5cGUuaW1wbCgpKSwgSlNWYWx1ZShsaXN0ZW5lcnMpKTsKKyAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCBldmVudFR5cGUuaW1wbCgpKSwgSlNWYWx1ZShsaXN0ZW5lcnMpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAKaW5kZXggMDgxMGJjODFlOWEwNWVlYWRl
ZWY0ZjBlNjY5OTRkMjFiOTM1M2FhNy4uYTlmMzcyNjU3MGUyODk0YWJhNjFlODVjYzA5ZjA5YzE0
OGIxOGY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9B
bGdvcml0aG1CdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwCkBAIC01NiwyMSArNTYsMjEgQEAKIHZvaWQgSlNDcnlw
dG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhcioga2V5LCB1bnNpZ25lZCB2YWx1ZSkK
IHsKICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVy
KCZ2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwga2V5KTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRp
ZmllciwganNOdW1iZXIodmFsdWUpKTsKIH0KIAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxk
ZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gbV9leGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
IGtleSk7CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzU3Ry
aW5nKG1fZXhlYywgdmFsdWUpKTsKIH0KIAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6
OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogewog
ICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZt
LCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCBrZXkpOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBhcnJheVZpZXcgPSBVaW50OEFy
cmF5OjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgbV9kaWN0aW9u
YXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGFycmF5Vmlldy0+d3JhcChtX2V4ZWMsIHZt
LmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhcioga2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGJ1ZmZlCiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNv
bnN0IGNoYXIqIGtleSwgY29uc3QgQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJiBu
ZXN0ZWRCdWlsZGVyKQogewogICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIGNvbnN0IEpTQ3J5cHRvQWxnb3Jp
dGhtQnVpbGRlciYganNCdWlsZGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNDcnlwdG9BbGdvcml0
aG1CdWlsZGVyJj4obmVzdGVkQnVpbGRlcik7CiAgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qo
dm0sIGlkZW50aWZpZXIsIGpzQnVpbGRlci5yZXN1bHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNw
cAppbmRleCA2NGQ1NmQ5NzBhNzRlNWRjMWFlYWEzODU5NWI1NmJkMWU2MzQ2ZmUyLi40YWU2YWU1
MDYyNDZlMzlmYmZjYzUyZDM3MGMwNjZmODljZTAzYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAK
QEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmdldEFs
Z29yaXRobUlkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKIAogc3RhdGljIEpTVmFs
dWUgZ2V0UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBjb25zdCBj
aGFyKiBuYW1lKQogewotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCBuYW1lKTsKKyAg
ICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG5h
bWUpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAKICAgICBpZiAob2JqZWN0LT5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRpZmllciwgc2xvdCkpCkBAIC0xMDUsNyArMTA1LDcg
QEAgc3RhdGljIGJvb2wgZ2V0SGFzaEFsZ29yaXRobShKU0RpY3Rpb25hcnkmIGRpY3Rpb25hcnks
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBkaWN0aW9u
YXJ5LmV4ZWNTdGF0ZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBkaWN0aW9uYXJ5LmluaXRp
YWxpemVyT2JqZWN0KCk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoZXhlYywgImhhc2gi
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJoYXNoIik7CiAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKIAogICAgIEpTVmFs
dWUgaGFzaCA9IGdldFByb3BlcnR5KGV4ZWMsIG9iamVjdCwgImhhc2giKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25K
V0suY3BwCmluZGV4IGZiYjM5N2U0YjVhMjMwZjQ0NDE4ZDYzZGFmNzczZDUyYTk5ZDdhNDYuLjgz
NTA1N2I4MzdkMWI2YzcxZTFlMGFmN2I2MzgwODMwMjZlODI4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldL
LmNwcApAQCAtNTIsNyArNTIsNyBAQAogCiBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04o
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBKU0FycmF5
KiYgcmVzdWx0KQogewotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCBrZXkpOworICAg
IElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5
KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChqc29uKTsKIAogICAgIGlmICghanNvbi0+Z2V0UHJv
cGVydHlTbG90KGV4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0
aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNv
biwgY29uc3QgY2hhcioga2V5LAogCiBzdGF0aWMgYm9vbCBnZXRTdHJpbmdGcm9tSlNPTihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIFN0cmluZyYgcmVz
dWx0KQogewotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCBrZXkpOworICAgIElkZW50
aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChqc29uKTsKIAogICAgIGlmICghanNvbi0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgYm9v
bCBnZXRTdHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25z
dCBjaGFyKiBrZXksCiAKIHN0YXRpYyBib29sIGdldEJvb2xlYW5Gcm9tSlNPTihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIGJvb2wmIHJlc3VsdCkKIHsK
LSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoZXhlYywga2V5KTsKKyAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJvcGVy
dHlTbG90IHNsb3QoanNvbik7CiAKICAgICBpZiAoIWpzb24tPmdldFByb3BlcnR5U2xvdChleGVj
LCBpZGVudGlmaWVyLCBzbG90KSkKQEAgLTUwMSw3ICs1MDEsNyBAQCBib29sIEpTQ3J5cHRvS2V5
U2VyaWFsaXphdGlvbkpXSzo6a2V5U2l6ZUlzVmFsaWQoc2l6ZV90IHNpemVJbkJpdHMpIGNvbnN0
CiBzdGF0aWMgdm9pZCBhZGRUb0pTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwg
Y29uc3QgY2hhcioga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAg
ICBqc29uLT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIHZhbHVlKSk7
CiB9CiAKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkSlNPTkZvclJTQUNv
bXBvbmVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENyeXB0b0tleURhdGFSCiAgICAg
ICAgIGFkZFRvSlNPTihleGVjLCBqc1ByaW1lSW5mbywgInQiLCBiYXNlNjRVUkxFbmNvZGUoZGF0
YS5vdGhlclByaW1lSW5mb3MoKVtpXS5mYWN0b3JDUlRDb2VmZmljaWVudCkpOwogICAgICAgICBv
dGgtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGpzUHJpbWVJbmZvKTsKICAgICB9Ci0gICAgcmVz
dWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAib3RoIiksIG90aCk7
CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAib3RoIiksIG90aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkZEJvb2xUb0pTT04oRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBib29sIHZhbHVl
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVy
KCZ2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwga2V5KTsKICAgICBqc29uLT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGpz
Qm9vbGVhbih2YWx1ZSkpOwogfQogCkBAIC02NzUsNyArNjc1LDcgQEAgc3RhdGljIHZvaWQgYWRk
VXNhZ2VzVG9KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIENyeXB0b0tleVVz
YWdlIHVzYWcKICAgICBpZiAodXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRzKQogICAg
ICAgICBrZXlPcHMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4KyssIGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoImRlcml2ZUJpdHMiKSkpOwogCi0gICAganNvbi0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImtleV9vcHMiKSwga2V5T3BzKTsK
KyAgICBqc29uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAia2V5X29wcyIpLCBrZXlPcHMpOwogfQogCiBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLOjpzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXkmIGtl
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcAppbmRleCA3ODM2NjgxOTAyZmMzYjI0MGJhYTBlNWVhOGU2NmY0ZDFiMGQy
ZjZkLi41NGViMzMxMTYzZGU2OGM5NjdhMWI0YzNjMTllNjViZjVkNGM0OWNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwCkBAIC03NCw3ICs3NCw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9v
a3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogCiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICAgICAgCi0gICAgSlNWYWx1
ZSBmdW5jdGlvbiA9IG1fY3VzdG9tUmVzb2x2ZXItPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMs
ICJsb29rdXBOYW1lc3BhY2VVUkkiKSk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1fY3VzdG9t
UmVzb2x2ZXItPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb29rdXBO
YW1lc3BhY2VVUkkiKSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAppbmRleCAzYWZhYWUyMzQwNzc0OWFjN2E5ZjI3MjBm
M2Y4OTdmMGJlNTdjZGU3Li41MjU5OGNlYzI0NzVmMTZhYmNkOTE4MTdhMGM4MzYxYmY1Y2ZjMDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBD
dXN0b20uY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSlNET01TdHJpbmdNYXA6OmdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAg
dGhpc09iamVjdC0+bV9pbXBsLT5nZXROYW1lcyhuYW1lcyk7CiAgICAgc2l6ZV90IGxlbmd0aCA9
IG5hbWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQot
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIG5hbWVzW2ldKSk7Cisg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFt
ZXNbaV0pKTsKIAogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNjE5OTI2NTZjOGRmNTU4NDAyZjY0Yzg3
MGVhOTg4OWYxY2MzNTg4ZC4uYmU3NzdhMjg1MGEzODE3ZGY1ZmYyM2MyYTViYzBmMDJkMGVkOTI5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3Bl
cnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvbid0IGFsbG93IHNoYWRvd2luZyBsb2NhdGlvbiB1
c2luZyBhY2Nlc3NvciBwcm9wZXJ0aWVzLgotICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JE
ZXNjcmlwdG9yKCkgJiYgcHJvcGVydHlOYW1lID09IElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9u
IikpCisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9wZXJ0
eU5hbWUgPT0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibG9jYXRpb24iKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwpA
QCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0
aXZlRE9NV2luZG93KGV4ZWMpLmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGFjdGl2ZUZyYW1lLT5z
ZXR0aW5ncygpLnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgIWFj
dGl2ZUZyYW1lLT50cmVlKCkucGFyZW50KCkpIHsKICAgICAgICAgICAgIGlmIChCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgaW1wbCgpKSkKLSAgICAg
ICAgICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAibG9jYXRp
b24iKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC01MjYsNyArNTI2LDcgQEAgaW5saW5lIHZv
aWQgRGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZChET01XaW5kb3cmIGRpYWxvZykKICAgICAv
LyAgICAgICAgd29ybGQgaWYgZGlhbG9nQXJndW1lbnRzIGNvbWVzIGZyb20gYW4gaXNvbGF0ZWQg
d29ybGQuCiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IHRvSlNET01XaW5kb3cobV9m
cmFtZS5nZXQoKSwgbm9ybWFsV29ybGQobV9leGVjLT52bSgpKSk7CiAgICAgaWYgKEpTVmFsdWUg
ZGlhbG9nQXJndW1lbnRzID0gbV9leGVjLT5hcmd1bWVudCgxKSkKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5wdXREaXJlY3QobV9leGVjLT52bSgpLCBJZGVudGlmaWVyKG1fZXhlYywgImRpYWxvZ0Fy
Z3VtZW50cyIpLCBkaWFsb2dBcmd1bWVudHMpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERp
cmVjdChtX2V4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCAiZGlhbG9n
QXJndW1lbnRzIiksIGRpYWxvZ0FyZ3VtZW50cyk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIERpYWxv
Z0hhbmRsZXI6OnJldHVyblZhbHVlKCkgY29uc3QKQEAgLTUzNCw3ICs1MzQsNyBAQCBpbmxpbmUg
SlNWYWx1ZSBEaWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSgpIGNvbnN0CiAgICAgSlNET01XaW5k
b3cqIGdsb2JhbE9iamVjdCA9IHRvSlNET01XaW5kb3cobV9mcmFtZS5nZXQoKSwgbm9ybWFsV29y
bGQobV9leGVjLT52bSgpKSk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihtX2V4ZWMsICJyZXR1
cm5WYWx1ZSIpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcobV9leGVjLCAicmV0dXJuVmFsdWUiKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9i
YWxPYmplY3QpOwogICAgIGlmICghSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChn
bG9iYWxPYmplY3QsIG1fZXhlYywgaWRlbnRpZmllciwgc2xvdCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
ZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCBmY2E3YzdlZDZhZDVkODczZTA3YTIw
MjczNzFlNzY4ZjZlMzJiYjM3Li5lY2JiMzNlZWY4NzhjNWU1ZjFlMDNjOWY4Yjc2NjAzZTJjYjIy
MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlv
bkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rldmlj
ZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtNDgsNyArNDgsNyBAQAogICAgIC8vIEdpdmVuIHRo
ZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9iamVjdC4KICAgICBKU09i
amVjdCogb2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7CiAKLSAgICBKU1ZhbHVlIHhWYWx1
ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIngiKSk7CisgICAgSlNWYWx1
ZSB4VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJ4IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgYm9vbCBjYW5Qcm92aWRlWCA9ICF4VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAg
LTU2LDcgKzU2LDcgQEAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgSlNWYWx1ZSB5VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlm
aWVyKGV4ZWMsICJ5IikpOworICAgIEpTVmFsdWUgeVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZVkgPSAheVZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC02NCw3ICs2NCw3IEBACiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEpTVmFsdWUgelZhbHVl
ID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAieiIpKTsKKyAgICBKU1ZhbHVl
IHpWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
InoiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBib29sIGNhblByb3ZpZGVaID0gIXpWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAt
ODYsNyArODYsNyBAQAogICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3
YXlzIHlpZWxkIGFuIG9iamVjdC4KICAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUudG9PYmpl
Y3QoZXhlYyk7CiAKLSAgICBKU1ZhbHVlIGFscGhhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJ
ZGVudGlmaWVyKGV4ZWMsICJhbHBoYSIpKTsKKyAgICBKU1ZhbHVlIGFscGhhVmFsdWUgPSBvYmpl
Y3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbHBoYSIpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wg
Y2FuUHJvdmlkZUFscGhhID0gIWFscGhhVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTk0
LDcgKzk0LDcgQEAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgSlNWYWx1ZSBiZXRhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlm
aWVyKGV4ZWMsICJiZXRhIikpOworICAgIEpTVmFsdWUgYmV0YVZhbHVlID0gb2JqZWN0LT5nZXQo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYmV0YSIpKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlk
ZUJldGEgPSAhYmV0YVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC0xMDIsNyArMTAyLDcg
QEAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgSlNWYWx1ZSBnYW1tYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVj
LCAiZ2FtbWEiKSk7CisgICAgSlNWYWx1ZSBnYW1tYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiZ2FtbWEiKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVHYW1t
YSA9ICFnYW1tYVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC0xMTksMTggKzExOSwxOCBA
QAogc3RhdGljIEpTT2JqZWN0KiBjcmVhdGVBY2NlbGVyYXRpb25PYmplY3QoY29uc3QgRGV2aWNl
TW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uKiBhY2NlbGVyYXRpb24sIEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0g
ICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAieCIpLCBh
Y2NlbGVyYXRpb24tPmNhblByb3ZpZGVYKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPngoKSkg
OiBqc051bGwoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cihleGVjLCAieSIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVZKCkgPyBqc051bWJlcihhY2Nl
bGVyYXRpb24tPnkoKSkgOiBqc051bGwoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCAieiIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVaKCkg
PyBqc051bWJlcihhY2NlbGVyYXRpb24tPnooKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieCIpLCBh
Y2NlbGVyYXRpb24tPmNhblByb3ZpZGVYKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPngoKSkg
OiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAieSIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVZKCkgPyBq
c051bWJlcihhY2NlbGVyYXRpb24tPnkoKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieiIpLCBhY2Nl
bGVyYXRpb24tPmNhblByb3ZpZGVaKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPnooKSkgOiBq
c051bGwoKSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAogc3RhdGljIEpTT2JqZWN0KiBjcmVh
dGVSb3RhdGlvblJhdGVPYmplY3QoY29uc3QgRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRl
KiByb3RhdGlvblJhdGUsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogb2JqZWN0
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiYWxwaGEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92
aWRlQWxwaGEoKSA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+YWxwaGEoKSkgOiBqc051bGwoKSk7
Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiYmV0
YSIpLCAgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRlQmV0YSgpICA/IGpzTnVtYmVyKHJvdGF0aW9u
UmF0ZS0+YmV0YSgpKSAgOiBqc051bGwoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCAiZ2FtbWEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRl
R2FtbWEoKSA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+Z2FtbWEoKSkgOiBqc051bGwoKSk7Cisg
ICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiYWxwaGEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92aWRlQWxwaGEoKSA/IGpzTnVtYmVy
KHJvdGF0aW9uUmF0ZS0+YWxwaGEoKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYmV0YSIpLCAgcm90
YXRpb25SYXRlLT5jYW5Qcm92aWRlQmV0YSgpICA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+YmV0
YSgpKSAgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiZ2FtbWEiKSwgcm90YXRpb25SYXRlLT5jYW5Qcm92
aWRlR2FtbWEoKSA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+Z2FtbWEoKSkgOiBqc051bGwoKSk7
CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHAKaW5kZXggMjBkOGY4M2NkMGU0OWFhNmEwNGMzZjY3YmM4ZDI1ZWUyM2Jm
OThmMC4uZTk4NDkwOWU3NmIyNTk0MGRhOWVlY2QwZDk2NTk5ZTBlOGY2ZjUwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBA
CiBKU0RpY3Rpb25hcnk6OkdldFByb3BlcnR5UmVzdWx0IEpTRGljdGlvbmFyeTo6dHJ5R2V0UHJv
cGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiBmaW5hbFJlc3VsdCkgY29u
c3QKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
bV9leGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIFByb3BlcnR5U2xv
dCBzbG90KG1faW5pdGlhbGl6ZXJPYmplY3QuZ2V0KCkpOwogCiAgICAgaWYgKCFtX2luaXRpYWxp
emVyT2JqZWN0LmdldCgpLT5nZXRQcm9wZXJ0eVNsb3QobV9leGVjLCBpZGVudGlmaWVyLCBzbG90
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmlu
ZGV4IGUyZDI5MmQyODRmZDJjYjliMjNjMTNhMjk0ODVlZjI5MjcyYjMxNzMuLmZmYjA1ODBmM2M3
NDMxM2EwN2I3NDk0NzZkN2QyN2I3NWExNjE4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgSlNF
dmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5k
bGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgLy8gSWYganNGdW5jdGlvbiBpcyBub3Qg
YWN0dWFsbHkgYSBmdW5jdGlvbiwgc2VlIGlmIGl0IGltcGxlbWVudHMgdGhlIEV2ZW50TGlzdGVu
ZXIgaW50ZXJmYWNlIGFuZCB1c2UgdGhhdAogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5v
bmUpIHsKLSAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICAgICAgaGFuZGxlRXZlbnRG
dW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJoYW5kbGVFdmVudCIpKTsKICAgICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5k
bGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4
IDgxMjI1MDdiNGZiYzY4ZTEyM2Y2NzJmYTMxMDg4YTUyY2E3MGU5NjUuLjNlYmE0MjFiYzczNDE3
NzNhYzhmNmFhNmIxMjFlYWNkMWU4MmE3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC03MCw3ICs3
MCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29s
bGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi5p
dGVtKGluZGV4KSkpOwogCiAgICAgICAgIC8vIFN1cHBvcnQgZm9yIGRvY3VtZW50LmltYWdlcygn
PG5hbWU+JykgZXRjLgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5hbWVkSXRlbXMo
ZXhlYywganNDb2xsZWN0aW9uLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZykpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShuYW1lZEl0ZW1zKGV4ZWMsIGpzQ29sbGVjdGlvbiwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBzdHJpbmcpKSk7CiAgICAgfQogCiAgICAgLy8gVGhl
IHNlY29uZCBhcmcsIGlmIHNldCwgaXMgdGhlIGluZGV4IG9mIHRoZSBpdGVtIHdlIHdhbnQKQEAg
LTEwNiwxMiArMTA2LDEyIEBAIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgdWludDMyX3QgaW5kZXggPSB0b1VJbnQzMkZyb21TdHJpbmdJbXBs
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS5pbXBsKCkpOwog
ICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuaXRlbShpbmRleCkpOwotICAgIHJl
dHVybiBuYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgcmV0dXJuIG5hbWVkSXRl
bXMoZXhlYywgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKIH0KIAogSlNWYWx1ZSBKU0hUTUxB
bGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFsdWUg
dmFsdWUgPSBuYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IG5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKICAgICByZXR1
cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/IGpzTnVsbCgpIDogdmFsdWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRl
eCAzYWQ5YTQ3MjkwMzRjZGQwNzc2OWY3Y2U2MGM3ZGVmMmIxYzkwOTUyLi42ZDM5YzQ1OWQ3ZDI1
NTU0YTk3ZGU0ZGI3MjRkMzE2NWMyOTMzZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEUKIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6OmFsbChFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgLy8gSWYgImFsbCIgaGFzIGJlZW4gb3ZlcndyaXR0
ZW4sIHJldHVybiB0aGUgb3ZlcndyaXR0ZW4gdmFsdWUKLSAgICBKU1ZhbHVlIHYgPSBnZXREaXJl
Y3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiYWxsIikpOworICAgIEpTVmFsdWUgdiA9
IGdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbGwi
KSk7CiAgICAgaWYgKHYpCiAgICAgICAgIHJldHVybiB2OwogCkBAIC0xMjMsNyArMTIzLDcgQEAg
SlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHZvaWQg
SlNIVE1MRG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgLy8gQWRkICJhbGwiIHRvIHRoZSBwcm9wZXJ0eSBtYXAuCi0gICAgcHV0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImFsbCIpLCB2YWx1ZSk7CisgICAgcHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFsbCIpLCB2YWx1ZSk7
CiB9CiAKIHN0YXRpYyBEb2N1bWVudCogZmluZENhbGxpbmdEb2N1bWVudChFeGVjU3RhdGUqIGV4
ZWMpCkBAIC0xNDYsNyArMTQ2LDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKSkg
ewogICAgICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd3JhcHBlciA9IHRvSlNET01XaW5kb3dT
aGVsbChmcmFtZSwgY3VycmVudFdvcmxkKGV4ZWMpKTsKICAgICAgICAgICAgIGlmICh3cmFwcGVy
KSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHdyYXBwZXItPmdldChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsICJvcGVuIikpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgZnVu
Y3Rpb24gPSB3cmFwcGVyLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
b3BlbiIpKTsKICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAg
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IDo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRh
KTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCAyODY3ZDYwZjJhMDI2MjdmMDdjZDAwYTM0
MGU1OWM3ODExMjRkOTgzLi4yODQ4OTcxMmE3ZjZjY2M0OTkwN2E2YWZiMzE1ZGM1ZmQ3YzhjZGNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplYwogCiBKU1ZhbHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb246Om5hbWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IG5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFt
ZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogICAgIHJldHVybiB2YWx1
ZS5pc1VuZGVmaW5lZCgpID8ganNOdWxsKCkgOiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCBlNmExNDBm
NTQ1ODQ5YjhhYTY0OTQ3ZTBkNjY3Zjg4MzZmNGM5YWVhLi5hMjVkY2E5OTE4YzNhZTJlZTc2YTE4
MDVhMjBkMGIxMGJkYWYxOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtNjAsNyArNjAsNyBAQCBKU1ZhbHVlIEpTSURC
RGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBJREJLZXlQ
YXRoIGtleVBhdGg7CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2U7CiAgICAgaWYgKCFv
cHRpb25zVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBKU1ZhbHVlIGtleVBh
dGhWYWx1ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAia2V5UGF0
aCIpKTsKKyAgICAgICAgSlNWYWx1ZSBrZXlQYXRoVmFsdWUgPSBvcHRpb25zVmFsdWUuZ2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtleVBhdGgiKSk7CiAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogCkBAIC03MCw3ICs3MCw3IEBAIEpTVmFsdWUgSlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0b0luY3JlbWVudCA9IG9wdGlvbnNWYWx1ZS5n
ZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYXV0b0luY3JlbWVudCIpKS50b0Jvb2xlYW4oZXhl
Yyk7CisgICAgICAgIGF1dG9JbmNyZW1lbnQgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImF1dG9JbmNyZW1lbnQiKSkudG9Cb29sZWFuKGV4ZWMp
OwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDA0MDQ0ZDM1ZDM5NTljNWYxOGNm
MmJkNWIzNTUzYmE4MmQ4MzVlZWMuLjg1MDdlNDk0YTM3NmRiNzk5ZTU2ZmJlZThiZDFjYzZkOWQx
Njc4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0
U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2Jq
ZWN0U3RvcmVDdXN0b20uY3BwCkBAIC02NywxMSArNjcsMTEgQEAgSlNWYWx1ZSBKU0lEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYm9vbCB1bmlxdWUgPSBm
YWxzZTsKICAgICBib29sIG11bHRpRW50cnkgPSBmYWxzZTsKICAgICBpZiAoIW9wdGlvbnNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHVuaXF1ZSA9IG9wdGlvbnNWYWx1ZS5n
ZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAidW5pcXVlIikpLnRvQm9vbGVhbihleGVjKTsKKyAg
ICAgICAgdW5pcXVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJ1bmlxdWUiKSkudG9Cb29sZWFuKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAg
ICAgICBtdWx0aUVudHJ5ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMs
ICJtdWx0aUVudHJ5IikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgbXVsdGlFbnRyeSA9IG9w
dGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibXVsdGlF
bnRyeSIpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAppbmRleCAwNWMwY2Q5
OTI1Njk1ZDEwOTVmM2VkNGM5ZDMyYTU1NDM0NWUzYThiLi41ZWI2ZDU4YzI2Y2MyOTBmODlkZTk3
NzY0ZmZjMTkzN2UwMzcwZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZURhdGFDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEltYWdlRGF0YSog
aW1hZ2VECiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIAogICAgIHdyYXBwZXIgPSBDUkVB
VEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEsIGltYWdlRGF0YSk7Ci0gICAg
SWRlbnRpZmllciBkYXRhTmFtZShleGVjLCAiZGF0YSIpOworICAgIElkZW50aWZpZXIgZGF0YU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJkYXRhIik7CiAgICAgd3JhcHBlci0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGRhdGFOYW1lLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwg
aW1hZ2VEYXRhLT5kYXRhKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIC8vIEZJWE1F
OiBBZG9wdCByZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQsIGFuZCBzd2l0Y2ggdG8gcmVwb3J0RXh0
cmFNZW1vcnlBbGxvY2F0ZWQuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MjU5NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCmluZGV4IGQ4NmE0ODBiMGMz
ODA2YmRlNjdlOWRiNGE2Njc0MjgyNjY5YWZmNjYuLjg1NTBlYjQ1M2Y5M2ZjYWFiYjMxMzYwNGFj
NTQyZmM3Yjc1NDY0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTg2LDEyICs4Niwx
MiBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXMoRXhlY1N0YXRlKiBleGVj
LCBKU0FycmF5KiBhcnJheSwgQ29udGV4dE1lbgogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXJyYXktPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgSlNPYmplY3QqIGl0ZW0gPSBhc09i
amVjdChhcnJheS0+Z2V0SW5kZXgoZXhlYywgaSkpOwotICAgICAgICBKU1ZhbHVlIGxhYmVsID0g
aXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxhYmVsIikpOwotICAgICAgICBKU1Zh
bHVlIHR5cGUgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAidHlwZSIpKTsKLSAg
ICAgICAgSlNWYWx1ZSBpZCA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJpZCIp
KTsKLSAgICAgICAgSlNWYWx1ZSBlbmFibGVkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgImVuYWJsZWQiKSk7Ci0gICAgICAgIEpTVmFsdWUgY2hlY2tlZCA9IGl0ZW0tPmdldChl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsICJjaGVja2VkIikpOwotICAgICAgICBKU1ZhbHVlIHN1Ykl0
ZW1zID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInN1Ykl0ZW1zIikpOworICAg
ICAgICBKU1ZhbHVlIGxhYmVsID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgImxhYmVsIikpOworICAgICAgICBKU1ZhbHVlIHR5cGUgPSBpdGVtLT5nZXQoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidHlwZSIpKTsKKyAgICAgICAgSlNWYWx1
ZSBpZCA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJpZCIp
KTsKKyAgICAgICAgSlNWYWx1ZSBlbmFibGVkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgImVuYWJsZWQiKSk7CisgICAgICAgIEpTVmFsdWUgY2hlY2tlZCA9
IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjaGVja2VkIikp
OworICAgICAgICBKU1ZhbHVlIHN1Ykl0ZW1zID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgInN1Ykl0ZW1zIikpOwogICAgICAgICBpZiAoIXR5cGUuaXNTdHJp
bmcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGMzYWI4MjVkYzY4ZDZmNGRm
MTk4NmQ0MDI4NTFjZTZiYzMxOGZjNzQuLmFlN2UyMDNjZjVmZTlkNjlkNWEwNGEwMDYxN2VhMzkx
MDI1Y2ZjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2
ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2
ZW50TGlzdGVuZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgSlNPYmplY3QqIEpTTGF6eUV2ZW50
TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4
ZWMKICAgICAgICAgT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KAogICAgICAgICAgICAg
bV9wb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSAtIDEpLCBtX3Bvc2l0aW9uLm1fY29sdW1u
KTsKICAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKAotICAgICAgICBleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGFyZ3MsIElkZW50aWZpZXIoZXhlYywgbV9mdW5jdGlvbk5hbWUpLCAKKyAgICAgICAgZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsIG1fZnVuY3Rpb25OYW1lKSwgCiAgICAgICAgIG1fc291cmNlVVJMLCBwb3NpdGlv
bik7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCmluZGV4IDcxNzI2
YmJmMWIxZWI2NzFlMWE2YjRlZDQ4MmM2MWUyYjU4YWJjYTMuLjdiNDExOWE1YTVkMGI3Mjg5ZjNl
MTM2OGQ5MTBkNzZhNzk4ZDhiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzaG9ydCBK
U05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIE5v
ZGUqIGZpbHRlck5vZGUpCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShmaWx0ZXIsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAgIGZpbHRlciA9IGZpbHRlci5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAiYWNjZXB0Tm9kZSIpKTsKKyAgICAgICAgZmlsdGVyID0gZmlsdGVyLmdl
dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhY2NlcHROb2RlIikpOwogICAg
ICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZpbHRlciwgY2FsbERhdGEpOwogICAgICAgICBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CiAgICAgICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTm9kZUZpbHRlciBvYmpl
Y3QgZG9lcyBub3QgaGF2ZSBhbiBhY2NlcHROb2RlIGZ1bmN0aW9uIikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3Rv
bS5jcHAKaW5kZXggM2M5MmJlYjEzNGVkMDYzMzFiMzlmNjFmMzY5ZTRkODhkYzMzM2RhMy4uOGM5
ZWI4ZjljMTlmOTBhMDBhMzZkZjUzNWY5OTNiYWM3YTEzZWJlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20u
Y3BwCkBAIC03NCw3ICs3NCw3IEBAIEpTVmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVt
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyKGV4ZWMsIG1faW1wbC0+Y29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUg
fCBSZWFkT25seSk7CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbV9pbXBsLT5jb2x1bW5OYW1lcygpW2ldKSwganNWYWx1
ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICB9CiAKICAgICByZXR1cm4gb2JqZWN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKaW5kZXgg
OTQyYzRkZmI2ZTdlNjhmODlhMGNmNzlkNTQ1ZTMxOTE0NmJjMjczNy4uZDY0NjAzZTFiOGQyNWVk
ZjVkMWYyOWM1ZjcwMzcyMWI2YmNhMzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNTdG9yYWdl
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+bV9pbXBsLT5rZXko
aSwgZWMpKSk7CisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgdGhpc09iamVjdC0+bV9pbXBsLT5rZXkoaSwgZWMpKSk7CiAgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKaW5kZXggYTg4YzAzOGQ5NzUwZTgzZTE0MzBl
ODllNzFhNjZkNDUwMDcxN2I1Yi4uMzlmYTY0ZDlkYWNkNDRhYTg2YzY1YmUxYmZkMjFmYmE4Nzgz
ZGVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJl
YW1KU1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1KU1NvdXJjZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBzZXRJbnRlcm5hbFNsb3RU
b09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2JqZWN0VmFsdWUsIFByaXZhdGVOYW1l
JgogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RWYWx1ZS50b09iamVjdChleGVjKTsK
ICAgICBQdXRQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KG9iamVjdFZhbHVlKTsKLSAgICBvYmpl
Y3QtPnB1dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20obmFtZSksIHZhbHVlLCBwcm9w
ZXJ0eVNsb3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVVpZChuYW1lKSwgdmFsdWUsIHByb3BlcnR5U2xvdCk7CiB9CiAKIEpTVmFsdWUgZ2V0SW50ZXJu
YWxTbG90RnJvbU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb2JqZWN0VmFsdWUsIFBy
aXZhdGVOYW1lJiBuYW1lKQpAQCAtNTUsNyArNTUsNyBAQCBKU1ZhbHVlIGdldEludGVybmFsU2xv
dEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9iamVjdFZhbHVlLCBQcml2YXRl
TgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RWYWx1ZS50b09iamVjdChleGVjKTsKICAg
ICBQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KG9iamVjdFZhbHVlKTsKIAotICAgIElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShuYW1lKTsKKyAgICBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQobmFtZSk7CiAgICAgaWYgKCFvYmpl
Y3QtPmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgcHJvcGVy
dHlTbG90KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICByZXR1cm4gcHJvcGVydHlT
bG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYjQ5MzFkZDU2YTc2ZWIz
MjRiYTZmM2RlOTUxNjQ3MzRlODBlNDliLi4wM2Q0NDc2NTg5Nzk3OGMwMDRhZDkzMWFjMTY0MGQz
MTY4MGUzYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEds
b2JhbE9iamVjdC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlRXhjZXB0
aW9uKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0
OjpzZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIHZhbHVlKQogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHNjcmlwdFN0YXRlKTsKLSAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5h
bWUpLCB2YWx1ZS5qc09iamVjdCgpKTsKKyAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoc2NyaXB0U3RhdGUsIG5hbWUpLCB2YWx1ZS5qc09iamVjdCgpKTsKICAgICByZXR1cm4gaGFu
ZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0KIApAQCAtNjEsMTQgKzYxLDE0IEBAIGJvb2wg
U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25z
dCBjaGFyKiBuYW1lLCBJbnNwCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUp
OwogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBnbG9i
YWxPYmplY3QtPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRlbnRpZmllcihzY3JpcHRT
dGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKKyAg
ICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9i
amVjdCwgdmFsdWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsK
IH0KIAogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgdmFsdWUp
CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIEpTVmFsdWUganNW
YWx1ZSA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdldChzY3JpcHRTdGF0
ZSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSkpOworICAgIEpTVmFsdWUganNWYWx1ZSA9
IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdldChzY3JpcHRTdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFtZSkpOwogICAgIGlmICghanNWYWx1
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgU2NyaXB0
R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFy
KiBuYW1lLCBEZXByCiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6cmVtb3ZlKEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBKU0xvY2tIb2xkZXIg
bG9jayhzY3JpcHRTdGF0ZSk7Ci0gICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgc2NyaXB0U3RhdGUsIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpKTsK
KyAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eShzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzY3JpcHRT
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzY3JpcHRTdGF0ZSwgbmFtZSkpOwogICAgIHJl
dHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA3NTdl
Y2Q5MGE2Y2FiMzc4OTBjNjJhYzY4MzMyZDNjOTlmYjYzNjE3Li4zYWM2Mjc1YWMzYzFkN2RiZjZj
NzI3ZjRkODQzY2NhMzQxMzQ2YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTUyNSw3ICs1MjUsNyBAQCBjbGFz
cyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICA6IENsb25lQmFzZShleGVj
KQogICAgICAgICAsIG1fYnVmZmVyKG91dCkKICAgICAgICAgLCBtX2Jsb2JVUkxzKGJsb2JVUkxz
KQotICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKGV4ZWMsIGVtcHR5U3RyaW5nKCkpCisgICAg
ICAgICwgbV9lbXB0eUlkZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBlbXB0
eVN0cmluZygpKSkKICAgICB7CiAgICAgICAgIHdyaXRlKEN1cnJlbnRWZXJzaW9uKTsKICAgICAg
ICAgZmlsbFRyYW5zZmVyTWFwKG1lc3NhZ2VQb3J0cywgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
cyk7CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJh
c2UgewogICAgICAgICBpZiAoc3RyLmlzTnVsbCgpKQogICAgICAgICAgICAgd3JpdGUobV9lbXB0
eUlkZW50aWZpZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB3cml0ZShJZGVudGlmaWVy
KG1fZXhlYywgc3RyKSk7CisgICAgICAgICAgICB3cml0ZShJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KG1fZXhlYywgc3RyKSk7CiAgICAgfQogCiAgICAgdm9pZCB3cml0ZShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHZlY3RvcikKQEAgLTEyNTQsNyArMTI1NCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAg
ICAgICAgIGxlbmd0aFN0YWNrLnJlbW92ZUxhc3QoKTsKIAogICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMpKTsKLSAgICAgICAg
ICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhhcnJheSwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoYXJyYXksIG1fZXhlYywgcHJvcGVydHlTdGFjay5s
YXN0KCksIEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eVN0YWNrLmxhc3QoKS5zaXplKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlKE5vbkluZGV4UHJvcGVydGllc1RhZyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAgLTEzMDQsNyArMTMwNCw3
IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpT
VmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmpl
Y3QpOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAg
ICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAg
ICAgICAgICAgICAgIGluT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGluT2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBpbk9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwg
RW51bWVyYXRpb25Nb2RlOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6CiAgICAgICAgICAgICBGQUxM
VEhST1VHSDsKQEAgLTEzNzIsNyArMTM3Miw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENs
b25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihvYmplY3QpKTsKICAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVj
KSk7Ci0gICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2su
bGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAg
ICAgICAgICAgICAgICAgICB3cml0ZShOb25NYXBQcm9wZXJ0aWVzVGFnKTsKICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8g
b2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKQEAgLTE0MTgsNyArMTQxOCw3IEBAIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAg
ICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3Qo
KTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihvYmpl
Y3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlO
YW1lQXJyYXkobV9leGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5s
YXN0KCksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMs
IHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25TZXRQcm9wZXJ0aWVzVGFn
KTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKQEAgLTI0OTEsMTEgKzI0OTEs
MTEgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6
ZSgpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHRlcm1pbmFsID0g
cmVhZFRlcm1pbmFsKCkpIHsKLSAgICAgICAgICAgICAgICBwdXRQcm9wZXJ0eShvdXRwdXRPYmpl
Y3RTdGFjay5sYXN0KCksIElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0cmluZygp
KSwgdGVybWluYWwpOworICAgICAgICAgICAgICAgIHB1dFByb3BlcnR5KG91dHB1dE9iamVjdFN0
YWNrLmxhc3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsIGNhY2hlZFN0cmluZy0+
c3RyaW5nKCkpLCB0ZXJtaW5hbCk7CiAgICAgICAgICAgICAgICAgZ290byBvYmplY3RTdGFydFZp
c2l0TWVtYmVyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3RhdGVTdGFjay5hcHBlbmQo
T2JqZWN0RW5kVmlzaXRNZW1iZXIpOwotICAgICAgICAgICAgcHJvcGVydHlOYW1lU3RhY2suYXBw
ZW5kKElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0cmluZygpKSk7CisgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVTdGFjay5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4
ZWMsIGNhY2hlZFN0cmluZy0+c3RyaW5nKCkpKTsKICAgICAgICAgICAgIGdvdG8gc3RhdGVVbmtu
b3duOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgT2JqZWN0RW5kVmlzaXRNZW1iZXI6IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1t
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXgg
NWQ5ZDhmNTkwN2U2MDU1MjEwODc2OTM1ZmFhZWI2NmU0OTY3MWI2My4uM2E5M2ViZjVhYjZjNGQ3
ZTUzNTE3MDNlYzE4MTVhNWZjMTRkYjAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTMzMCw3ICszMzAsNyBAQCAtIChpZCljYWxs
V2ViU2NyaXB0TWV0aG9kOihOU1N0cmluZyAqKW5hbWUgd2l0aEFyZ3VtZW50czooTlNBcnJheSAq
KWFyZ3MKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiA9IFtzZWxmIF9pbXBd
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJpbmcobmFtZSkpKTsKKyAgICBKU0M6OkpT
VmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgU3RyaW5nKG5hbWUpKSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCkBAIC0zODQsNyArMzg0LDcgQEAgLSAodm9p
ZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQogICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPihbc2VsZiBfaW1wXSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2Jq
ZWN0KTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChvYmplY3QsIGV4ZWMsIElkZW50
aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShleGVjLCAm
dmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9iamVjdF0pLCBzbG90KTsKKyAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShleGVjLCAm
dmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9iamVjdF0pLCBzbG90KTsKIAogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNv
bGUoZXhlYyk7CkBAIC00MDcsNyArNDA3LDcgQEAgLSAoaWQpdmFsdWVGb3JLZXk6KE5TU3RyaW5n
ICopa2V5CiAgICAgICAgIC8vIGxlYXZpbmcgdGhlIGxvY2sgcGVybWFuZW50bHkgaGVsZAogICAg
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgCi0gICAgICAgIEpTQzo6SlNW
YWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3Ry
aW5nKGtleSkpKTsKKyAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IFtzZWxmIF9pbXBdLT5n
ZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmcoa2V5KSkpOwogICAg
ICAgICAKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICBh
ZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CkBAIC00MzMsNyArNDMzLDcgQEAgLSAodm9pZCly
ZW1vdmVXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgQVNTRVJUKCFleGVjLT5oYWRF
eGNlcHRpb24oKSk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBbc2VsZiBf
aW1wXS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpKTsKKyAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFi
bGUoKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGV4ZWMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CkBAIC00NTAsNyArNDUw
LDcgQEAgLSAoQk9PTCloYXNXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgQVNTRVJU
KCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
LSAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9pbXBdLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlm
aWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CisgICAgQk9PTCByZXN1bHQgPSBbc2VsZiBfaW1wXS0+
aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmcoa2V5
KSkpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGFkZEV4Y2Vw
dGlvblRvQ29uc29sZShleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMTRiYWY0YjM0MGFlNjNkOGJkNzdlMjgwMTVh
YzE4OGMxM2MwOGVjZi4uOGE4ODI0MjFkY2NhMTljMTZmZDJjYTU0Mzg2MGI5N2E1MmY1MDk3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KQEAgLTk2OCwxNiArOTY4LDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBD
dXN0b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2luZG93CiAgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9k
ZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpT
Qzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0g
SlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7Cisg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0U3RydWN0dXJl
UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9k
ZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgdWludDMyX3QgZ2V0RW51bWVyYWJsZUxlbmd0aChKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7
IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsKICAgICB9CiAKICAgICAjIEN1
c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9IHx8ICRpbmRleGVk
R2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0g
SlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09i
amVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51
bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpO1xuIik7CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzIn0gPSAxOyAgICAgICAKICAgICB9CiAKQEAgLTE5OTEsNyArMTk5MSw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgJGVuYWJsZV9m
dW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJHNpZ25hdHVyZSk7CiAgICAg
ICAgICAgICAgICAgbXkgJG5hbWUgPSAkc2lnbmF0dXJlLT5uYW1lOwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghJHtlbmFibGVfZnVuY3Rpb259KCkpIHtcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSgmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1l
XCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiks
IHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZW1vdmVEaXJlY3Qodm0sIHByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpA
QCAtMjU4MCwxMCArMjU4MCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAu
ICIuaCIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRp
dGlvbmFsIn0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci5cbiIpOwot
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFwiJG5hbWVc
IiksIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVj
dC5cbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRo
aXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZh
bHVlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3Rl
ZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
IFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
XG4iKTsKQEAgLTI2OTIsNyArMjY5Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgo
KTsgaSA8IGNvdW50OyArK2kpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpO1xuIik7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKaW5kZXggMWQ1OTE4
OWI0NzIwNTExNzE3OWM2MzlhNjA1YjMwODZlZGRiZjZlZi4uZDI0YTJlYTcwNmFlMmQ5NDQyYjcw
NzVmOTVlMjg4MzM2NTYyMDYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCkBAIC0yNDEsNyArMjQx
LDcgQEAgdm9pZCBKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0
YXRpY19jYXN0PEZsb2F0NjRBcnJheSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpOyAr
K2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkp
OwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNGbG9hdDY0QXJy
YXk6OmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0Zsb2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKaW5kZXggZmYzODhjYTAxNzYwYzEyYjk1NzUwMzlmZWM3
NjQzMjkzZmU4NGUzNC4uMTNlMTU3N2UzNmNkNjFiZGQxYmMxODcwNmIzNjAyMDhhYzM4MmU4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxv
YXQ2NEFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRmxvYXQ2NEFycmF5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSlNGbG9hdDY0QXJyYXkg
OiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9
IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9k
ZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBn
ZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAg
ICBGbG9hdDY0QXJyYXkqIGltcGwoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwCmluZGV4IGMzMGZhODAxNmE4NzVlYTA5OTEyNGQxMWIzY2ZiYWQ1YjExMjllYjMuLmFiMjk4
MTIyYTRmZDEwZDkxNGNiYWM5MTIyNTY4Y2I3YzMzZTA2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93
blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwg
Y291bnQ7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBpKSk7Ci0gICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogSlNWYWx1ZSBKU1Rl
c3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAppbmRleCBiZjFjZTY3ZTJmZTNjZGNiOTdl
MjAzODdmNWIwZTllNTA4OWYyNDdmLi40MDhjYjhmMmZmNzkzZTMxZDFjNmUzNDI5MTI1ZDNkMWZh
NTQ1YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBKU1Rlc3RFdmVudFRhcmdldCA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewog
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jiwg
SlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlv
bk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
SlNDOjpTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDE0YTc4NWE5YjNiNDVmMjE1YjBl
YTNmNTAzYjZiOTI3MWZhZjNmODcuLjFhMjc0YWY5YmVkMDljZDlhOWEwM2Q4YTQwZmM5MWVlMmJj
MWIwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xODk3LDggKzE4OTcsOCBAQCB2b2lkIHNldEpTVGVzdE9i
alRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdAogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYmFzZU9i
amVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3Rl
ZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJUZXN0U3ViT2Jq
RW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSwgdmFs
dWUpOwogfQogCiAKQEAgLTI3MDYsOCArMjcwNiw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmpl
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0g
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImNvbmRpdGlvbmFsQXR0cjQi
KSwgdmFsdWUpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAg
Y2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgImNvbmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUpOwogfQogCiAjZW5kaWYKQEAgLTI3MjEs
OCArMjcyMSw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplCiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVp
bHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgImNvbmRpdGlvbmFsQXR0cjUiKSwgdmFsdWUpOworICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbmRpdGlvbmFsQXR0
cjUiKSwgdmFsdWUpOwogfQogCiAjZW5kaWYKQEAgLTI3MzYsOCArMjczNiw4IEBAIHZvaWQgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGJhc2VPYmplCiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
PihiYXNlT2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0oZXhlYyk7Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0g
ICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImNv
bmRpdGlvbmFsQXR0cjYiKSwgdmFsdWUpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCisgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbmRpdGlvbmFsQXR0cjYiKSwgdmFsdWUpOwogfQogCiAj
ZW5kaWYKQEAgLTI4NzQsOCArMjg3NCw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jCiAgICAg
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVwbGFjZWFi
bGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBvYmplY3QuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgInJlcGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVlKTsKKyAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3QKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAicmVwbGFjZWFibGVBdHRy
aWJ1dGUiKSwgdmFsdWUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3Bw
CmluZGV4IDkwMDEwMTM4YWI0NmNlN2Q5NzUzY2JmZjI5NWU1M2NkZmFjZDBiNWEuLjA5MDVkZTE5
N2U1NTYxMjhkNTIyNWE2NWQ0MTIzZTY4ZDk2MmY4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGJvb2wgX05QTl9FbnVtZXJhdGUoTlBQ
LCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyKiogaWRlbnRpZmllciwgdWludDMyX3QqIGNvdW50
CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwogCi0gICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJs
ZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKG9iai0+aW1wLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCkt
PmdldFByb3BlcnR5TmFtZXMob2JqLT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgIHVuc2lnbmVkIHNp
emUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lcy5zaXplKCkpOwogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGNhbGwgTlBOX01lbUFsbG9jIGJ1dCB0aGF0
J3MgaW4gV2ViS2l0CiAgICAgICAgIE5QSWRlbnRpZmllciogaWRlbnRpZmllcnMgPSBzdGF0aWNf
Y2FzdDxOUElkZW50aWZpZXIqPihtYWxsb2Moc2l6ZW9mKE5QSWRlbnRpZmllcikgKiBzaXplKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAppbmRleCA3NzRmZGZjM2Y0ZWY5NTNl
ZmQ3YmQ2ZmQ5Njc2ZjY0ODdlODk5MDc2Li5kZjkwOWRjZTVlYWQ5Mzg1OGUwMjMwOWNkODJkYzVh
NzMyMzk1ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKQEAgLTE0NCw3
ICsxNDQsNyBAQCBTdHJpbmcgY29udmVydE5QU3RyaW5nVG9VVEYxNihjb25zdCBOUFN0cmluZyog
c3RyaW5nKQogCiBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgTlBVVEY4KiBuYW1lKQogewotICAgIHJldHVybiBJZGVudGlmaWVyKGV4
ZWMsIGNvbnZlcnRVVEY4VG9VVEYxNldpdGhMYXRpbjFGYWxsYmFjayhuYW1lLCAtMSkpOworICAg
IHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGNvbnZlcnRVVEY4VG9VVEYxNldp
dGhMYXRpbjFGYWxsYmFjayhuYW1lLCAtMSkpOwogfQogCiB9IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCBjZDM0ZTVmMTIwMmQ3ZjNhZGJkYzE4MzA5
ODdlZjg2YmFkZTZjYzEzLi41Nzg5MTU4OTM5YTJhZjdiOTJmYWI5MGFmODRhYWJlOTVhZWY3ZTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yNjgs
NyArMjY4LDcgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkKIEpTVmFsdWUgT2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wOjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKQogewogICAgIGNvbnN0IE9iamNGYWxsYmFja09i
amVjdEltcCogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBPYmpjRmFsbGJhY2tPYmplY3RJbXAq
PihvYmplY3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5faW5zdGFuY2UtPmdldFZhbHVlT2ZV
bmRlZmluZWRGaWVsZChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHRoaXNPYmplY3QtPm1faXRlbSkp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5faW5zdGFuY2UtPmdldFZhbHVlT2ZVbmRlZmluZWRG
aWVsZChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPm1faXRl
bSkpOwogfQogCiBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0
ZSAqKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IDAy
MjIxOTA1YzQwZTZlZGZlZDU3OTk5ZWIyMzVmNTg5MWE3YTJlMDguLmM3MTNmZmE0ZTIzMjkzYzY2
Y2M2NWNiMjk5M2RhM2E5MmVlZGE4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBSdW50aW1lQXJyYXk6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwogCi0gICAgaWYgKHNob3VsZEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisgICAgaWYgKG1vZGUuc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcygpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKTsKIAogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvdGVzdGJpbmRpbmdzLmNwcAppbmRleCA5NTczMGM0M2Q3NDA5ODU3YjFiZmQyOTI5NTFjNTVk
YjBkY2M1ZGY1Li5iYWYyNDdkMmRiNmNlN2U3ZWUxMTNhMjEwYjg3Y2MzM2E3MjZhMDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgCiAgICAgICAgIE15T2JqZWN0
ICpteU9iamVjdCA9IChNeU9iamVjdCAqKU5QTl9DcmVhdGVPYmplY3QgKG15RnVuY3Rpb25QdHJz
KTsKICAgICAgICAgCi0gICAgICAgIGdsb2JhbC5wdXQoZXhlYywgSWRlbnRpZmllcigibXlJbnRl
cmZhY2UiKSwgSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5zdGFuY2U6OkNMYW5ndWFn
ZSwgKHZvaWQgKilteU9iamVjdCkpOworICAgICAgICBnbG9iYWwucHV0KGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50
aW1lT2JqZWN0KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopbXlPYmplY3QpKTsKICAgICAg
ICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgICAg
ICBjb25zdCBjaGFyICpjb2RlID0gcmVhZEphdmFTY3JpcHRGcm9tRmlsZShhcmd2W2ldKTsKQEAg
LTM5NCw3ICszOTQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAg
ICAgICAgICAgICAgIGNoYXIqIG1zZyA9IGV4VmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KS5hc2NpaSgpOwogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChleFZhbC50eXBlKCkgPT0gT2JqZWN0VHlwZSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhWYWwp
LmdldChleGVjLElkZW50aWZpZXIoImxpbmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpbmUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobGluZVZhbC50eXBlKCkgPT0gTnVtYmVyVHlwZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lbm8gPSBpbnQobGluZVZhbC50b051bWJlcihleGVjKSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGlu
Z3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCmluZGV4IGJmYWNm
MjEwNzRhMWVlODU3MjIzNmU1YWFhYzEyYzVkOWU0YzI3NzAuLjM1MzJiMGE2ODlhYmNkNmQyZDdl
MTM1YjE3YjBhYzY4NTU0ZTM2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90
ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5t
bQpAQCAtMjQ4LDcgKzI0OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAg
ICAgICAgCiAgICAgICAgIE15Rmlyc3RJbnRlcmZhY2UgKm15SW50ZXJmYWNlID0gW1tNeUZpcnN0
SW50ZXJmYWNlIGFsbG9jXSBpbml0XTsKICAgICAgICAgCi0gICAgICAgIGdsb2JhbC5wdXQoZXhl
YywgSWRlbnRpZmllcigibXlJbnRlcmZhY2UiKSwgSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmpl
Y3QoSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZSwgKHZvaWQgKilteUludGVyZmFjZSkpOwor
ICAgICAgICBnbG9iYWwucHV0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm15
SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmpl
Y3RpdmVDTGFuZ3VhZ2UsICh2b2lkICopbXlJbnRlcmZhY2UpKTsKICAgICAgICAgCiAgICAgICAg
IGZvciAoaW50IGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFy
ICpjb2RlID0gcmVhZEphdmFTY3JpcHRGcm9tRmlsZShhcmd2W2ldKTsKQEAgLTI2Miw3ICsyNjIs
NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKm1zZyA9IGV4VmFsLnRvU3RyaW5nKGV4ZWMpLmFzY2lpKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGludCBsaW5lbm8gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4VmFsLnR5
cGUoKSA9PSBPYmplY3RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBsaW5l
VmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsSWRlbnRpZmllcigibGlu
ZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwgPSBPYmplY3Q6OmR5
bmFtaWNDYXN0KGV4VmFsKS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
bGluZSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lVmFsLnR5cGUoKSA9PSBO
dW1iZXJUeXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubyA9IGludChsaW5l
VmFsLnRvTnVtYmVyKGV4ZWMpKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFy
c2VyLmNwcAppbmRleCBhYmMxMGUyYWFkYjkzYzJiY2VkMzg1YjE1ZTQ5MDk5MmRiMjFhNGQ2Li5j
MmM4NDI3MGZlZjA0ZjRhMjRmNWM1Mjc4NTg0OGJmN2E0NDkxYTM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFy
c2VyLmNwcApAQCAtODAsMTMgKzgwLDEzIEBAIHN0YXRpYyBib29sIGdldFR5cGVGbGFncyhFeGVj
U3RhdGUmIGV4ZWMsIGNvbnN0IEpTVmFsdWUmIHR5cGVWYWx1ZSwgUmVzb3VyY2VGbGFnCiAgICAg
CiBzdGF0aWMgYm9vbCBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxl
T2JqZWN0LCBUcmlnZ2VyJiB0cmlnZ2VyKQogewotICAgIEpTVmFsdWUgdHJpZ2dlck9iamVjdCA9
IHJ1bGVPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidHJpZ2dlciIpKTsKKyAg
ICBKU1ZhbHVlIHRyaWdnZXJPYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmZXhlYywgInRyaWdnZXIiKSk7CiAgICAgaWYgKCF0cmlnZ2VyT2JqZWN0
IHx8IGV4ZWMuaGFkRXhjZXB0aW9uKCkgfHwgIXRyaWdnZXJPYmplY3QuaXNPYmplY3QoKSkgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIkludmFsaWQgdHJpZ2dlciBvYmplY3QuIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHVybEZpbHRlck9iamVjdCA9IHRy
aWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidXJsLWZpbHRlciIpKTsK
KyAgICBKU1ZhbHVlIHVybEZpbHRlck9iamVjdCA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAidXJsLWZpbHRlciIpKTsKICAgICBpZiAoIXVy
bEZpbHRlck9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICF1cmxGaWx0ZXJPYmplY3Qu
aXNTdHJpbmcoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkludmFsaWQgdXJsLWZpbHRlciBv
YmplY3QuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk5LDE1ICs5OSwxNSBAQCBzdGF0
aWMgYm9vbCBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2JqZWN0
LCBUcmlnZ2VyJiB0cmlnZ2VyKQogICAgIH0KICAgICB0cmlnZ2VyLnVybEZpbHRlciA9IHVybEZp
bHRlcjsKIAotICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2FzZVZhbHVlID0gdHJpZ2dlck9iamVjdC5n
ZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ1cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZl
IikpOworICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2FzZVZhbHVlID0gdHJpZ2dlck9iamVjdC5nZXQo
JmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ1cmwtZmlsdGVyLWlzLWNhc2Ut
c2Vuc2l0aXZlIikpOwogICAgIGlmICh1cmxGaWx0ZXJDYXNlVmFsdWUgJiYgIWV4ZWMuaGFkRXhj
ZXB0aW9uKCkgJiYgdXJsRmlsdGVyQ2FzZVZhbHVlLmlzQm9vbGVhbigpKQogICAgICAgICB0cmln
Z2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9IHVybEZpbHRlckNhc2VWYWx1ZS50b0Jvb2xl
YW4oJmV4ZWMpOwogCi0gICAgSlNWYWx1ZSByZXNvdXJjZVR5cGVWYWx1ZSA9IHRyaWdnZXJPYmpl
Y3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAicmVzb3VyY2UtdHlwZSIpKTsKKyAgICBK
U1ZhbHVlIHJlc291cmNlVHlwZVZhbHVlID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJyZXNvdXJjZS10eXBlIikpOwogICAgIGlmIChyZXNv
dXJjZVR5cGVWYWx1ZSAmJiAhZXhlYy5oYWRFeGNlcHRpb24oKSAmJiAhZ2V0VHlwZUZsYWdzKGV4
ZWMsIHJlc291cmNlVHlwZVZhbHVlLCB0cmlnZ2VyLmZsYWdzLCByZWFkUmVzb3VyY2VUeXBlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIEpTVmFsdWUgbG9hZFR5cGVWYWx1ZSA9
IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAibG9hZC10eXBlIikp
OworICAgIEpTVmFsdWUgbG9hZFR5cGVWYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAibG9hZC10eXBlIikpOwogICAgIGlmIChsb2Fk
VHlwZVZhbHVlICYmICFleGVjLmhhZEV4Y2VwdGlvbigpICYmICFnZXRUeXBlRmxhZ3MoZXhlYywg
bG9hZFR5cGVWYWx1ZSwgdHJpZ2dlci5mbGFncywgcmVhZExvYWRUeXBlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xMTYsMTMgKzExNiwxMyBAQCBzdGF0aWMgYm9vbCBsb2FkVHJpZ2dl
cihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2JqZWN0LCBUcmlnZ2VyJiB0cmlnZ2Vy
KQogCiBzdGF0aWMgYm9vbCBsb2FkQWN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1
bGVPYmplY3QsIEFjdGlvbiYgYWN0aW9uKQogewotICAgIEpTVmFsdWUgYWN0aW9uT2JqZWN0ID0g
cnVsZU9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJhY3Rpb24iKSk7CisgICAg
SlNWYWx1ZSBhY3Rpb25PYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmZXhlYywgImFjdGlvbiIpKTsKICAgICBpZiAoIWFjdGlvbk9iamVjdCB8fCBl
eGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFhY3Rpb25PYmplY3QuaXNPYmplY3QoKSkgewogICAgICAg
ICBXVEZMb2dBbHdheXMoIkludmFsaWQgYWN0aW9uIG9iamVjdC4iKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIEpTVmFsdWUgdHlwZU9iamVjdCA9IGFjdGlvbk9iamVjdC5n
ZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ0eXBlIikpOworICAgIEpTVmFsdWUgdHlwZU9i
amVjdCA9IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4
ZWMsICJ0eXBlIikpOwogICAgIGlmICghdHlwZU9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigp
IHx8ICF0eXBlT2JqZWN0LmlzU3RyaW5nKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZh
bGlkIHVybC1maWx0ZXIgb2JqZWN0LiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzcs
NyArMTM3LDcgQEAgc3RhdGljIGJvb2wgbG9hZEFjdGlvbihFeGVjU3RhdGUmIGV4ZWMsIEpTT2Jq
ZWN0JiBydWxlT2JqZWN0LCBBY3Rpb24mIGFjdGlvbikKICAgICBlbHNlIGlmIChhY3Rpb25UeXBl
ID09ICJibG9jay1jb29raWVzIikKICAgICAgICAgYWN0aW9uID0gQWN0aW9uVHlwZTo6QmxvY2tD
b29raWVzOwogICAgIGVsc2UgaWYgKGFjdGlvblR5cGUgPT0gImNzcy1kaXNwbGF5LW5vbmUiKSB7
Ci0gICAgICAgIEpTVmFsdWUgc2VsZWN0b3IgPSBhY3Rpb25PYmplY3QuZ2V0KCZleGVjLCBJZGVu
dGlmaWVyKCZleGVjLCAic2VsZWN0b3IiKSk7CisgICAgICAgIEpTVmFsdWUgc2VsZWN0b3IgPSBh
Y3Rpb25PYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAic2Vs
ZWN0b3IiKSk7CiAgICAgICAgIGlmICghc2VsZWN0b3IgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8
fCAhc2VsZWN0b3IuaXNTdHJpbmcoKSkgewogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJjc3Mt
ZGlzcGxheS1ub25lIGFjdGlvbiB0eXBlIHJlcXVpcmVzIGEgc2VsZWN0b3IiKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IDQyMjVjZmYwZWRmNGUwMDE4OTg4MTBiODQ3MTdlZjIyZTgwZWE0MmMuLjZmYjIwOTU5
ZTUwMjJjNDMzYmFmODJhZDdkNzg5N2FhOGU0MWFkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzY1OSw3ICszNjU5LDcgQEAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBjb250cm9sbGVySlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxP
YmplY3QmIGcKICAgICBpZiAoIW1lZGlhSlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm4g
SlNDOjpqc051bGwoKTsKICAgICAKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbHNIb3N0KCZl
eGVjLnZtKCksICJjb250cm9sc0hvc3QiKTsKKyAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbHNI
b3N0ID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLnZtKCksICJjb250cm9sc0hv
c3QiKTsKICAgICBKU0M6OkpTVmFsdWUgY29udHJvbHNIb3N0SlNXcmFwcGVyID0gbWVkaWFKU1dy
YXBwZXJPYmplY3QtPmdldCgmZXhlYywgY29udHJvbHNIb3N0KTsKICAgICBpZiAoZXhlYy5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CkBAIC0zNjY4LDcgKzM2
NjgsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJKU1ZhbHVlKEpTQzo6RXhlY1N0
YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCYgZwogICAgIGlmICghY29udHJvbHNIb3N0SlNX
cmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIAotICAgIEpTQzo6
SWRlbnRpZmllciBjb250cm9sbGVySUQoJmV4ZWMudm0oKSwgImNvbnRyb2xsZXIiKTsKKyAgICBK
U0M6OklkZW50aWZpZXIgY29udHJvbGxlcklEID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZleGVjLnZtKCksICJjb250cm9sbGVyIik7CiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJK
U1dyYXBwZXIgPSBjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QtPmdldCgmZXhlYywgY29udHJv
bGxlcklEKTsKICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
Qzo6anNOdWxsKCk7CkBAIC0zNzEwLDcgKzM3MTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZUNhcHRpb25Db250YWluZXIoKQogICAgIC8vICAgICBOb25lCiAgICAgLy8gUmV0dXJu
IHZhbHVlOgogICAgIC8vICAgICBOb25lCi0gICAgSlNDOjpKU1ZhbHVlIG1ldGhvZFZhbHVlID0g
Y29udHJvbGxlck9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAidXBkYXRl
Q2FwdGlvbkNvbnRhaW5lciIpKTsKKyAgICBKU0M6OkpTVmFsdWUgbWV0aG9kVmFsdWUgPSBjb250
cm9sbGVyT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJ1cGRhdGVDYXB0aW9uQ29udGFpbmVyIikpOwogICAgIEpTQzo6SlNPYmplY3QqIG1ldGhvZE9i
amVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4obWV0aG9kVmFsdWUpOwog
ICAgIGlmICghbWV0aG9kT2JqZWN0KQogICAgICAgICByZXR1cm47CkBAIC01ODUxLDcgKzU4NTEs
NyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNj
cmlwdCgpCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCi0gICAgSlNDOjpKU1Zh
bHVlIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZp
ZXIoZXhlYywgImNyZWF0ZUNvbnRyb2xzIikpOworICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvblZh
bHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKICAgICBpZiAoZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0
aW9uKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01ODc0LDcgKzU4NzQsNyBAQCBzdGF0
aWMgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JQcm9wZXJ0eShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU1ZhbHVlIGNvbnRybwogewogICAgIEpTQzo6UHV0UHJvcGVydHlTbG90IHByb3BlcnR5
U2xvdChjb250cm9sbGVyVmFsdWUpOwogICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xsZXJPYmpl
Y3QgPSBjb250cm9sbGVyVmFsdWUudG9PYmplY3QoZXhlYyk7Ci0gICAgY29udHJvbGxlck9iamVj
dC0+bWV0aG9kVGFibGUoKS0+cHV0KGNvbnRyb2xsZXJPYmplY3QsIGV4ZWMsIEpTQzo6SWRlbnRp
ZmllcihleGVjLCAicGFnZVNjYWxlRmFjdG9yIiksIEpTQzo6anNOdW1iZXIocGFnZVNjYWxlRmFj
dG9yKSwgcHJvcGVydHlTbG90KTsKKyAgICBjb250cm9sbGVyT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5wdXQoY29udHJvbGxlck9iamVjdCwgZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJwYWdlU2NhbGVGYWN0b3IiKSwgSlNDOjpqc051bWJlcihwYWdlU2NhbGVGYWN0b3Ip
LCBwcm9wZXJ0eVNsb3QpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJB
Z2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKQEAgLTU5MDMsNyArNTkwMyw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290
KiByb290KQogICAgIC8vIFJldHVybiB2YWx1ZToKICAgICAvLyAgICAgQSByZWZlcmVuY2UgdG8g
dGhlIGNyZWF0ZWQgbWVkaWEgY29udHJvbGxlciBpbnN0YW5jZS4KIAotICAgIEpTQzo6SlNWYWx1
ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVy
KGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKKyAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb25WYWx1
ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CiAgICAgaWYgKGZ1bmN0aW9uVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01OTMyLDcgKzU5MzIsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCog
cm9vdCkKIAogICAgIC8vIENvbm5lY3QgdGhlIE1lZGlhLCBNZWRpYUNvbnRyb2xsZXJIb3N0LCBh
bmQgQ29udHJvbGxlciBzbyB0aGUgR0Mga25vd3MgYWJvdXQgdGhlaXIgcmVsYXRpb25zaGlwCiAg
ICAgSlNDOjpKU09iamVjdCogbWVkaWFKU1dyYXBwZXJPYmplY3QgPSBtZWRpYUpTV3JhcHBlci50
b09iamVjdChleGVjKTsKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbHNIb3N0KCZleGVjLT52
bSgpLCAiY29udHJvbHNIb3N0Iik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xzSG9zdCA9
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwgImNvbnRyb2xzSG9zdCIp
OwogICAgIAogICAgIEFTU0VSVCghbWVkaWFKU1dyYXBwZXJPYmplY3QtPmhhc1Byb3BlcnR5KGV4
ZWMsIGNvbnRyb2xzSG9zdCkpOwogCkBAIC01OTQyLDcgKzU5NDIsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKICAg
ICBpZiAoIW1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXIoJmV4ZWMtPnZtKCksICJjb250
cm9sbGVyIik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXIgPSBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksICJjb250cm9sbGVyIik7CiAKICAgICBBU1NFUlQo
IWNvbnRyb2xsZXJPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGNvbnRyb2xsZXIpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggNzQz
ZTk5NjRiNTk4NjYxMDQxZWYzZjQ4NjI0MTUyNjYyOWEzY2U0MS4uODNmMWI3ZTYwZTczMTkzYWVk
MDFjMTdmNTE0YWUwYjVkOTAwYzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3Qp
CiAgICAgYXJnTGlzdC5hcHBlbmQoSlNDOjpqc0Jvb2xlYW4oIW1fc25hcHNob3RJbWFnZSkpOwog
CiAgICAgLy8gSXQgaXMgZXhwZWN0ZWQgdGhlIEpTIGZpbGUgcHJvdmlkZXMgYSBjcmVhdGVPdmVy
bGF5KHNoYWRvd1Jvb3QsIHRpdGxlLCBzdWJ0aXRsZSkgZnVuY3Rpb24uCi0gICAgSlNDOjpKU09i
amVjdCogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihl
eGVjLCAiY3JlYXRlT3ZlcmxheSIpKS50b09iamVjdChleGVjKTsKKyAgICBKU0M6OkpTT2JqZWN0
KiBvdmVybGF5ID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJjcmVhdGVPdmVybGF5IikpLnRvT2JqZWN0KGV4ZWMpOwogICAgIEpTQzo6
Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IG92ZXJsYXkt
Pm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG92ZXJsYXksIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZU5vbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggMDJlM2Y0OWVmN2M4MWZmOGE3MDQz
MTg0YjY0MGMwNThlNmY2ZDY5Ny4uYjUyZDFlNjJhNTY2Yjk5NmRjZDkyYWM5NGQ0YTMwZjI0NmJi
YzhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBw
b3J0LmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIGluamVjdEludGVybmFsc09iamVjdChKU0Nv
bnRleHRSZWYgY29udGV4dCkKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsK
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2xvYmFsT2JqZWN0
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKGlzPERvY3VtZW50Pigqc2NyaXB0
Q29udGV4dCkpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXIoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0Q29udGV4
dCkpKSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oc2Ny
aXB0Q29udGV4dCkpKSk7CiB9CiAKIHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0
UmVmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4IDljZDY1NWM5ZjcxMDUzNWE5
ZGYyYWY0NTdkNzA0NDZhNmQ5YjZlNjcuLjM0NDFlNGZiMTM3OGQ5Mzg3NTY0NTZlYjk1OWQ1ZGZk
MTFmOGJiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC02MjcsNyArNjI3LDcgQEAgc3Rh
dGljIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKElkZW50aWZpZXJSZXAq
IGlkZW50aWZpZXIpCiAgICAgQVNTRVJUKGlkZW50aWZpZXItPmlzU3RyaW5nKCkpOwogICAKICAg
ICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmcoKTsgICAgCi0gICAgcmV0dXJu
IElkZW50aWZpZXIoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBTdHJpbmc6OmZyb21VVEY4V2l0
aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKTsKKyAgICByZXR1cm4gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVURjhX
aXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpOwogfQogCiBrZXJuX3JldHVybl90
IFdLUENJbnZva2UobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQsIHVp
bnQzMl90IHJlcXVlc3RJRCwgdWludDMyX3Qgb2JqZWN0SUQsIHVpbnQ2NF90IHNlcnZlcklkZW50
aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggY2FkZTllMWU5ZmRmN2I2
ZjY0MTA4NWRiNDcwM2FiODQzMzg1M2E2ZC4uM2I5OGZkNGU4NzNkMDBmMTc4ZmE5NDg5NTlmYTQ4
MWViODExZmQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTIzMSw3ICsx
MjMxLDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSh1aW50
MzJfdCBvYmplY3RJRCwgZGF0YV90JiByZXN1bHREYXQKICAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKICAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZTo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXkqPiBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVz
LnNpemUoKTsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
UHJveHlJbnN0YW5jZS5tbQppbmRleCAwZGYwZGVjMGMyNDc4ZjBmYjFmZTg4YzY0ODkzMGIyYWE4
MmYwZjAyLi43NTFiMTZhZGNiMDNlYTllM2M5NjEzOTBjYWM0ZWE4NDNiYTBkZDBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAg
LTMyMSw3ICszMjEsNyBAQCB2b2lkIFByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgbmFtZUFycgogCiAgICAgICAgIGlmIChp
ZGVudGlmaWVyLT5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBzdHIgPSBp
ZGVudGlmaWVyLT5zdHJpbmcoKTsKLSAgICAgICAgICAgIG5hbWVBcnJheS5hZGQoSWRlbnRpZmll
cigmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFs
bGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpKTsKKyAgICAgICAgICAgIG5hbWVBcnJheS5hZGQoSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJv
bVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpKTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBuYW1lQXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRl
bnRpZmllci0+bnVtYmVyKCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggMWNlZDI5
M2ViOGNjYzc3ZDM3MDliOWJkMzk4MDhjYzM5ODEyNzM3Ny4uZmRiZTgxYThlMGJlOTc2OTQ5OWFj
OWIyZDNlMGZhMzFkYmI1NTgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtNDA3LDcgKzQwNyw3
IEBAIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBzdHJp
bmcgPSBpZGVudGlmaWVyUmVwLT5zdHJpbmcoKTsKICAgICAgICAgICAgIGludCBsZW5ndGggPSBz
dHJsZW4oc3RyaW5nKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWRlbnRpZmllciA9IElk
ZW50aWZpZXIoZXhlYywgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcs
IGxlbmd0aCkuaW1wbCgpKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5n
LCBsZW5ndGgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBpZGVudGlmaWVyID0gSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2Jq
ZWN0LmNwcAppbmRleCAwZDE2Njc0ZTVjMTVmNDcxNzE4NTQzZDI1Y2E0ZjMxMDljMDUyZDIyLi5h
NjVjODkzM2ZjZTBjYjgwYmQwOTZjNzY0NzY4YzAyYzEwOGZjMDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3Qu
Y3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tSWRl
bnRpZmllclJlcChFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXJSZXAqIGlkCiAgICAgY29uc3Qg
Y2hhciogc3RyaW5nID0gaWRlbnRpZmllclJlcC0+c3RyaW5nKCk7CiAgICAgaW50IGxlbmd0aCA9
IHN0cmxlbihzdHJpbmcpOwogCi0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpm
cm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkuaW1wbCgpKTsKKyAgICBy
ZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKSk7CiB9CiAKIGJvb2wgTlBKU09iamVjdDo6aGFz
TWV0aG9kKE5QSWRlbnRpZmllciBtZXRob2ROYW1lKQpAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wg
TlBKU09iamVjdDo6ZW51bWVyYXRlKE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXJzLCB1aW50MzJf
dCogaWRlbnRpZmllckNvdW50CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKICAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG1fanNPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVjdC5nZXQoKSwgZXhlYywgcHJv
cGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgbV9qc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OwogCiAgICAgTlBJZGVudGlmaWVyKiBuYW1lSWRlbnRpZmllcnMgPSBucG5NZW1OZXdBcnJheTxO
UElkZW50aWZpZXI+KHByb3BlcnR5TmFtZXMuc2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIyNWUzNGNhMDc1
Yjk5MDUwNzI1ZGU2OGQyYWVkYjhmZmU3ZDM2OGEuLjUyNzdmOGVmZGJlMmY4ZWMzNTRmMTVhN2Mz
ZTI3MmRhZGZhZmM3OGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMy0yMiAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICoganMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVy
dHlOYW1lcy5qczoKKwogMjAxNS0wMy0yMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHRoZSBwcmVmaXggZm9yIENTUyBUcmFuc2Zvcm1zCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50
eHQKaW5kZXggZmZjNjkzMDA1MGI2YmRhNjJjNTNiNTA2MTIyNzVkNDg5ODMxYWQ4NS4uNjhiNzVl
NWEyNzZlM2E5MGU5Mjk3YjVkZTg0YjE1MmYzNjRhZGUxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dApAQCAtNDAs
NyArNDAsNyBAQCBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZGVjb2RlVVJJKSBpcyBb
J2xlbmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhkZWNvZGVV
UklDb21wb25lbnQpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKGVuY29kZVVSSSkgaXMgWydsZW5ndGgnLCAnbmFtZSddCiBQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoZW5jb2RlVVJJQ29tcG9uZW50KSBpcyBbJ2xlbmd0aCcsICduYW1l
J10KLVBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QpIGlzIFsnY3JlYXRlJywg
J2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blBy
b3BlcnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgJ2dldFByb3RvdHlwZU9m
JywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0
aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10KK1BB
U1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QpIGlzIFsnY3JlYXRlJywgJ2RlZmlu
ZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5
RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgJ2dldE93blByb3BlcnR5U3ltYm9s
cycsICdnZXRQcm90b3R5cGVPZicsICdpc0V4dGVuc2libGUnLCAnaXNGcm96ZW4nLCAnaXNTZWFs
ZWQnLCAna2V5cycsICdsZW5ndGgnLCAnbmFtZScsICdwcmV2ZW50RXh0ZW5zaW9ucycsICdwcm90
b3R5cGUnLCAnc2VhbCddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnBy
b3RvdHlwZSkgaXMgWydfX2RlZmluZUdldHRlcl9fJywgJ19fZGVmaW5lU2V0dGVyX18nLCAnX19s
b29rdXBHZXR0ZXJfXycsICdfX2xvb2t1cFNldHRlcl9fJywgJ19fcHJvdG9fXycsICdjb25zdHJ1
Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVt
ZXJhYmxlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXQogUEFTUyBn
ZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0aW9uKSBpcyBbJ2xlbmd0aCcsICduYW1lJywg
J3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRnVuY3Rpb24ucHJv
dG90eXBlKSBpcyBbJ2FwcGx5JywgJ2JpbmQnLCAnY2FsbCcsICdjb25zdHJ1Y3RvcicsICdsZW5n
dGgnLCAnbmFtZScsICd0b1N0cmluZyddCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMgYi9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKaW5kZXggYjQyNGIwNWU0
ZDgzYzJhOWE2YmFlMmE5ZDM0YjM0M2VlNjA5ODExNC4uZmJkNjVkZDNhYzk3Y2Q4YTdkMGVkYWM0
MzlmZWQ3ZDc4M2UwMTBkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwpAQCAtNDgsNyArNDgsNyBAQAog
ICAgICJlbmNvZGVVUkkiOiAiWydsZW5ndGgnLCAnbmFtZSddIiwKICAgICAiZW5jb2RlVVJJQ29t
cG9uZW50IjogIlsnbGVuZ3RoJywgJ25hbWUnXSIsCiAvLyBCdWlsdC1pbiBFQ01BIG9iamVjdHMK
LSAgICAiT2JqZWN0IjogIlsnY3JlYXRlJywgJ2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJv
cGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9w
ZXJ0eU5hbWVzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbics
ICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25z
JywgJ3Byb3RvdHlwZScsICdzZWFsJ10iLAorICAgICJPYmplY3QiOiAiWydjcmVhdGUnLCAnZGVm
aW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0T3duUHJvcGVydHlTeW1i
b2xzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1Nl
YWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3By
b3RvdHlwZScsICdzZWFsJ10iLAogICAgICJPYmplY3QucHJvdG90eXBlIjogIlsnX19kZWZpbmVH
ZXR0ZXJfXycsICdfX2RlZmluZVNldHRlcl9fJywgJ19fbG9va3VwR2V0dGVyX18nLCAnX19sb29r
dXBTZXR0ZXJfXycsICdfX3Byb3RvX18nLCAnY29uc3RydWN0b3InLCAnaGFzT3duUHJvcGVydHkn
LCAnaXNQcm90b3R5cGVPZicsICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICd0b0xvY2FsZVN0cmlu
ZycsICd0b1N0cmluZycsICd2YWx1ZU9mJ10iLAogICAgICJGdW5jdGlvbiI6ICJbJ2xlbmd0aCcs
ICduYW1lJywgJ3Byb3RvdHlwZSddIiwKICAgICAiRnVuY3Rpb24ucHJvdG90eXBlIjogIlsnYXBw
bHknLCAnYmluZCcsICdjYWxsJywgJ2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICduYW1lJywgJ3Rv
U3RyaW5nJ10iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250032</attachid>
            <date>2015-04-02 19:59:29 -0700</date>
            <delta_ts>2015-04-03 11:21:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141106-20150403115843.patch</filename>
            <type>text/plain</type>
            <size>36777</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWQ5YWMyZTI3MDM0YWJkOGZmYTM2MTUzMjdjODZiZDc4MTlmYjRkLi44MDcwNmI1MWVmMTZkODRi
ZDdkMDYxNmZjZWY2ODNjYTg5ZTkyMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxNS0wNC0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEw
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyBgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc2AuCisgICAgICAg
IE9uZSB0ZWNobmljYWwgaXNzdWUgaXMgdGhhdCwgc2luY2Ugd2UgdXNlIHByaXZhdGUgc3ltYm9s
cyAoc3VjaCBhcyBgQE9iamVjdGApIGluIHRoZQorICAgICAgICBwcml2aWxlZ2VkIEpTIGNvZGUg
aW4gYGJ1aWx0aW5zL2AsIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgorICAgICAgICBUbyBk
aXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIHVzdWFsIHN5bWJvbHMsIGNoZWNraW5nIHRoZSB0YXJn
ZXQgYFN0cmluZ0ltcGwqYCBpcyBhIG5vdCBwcml2YXRlIG5hbWUKKyAgICAgICAgYmVmb3JlIGFk
ZGluZyBpdCBpbnRvIFByb3BlcnR5TmFtZUFycmF5LgorCisgICAgICAgIFRvIGNoZWNrIHRoZSB0
YXJnZXQgYFN0cmluZ0ltcGwqYCBpcyBhIHByaXZhdGUgbmFtZSwgd2UgbGV2ZXJhZ2UgcHJpdmF0
ZVRvUHVibGljIG1hcCBpbiBgQnVpbHRpbk5hbWVzYAorICAgICAgICBzaW5jZSBhbGwgcHJpdmF0
ZSBzeW1ib2xzIGFyZSBoZWxkIGluIHRoaXMgbWFwLgorCisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OmlzUHJpdmF0ZU5hbWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25J
ZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmg6CisgICAgICAg
IChKU0M6OkVudW1lcmF0aW9uTW9kZTo6RW51bWVyYXRpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6
RW51bWVyYXRpb25Nb2RlOjppbmNsdWRlU3ltYm9sUHJvcGVydGllcyk6CisgICAgICAgICogcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVk
VmFyaWFibGVFcnJvcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1l
bnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5
bWJvbHMpOgorICAgICAgICAoSlNDOjpkZWZpbmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6
b2JqZWN0Q29uc3RydWN0b3JTZWFsKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JG
cmVlemUpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbik6CisgICAgICAgICogcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLXBlcmZvcm0tdG8tb2JqZWN0
LmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbXBhcmUpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9v
YmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvcklu
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qczogQWRk
ZWQuCisgICAgICAgICh0ZXN0U3ltYm9sKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9s
LXNlYWwtYW5kLWZyZWV6ZS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL3N5bWJv
bC13aXRoLWpzb24uanM6IEFkZGVkLgorCiAyMDE1LTA0LTAyICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgSmF2YVNjcmlwdENvcmUgQVBJIHNob3VsZCBzdXBw
b3J0IHR5cGUgY2hlY2tpbmcgZm9yIEFycmF5IGFuZCBEYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IGNiMzA2
MDg1MjhhZTQ0N2Y4MmNiMzkzMDlhMDQzOTkxZGUwMDk3NTEuLjBiOTYyN2IzNzBmZmM2OThmMzli
ZGIyZTdkYTM5ODA3NTc5ZTJhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0
YWJsZUludGVybmFsKGNvbnN0IFMKICAgICAgICAgCiAgICAgICAgIGlmIChjbG9zZWRWYXJpYWJs
ZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuaW1wbCgpKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsb3NlZFZhcmlhYmxlLT5p
c1N5bWJvbCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV92bS5wcm9wZXJ0eU5hbWVzLT5p
c1ByaXZhdGVOYW1lKGNsb3NlZFZhcmlhYmxlLmdldCgpKSk7CiAgICAgfQogICAgIGJvZHktPm92
ZXJyaWRlTmFtZShuYW1lKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwg
c291cmNlLCBib2R5LCBraW5kLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA3YjQ3ODNhMWYw
MTJlMWMyM2YwYWE4MWJiZjVmNjE3ZjNjZWIwMWM1Li44Njg0NzdiMWQ2NTA1M2UyNmIyOGMwM2Y2
YzQxOTZjYzVhOGZlNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCkBAIC02NCw2ICs2NCw4IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAg
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9M
KElOSVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAgICAgfQogCisgICAgYm9vbCBp
c1ByaXZhdGVOYW1lKFN0cmluZ0ltcGwqIHVpZCkgY29uc3Q7CisgICAgYm9vbCBpc1ByaXZhdGVO
YW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgY29uc3QgSWRlbnRpZmll
ciYgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgCkBAIC04OCw2
ICs5MCwxOCBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewogI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJ
Tl9TWU1CT0xTCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUgogCitpbmxp
bmUgYm9vbCBCdWlsdGluTmFtZXM6OmlzUHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCogdWlkKSBjb25z
dAoreworICAgIGlmICghdWlkLT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZVRvUHVibGljTWFwLmZpbmQodWlkKSAhPSBtX3ByaXZhdGVUb1B1
YmxpY01hcC5lbmQoKTsKK30KKworaW5saW5lIGJvb2wgQnVpbHRpbk5hbWVzOjppc1ByaXZhdGVO
YW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworICAgIHJldHVybiBpc1ByaXZh
dGVOYW1lKGlkZW50LmltcGwoKSk7Cit9CisKIGlubGluZSBjb25zdCBJZGVudGlmaWVyKiBCdWls
dGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAog
ewogICAgIGF1dG8gaXRlciA9IG1fcHVibGljVG9Qcml2YXRlTWFwLmZpbmQoaWRlbnQuaW1wbCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcAppbmRleCAwYjI4ZDVjODc5NjY2Y2IxNTNiMzhiMzg3ZWY3ZjEwN2M1YmU4MGJjLi5h
NmQxOTFlNjVkNTM3ZTllMzAxNWZiZGZmOTliZDkxNDkwMGIwZGNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC01MSw2
ICs1MSwxNiBAQAogewogfQogCitib29sIENvbW1vbklkZW50aWZpZXJzOjppc1ByaXZhdGVOYW1l
KFN0cmluZ0ltcGwqIHVpZCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmlz
UHJpdmF0ZU5hbWUodWlkKTsKK30KKworYm9vbCBDb21tb25JZGVudGlmaWVyczo6aXNQcml2YXRl
TmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWls
dGluTmFtZXMtPmlzUHJpdmF0ZU5hbWUoaWRlbnQpOworfQorCiBjb25zdCBJZGVudGlmaWVyKiBD
b21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5nZXRQcml2YXRlTmFtZShpZGVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAppbmRleCAzOWJkZTU1NTg5NjY4MDg1OWE5MTEyOWM2ZmU4ZTkyZjRlZjg0OTI5Li4yZGQ1
ODJhZTQ0OTE2MmRlNmE0Zjg3MmI0MWFiZWE2M2U3ODE5Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTMwMiw2ICszMDIs
OSBAQAogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tO
T1dOX1NZTUJPTChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1C
T0xfR0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tO
T1dOX1NZTUJPTF9HTE9CQUwKIAorICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoU3RyaW5nSW1w
bCogdWlkKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImKSBjb25zdDsKKwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShj
b25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFt
ZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0VudW1lcmF0aW9uTW9kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKaW5kZXggYzBjZjM4MGQ5OGI5ZDU3YmVk
YjBhOTc3MTFiYjVhMzE1NjUxOTU1Zi4uM2U5NWVkMzJmNmI0ZDEyMDE0NjkwMzQ0MDhmNjNhYjUw
YmZlNjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVy
YXRpb25Nb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW51bWVyYXRp
b25Nb2RlLmgKQEAgLTMzLDYgKzMzLDExIEBAIGVudW0gY2xhc3MgRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZSB7CiAgICAgRXhjbHVkZQogfTsKIAorZW51bSBjbGFzcyBTeW1ib2xQcm9wZXJ0aWVzTW9k
ZSB7CisgICAgSW5jbHVkZSwKKyAgICBFeGNsdWRlCit9OworCiBlbnVtIGNsYXNzIEpTT2JqZWN0
UHJvcGVydGllc01vZGUgewogICAgIEluY2x1ZGUsCiAgICAgRXhjbHVkZQpAQCAtNDAsMTQgKzQ1
LDE2IEBAIGVudW0gY2xhc3MgSlNPYmplY3RQcm9wZXJ0aWVzTW9kZSB7CiAKIGNsYXNzIEVudW1l
cmF0aW9uTW9kZSB7CiBwdWJsaWM6Ci0gICAgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVy
dGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSA9IERvbnRFbnVtUHJvcGVydGllc01vZGU6
OkV4Y2x1ZGUsIEpTT2JqZWN0UHJvcGVydGllc01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSA9
IEpTT2JqZWN0UHJvcGVydGllc01vZGU6OkluY2x1ZGUpCisgICAgRW51bWVyYXRpb25Nb2RlKERv
bnRFbnVtUHJvcGVydGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSA9IERvbnRFbnVtUHJv
cGVydGllc01vZGU6OkV4Y2x1ZGUsIFN5bWJvbFByb3BlcnRpZXNNb2RlIHN5bWJvbFByb3BlcnRp
ZXNNb2RlID0gU3ltYm9sUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIEpTT2JqZWN0UHJvcGVydGll
c01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSA9IEpTT2JqZWN0UHJvcGVydGllc01vZGU6Oklu
Y2x1ZGUpCiAgICAgICAgIDogbV9kb250RW51bVByb3BlcnRpZXNNb2RlKGRvbnRFbnVtUHJvcGVy
dGllc01vZGUpCisgICAgICAgICwgbV9zeW1ib2xQcm9wZXJ0aWVzTW9kZShzeW1ib2xQcm9wZXJ0
aWVzTW9kZSkKICAgICAgICAgLCBtX2pzT2JqZWN0UHJvcGVydGllc01vZGUoanNPYmplY3RQcm9w
ZXJ0aWVzTW9kZSkKICAgICB7CiAgICAgfQogCiAgICAgRW51bWVyYXRpb25Nb2RlKGNvbnN0IEVu
dW1lcmF0aW9uTW9kZSYgbW9kZSwgSlNPYmplY3RQcm9wZXJ0aWVzTW9kZSBqc09iamVjdFByb3Bl
cnRpZXNNb2RlKQogICAgICAgICA6IG1fZG9udEVudW1Qcm9wZXJ0aWVzTW9kZShtb2RlLm1fZG9u
dEVudW1Qcm9wZXJ0aWVzTW9kZSkKKyAgICAgICAgLCBtX3N5bWJvbFByb3BlcnRpZXNNb2RlKG1v
ZGUubV9zeW1ib2xQcm9wZXJ0aWVzTW9kZSkKICAgICAgICAgLCBtX2pzT2JqZWN0UHJvcGVydGll
c01vZGUoanNPYmplY3RQcm9wZXJ0aWVzTW9kZSkKICAgICB7CiAgICAgfQpAQCAtNTksNiArNjYs
MTEgQEAgY2xhc3MgRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgcmV0dXJuIG1fZG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSA9PSBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlOwogICAgIH0K
IAorICAgIGJvb2wgaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc3ltYm9sUHJvcGVydGllc01vZGUgPT0gU3ltYm9sUHJvcGVydGllc01vZGU6OkluY2x1
ZGU7CisgICAgfQorCiAgICAgYm9vbCBpbmNsdWRlSlNPYmplY3RQcm9wZXJ0aWVzKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2pzT2JqZWN0UHJvcGVydGllc01vZGUgPT0gSlNPYmplY3RQcm9w
ZXJ0aWVzTW9kZTo6SW5jbHVkZTsKQEAgLTY2LDYgKzc4LDcgQEAgY2xhc3MgRW51bWVyYXRpb25N
b2RlIHsKIAogcHJpdmF0ZToKICAgICBEb250RW51bVByb3BlcnRpZXNNb2RlIG1fZG9udEVudW1Q
cm9wZXJ0aWVzTW9kZTsKKyAgICBTeW1ib2xQcm9wZXJ0aWVzTW9kZSBtX3N5bWJvbFByb3BlcnRp
ZXNNb2RlOwogICAgIEpTT2JqZWN0UHJvcGVydGllc01vZGUgbV9qc09iamVjdFByb3BlcnRpZXNN
b2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcAppbmRleCAxMGZhOTMwZGIxNDU2ZjU3N2E4MjE4MGFlYmVmNGU4YzFhNWQ4
MTMwLi4xMWVjYzUzZDhkYzMxZWQ1YmJiMTBjODA1ODE1NGI1OTZhNTNjOTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAt
ODIsNyArODIsNyBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gICAg
aWYgKGlkZW50LmltcGwoKS0+aXNTeW1ib2woKSkgeworICAgIGlmIChpZGVudC5pbXBsKCktPmlz
U3ltYm9sKCkgJiYgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJpdmF0ZU5hbWUoaWRlbnQpKSB7
CiAgICAgICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2
YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5z
dHJpbmcoKSkpOwogICAgICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVz
c2FnZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCmluZGV4IGQzOTYxOGFiN2VhZjU1OTc0ZGFhYzIzYjgxMzMzZWIwMDUxZWJl
NzMuLjFkNGFlZDAwMmM2YmJiM2NiYmM5ZWZiNjBiYzgwYzdlM2I3NTJmZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMyNSw3
ICszMjUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICAv
LyBDb25zdHJ1Y3RvcnMKICAgICAKLSAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3Ry
dWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25z
dHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29u
c3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1
Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJh
eVByb3RvdHlwZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggZTc5YzI5Y2YxY2I4ZjIxM2U5NGJj
OTcwNmYxMTk5ZmM3YmQ0MTI2ZS4uZWE5OTQ3Zjc4YWJiMzkxM2M1ZjNhYWE3NzA2MzE2MmVhZGE4
YWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSlNMZXhpY2FsRW52
aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIXRoaXNP
YmplY3QtPmlzVmFsaWQoaXQtPnZhbHVlLnNjb3BlT2Zmc2V0KCkpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzU3ltYm9sKCkpCisgICAgICAg
ICAgICBpZiAoaXQtPmtleS0+aXNTeW1ib2woKSAmJiAhbW9kZS5pbmNsdWRlU3ltYm9sUHJvcGVy
dGllcygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKaW5kZXggMTQxMTVkOWYzYjNhNTFkMTFkMDhlMTk5MjhkOGZmM2Q3ZDc1
ZTMyMy4uYzA4ZmY1OTQ4N2JmOGRlNzI3Y2FhZTZhNTgzOWEyNGM4OGZlNDVmZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHAKQEAgLTYxLDEwICs2MSwxMSBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdAogICAgICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xv
Y2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0
LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6
TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tl
cik7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzU3ltYm9s
KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoIShpdC0+dmFs
dWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IG1vZGUuaW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcygpKQorICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAm
IERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpICYmICFtb2RlLmluY2x1ZGVTeW1ib2xQ
cm9wZXJ0aWVzKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaXQtPmtleS5n
ZXQoKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4
IGExMzc2MWQzOWRkNzk2Y2E0MGY2ZDlhNTc3ODU5MDVhNjE3MTE5OWEuLjUwY2EzMmJjMGFhNThh
NGViMjNlYjA1ZjJhMDNmMzE1NzNhOTdjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAog
I2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFy
cmF5LmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0
YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVm
aW5lUHJvcGVydHkoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKQEAgLTg0LDEzICs4
NiwxNiBAQAogewogfQogCi12b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQordm9pZCBPYmplY3RDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgb2JqZWN0UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsK
ICAgICAvLyBFQ01BIDE1LjIuMy4xCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29u
c3RydWN0b3IKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxl
dGUpOworCisgICAgaWYgKGdsb2JhbE9iamVjdC0+cnVudGltZUZsYWdzKCkuaXNTeW1ib2xFbmFi
bGVkKCkpCisgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImdldE93blByb3BlcnR5U3ltYm9s
cyIsIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBEb250RW51bSwgMSk7
CiB9CiAKIGJvb2wgT2JqZWN0Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCAmc2xvdCkKQEAgLTIxNiw2ICsyMjEsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRl
KiBleGUKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1i
b2xzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKKyAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVt
ZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgU3ltYm9sUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBKU0FycmF5KiBuYW1lcyA9IGNvbnN0cnVjdEVtcHR5
QXJyYXkoZXhlYywgMCk7CisgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNp
emUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykgewor
ICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydGllc1tpXS5pbXBsKCk7Cisg
ICAgICAgIGlmIChpbXBsLT5pc1N5bWJvbCgpICYmICFleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQ
cml2YXRlTmFtZShpbXBsKSkKKyAgICAgICAgICAgIG5hbWVzLT5wdXNoKGV4ZWMsIFN5bWJvbDo6
Y3JlYXRlKGV4ZWMtPnZtKCksIGltcGwpKTsKKyAgICB9CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShuYW1lcyk7Cit9CisKKy8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50
b09iamVjdChleGVjKTsKQEAgLTMzMyw3ICszNTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQog
c3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBvYmplY3QsIEpTT2JqZWN0KiBwcm9wZXJ0aWVzKQogewogICAgIFByb3BlcnR5TmFtZUFycmF5
IHByb3BlcnR5TmFtZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QocHJvcGVydGllcyktPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KHByb3BlcnRpZXMp
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUoKSk7CisgICAgYXNPYmplY3Qo
cHJvcGVydGllcyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6
OkluY2x1ZGUpKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnR5TmFtZXMuc2l6
ZSgpOwogICAgIFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0b3I+IGRlc2NyaXB0b3JzOwogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBAIC0zNTYsNyArMzc5LDEwIEBAIHN0YXRp
YyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2Jq
ZWN0LCBKU09iamVjdCogcHJvCiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzW2ldLCBkZXNjcmlwdG9yc1tpXSwgdHJ1ZSk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpICYmIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKHByb3BlcnR5TmFt
ZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3JzW2ldLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIH0KQEAgLTQwMCwxNyArNDI2LDIw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4
ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBu
YW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6SW5jbHVkZSkpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1v
ZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgU3ltYm9sUHJvcGVydGllc01vZGU6
OkluY2x1ZGUpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
cHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVy
YXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Cisg
ICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7CisgICAgICAgIGlmIChwcm9w
ZXJ0eU5hbWUuaXNTeW1ib2woKSAmJiBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRlTmFt
ZShwcm9wZXJ0eU5hbWUpKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIC8vIGEuIExl
dCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGlu
dGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRl
c2M7Ci0gICAgICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywg
Kml0ZXIsIGRlc2MpKQorICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzYykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgLy8gYi4gSWYgZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIGlzIHRydWUsIHNldCBkZXNjLltb
Q29uZmlndXJhYmxlXV0gdG8gZmFsc2UuCiAgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGZh
bHNlKTsKICAgICAgICAgLy8gYy4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVy
bmFsIG1ldGhvZCBvZiBPIHdpdGggUCwgZGVzYywgYW5kIHRydWUgYXMgYXJndW1lbnRzLgotICAg
ICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eShv
YmplY3QsIGV4ZWMsICppdGVyLCBkZXNjLCB0cnVlKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2MsIHRydWUpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7CiAgICAgfQpAQCAtNDM3LDEy
ICs0NjYsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24g
cHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhl
eGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVt
UHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51
bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIFN5bWJvbFByb3Bl
cnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikgeworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9ICppdGVyOworICAgICAg
ICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkgJiYgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlz
UHJpdmF0ZU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJv
cGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCiAgICAgICAgIFByb3BlcnR5RGVz
Y3JpcHRvciBkZXNjOwotICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGV4ZWMsICppdGVyLCBkZXNjKSkKKyAgICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2MpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIC8vIGIuIElmIElzRGF0YURlc2NyaXB0b3IoZGVzYykgaXMgdHJ1ZSwg
dGhlbgogICAgICAgICAvLyBpLiBJZiBkZXNjLltbV3JpdGFibGVdXSBpcyB0cnVlLCBzZXQgZGVz
Yy5bW1dyaXRhYmxlXV0gdG8gZmFsc2UuCkBAIC00NTEsNyArNDgzLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIC8vIGMuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0cnVlLCBzZXQgZGVz
Yy5bW0NvbmZpZ3VyYWJsZV1dIHRvIGZhbHNlLgogICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJs
ZShmYWxzZSk7CiAgICAgICAgIC8vIGQuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBp
bnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0cnVlIGFzIGFyZ3VtZW50cy4K
LSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVy
dHkob2JqZWN0LCBleGVjLCAqaXRlciwgZGVzYywgdHJ1ZSk7CisgICAgICAgIG9iamVjdC0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogICAgIH0KQEAgLTQ4
NSwxMiArNTE3LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1l
ZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVy
dGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGll
cywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIFN5bWJv
bFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVB
cnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikgeworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9ICppdGVyOwor
ICAgICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkgJiYgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmlzUHJpdmF0ZU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0
T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCiAgICAgICAgIFByb3Bl
cnR5RGVzY3JpcHRvciBkZXNjOwotICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGV4ZWMsICppdGVyLCBkZXNjKSkKKyAgICAgICAgaWYgKCFvYmplY3QtPmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2MpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIC8vIGIuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0
cnVlLCB0aGVuIHJldHVybiBmYWxzZS4KICAgICAgICAgaWYgKGRlc2MuY29uZmlndXJhYmxlKCkp
CkBAIC01MTUsMTIgKzU1MCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gRm9yIGVh
Y2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5
IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9u
TW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CisgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRl
LCBTeW1ib2xQcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVy
dHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSAq
aXRlcjsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpICYmIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKHByb3BlcnR5TmFtZSkpCisgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRo
ZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgogICAgICAg
ICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYzsKLSAgICAgICAgaWYgKCFvYmplY3QtPmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihleGVjLCAqaXRlciwgZGVzYykpCisgICAgICAgIGlmICghb2JqZWN0
LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBiLiBJZiBJc0RhdGFEZXNjcmlwdG9yKGRl
c2MpIGlzIHRydWUgdGhlbgogICAgICAgICAvLyBpLiBJZiBkZXNjLltbV3JpdGFibGVdXSBpcyB0
cnVlLCByZXR1cm4gZmFsc2UuIGMuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0cnVlLCB0
aGVuIHJldHVybiBmYWxzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5oCmluZGV4IDEyNTI3ODFhNWU4OTAwNjllYTdkOTAxMzBmZjMxZWU5
ZTkwZDM4ZDUuLmJiMDY3YjE1NTVmZTA5ODYxYmVhNDJkMTkyYWE5NmFmMzdjMzAyYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApA
QCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OwogCi0gICAgc3RhdGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCisgICAgc3Rh
dGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQ
cm90b3R5cGUpCiAgICAgewogICAgICAgICBPYmplY3RDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmplY3RDb25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IE9iamVjdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwotICAgICAgICBjb25zdHJ1Y3Rvci0+
ZmluaXNoQ3JlYXRpb24odm0sIG9iamVjdFByb3RvdHlwZSk7CisgICAgICAgIGNvbnN0cnVjdG9y
LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBvYmplY3RQcm90b3R5cGUpOwogICAg
ICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQogCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNz
IE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIH0KIAog
cHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBPYmplY3RQcm90b3R5cGUq
KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBPYmplY3RQ
cm90b3R5cGUqKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVG
bGFnczsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCmluZGV4IDRjYjAxNzczZTE3MmYxN2EyYWU2ZWRlNDMxNDdhM2QxMDA4ZDM4NjguLjU2
M2E1YjU1MDhkZWZjZTM3MTkxMzM4NzVmMjUxM2M3MTE4MzQ2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtOTM5LDcgKzkzOSw5IEBAIHZvaWQg
U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShWTSYgdm0sIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0CiAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gcHJv
cGVydHlUYWJsZSgpLT5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0
ZXIgPSBwcm9wZXJ0eVRhYmxlKCktPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAg
ICAgICAgQVNTRVJUKGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgfHwgIShpdGVyLT5hdHRy
aWJ1dGVzICYgRG9udEVudW0pKTsKLSAgICAgICAgaWYgKCFpdGVyLT5rZXktPmlzU3ltYm9sKCkg
JiYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMoKSkpIHsKKyAgICAgICAgaWYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRF
bnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgeworICAgICAgICAgICAg
aWYgKGl0ZXItPmtleS0+aXNTeW1ib2woKSAmJiAhbW9kZS5pbmNsdWRlU3ltYm9sUHJvcGVydGll
cygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGtub3duVW5p
cXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkS25vd25VbmlxdWUoaXRlci0+
a2V5KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy1wZXJmb3JtLXRv
LW9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdl
dC1vd24tcHJvcGVydHktc3ltYm9scy1wZXJmb3JtLXRvLW9iamVjdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MzFjM2ZhNDNlN2JkYzVhMWJmOGJiNGZlYjQxNjRiMWMzNGMyOWQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9w
ZXJ0eS1zeW1ib2xzLXBlcmZvcm0tdG8tb2JqZWN0LmpzCkBAIC0wLDAgKzEsMzkgQEAKK3ZhciBw
cmltaXRpdmVzID0gWworICAgIFsic3RyaW5nIiwgW11dLAorICAgIFs0MiwgW11dLAorICAgIFtT
eW1ib2woInN5bWJvbCIpLCBbXV0sCisgICAgW3RydWUsIFtdXSwKKyAgICBbZmFsc2UsIFtdXQor
XTsKKworZnVuY3Rpb24gY29tcGFyZShheCwgYngpIHsKKyAgICBpZiAoYXgubGVuZ3RoICE9PSBi
eC5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHZhciBpID0gMCwgaXog
PSBheC5sZW5ndGg7IGkgPCBpejsgKytpKSB7CisgICAgICAgIGlmIChheFtpXSAhPT0gYnhbaV0p
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citmb3IgKHZhciBbcHJpbWl0aXZlLCBleHBlY3RlZF0gb2YgcHJpbWl0aXZlcykgeworICAgIHZh
ciByZXQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHByaW1pdGl2ZSk7CisgICAgaWYg
KCFjb21wYXJlKHJldCwgZXhwZWN0ZWQpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2
YWx1ZSBmb3IgIiArIFN0cmluZyhwcmltaXRpdmUpICsgIjogIiArIFN0cmluZyhyZXQpKTsKK30K
KworWworICAgIFsgbnVsbCwgIlR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHZhbHVlKScpIiBdLAorICAgIFsg
dW5kZWZpbmVkLCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh2YWx1ZSknKSIgXQorXS5mb3JFYWNo
KGZ1bmN0aW9uIChbdmFsdWUsIG1lc3NhZ2VdKSB7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHZhbHVlKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
cikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJlcnJvciBub3QgdGhyb3duIik7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFk
IGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7Cit9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJv
cGVydHktc3ltYm9scy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGU5M2Q4YjI0NzlkZTkyYWQ5NjBlNzViNDJl
NzkxZmQ5MjVmMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzCkBAIC0wLDAgKzEs
MzUgQEAKKy8vIFRoaXMgdGVzdHMgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scy4KKwordmFy
IGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpKTsKKworLy8gcHJpdmF0ZSBuYW1l
cyBmb3IgcHJpdmlsZWdlZCBjb2RlIHNob3VsZCBub3QgYmUgZXhwb3NlZC4KK2lmIChPYmplY3Qu
Z2V0T3duUHJvcGVydHlTeW1ib2xzKGdsb2JhbCkubGVuZ3RoICE9PSAwKQorICAgIHRocm93ICJF
cnJvcjogYmFkIHZhbHVlICIgKyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGdsb2JhbCku
bGVuZ3RoOworCit2YXIgb2JqZWN0ID0ge307Cit2YXIgc3ltYm9sID0gU3ltYm9sKCJDb2NvYSIp
Oworb2JqZWN0W3N5bWJvbF0gPSAiQ2FwcHVjY2lubyI7CitpZiAoT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFs
dWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoOworaWYgKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGggIT09IDEpCisgICAgdGhy
b3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2Jq
ZWN0KS5sZW5ndGg7CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpWzBd
ICE9PSBzeW1ib2wpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIFN0cmluZyhPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdClbMF0pOworCitmdW5jdGlvbiBmb3JJbihv
YmopIHsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICAvLyBTeW1ib2wgc2hvdWxkIG5vdCBiZSBl
bnVtZXJhdGVkLgorICAgIGZvciAodmFyIGtleSBpbiBvYmopIGFycmF5LnB1c2goa2V5KTsKKyAg
ICByZXR1cm4gYXJyYXk7Cit9CisKK2lmIChmb3JJbihvYmplY3QpLmxlbmd0aCAhPT0gMCkKKyAg
ICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgZm9ySW4ob2JqZWN0KS5sZW5ndGg7CitpZiAo
T2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQg
dmFsdWUgIiArIE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoOworCitkZWxldGUgb2JqZWN0W3N5
bWJvbF07CitpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KS5sZW5ndGggIT09
IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMo
b2JqZWN0KS5sZW5ndGggIT09IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KS5sZW5ndGg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1kZWZpbmUtcHJvcGVydHku
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1kZWZpbmUtcHJv
cGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFjM2VjMDVmODA2ZTM3MjU3NzM2MjQ4MjYxOTgxNTIzMGI2
YjNkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3Mvc3ltYm9sLWRlZmluZS1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDMzIEBACisvLyBUaGlzIHRl
c3RzIE9iamVjdC5jcmVhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgT2JqZWN0LmRlZmluZVBy
b3BlcnRpZXMgd29yayB3aXRoIFN5bWJvbC4KKworZnVuY3Rpb24gdGVzdFN5bWJvbChvYmplY3Qp
IHsKKyAgICBpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IG9iamVjdCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsK
KyAgICBpZiAob2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKFN5bWJvbC5pdGVyYXRvcikpCisg
ICAgICAgIHRocm93ICJFcnJvcjogU3ltYm9sLml0ZXJhdG9yIGlzIGRlZmluZWQgYXMgZW51bWVy
YWJsZSI7CisgICAgaWYgKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAhPT0gJ3sidmFsdWUiOjQyLCJ3cml0YWJs
ZSI6ZmFsc2UsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUiOmZhbHNlfScpCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2NyaXB0b3IgIiArIEpTT04uc3RyaW5n
aWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0
b3IpKTsKKyAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0
aCAhPT0gMSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgT2JqZWN0LmdldE93blBy
b3BlcnR5U3ltYm9scyhvYmplY3QpLmxlbmd0aDsKKyAgICBpZiAoT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scyhvYmplY3QpWzBdICE9PSBTeW1ib2wuaXRlcmF0b3IpCisgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyhvYmplY3QpWzBdKTsKK30KKwordmFyIG9iamVjdCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LnBy
b3RvdHlwZSwgeworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7CisgICAgICAgIHZhbHVlOiA0Mgor
ICAgIH0KK30pOwordGVzdFN5bWJvbChvYmplY3QpOworCit2YXIgb2JqZWN0ID0gT2JqZWN0LmRl
ZmluZVByb3BlcnRpZXMoe30sIHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogeworICAgICAgICB2
YWx1ZTogNDIKKyAgICB9Cit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsKKwordmFyIG9iamVjdCA9
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgU3ltYm9sLml0ZXJhdG9yLCB7CisgICAgdmFsdWU6
IDQyCit9KTsKK3Rlc3RTeW1ib2wob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXNlYWwtYW5kLWZyZWV6ZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZjUwN2NkOWVlNTNjNTFiMmMyMTljNzI4YzRkM2M1NWVkZDc3YzVjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtc2Vh
bC1hbmQtZnJlZXplLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vIFRoaXMgdGVzdHMgT2JqZWN0LnNl
YWwgYW5kIE9iamVjdC5mcmVlemUgYWZmZWN0IG9uIFN5bWJvbCBwcm9wZXJ0aWVzLgorCit2YXIg
b2JqZWN0ID0geworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiA0MgorfTsKKworaWYgKCFvYmplY3Qu
aGFzT3duUHJvcGVydHkoU3ltYm9sLml0ZXJhdG9yKSkKKyAgICB0aHJvdyAiRXJyb3I6IG9iamVj
dCBkb2Vzbid0IGhhdmUgU3ltYm9sLml0ZXJhdG9yIjsKK2lmIChKU09OLnN0cmluZ2lmeShPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSkgIT09
ICd7InZhbHVlIjo0Miwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUiOnRydWUsImNvbmZpZ3Vy
YWJsZSI6dHJ1ZX0nKQorICAgIHRocm93ICJFcnJvcjogYmFkIHByb3BlcnR5IGRlc2NyaXB0b3Ig
IiArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0
LCBTeW1ib2wuaXRlcmF0b3IpKTsKK2lmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9i
amVjdCkubGVuZ3RoICE9PSAxKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCkubGVuZ3RoOworaWYgKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSAhPT0gU3ltYm9sLml0ZXJhdG9yKQorICAgIHRo
cm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBTdHJpbmcoT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyhvYmplY3QpWzBdKTsKKworT2JqZWN0LnNlYWwob2JqZWN0KTsKK2lmICghb2JqZWN0Lmhh
c093blByb3BlcnR5KFN5bWJvbC5pdGVyYXRvcikpCisgICAgdGhyb3cgIkVycm9yOiBvYmplY3Qg
ZG9lc24ndCBoYXZlIFN5bWJvbC5pdGVyYXRvciI7CitpZiAoSlNPTi5zdHJpbmdpZnkoT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikpICE9PSAn
eyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFi
bGUiOmZhbHNlfScpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcHJvcGVydHkgZGVzY3JpcHRvciAi
ICsgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3Qs
IFN5bWJvbC5pdGVyYXRvcikpOworCitPYmplY3QuZnJlZXplKG9iamVjdCk7CitpZiAoIW9iamVj
dC5oYXNPd25Qcm9wZXJ0eShTeW1ib2wuaXRlcmF0b3IpKQorICAgIHRocm93ICJFcnJvcjogb2Jq
ZWN0IGRvZXNuJ3QgaGF2ZSBTeW1ib2wuaXRlcmF0b3IiOworaWYgKEpTT04uc3RyaW5naWZ5KE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpKSAh
PT0gJ3sidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1lcmFibGUiOnRydWUsImNvbmZp
Z3VyYWJsZSI6ZmFsc2V9JykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBwcm9wZXJ0eSBkZXNjcmlw
dG9yICIgKyBKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
amVjdCwgU3ltYm9sLml0ZXJhdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWpzb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwM2Q1ZDVh
MTFkNDgyYWFmNjAzOGNjMGE0N2Y5NzE5YzVkOWY5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXdpdGgtanNvbi5qcwpAQCAtMCww
ICsxLDE0IEBACisvLyBUaGlzIHRlc3RzIEpTT04gY29ycmVjdGx5IGJlaGF2ZXMgd2l0aCBTeW1i
b2wuCisKK2lmIChKU09OLnN0cmluZ2lmeShTeW1ib2woJ0NvY29hJykpICE9PSB1bmRlZmluZWQp
CisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgIiArIEpTT04uc3RyaW5naWZ5KFN5bWJvbCgn
Q29jb2EnKSk7CisKK3ZhciBvYmplY3QgPSB7fTsKK3ZhciBzeW1ib2wgPSBTeW1ib2woIkNvY29h
Iik7CitvYmplY3Rbc3ltYm9sXSA9IDQyOworb2JqZWN0WydDYXBwdWNjaW5vJ10gPSA0MjsKK2lm
IChKU09OLnN0cmluZ2lmeShvYmplY3QpICE9PSAneyJDYXBwdWNjaW5vIjo0Mn0nKQorICAgIHRo
cm93ICJFcnJvcjogYmFkIHZhbHVlICIgKyBKU09OLnN0cmluZ2lmeShvYmplY3QpOworCitpZiAo
SlNPTi5zdHJpbmdpZnkob2JqZWN0LCBbIFN5bWJvbCgnQ29jb2EnKSBdKSAhPT0gInt9IikKKyAg
ICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSAiICsgSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBbIFN5
bWJvbCgnQ29jb2EnKSBdKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1YmQ2MTlkNjIyOTkxNGU5NzMyNGRmMzBkYTQxYTFl
YjY3Y2VmYWUwLi43N2FiYTk2NjY2NjkyMWNmYzRhODU2YWIyZjQ5NzI1MWQ0YWU3Nzg5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDQtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGpzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBqcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanM6CisKIDIwMTUt
MDQtMDIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTmV3
IHJ1YnkgdGVzdHMgYXJlIGZhaWxpbmcgb24gYWxsIG5vbi1NYWMgcGxhdGZvcm1zLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IGI2Mjg1ZTE3NjdmODUzZDE5Y2Y0MzQyYzUyNGE2MDEwZGNhMGJiODAuLmYxMjZk
OWI5ZjM0NTA1OTMwMmUyMjEzZjJjYzkwZGE0Y2ZmNWI2ZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKQEAgLTQw
LDcgKzQwLDcgQEAgUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKGRlY29kZVVSSSkgaXMg
WydsZW5ndGgnLCAnbmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZGVjb2Rl
VVJJQ29tcG9uZW50KSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJv
cGVydHlOYW1lcyhlbmNvZGVVUkkpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQogUEFTUyBnZXRTb3J0
ZWRPd25Qcm9wZXJ0eU5hbWVzKGVuY29kZVVSSUNvbXBvbmVudCkgaXMgWydsZW5ndGgnLCAnbmFt
ZSddCi1QQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoT2JqZWN0KSBpcyBbJ2NyZWF0ZScs
ICdkZWZpbmVQcm9wZXJ0aWVzJywgJ2RlZmluZVByb3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3InLCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRQcm90b3R5cGVP
ZicsICdpc0V4dGVuc2libGUnLCAnaXNGcm96ZW4nLCAnaXNTZWFsZWQnLCAna2V5cycsICdsZW5n
dGgnLCAnbmFtZScsICdwcmV2ZW50RXh0ZW5zaW9ucycsICdwcm90b3R5cGUnLCAnc2VhbCddCitQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoT2JqZWN0KSBpcyBbJ2NyZWF0ZScsICdkZWZp
bmVQcm9wZXJ0aWVzJywgJ2RlZmluZVByb3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3InLCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRPd25Qcm9wZXJ0eVN5bWJv
bHMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2Vh
bGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJv
dG90eXBlJywgJ3NlYWwnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5w
cm90b3R5cGUpIGlzIFsnX19kZWZpbmVHZXR0ZXJfXycsICdfX2RlZmluZVNldHRlcl9fJywgJ19f
bG9va3VwR2V0dGVyX18nLCAnX19sb29rdXBTZXR0ZXJfXycsICdfX3Byb3RvX18nLCAnY29uc3Ry
dWN0b3InLCAnaGFzT3duUHJvcGVydHknLCAnaXNQcm90b3R5cGVPZicsICdwcm9wZXJ0eUlzRW51
bWVyYWJsZScsICd0b0xvY2FsZVN0cmluZycsICd0b1N0cmluZycsICd2YWx1ZU9mJ10KIFBBU1Mg
Z2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhGdW5jdGlvbikgaXMgWydsZW5ndGgnLCAnbmFtZScs
ICdwcm90b3R5cGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0aW9uLnBy
b3RvdHlwZSkgaXMgWydhcHBseScsICdiaW5kJywgJ2NhbGwnLCAnY29uc3RydWN0b3InLCAnbGVu
Z3RoJywgJ25hbWUnLCAndG9TdHJpbmcnXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCmluZGV4IGIwYTI3MmY4
MzVjNDdhZTliNDEzZWVmNThhNDZlZTZiNmYyOTRhOWMuLjkxYmJiOGY1MGI0MzhmZWJmNjVhMDAw
YmQ2ZjBiZDQ0M2E2MTc4MTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKQEAgLTQ4LDcgKzQ4LDcgQEAK
ICAgICAiZW5jb2RlVVJJIjogIlsnbGVuZ3RoJywgJ25hbWUnXSIsCiAgICAgImVuY29kZVVSSUNv
bXBvbmVudCI6ICJbJ2xlbmd0aCcsICduYW1lJ10iLAogLy8gQnVpbHQtaW4gRUNNQSBvYmplY3Rz
Ci0gICAgIk9iamVjdCI6ICJbJ2NyZWF0ZScsICdkZWZpbmVQcm9wZXJ0aWVzJywgJ2RlZmluZVBy
b3BlcnR5JywgJ2ZyZWV6ZScsICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCAnZ2V0T3duUHJv
cGVydHlOYW1lcycsICdnZXRQcm90b3R5cGVPZicsICdpc0V4dGVuc2libGUnLCAnaXNGcm96ZW4n
LCAnaXNTZWFsZWQnLCAna2V5cycsICdsZW5ndGgnLCAnbmFtZScsICdwcmV2ZW50RXh0ZW5zaW9u
cycsICdwcm90b3R5cGUnLCAnc2VhbCddIiwKKyAgICAiT2JqZWN0IjogIlsnY3JlYXRlJywgJ2Rl
ZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3Bl
cnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgJ2dldE93blByb3BlcnR5U3lt
Ym9scycsICdnZXRQcm90b3R5cGVPZicsICdpc0V4dGVuc2libGUnLCAnaXNGcm96ZW4nLCAnaXNT
ZWFsZWQnLCAna2V5cycsICdsZW5ndGgnLCAnbmFtZScsICdwcmV2ZW50RXh0ZW5zaW9ucycsICdw
cm90b3R5cGUnLCAnc2VhbCddIiwKICAgICAiT2JqZWN0LnByb3RvdHlwZSI6ICJbJ19fZGVmaW5l
R2V0dGVyX18nLCAnX19kZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdldHRlcl9fJywgJ19fbG9v
a3VwU2V0dGVyX18nLCAnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ2hhc093blByb3BlcnR5
JywgJ2lzUHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAndG9Mb2NhbGVTdHJp
bmcnLCAndG9TdHJpbmcnLCAndmFsdWVPZiddIiwKICAgICAiRnVuY3Rpb24iOiAiWydsZW5ndGgn
LCAnbmFtZScsICdwcm90b3R5cGUnXSIsCiAgICAgIkZ1bmN0aW9uLnByb3RvdHlwZSI6ICJbJ2Fw
cGx5JywgJ2JpbmQnLCAnY2FsbCcsICdjb25zdHJ1Y3RvcicsICdsZW5ndGgnLCAnbmFtZScsICd0
b1N0cmluZyddIiwK
</data>
<flag name="review"
          id="274866"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>