<?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>79939</bug_id>
          
          <creation_ts>2012-02-29 13:28:48 -0800</creation_ts>
          <short_desc>[WIP] Implement CSS Hierarchies</short_desc>
          <delta_ts>2012-11-14 15:45:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</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>92433</dependson>
    
    <dependson>93574</dependson>
    
    <dependson>93664</dependson>
    
    <dependson>94099</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shane Stephens">shanestephens</reporter>
          <assigned_to name="Shane Stephens">shanestephens</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>divya</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eoconnor</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mike</cc>
    
    <cc>ojan</cc>
    
    <cc>paulirish</cc>
    
    <cc>peter</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>syoichi</cc>
    
    <cc>tony</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>567874</commentid>
    <comment_count>0</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-02-29 13:28:48 -0800</bug_when>
    <thetext>[WIP] Implement CSS Hierarchies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567885</commentid>
    <comment_count>1</comment_count>
      <attachid>129509</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-02-29 13:41:09 -0800</bug_when>
    <thetext>Created attachment 129509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573744</commentid>
    <comment_count>2</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-03-08 03:20:14 -0800</bug_when>
    <thetext>This CSS feature is proposed in the following Editor&apos;s Draft: http://dev.w3.org/csswg/css3-hierarchies/, and has been discussed by the CSSWG (the group is largely favorable to the idea). It&apos;s currently a WIP. I&apos;d appreciate feedback on whether this is the correct approach for a feature like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582646</commentid>
    <comment_count>3</comment_count>
      <attachid>129509</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-19 19:36:45 -0700</bug_when>
    <thetext>Comment on attachment 129509
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:8833
&gt; +        rule-&gt;styleRule()-&gt;adoptSelectorVector(*selectors, m_selectorVectorStack);

perhaps m_nestedSelectorStack would be a good alternative name.

&gt; Source/WebCore/css/CSSParser.h:268
&gt; +    Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt;* reusableSelectorVector() { return m_reusableSelectorVector; }

resusableSelectorVector -&gt; selectorVector (no longer re-usable).

&gt; Source/WebCore/css/CSSParser.h:270
&gt; +    void pushSelectorVector(bool trailingSpace)

pushNestedSelector()

&gt; Source/WebCore/css/CSSParser.h:283
&gt; +    void popSelectorVector()

popNestedSelector()

&gt; Source/WebCore/css/CSSParser.h:455
&gt; +    Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt; *m_reusableSelectorVector;

OwnPtr&lt;Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt; &gt; here.

&gt; Source/WebCore/css/CSSParserValues.cpp:109
&gt; +void CSSParserSelector::adoptSelectorVector(Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt;&amp; selectorVector, Vector&lt;Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt;* &gt;&amp; stackedSelectors)

typedef-ing Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt; CSSParserSelectorList might make some of this code more readable.

&gt; Source/WebCore/css/CSSSelector.h:34
&gt; +    class CSSSelectorListWrapper :public RefCounted&lt;CSSSelectorListWrapper&gt; {

space before public - also rename to RefcountedCSSSelectorList or similar.

&gt; Source/WebCore/css/CSSSelector.h:50
&gt; +            CSSSelectorListWrapper(CSSSelectorList* impl)

one-liner.

&gt; Source/WebCore/css/CSSSelector.h:253
&gt; +        CSSSelectorList* selectorList() const { return m_hasRareData &amp;&amp; m_data.m_rareData-&gt;m_selectorList.get() ? m_data.m_rareData-&gt;m_selectorList-&gt;get() : 0; }

Remove the first .get to make this code clearer. Second get could probably be renamed too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584899</commentid>
    <comment_count>4</comment_count>
      <attachid>133171</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-03-21 19:35:40 -0700</bug_when>
    <thetext>Created attachment 133171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584901</commentid>
    <comment_count>5</comment_count>
      <attachid>129509</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-03-21 19:38:34 -0700</bug_when>
    <thetext>Comment on attachment 129509
Patch

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

&gt;&gt; Source/WebCore/css/CSSParser.h:455
&gt;&gt; +    Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt; *m_reusableSelectorVector;
&gt; 
&gt; OwnPtr&lt;Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt; &gt; here.

Done.

&gt;&gt; Source/WebCore/css/CSSParserValues.cpp:109
&gt;&gt; +void CSSParserSelector::adoptSelectorVector(Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt;&amp; selectorVector, Vector&lt;Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt;* &gt;&amp; stackedSelectors)
&gt; 
&gt; typedef-ing Vector&lt;OwnPtr&lt;CSSParserSelector&gt; &gt; CSSParserSelectorList might make some of this code more readable.

Done.

&gt;&gt; Source/WebCore/css/CSSSelector.h:34
&gt;&gt; +    class CSSSelectorListWrapper :public RefCounted&lt;CSSSelectorListWrapper&gt; {
&gt; 
&gt; space before public - also rename to RefcountedCSSSelectorList or similar.

Done.

&gt;&gt; Source/WebCore/css/CSSSelector.h:50
&gt;&gt; +            CSSSelectorListWrapper(CSSSelectorList* impl)
&gt; 
&gt; one-liner.

Done.

&gt;&gt; Source/WebCore/css/CSSSelector.h:253
&gt;&gt; +        CSSSelectorList* selectorList() const { return m_hasRareData &amp;&amp; m_data.m_rareData-&gt;m_selectorList.get() ? m_data.m_rareData-&gt;m_selectorList-&gt;get() : 0; }
&gt; 
&gt; Remove the first .get to make this code clearer. Second get could probably be renamed too.

Done. Decided not to rename the second &apos;get&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584902</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 19:39:39 -0700</bug_when>
    <thetext>Attachment 133171 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3...&quot; exit_code: 1
Source/WebCore/css/CSSSelectorList.cpp:115:  Semicolon defining empty statement for this loop. Use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 18 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>584903</commentid>
    <comment_count>7</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-03-21 19:40:32 -0700</bug_when>
    <thetext>I think this patch might be ready for a reviewer to look at it. Style failure is due to using a 

do {
..
} while(..);

construct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584908</commentid>
    <comment_count>8</comment_count>
      <attachid>133171</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-21 19:55:55 -0700</bug_when>
    <thetext>Comment on attachment 133171
Patch

Attachment 133171 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12086752</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584971</commentid>
    <comment_count>9</comment_count>
      <attachid>133186</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-03-21 22:02:57 -0700</bug_when>
    <thetext>Created attachment 133186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584976</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 22:06:37 -0700</bug_when>
    <thetext>Attachment 133186 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3...&quot; exit_code: 1
Source/WebCore/css/CSSSelectorList.cpp:115:  Semicolon defining empty statement for this loop. Use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 18 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>593139</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-04-01 19:40:45 -0700</bug_when>
    <thetext>This absolutely needs to be reviewed by Antti before it goes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593905</commentid>
    <comment_count>12</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-04-02 15:13:04 -0700</bug_when>
    <thetext>It&apos;d be great if Antti could do a review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594798</commentid>
    <comment_count>13</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-03 13:16:25 -0700</bug_when>
    <thetext>Yeah, this is definitely for Antti.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594809</commentid>
    <comment_count>14</comment_count>
      <attachid>133186</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-03 13:21:59 -0700</bug_when>
    <thetext>Comment on attachment 133186
Patch

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

&gt; Source/WebCore/css/CSSParser.h:311
&gt; +    OwnPtr&lt;Vector&lt;CSSProperty, 256&gt; &gt; m_parsedProperties;

I&apos;m wondering is this change was really needed right now. It make the diff noisy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594929</commentid>
    <comment_count>15</comment_count>
      <attachid>133186</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-04-03 14:56:04 -0700</bug_when>
    <thetext>Comment on attachment 133186
Patch

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

&gt;&gt; Source/WebCore/css/CSSParser.h:311
&gt;&gt; +    OwnPtr&lt;Vector&lt;CSSProperty, 256&gt; &gt; m_parsedProperties;
&gt; 
&gt; I&apos;m wondering is this change was really needed right now. It make the diff noisy.

I needed to convert m_parsedProperties from an in-instance-data value to a pointer to a value, because it needs to be pushed onto and popped off m_stackedParsedProperties (see pushNestedSelector and popNestedSelector above). It seemed sensible to make it an OwnPtr&lt;Vector&lt;CSSProperty, 256&gt; &gt; instead of a naked Vector&lt;CSSProperty, 256&gt;*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606319</commentid>
    <comment_count>16</comment_count>
    <who name="Divya Manian">divya</who>
    <bug_when>2012-04-19 20:10:22 -0700</bug_when>
    <thetext>+1 for Antti&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672490</commentid>
    <comment_count>17</comment_count>
      <attachid>133186</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-07-18 10:25:04 -0700</bug_when>
    <thetext>Comment on attachment 133186
Patch

Have you considered instead creating a concept of a NestedCSSStyleRule that has a pointer to a parent rule and then having matchSelector know about parent style rules? Then you don&apos;t need to do the expanding. I think that approach would make it a ton easier to make the CSSOM bits work eventually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673033</commentid>
    <comment_count>18</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-07-18 17:54:44 -0700</bug_when>
    <thetext>Yes, I have considered this approach. I also tried to implement it, and eventually convinced myself and Dimitri Glaskov that it was not appropriate.

The issue is that different combinators or pseudo-classes have different expansion rules - e.g. 
.a .b is re-ordered to select on .b, then check for .a; whereas .a:hover selects on .a, then checks for :hover. These expansions can exist across nesting boundaries (e.g. .a { &amp; .b { ... } } and .a { &amp;:hover { ... { } }). Because nesting can be arbitrarily deep, the expansion can cause quite complex re-ordering. Furthermore, multiple re-orderings can be required for a single set of nested rules (e.g. .a { &amp; .b, &amp;:hover { &amp; .c, &amp;:active {...} } }.

Have a look at the expansion code. Essentially this logic would need to be implemented recursively in the selector matching code if we were to use a NestedCSSStyleRule + pointer approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678862</commentid>
    <comment_count>19</comment_count>
      <attachid>154542</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-07-25 22:34:15 -0700</bug_when>
    <thetext>Created attachment 154542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678866</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 22:38:01 -0700</bug_when>
    <thetext>Attachment 154542 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3...&quot; exit_code: 1
Source/WebCore/css/CSSSelectorList.cpp:136:  Semicolon defining empty statement for this loop. Use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679479</commentid>
    <comment_count>21</comment_count>
      <attachid>154542</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-26 10:26:46 -0700</bug_when>
    <thetext>Comment on attachment 154542
Patch

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

I mostly just skimmed the style in this patch.

I think getting matchSelector to work would be better in the long run, although harder to implement.  For example, you could probably avoid the exponential memory use, although it would still be slow.

&gt; Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig:42
&gt; +ENABLE_CSS_HIERARCHIES = ;

I would make a separate patch that adds the compiler flag and updates all the build systems.

&gt; Source/WebCore/css/CSSSelectorList.cpp:68
&gt; +    if (stackedSelectors.size() &gt; 0)

!stackedSelectors.isEmpty()

&gt; Source/WebCore/css/CSSSelectorList.cpp:81
&gt; +    if (flattenedSize == 1 &amp;&amp; (!stackedSelectors.size())) {

Nit: stackedSelectors.isEmpty()

&gt; Source/WebCore/css/CSSSelectorList.cpp:90
&gt; +    // Flatten the selector hierarchy into explodedSelectors. Each explodedSelectors vector is a single
&gt; +    // element from the cartesian product of the sets of selectors at each level in the hierarchy.

It seems like you could easily overflow the heap and explodedResultsSize (e.g., 64 nested hierarchies each with 2 rules).  Should we limit this somehow?

&gt; Source/WebCore/css/CSSSelectorList.cpp:93
&gt; +    for (size_t i = 0; i &lt; stackedSelectors.size(); i++)

Nit: ++i

&gt; Source/WebCore/css/CSSSelectorList.cpp:96
&gt; +    Vector&lt;OwnPtr&lt;CSSSelector&gt; &gt;* explodedSelectors = new Vector&lt;OwnPtr&lt;CSSSelector&gt; &gt;[explodedResultsSize];

Can we use an OwnArrayPtr rather than manually calling delete []?

&gt; Source/WebCore/css/CSSSelectorList.cpp:97
&gt; +    size_t* insertLocations = new size_t[explodedResultsSize];

Can we use a Vector&lt;size_t&gt; here?

&gt; Source/WebCore/css/CSSSelectorList.cpp:98
&gt; +    size_t considered = 1;

Please move this down to where it is assigned (line 109).

&gt; Source/WebCore/css/CSSSelectorList.cpp:102
&gt; +    for (size_t j = 0; j &lt; explodedResultsSize; j++) {
&gt; +        size_t i = j % selectorVector.size();

Please use more descriptive variable names than i and j.  E.g., explodedIndex and selectorIndex,.

&gt; Source/WebCore/css/CSSSelectorList.cpp:121
&gt; +    for (int i = stackedSelectors.size() - 1; i &gt;= 0; i--) {
&gt; +        CSSSelectorVector&amp; currentInStack = *(stackedSelectors[i]);
&gt; +        for (size_t j = 0; j &lt; explodedResultsSize; j++) {
&gt; +            size_t use = (j / considered) % currentInStack.size();

Please use more descriptive variable names than i, j and use.

&gt; Source/WebCore/css/CSSSelectorList.cpp:132
&gt; +                int k = 0;

Please use a better variable name than k.

&gt; Source/WebCore/css/CSSSelectorList.cpp:142
&gt; +    considered *= currentInStack.size();

Nit: Bad indent.

&gt; LayoutTests/css3/simple-hierarchies.html:97
&gt; +if (layoutTestController) {
&gt; +  layoutTestController.dumpAsText();

Nit: layoutTestController -&gt; testRunner.

Why does the expected result have a render tree dump if this is a dumpAsText test?  I would probably make this a JS test and use getComputedStyle to verify that the right style is being applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679955</commentid>
    <comment_count>22</comment_count>
      <attachid>154542</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-07-26 17:43:21 -0700</bug_when>
    <thetext>Comment on attachment 154542
Patch

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

&gt;&gt; Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig:42
&gt;&gt; +ENABLE_CSS_HIERARCHIES = ;
&gt; 
&gt; I would make a separate patch that adds the compiler flag and updates all the build systems.

Done (92433)

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:68
&gt;&gt; +    if (stackedSelectors.size() &gt; 0)
&gt; 
&gt; !stackedSelectors.isEmpty()

done

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:81
&gt;&gt; +    if (flattenedSize == 1 &amp;&amp; (!stackedSelectors.size())) {
&gt; 
&gt; Nit: stackedSelectors.isEmpty()

done

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:90
&gt;&gt; +    // element from the cartesian product of the sets of selectors at each level in the hierarchy.
&gt; 
&gt; It seems like you could easily overflow the heap and explodedResultsSize (e.g., 64 nested hierarchies each with 2 rules).  Should we limit this somehow?

I&apos;ve added a check against static const value so that we don&apos;t accumulate more than 2^16 exploded results.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:93
&gt;&gt; +    for (size_t i = 0; i &lt; stackedSelectors.size(); i++)
&gt; 
&gt; Nit: ++i

Done.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:96
&gt;&gt; +    Vector&lt;OwnPtr&lt;CSSSelector&gt; &gt;* explodedSelectors = new Vector&lt;OwnPtr&lt;CSSSelector&gt; &gt;[explodedResultsSize];
&gt; 
&gt; Can we use an OwnArrayPtr rather than manually calling delete []?

Done.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:97
&gt;&gt; +    size_t* insertLocations = new size_t[explodedResultsSize];
&gt; 
&gt; Can we use a Vector&lt;size_t&gt; here?

I ended up using an OwnArrayPtr here too, as we know the size up-front.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:98
&gt;&gt; +    size_t considered = 1;
&gt; 
&gt; Please move this down to where it is assigned (line 109).

Done.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:102
&gt;&gt; +        size_t i = j % selectorVector.size();
&gt; 
&gt; Please use more descriptive variable names than i and j.  E.g., explodedIndex and selectorIndex,.

Done.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:121
&gt;&gt; +            size_t use = (j / considered) % currentInStack.size();
&gt; 
&gt; Please use more descriptive variable names than i, j and use.

Done.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:132
&gt;&gt; +                int k = 0;
&gt; 
&gt; Please use a better variable name than k.

Done.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:136
&gt;&gt; +                while (relation == CSSSelector::SubSelector);
&gt; 
&gt; Semicolon defining empty statement for this loop. Use { } instead.  [whitespace/semicolon] [5]

What should I do about this? It&apos;s neater to use a do .. while loop, but this style error is triggered.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:142
&gt;&gt; +    considered *= currentInStack.size();
&gt; 
&gt; Nit: Bad indent.

Done.

&gt;&gt; LayoutTests/css3/simple-hierarchies.html:97
&gt;&gt; +  layoutTestController.dumpAsText();
&gt; 
&gt; Nit: layoutTestController -&gt; testRunner.
&gt; 
&gt; Why does the expected result have a render tree dump if this is a dumpAsText test?  I would probably make this a JS test and use getComputedStyle to verify that the right style is being applied.

Removed. It looks like this wasn&apos;t running because there wasn&apos;t a &lt;/script&gt;. Yuck.

WRT JS test vs how this is now - isn&apos;t this a bit cleaner as we don&apos;t rely on any JS to do the comparisons? color and bgcolor are both included in the render tree dump.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679971</commentid>
    <comment_count>23</comment_count>
      <attachid>154799</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-07-26 18:08:47 -0700</bug_when>
    <thetext>Created attachment 154799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679977</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-26 18:14:06 -0700</bug_when>
    <thetext>Attachment 154799 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3...&quot; exit_code: 1
Source/WebCore/css/CSSSelectorList.cpp:141:  Semicolon defining empty statement for this loop. Use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 20 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>680782</commentid>
    <comment_count>25</comment_count>
      <attachid>154799</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-27 10:27:53 -0700</bug_when>
    <thetext>Comment on attachment 154799
Patch

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

Some of the code changes (like typedefs for CSSSelectorVector and CSSSelectorVectorList and converting m_parsedProperties to an OwnPtr) make this diff harder to review.  You may want to move them into a separate change or revert them.

&gt; Source/WebCore/css/CSSParser.h:245
&gt; +    PassOwnPtr&lt;CSSSelectorVector &gt; sinkFloatingSelectorVector(CSSSelectorVector*);

Nit: Extra space before &gt;

&gt; Source/WebCore/css/CSSSelectorList.cpp:99
&gt; +        if (explodedResultsSize &gt; maxExplodedResults)
&gt; +            return;

Can you add a test case that hits this?

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:141
&gt;&gt; +                while (relation == CSSSelector::SubSelector);
&gt; 
&gt; Semicolon defining empty statement for this loop. Use { } instead.  [whitespace/semicolon] [5]

&quot;If any of these errors are false positives, please file a bug against check-webkit-style.&quot;  I would say that this is a false positive.

&gt; LayoutTests/css3/simple-hierarchies-expected.txt:2
&gt; +layer at (0,0) size 800x600
&gt; +  RenderView at (0,0) size 800x600

&gt; WRT JS test vs how this is now - isn&apos;t this a bit cleaner as we don&apos;t rely on any JS to do the comparisons? color and bgcolor are both included in the render tree dump.

You&apos;ll have to check in a separate rendertree output for every port and platform because text sizes aren&apos;t exactly the same.  You also will need pixel dumps for each platform.  It&apos;s harder to quickly inspect that the test is correct rather than a series of PASS/FAIL being displayed.

I think it would also be fine to have a ref-test to verify that the correct colors are being painted, but it seems like if getComputedStyle and what is painted are different, that&apos;s a bug in some other part of the code, not something you introduced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688892</commentid>
    <comment_count>26</comment_count>
      <attachid>156881</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-08-07 00:01:10 -0700</bug_when>
    <thetext>Created attachment 156881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688894</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 00:03:08 -0700</bug_when>
    <thetext>Attachment 156881 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3...&quot; exit_code: 1
Source/WebCore/css/CSSSelectorList.cpp:140:  Semicolon defining empty statement for this loop. Use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 20 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>688896</commentid>
    <comment_count>28</comment_count>
      <attachid>154799</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-08-07 00:04:43 -0700</bug_when>
    <thetext>Comment on attachment 154799
Patch

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

&gt;&gt; Source/WebCore/css/CSSParser.h:245
&gt;&gt; +    PassOwnPtr&lt;CSSSelectorVector &gt; sinkFloatingSelectorVector(CSSSelectorVector*);
&gt; 
&gt; Nit: Extra space before &gt;

Done

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:99
&gt;&gt; +            return;
&gt; 
&gt; Can you add a test case that hits this?

Done

&gt;&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:141
&gt;&gt;&gt; +                while (relation == CSSSelector::SubSelector);
&gt;&gt; 
&gt;&gt; Semicolon defining empty statement for this loop. Use { } instead.  [whitespace/semicolon] [5]
&gt; 
&gt; &quot;If any of these errors are false positives, please file a bug against check-webkit-style.&quot;  I would say that this is a false positive.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688898</commentid>
    <comment_count>29</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-08-07 00:05:40 -0700</bug_when>
    <thetext>I&apos;ve also fixed the layout test to use dumpAsText and check the computedStyle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688906</commentid>
    <comment_count>30</comment_count>
      <attachid>156881</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-07 00:20:59 -0700</bug_when>
    <thetext>Comment on attachment 156881
Patch

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

&gt; Source/WebCore/css/CSSPageRule.h:-48
&gt; -

IMHO, this line removal is unrelated to this patch.

&gt; Source/WebCore/css/CSSParser.h:315
&gt; +        StackedParsedProperties *stackHead = m_stackedParsedProperties.last();

I think this is wrong &apos;*&apos; place.

&gt; Source/WebCore/css/CSSParser.h:358
&gt; +    Vector&lt;StackedParsedProperties *&gt; m_stackedParsedProperties;

According to my quick search, WebKit coding style didn&apos;t use a space between Vector&lt;...&gt;

&gt; Source/WebCore/css/CSSSelector.h:49
&gt; +            CSSSelectorList *m_impl;

This look wrong &apos;*&apos; place.

&gt; Source/WebCore/css/CSSSelector.h:61
&gt; +        CSSSelector(CSSSelector* copy);

It looks *explicit* is missing.

&gt; Source/WebCore/css/CSSSelectorList.cpp:27
&gt; +

IMHO, this is unneeded line.

&gt; LayoutTests/platform/qt/TestExpectations:87
&gt; +BUGWK79939 SKIP : css3/simple-hierarchies.html = PASS

Could you add this skip to LayoutTests/platform/efl/TestExpectations as well ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689600</commentid>
    <comment_count>31</comment_count>
      <attachid>156881</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-08-07 16:43:57 -0700</bug_when>
    <thetext>Comment on attachment 156881
Patch

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

&gt;&gt; Source/WebCore/css/CSSPageRule.h:-48
&gt;&gt; -
&gt; 
&gt; IMHO, this line removal is unrelated to this patch.

removed.

&gt;&gt; Source/WebCore/css/CSSParser.h:315
&gt;&gt; +        StackedParsedProperties *stackHead = m_stackedParsedProperties.last();
&gt; 
&gt; I think this is wrong &apos;*&apos; place.

Fixed.

&gt;&gt; Source/WebCore/css/CSSParser.h:358
&gt;&gt; +    Vector&lt;StackedParsedProperties *&gt; m_stackedParsedProperties;
&gt; 
&gt; According to my quick search, WebKit coding style didn&apos;t use a space between Vector&lt;...&gt;

Do you mean that this should be Vector&lt;StackedParsedProperties*&gt;? I&apos;ve fixed it, if so.

&gt;&gt; Source/WebCore/css/CSSSelector.h:49
&gt;&gt; +            CSSSelectorList *m_impl;
&gt; 
&gt; This look wrong &apos;*&apos; place.

Fixed.

&gt;&gt; Source/WebCore/css/CSSSelector.h:61
&gt;&gt; +        CSSSelector(CSSSelector* copy);
&gt; 
&gt; It looks *explicit* is missing.

Added.

&gt;&gt; Source/WebCore/css/CSSSelectorList.cpp:27
&gt;&gt; +
&gt; 
&gt; IMHO, this is unneeded line.

Fixed.

&gt;&gt; LayoutTests/platform/qt/TestExpectations:87
&gt;&gt; +BUGWK79939 SKIP : css3/simple-hierarchies.html = PASS
&gt; 
&gt; Could you add this skip to LayoutTests/platform/efl/TestExpectations as well ?

Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689630</commentid>
    <comment_count>32</comment_count>
      <attachid>157048</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-08-07 17:05:32 -0700</bug_when>
    <thetext>Created attachment 157048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689634</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 17:08:14 -0700</bug_when>
    <thetext>Attachment 157048 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3...&quot; exit_code: 1
Source/WebCore/css/CSSSelectorList.cpp:139:  Semicolon defining empty statement for this loop. Use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 21 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>691180</commentid>
    <comment_count>34</comment_count>
      <attachid>157048</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-08 21:33:32 -0700</bug_when>
    <thetext>Comment on attachment 157048
Patch

For those watching this bug:
Shane has been emailing with Antti and Antti&apos;s main concern is that the changes to the CSS grammar, parser and data structures are significant and will make understanding this code harder for everyone.

However, he doesn&apos;t feel strongly enough that this should block the feature completely, just that we consider it.

The plan going forward is to break this into multiple patches to make it easier to review and to try to make the changes less invasive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692024</commentid>
    <comment_count>35</comment_count>
      <attachid>157048</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-09 17:26:49 -0700</bug_when>
    <thetext>Comment on attachment 157048
Patch

Attachment 157048 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13470410</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692483</commentid>
    <comment_count>36</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-08-10 05:22:35 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 157048 [details])
&gt; For those watching this bug:
&gt; Shane has been emailing with Antti and Antti&apos;s main concern is that the changes to the CSS grammar, parser and data structures are significant and will make understanding this code harder for everyone.

My main concern was really that this feature is in very early stages in the CSSWG doesn&apos;t seem that great in general. It would be far less disruptive to experiment in a branch somewhere rather than in mainline WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692484</commentid>
    <comment_count>37</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-08-10 05:23:37 -0700</bug_when>
    <thetext>*and doesn&apos;t seem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753499</commentid>
    <comment_count>38</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-29 09:14:46 -0700</bug_when>
    <thetext>CSS WG conducted a prioritization poll. Hierarchies was placed 47th out of 58 features with 4 very strong/strong interest votes vs. 16 low/no interest votes.

http://disruptive-innovations.com/zoo/customers/CSSWG/Priorities.html

Based on this I don&apos;t think this feature should go into WebKit at this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753500</commentid>
    <comment_count>39</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-29 09:16:44 -0700</bug_when>
    <thetext>s/16/12/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753825</commentid>
    <comment_count>40</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-10-29 15:58:31 -0700</bug_when>
    <thetext>That list is intended as an indication of where to allocate effort when time grows short at CSSWG face-to-face meetings, and should not be used as a prioritization of implementation effort for feature work. A salient example: &quot;sticky positioning&quot; (http://lists.w3.org/Archives/Public/www-style/2012Jun/0627.html, https://bugs.webkit.org/show_bug.cgi?id=90046) is not even included on a specification in that list yet, but is undergoing active development, behind a flag.

Some of the discussion at the WG has been around rolling hierarchies in as a part of Selectors level 4 or 5, which would remove the need for a separate specification. Perhaps this is part of the reason that the _specification_ has been given low priority? Certainly discussions of the _feature_ have engendered a general level of acceptance at the WG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767387</commentid>
    <comment_count>41</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-14 15:45:20 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; CSS WG conducted a prioritization poll. Hierarchies was placed 47th out of 58 features with 4 very strong/strong interest votes vs. 16 low/no interest votes.
&gt; 
&gt; http://disruptive-innovations.com/zoo/customers/CSSWG/Priorities.html
&gt; 
&gt; Based on this I don&apos;t think this feature should go into WebKit at this time.

I talked to Shane off list and we&apos;ve agreed to halt development of this feature at this time.  I&apos;d like to see buy-in from at least one other browser vendor.

I&apos;ll post some patches to revert the incomplete work.

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129509</attachid>
            <date>2012-02-29 13:41:09 -0800</date>
            <delta_ts>2012-03-21 19:38:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79939-20120301084107.patch</filename>
            <type>text/plain</type>
            <size>45983</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTc3NzRjMmZjOWM0NTlh
YzhiNTYzOTQ4MGU0ZjVhYjBjNjNmYjQ2My4uYzYxODgxNDNhZmY1NjFjNzVhNmI0ZWI0ZTE0MjIy
NGZhMzMwMTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTAyLTI5ICBTaGFu
ZSBTdGVwaGVucyAgPHNoYW5lc3RlcGhlbnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQXSBJ
bXBsZW1lbnQgQ1NTIEhpZXJhcmNoaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03OTkzOQorCisgICAgICAgIFRoaXMgQ1NTIGZlYXR1cmUgaXMgcHJv
cG9zZWQgaW4gdGhlIGZvbGxvd2luZyBFZGl0b3IncyBEcmFmdDoKKyAgICAgICAgaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3NzMy1oaWVyYXJjaGllcy8uCisKKyAgICAgICAgQXMgZWFjaCBzdHls
ZSBydWxlIGlzIHBhcnNlZCwgdGhlIHNlbGVjdG9yIGZvciB0aGUgc3R5bGUKKyAgICAgICAgcnVs
ZSBpcyBib3RoIGNvbnZlcnRlZCBpbnRvIGEgQ1NTU2VsZWN0b3JMaXN0IGFuZCBwdXNoZWQKKyAg
ICAgICAgb250byBhIFNlbGVjdG9yVmVjdG9yIHRvIG1haW50YWluIHRoZSBjdXJyZW50IHNlbGVj
dG9yCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgV2hlbiBhIG5lc3RlZCBzdHlsZSBydWxl
IGlzIGVuY291bnRlcmVkLCBib3RoIHRoZSBuZXcgc2VsZWN0b3IKKyAgICAgICAgYW5kIHRoZSBj
dXJyZW50IFNlbGVjdG9yVmVjdG9yIGNvbnRleHQgYXJlIHByb3ZpZGVkIHRvIHRoZQorICAgICAg
ICBuZXcgQ1NTU2VsZWN0b3JMaXN0IHRoYXQgcmVwcmVzZW50cyB0aGUgc2VsZWN0b3IgZm9yIHRo
ZSBuZXN0ZWQKKyAgICAgICAgcnVsZS4gQXQgdGhpcyBwb2ludCB0aGUgY29udGV4dCBhbmQgbmV3
IHNlbGVjdG9yIGFyZSBjb21iaW5lZCAtIAorICAgICAgICB0aGlzIGlzIGEgbGl0dGxlIGNvbXBs
ZXggYmVjYXVzZToKKyAgICAgICAgICAxKSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUg
Y29tbWEtc2VwYXJhdGVkIHNlbGVjdG9yCisgICAgICAgICAgICAgY29tcG9uZW50cyBpbiBlYWNo
IHBhcnQgb2YgdGhlIFNlbGVjdG9yVmVjdG9yLCBhbmQgdGhlc2UKKyAgICAgICAgICAgICBuZWVk
IHRvIGJlIGNvbWJpbmVkCisgICAgICAgICAgMikgdGhlIG91dHB1dCBsaXN0IG9yZGVyIChpbiBv
cmRlciBvZiBtYXRjaGluZykgZG9lc24ndCBtYXRjaAorICAgICAgICAgICAgIHRoZSBpbmNvbWlu
ZyB2ZWN0b3Igb3JkZXIgKGluIG9yZGVyIG9mIHBhcnNpbmcpIGFuZCB0aGlzCisgICAgICAgICAg
ICAgbmVlZHMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LCBlc3BlY2lhbGx5IGF0IHRoZSBib3Vu
ZGFyaWVzCisgICAgICAgICAgICAgYmV0d2VlbiBTZWxlY3RvclZlY3RvciBlbnRyaWVzLgorCisg
ICAgICAgIFBhc3QgdGhlIHBvaW50IG9mIHRoZSBDU1NTZWxlY3Rvckxpc3QsIG5vIGRlZXBlciBt
b2RpZmljYXRpb25zIGFyZQorICAgICAgICByZXF1aXJlZC4KKworICAgICAgICBOb3RlIHRoYXQg
dGhpcyBwYXRjaCBpcyBjdXJyZW50bHkgYSBXSVAuIEZ1cnRoZXJtb3JlLCB0aGlzIHBhdGNoIGRv
ZXNuJ3QKKyAgICAgICAgaW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZSBDU1NPTSAtIHRoYXQgd2ls
bCBjb21lIGluIGZ1dHVyZSBwYXRjaGVzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0bWwKKwor
ICAgICAgICBNb2RpZmljYXRpb25zIHRvIGFsbG93IG5lc3Rpbmcgb2Ygc2VsZWN0b3JzIHRvIGJl
IHBhcnNlZC4KKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAqIGNzcy9DU1NQ
YWdlUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFnZVJ1bGU6OmFkb3B0U2VsZWN0b3JW
ZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpDU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp+Q1NT
UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVSZWdpb25SdWxlKToKKworICAgICAgICBBZGQgYSBz
ZWxlY3RvclZlY3RvciB0byB0cmFjayBjdXJyZW50IHNlbGVjdG9yIHN0YWNrCisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXVzYWJsZVNl
bGVjdG9yVmVjdG9yKToKKyAgICAgICAgKENTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnB1c2hTZWxlY3RvclZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBvcFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFN0YWNrZWRQYXJzZWRQcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6U3RhY2tlZFBhcnNlZFByb3BlcnRpZXM6
OlN0YWNrZWRQYXJzZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9y
VmVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6ZHVwbGljYXRlU2VsZWN0b3IpOgorICAgICAgICAoQ1NT
UGFyc2VyU2VsZWN0b3IpOgorCisgICAgICAgIFRyYWNrIHByaW9yIHJlbGF0aW9uIHRvIG1ha2Ug
aXQgcG9zc2libGUgdG8gc3RpdGNoCisgICAgICAgIHNlbGVjdG9yVmVjdG9yICsgY3VycmVudCBz
ZWxlY3RvciBpbnRvIGEgY29oZXJlbnQgc2VsZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJTZWxlY3Rvcjo6c2V0UHJpb3JSZWxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJTZWxlY3Rvcjo6Z2V0UHJpb3JSZWxhdGlvbik6CisgICAgICAgICogY3NzL0NTU1NlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRTZWxl
Y3Rvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0V3JhcHBlcjo6fkNT
U1NlbGVjdG9yTGlzdFdyYXBwZXIpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAg
ICAgICAoQ1NTU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNlbGVj
dG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0UHJpb3JSZWxhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6Z2V0UHJpb3JSZWxhdGlvbik6Cisg
ICAgICAgIChSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0VmFs
dWUpOgorCisgICAgICAgIEltcGxlbWVudCBhbGdvcml0aG0gdG8gY29tYmluZSBzZWxlY3RvclZl
Y3RvciB3aXRoCisgICAgICAgIGN1cnJlbnQgc2VsZWN0b3Igd2hlbiBnZW5lcmF0aW5nIHRoZSBD
U1NTZWxlY3RvciBhcnJheS4KKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6YWRvcHRTZWxlY3RvclZlY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6bW92
ZVRvRXhwbG9kZWRWZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuaDoKKyAg
ICAgICAgKENTU1NlbGVjdG9yTGlzdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAg
KiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRD
U1NSZWdpb25SdWxlOjpXZWJLaXRDU1NSZWdpb25SdWxlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0
Q1NTUmVnaW9uUnVsZS5oOgorCiAyMDEyLTAyLTI4ICBKb25hdGhhbiBCYWNrZXIgIDxiYWNrZXJA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVzZXQgZGFtYWdlIHRyYWNrZXIg
b24gdmlzaWJpbGl0eSBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCBhNTdlZGYz
ZDFhNzA1ZTUwZjYzYjg5ZDA1MDMzZGU4MDRmZDIyMzg5Li4yMmFjN2JiYWNkZjRiMmIyMzI5MzZk
OGE4MmU4YTAyNzI3YTBmY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTIwNSw2ICsy
MDUsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgdm9pZCogcGFyc2Vy
KQogJXR5cGUgPHJ1bGU+IGNoYXJzZXQKICV0eXBlIDxydWxlPiBpZ25vcmVkX2NoYXJzZXQKICV0
eXBlIDxydWxlPiBydWxlc2V0CisldHlwZSA8cnVsZT4gbmVzdGVkX3J1bGVzZXRfY29udGVudHMK
ICV0eXBlIDxydWxlPiBtZWRpYQogJXR5cGUgPHJ1bGU+IGltcG9ydAogJXR5cGUgPHJ1bGU+IG5h
bWVzcGFjZQpAQCAtMjU0LDYgKzI1NSw3IEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQRSog
eXlsdmFsLCB2b2lkKiBwYXJzZXIpCiAldHlwZSA8c2VsZWN0b3I+IHNpbXBsZV9zZWxlY3Rvcgog
JXR5cGUgPHNlbGVjdG9yPiBzZWxlY3RvcgogJXR5cGUgPHNlbGVjdG9yTGlzdD4gc2VsZWN0b3Jf
bGlzdAorJXR5cGUgPHNlbGVjdG9yTGlzdD4gbmVzdGVkX3NlbGVjdG9yX2xpc3QKICV0eXBlIDxz
ZWxlY3Rvckxpc3Q+IHNpbXBsZV9zZWxlY3Rvcl9saXN0CiAldHlwZSA8c2VsZWN0b3JMaXN0PiBy
ZWdpb25fc2VsZWN0b3IKICV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193
aGl0ZXNwYWNlCkBAIC0yNjUsOSArMjY3LDEzIEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQ
RSogeXlsdmFsLCB2b2lkKiBwYXJzZXIpCiAKICV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbl9s
aXN0CiAldHlwZSA8Ym9vbGVhbj4gZGVjbF9saXN0Ci0ldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRp
b24KKyV0eXBlIDxib29sZWFuPiBuZXN0ZWRfcnVsZXNldAorJXR5cGUgPGJvb2xlYW4+IGRlY2xh
cmF0aW9uX3NlcAorJXR5cGUgPGJvb2xlYW4+IHJhd19kZWNsYXJhdGlvbgogJXR5cGUgPGJvb2xl
YW4+IGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lucwogCisldHlwZSA8Ym9vbGVhbj4gbWF5YmVfc3Bh
Y2UKKwogJXR5cGUgPGJvb2xlYW4+IHByaW8KIAogJXR5cGUgPGludGVnZXI+IG1hdGNoCkBAIC0z
NDYsMTQgKzM1MiwxNCBAQCB3ZWJraXRfc2VsZWN0b3I6CiAgICAgICAgIGlmICgkNCkgewogICAg
ICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsK
ICAgICAgICAgICAgIGlmIChwLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IpCi0gICAg
ICAgICAgICAgICAgcC0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yLT5hZG9wdFNlbGVj
dG9yVmVjdG9yKCokNCk7CisgICAgICAgICAgICAgICAgcC0+bV9zZWxlY3Rvckxpc3RGb3JQYXJz
ZVNlbGVjdG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCokNCwgcC0+bV9zZWxlY3RvclZlY3RvclN0
YWNrKTsKICAgICAgICAgfQogICAgIH0KIDsKIAogbWF5YmVfc3BhY2U6Ci0gICAgLyogZW1wdHkg
Ki8gJXByZWMgVU5JTVBPUlRBTlRfVE9LCi0gIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQorICAg
IC8qIGVtcHR5ICovICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7ICQkID0gZmFsc2U7IH0KKyAgfCBt
YXliZV9zcGFjZSBXSElURVNQQUNFIHsgJCQgPSB0cnVlOyB9CiAgIDsKIAogbWF5YmVfc2dtbDoK
QEAgLTg0OCw2ICs4NTQsMTMgQEAgcnVsZXNldDoKICAgICB9CiAgIDsKIAorbmVzdGVkX3J1bGVz
ZXRfY29udGVudHM6CisgICAgbmVzdGVkX3NlbGVjdG9yX2xpc3QgYmVmb3JlX3J1bGVfb3Blbmlu
Z19icmFjZSAneycgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xp
c3QgY2xvc2luZ19icmFjZSB7CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENT
U1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICQkID0gcC0+Y3JlYXRlU3R5bGVSdWxlKCQxKTsK
KyAgICB9CisgIDsKKwogc2VsZWN0b3JfbGlzdDoKICAgICBzZWxlY3RvciAlcHJlYyBVTklNUE9S
VEFOVF9UT0sgewogICAgICAgICBpZiAoJDEpIHsKQEAgLTg3Miw2ICs4ODUsNTggQEAgc2VsZWN0
b3JfbGlzdDoKICAgICB9CiAgICA7CiAKK25lc3RlZF9zZWxlY3Rvcl9saXN0OgorICAgIHNlbGVj
dG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSkgeworICAgICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAg
ICAgICAgICQkID0gcC0+cmV1c2FibGVTZWxlY3RvclZlY3RvcigpOworICAgICAgICAgICAgJCQt
PnNocmluaygwKTsKKyAgICAgICAgICAgIGlmIChwLT5tX3RyYWlsaW5nU3BhY2UpCisgICAgICAg
ICAgICAgICAgJDEtPnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICQxLT5zZXRQcmlvclJlbGF0aW9uKENT
U1NlbGVjdG9yOjpTdWJTZWxlY3Rvcik7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHAtPnNpbmtG
bG9hdGluZ1NlbGVjdG9yKCQxKSk7CisgICAgICAgICAgICBwLT51cGRhdGVMYXN0U2VsZWN0b3JM
aW5lQW5kUG9zaXRpb24oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IGNvbWJpbmF0b3Igc2Vs
ZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQyKSB7CisgICAgICAg
ICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAg
ICAgICAgICAgJCQgPSBwLT5yZXVzYWJsZVNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAk
JC0+c2hyaW5rKDApOworICAgICAgICAgICAgJDItPnNldFByaW9yUmVsYXRpb24oJDEpOworICAg
ICAgICAgICAgJCQtPmFwcGVuZChwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMikpOworICAgICAg
ICAgICAgcC0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgICAgIH0K
KyAgICB9CisgICAgfCBuZXN0ZWRfc2VsZWN0b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2UgJyYnIG1h
eWJlX3NwYWNlIHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgk
MSAmJiAkNikgeworICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFy
c2VyKj4ocGFyc2VyKTsKKyAgICAgICAgICAgICQkID0gJDE7CisgICAgICAgICAgICBpZiAoJDUp
CisgICAgICAgICAgICAgICAgJDYtPnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2Nl
bmRhbnQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICQ2LT5zZXRQcmlvclJl
bGF0aW9uKENTU1NlbGVjdG9yOjpTdWJTZWxlY3Rvcik7CisgICAgICAgICAgICAkJC0+YXBwZW5k
KHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ2KSk7CisgICAgICAgICAgICBwLT51cGRhdGVMYXN0
U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAk
JCA9IDA7CisgICAgfQorICB8IG5lc3RlZF9zZWxlY3Rvcl9saXN0ICcsJyBtYXliZV9zcGFjZSAn
JicgbWF5YmVfc3BhY2UgY29tYmluYXRvciBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sg
eworICAgIGlmICgkMSAmJiAkNykgeworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2Fz
dDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICAkJCA9ICQxOworICAgICAgICAkNy0+c2V0
UHJpb3JSZWxhdGlvbigkNik7CisgICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2Vs
ZWN0b3IoJDcpKTsKKyAgICAgICAgcC0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9u
KCk7CisgICAgfSBlbHNlCisgICAgICAgICQkID0gMDsKKyAgfQorICB8IG5lc3RlZF9zZWxlY3Rv
cl9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgIDsKKwogc2VsZWN0b3Jf
d2l0aF90cmFpbGluZ193aGl0ZXNwYWNlOgogICAgIHNlbGVjdG9yIFdISVRFU1BBQ0UgewogICAg
ICAgICAkJCA9ICQxOwpAQCAtMTE1OSw3ICsxMjI0LDcgQEAgcHNldWRvOgogICAgICAgICAgICAg
Q1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAg
ICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwogICAgICAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAgICAgICAgICAkJC0+YWRvcHRT
ZWxlY3RvclZlY3RvcigqcC0+c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDQpKTsKKyAgICAg
ICAgICAgICQkLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpwLT5zaW5rRmxvYXRpbmdTZWxlY3RvclZl
Y3RvcigkNCksIHAtPm1fc2VsZWN0b3JWZWN0b3JTdGFjayk7CiAgICAgICAgICAgICAkMi5sb3dl
cigpOwogICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKICAgICAgICAgICAgIENTU1NlbGVj
dG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwpAQCAtMTIyMCw3ICsxMjg1
LDcgQEAgcHNldWRvOgogCiAgICAgICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVj
dG9yPiA+IHNlbGVjdG9yVmVjdG9yOwogICAgICAgICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5k
KHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkJC0+YWRvcHRTZWxl
Y3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3Rv
clZlY3RvcihzZWxlY3RvclZlY3RvciwgcC0+bV9zZWxlY3RvclZlY3RvclN0YWNrKTsKIAogICAg
ICAgICAgICAgJDIubG93ZXIoKTsKICAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CkBAIC0x
MjI5LDEwICsxMjk0LDEwIEBAIHBzZXVkbzoKICAgOwogCiBkZWNsYXJhdGlvbl9saXN0OgotICAg
IGRlY2xhcmF0aW9uIHsKKyAgICByYXdfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9ICQxOwog
ICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiB7CisgICAgfCBkZWNsX2xpc3QgcmF3
X2RlY2xhcmF0aW9uIHsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYgKCAkMiApCiAgICAg
ICAgICAgICAkJCA9ICQyOwpAQCAtMTI1NSwxNSArMTMyMCwxNSBAQCBkZWNsYXJhdGlvbl9saXN0
OgogICAgIDsKIAogZGVjbF9saXN0OgotICAgIGRlY2xhcmF0aW9uICc7JyBtYXliZV9zcGFjZSB7
CisgICAgZGVjbGFyYXRpb25fc2VwIG1heWJlX3NwYWNlIHsKICAgICAgICAgQ1NTUGFyc2VyKiBw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgcC0+bWFya1Byb3Bl
cnR5U3RhcnQoKTsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBkZWNsYXJhdGlvbiBp
bnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgeworICAgIHwgcmF3X2RlY2xhcmF0aW9uIGlu
dmFsaWRfYmxvY2tfbGlzdCBtYXliZV9zcGFjZSB7CiAgICAgICAgICQkID0gZmFsc2U7CiAgICAg
fQotICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0ICc7JyBtYXliZV9zcGFjZSB7
CisgICAgfCByYXdfZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0ICc7JyBtYXliZV9zcGFj
ZSB7CiAgICAgICAgICQkID0gZmFsc2U7CiAgICAgfQogICAgIHwgZXJyb3IgJzsnIG1heWJlX3Nw
YWNlIHsKQEAgLTEyNzQsNyArMTMzOSw3IEBAIGRlY2xfbGlzdDoKICAgICB8IGVycm9yIGludmFs
aWRfYmxvY2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewogICAgICAgICAkJCA9IGZhbHNl
OwogICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiAnOycgbWF5YmVfc3BhY2Ugewor
ICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uX3NlcCBtYXliZV9zcGFjZSB7CiAgICAgICAgIENT
U1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgIHAt
Pm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAgICQkID0gJDE7CkBAIC0xMjkzLDcgKzEzNTgs
MjkgQEAgZGVjbF9saXN0OgogICAgIH0KICAgICA7CiAKLWRlY2xhcmF0aW9uOgorbmVzdGVkX3J1
bGVzZXRfc3RhcnQ6ICcmJyBtYXliZV9zcGFjZSB7CisgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGlj
X2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICBwLT5wdXNoU2VsZWN0b3JWZWN0b3IoJDIp
OworfQorCitkZWNsYXJhdGlvbl9zZXA6CisgICAgbmVzdGVkX3J1bGVzZXQgeworICAgICAgICAk
JCA9ICQxOworICAgIH0KKyAgICB8IHJhd19kZWNsYXJhdGlvbiAnOycgeworICAgICAgICAkJCA9
ICQxOworICAgIH0KKworbmVzdGVkX3J1bGVzZXQ6CisgICAgbmVzdGVkX3J1bGVzZXRfc3RhcnQg
YmVmb3JlX3J1bGVzZXQgbmVzdGVkX3J1bGVzZXRfY29udGVudHMgeworICAgICAgICBDU1NQYXJz
ZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICBwLT5wb3BT
ZWxlY3RvclZlY3RvcigpOworICAgICAgICBpZiAoJDMpCisgICAgICAgICAgICBwLT5tX3N0eWxl
U2hlZXQtPmFwcGVuZCgkMyk7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorCityYXdfZGVj
bGFyYXRpb246CiAgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7CiAgICAg
ICAgICQkID0gZmFsc2U7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1Bh
cnNlcio+KHBhcnNlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5oCmluZGV4IGM4MzcyNzRmZGM4
ODVmYTQ3YjQxOTE0ZWIwY2RmMTBiYThmZDQ0YjYuLmI4MzI5NmEyZWZjYjM4NDhjODFhMDg2YjRk
ZmE2NjJiYTlmOGZhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5oCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3NlbGVjdG9yTGlzdC5maXJzdCgpOyB9CiAgICAgU3R5bGVQcm9wZXJ0eVNldCogcHJv
cGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KICAgICAKLSAgICB2b2lk
IGFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYg
c2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3Jz
KTsgfQorICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNl
clNlbGVjdG9yPiA+JiBzZWxlY3RvcnMsIFZlY3RvcjxWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+KiA+JiBzZWxlY3RvclZlY3RvcikgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVj
dG9yVmVjdG9yKHNlbGVjdG9ycywgc2VsZWN0b3JWZWN0b3IpOyB9CiAgICAgdm9pZCBzZXREZWNs
YXJhdGlvbihQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlKSB7IG1fc3R5bGUgPSBz
dHlsZTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA3MDQ5MTRl
OGE2MDBkM2QzYmQ4NjMxMDNiZWY5YTYwMTBiZGJlNzhmLi42YmIwMWU0NTNlOTk0MzMxNWQxZjNm
MzMxNTFmNDc1NWMzN2I2MzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMjAxLDYg
KzIwMSw3IEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKICAgICAs
IG1fcHJvcGVydHlSYW5nZShVSU5UX01BWCwgVUlOVF9NQVgpCiAgICAgLCBtX3J1bGVSYW5nZU1h
cCgwKQogICAgICwgbV9jdXJyZW50UnVsZURhdGEoMCkKKyAgICAsIG1fdHJhaWxpbmdTcGFjZSh0
cnVlKQogICAgICwgbV9wYXJzaW5nTW9kZShOb3JtYWxNb2RlKQogICAgICwgbV9jdXJyZW50Q2hh
cmFjdGVyKDApCiAgICAgLCBtX3Rva2VuKDApCkBAIC0yMDgsNiArMjA5LDcgQEAgQ1NTUGFyc2Vy
OjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogICAgICwgbV9sYXN0U2VsZWN0b3JMaW5l
TnVtYmVyKDApCiAgICAgLCBtX2FsbG93SW1wb3J0UnVsZXModHJ1ZSkKICAgICAsIG1fYWxsb3dO
YW1lc3BhY2VEZWNsYXJhdGlvbnModHJ1ZSkKKyAgICAsIG1fcmV1c2FibGVTZWxlY3RvclZlY3Rv
cihuZXcgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPikKIHsKICNpZiBZWURFQlVH
ID4gMAogICAgIGNzc3l5ZGVidWcgPSAxOwpAQCAtMjI0LDYgKzIyNiw3IEBAIENTU1BhcnNlcjo6
fkNTU1BhcnNlcigpCiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fZmxvYXRpbmdTZWxlY3RvclZlY3Rv
cnMpOwogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Zsb2F0aW5nVmFsdWVMaXN0cyk7CiAgICAgZGVs
ZXRlQWxsVmFsdWVzKG1fZmxvYXRpbmdGdW5jdGlvbnMpOworICAgIGRlbGV0ZSBtX3JldXNhYmxl
U2VsZWN0b3JWZWN0b3I7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyU3RyaW5nOjpsb3dlcigpCkBAIC04
ODI3LDcgKzg4MzAsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0
b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogICAgIGlmIChzZWxlY3Rv
cnMpIHsKICAgICAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xh
cmF0aW9ucyA9IGZhbHNlOwogICAgICAgICBSZWZQdHI8Q1NTU3R5bGVSdWxlPiBydWxlID0gQ1NT
U3R5bGVSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0LCBtX2xhc3RTZWxlY3RvckxpbmVOdW1iZXIp
OwotICAgICAgICBydWxlLT5zdHlsZVJ1bGUoKS0+YWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0
b3JzKTsKKyAgICAgICAgcnVsZS0+c3R5bGVSdWxlKCktPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNl
bGVjdG9ycywgbV9zZWxlY3RvclZlY3RvclN0YWNrKTsKICAgICAgICAgaWYgKG1faGFzRm9udEZh
Y2VPbmx5VmFsdWVzKQogICAgICAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7CiAg
ICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5zZXRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTZXQ6
OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcywgbV9zdHJp
Y3QpKTsKQEAgLTg5MzksNyArODk0Miw3IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlUGFn
ZVJ1bGUoUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKQogICAgICAg
ICBSZWZQdHI8Q1NTUGFnZVJ1bGU+IHJ1bGUgPSBDU1NQYWdlUnVsZTo6Y3JlYXRlKG1fc3R5bGVT
aGVldCk7CiAgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gc2VsZWN0
b3JWZWN0b3I7CiAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwYWdlU2VsZWN0b3IpOwot
ICAgICAgICBydWxlLT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKKyAgICAg
ICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3RvciwgbV9zZWxlY3RvclZl
Y3RvclN0YWNrKTsKICAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNl
dDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzLCBtX3N0
cmljdCkpOwogICAgICAgICBwYWdlUnVsZSA9IHJ1bGUuZ2V0KCk7CiAgICAgICAgIG1fcGFyc2Vk
UnVsZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKQEAgLTg5NjEsNyArODk2NCw3IEBAIENTU1J1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlUmVnaW9uUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+KiByZWdpb25TCiAKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFt
ZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8V2ViS2l0Q1NTUmVnaW9u
UnVsZT4gcmVnaW9uUnVsZSA9IFdlYktpdENTU1JlZ2lvblJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hl
ZXQsIHJlZ2lvblNlbGVjdG9yLCBydWxlcyk7CisgICAgUmVmUHRyPFdlYktpdENTU1JlZ2lvblJ1
bGU+IHJlZ2lvblJ1bGUgPSBXZWJLaXRDU1NSZWdpb25SdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0
LCByZWdpb25TZWxlY3RvciwgbV9zZWxlY3RvclZlY3RvclN0YWNrLCBydWxlcyk7CiAKICAgICBX
ZWJLaXRDU1NSZWdpb25SdWxlKiByZXN1bHQgPSByZWdpb25SdWxlLmdldCgpOwogICAgIG1fcGFy
c2VkUnVsZXMuYXBwZW5kKHJlZ2lvblJ1bGUucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aAppbmRleCA1ZDc2NmJlODgwOWQ1OTBhODlmZWUxNWZhNzA4Y2YzZmRhMTY5MDFmLi5mYjMzOTNh
ZTE0NTBkZWY3NWUwMGIzZGE1MzdhZDVkZDI4ZGEyMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CkBAIC0yNjUsNyArMjY1LDM1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZEJsb2NrSGl0
KCk7CiAKLSAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiByZXVzYWJsZVNl
bGVjdG9yVmVjdG9yKCkgeyByZXR1cm4gJm1fcmV1c2FibGVTZWxlY3RvclZlY3RvcjsgfQorICAg
IFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHJldXNhYmxlU2VsZWN0b3JWZWN0
b3IoKSB7IHJldHVybiBtX3JldXNhYmxlU2VsZWN0b3JWZWN0b3I7IH0KKworICAgIHZvaWQgcHVz
aFNlbGVjdG9yVmVjdG9yKGJvb2wgdHJhaWxpbmdTcGFjZSkKKyAgICB7CisgICAgICAgIG1fc2Vs
ZWN0b3JWZWN0b3JTdGFjay5hcHBlbmQobV9yZXVzYWJsZVNlbGVjdG9yVmVjdG9yKTsKKyAgICAg
ICAgbV9yZXVzYWJsZVNlbGVjdG9yVmVjdG9yID0gbmV3IFZlY3RvcjxPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+ID47CisKKyAgICAgICAgbV9zdGFja2VkUGFyc2VkUHJvcGVydGllcy5hcHBlbmQo
bmV3IFN0YWNrZWRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzLCBtX21heFBhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGll
c0JlZm9yZU1hcmdpbkJveCkpOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBzdGF0aWNf
Y2FzdDxDU1NQcm9wZXJ0eSoqPihmYXN0TWFsbG9jKDMyICogc2l6ZW9mKENTU1Byb3BlcnR5Kikp
KTsKKyAgICAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzID0gMDsKKyAgICAgICAgbV9tYXhQYXJz
ZWRQcm9wZXJ0aWVzID0gMzI7CisgICAgICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1h
cmdpbkJveCA9IDA7CisgICAgICAgIG1fdHJhaWxpbmdTcGFjZSA9IHRyYWlsaW5nU3BhY2U7Cisg
ICAgfQorCisgICAgdm9pZCBwb3BTZWxlY3RvclZlY3RvcigpCisgICAgeworICAgICAgICBkZWxl
dGUgbV9yZXVzYWJsZVNlbGVjdG9yVmVjdG9yOworICAgICAgICBtX3JldXNhYmxlU2VsZWN0b3JW
ZWN0b3IgPSBtX3NlbGVjdG9yVmVjdG9yU3RhY2subGFzdCgpOworICAgICAgICBtX3NlbGVjdG9y
VmVjdG9yU3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAgICAgIFN0YWNrZWRQYXJzZWRQcm9wZXJ0
aWVzICpzdGFja0hlYWQgPSBtX3N0YWNrZWRQYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKTsKKyAgICAg
ICAgbV9zdGFja2VkUGFyc2VkUHJvcGVydGllcy5yZW1vdmVMYXN0KCk7CisgICAgICAgIG1fcGFy
c2VkUHJvcGVydGllcyA9IHN0YWNrSGVhZC0+bV9wYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICBt
X251bVBhcnNlZFByb3BlcnRpZXMgPSBzdGFja0hlYWQtPm1fbnVtUGFyc2VkUHJvcGVydGllczsK
KyAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzID0gc3RhY2tIZWFkLT5tX21heFBhcnNlZFBy
b3BlcnRpZXM7CisgICAgICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9
IHN0YWNrSGVhZC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94OworICAgICAg
ICBtX3RyYWlsaW5nU3BhY2UgPSB0cnVlOworICAgIH0KIAogICAgIHZvaWQgc2V0UmV1c2FibGVS
ZWdpb25TZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBz
ZWxlY3RvcnMpOwogICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHJldXNh
YmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoKSB7IHJldHVybiAmbV9yZXVzYWJsZVJlZ2lvblNlbGVj
dG9yVmVjdG9yOyB9CkBAIC0yOTEsNiArMzE5LDIyIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBt
X21heFBhcnNlZFByb3BlcnRpZXM7CiAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
QmVmb3JlTWFyZ2luQm94OwogCisgICAgc3RydWN0IFN0YWNrZWRQYXJzZWRQcm9wZXJ0aWVzIHsK
KyAgICAgICAgQ1NTUHJvcGVydHkqKiBtX3BhcnNlZFByb3BlcnRpZXM7CisgICAgICAgIHVuc2ln
bmVkIG1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgdW5zaWduZWQgbV9tYXhQYXJzZWRQ
cm9wZXJ0aWVzOworICAgICAgICB1bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVN
YXJnaW5Cb3g7CisKKyAgICAgICAgU3RhY2tlZFBhcnNlZFByb3BlcnRpZXMoQ1NTUHJvcGVydHkq
KiBwYXJzZWRQcm9wZXJ0aWVzLCB1bnNpZ25lZCBudW1QYXJzZWRQcm9wZXJ0aWVzLCB1bnNpZ25l
ZCBtYXhQYXJzZWRQcm9wZXJ0aWVzLCB1bnNpZ25lZCBudW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3Jl
TWFyZ2luQm94KSA6CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcyhwYXJzZWRQcm9wZXJ0aWVz
KQorICAgICAgICAsIG1fbnVtUGFyc2VkUHJvcGVydGllcyhudW1QYXJzZWRQcm9wZXJ0aWVzKQor
ICAgICAgICAsIG1fbWF4UGFyc2VkUHJvcGVydGllcyhtYXhQYXJzZWRQcm9wZXJ0aWVzKQorICAg
ICAgICAsIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveChudW1QYXJzZWRQcm9w
ZXJ0aWVzQmVmb3JlTWFyZ2luQm94KQorICAgICAgICB7IH0KKyAgICB9OworCisgICAgVmVjdG9y
PFN0YWNrZWRQYXJzZWRQcm9wZXJ0aWVzICo+IG1fc3RhY2tlZFBhcnNlZFByb3BlcnRpZXM7CisK
ICAgICBpbnQgbV9pblBhcnNlU2hvcnRoYW5kOwogICAgIGludCBtX2N1cnJlbnRTaG9ydGhhbmQ7
CiAgICAgYm9vbCBtX2ltcGxpY2l0U2hvcnRoYW5kOwpAQCAtMzE5LDYgKzM2MywxMCBAQCBwdWJs
aWM6CiAgICAgaW50IGxleCh2b2lkKiB5eWx2YWwpOwogICAgIGludCB0b2tlbigpIHsgcmV0dXJu
IG1fdG9rZW47IH0KIAorICAgIFZlY3RvcjxWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+KiA+IG1fc2VsZWN0b3JWZWN0b3JTdGFjazsKKworICAgIGJvb2wgbV90cmFpbGluZ1NwYWNl
OworCiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlTnVt
ZXJpY1ZhbHVlKENTU1BhcnNlclZhbHVlKik7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gY3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsKICAgICAg
ICAgCkBAIC00MDQsNyArNDUyLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8TWVkaWFRdWVyeUV4
cD4gbV9mbG9hdGluZ01lZGlhUXVlcnlFeHA7CiAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8TWVk
aWFRdWVyeUV4cD4gPiA+IG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdDsKIAotICAgIFZlY3Rv
cjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gbV9yZXVzYWJsZVNlbGVjdG9yVmVjdG9yOwor
ICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gKm1fcmV1c2FibGVTZWxlY3Rv
clZlY3RvcjsKICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+IG1fcmV1c2Fi
bGVSZWdpb25TZWxlY3RvclZlY3RvcjsKIAogICAgIFJlZlB0cjxDU1NDYWxjVmFsdWU+IG1fcGFy
c2VkQ2FsY3VsYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCmluZGV4
IDVhZjJhOWExNmU1OTk2Mzk5NGZiY2VhOTNkOWUyODQ2ZWIyMGVlOGIuLmVhYzNmYWQ0MTVkY2Qw
MTY1YzMyZmNiNTk4ZmIyZmJhOWM2MWRjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJW
YWx1ZXMuY3BwCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBDU1NQYXJzZXJTZWxlY3Rvcjo6fkNTU1Bh
cnNlclNlbGVjdG9yKCkKICAgICB9CiB9CiAKLXZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0
U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0
b3JWZWN0b3IpCit2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKFZl
Y3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yLCBWZWN0b3I8
VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogPiYgc3RhY2tlZFNlbGVjdG9ycykK
IHsKICAgICBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCA9IGZhc3ROZXc8Q1NTU2VsZWN0
b3JMaXN0PigpOwotICAgIHNlbGVjdG9yTGlzdC0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3Rv
clZlY3Rvcik7CisgICAgc2VsZWN0b3JMaXN0LT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9y
VmVjdG9yLCBzdGFja2VkU2VsZWN0b3JzKTsKICAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxp
c3QoYWRvcHRQdHIoc2VsZWN0b3JMaXN0KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJW
YWx1ZXMuaAppbmRleCA5MGQyNmE0NmRlODFkZDc5NGZiNzQ0YTg5NzA0MzA2MDEzMzhmYmYwLi5j
YWQ0OTJlODQ3MTM3N2YyZjA4Y2Q5MGZkMWYzYTg4YmM4OGFmNzZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlclZhbHVlcy5oCkBAIC0xMTEsNiArMTExLDggQEAgcHVibGljOgogCiAgICAgUGFz
c093blB0cjxDU1NTZWxlY3Rvcj4gcmVsZWFzZVNlbGVjdG9yKCkgeyByZXR1cm4gbV9zZWxlY3Rv
ci5yZWxlYXNlKCk7IH0KIAorICAgIFBhc3NPd25QdHI8Q1NTU2VsZWN0b3I+IGR1cGxpY2F0ZVNl
bGVjdG9yKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENTU1NlbGVjdG9yKG1fc2VsZWN0b3IuZ2V0
KCkpKTsgfQorCiAgICAgdm9pZCBzZXRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpIHsg
bV9zZWxlY3Rvci0+c2V0VGFnKHZhbHVlKTsgfQogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRWYWx1ZSh2YWx1ZSk7IH0KICAgICB2
b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBtX3NlbGVjdG9y
LT5zZXRBdHRyaWJ1dGUodmFsdWUpOyB9CkBAIC0xMTksNyArMTIxLDExIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlvbiB2YWx1ZSkgeyBtX3NlbGVj
dG9yLT5tX3JlbGF0aW9uID0gdmFsdWU7IH0KICAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1fc2Vs
ZWN0b3ItPnNldEZvclBhZ2UoKTsgfQogCi0gICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZl
Y3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yKTsKKyAgICB2
b2lkIHNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHZhbHVlKSB7IG1fc2Vs
ZWN0b3ItPnNldFByaW9yUmVsYXRpb24odmFsdWUpOyB9CisgCisgICAgQ1NTU2VsZWN0b3I6OlJl
bGF0aW9uIGdldFByaW9yUmVsYXRpb24oKSB7IHJldHVybiBtX3NlbGVjdG9yLT5nZXRQcmlvclJl
bGF0aW9uKCk7IH0KKworICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRy
PENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3RvciwgVmVjdG9yPFZlY3RvcjxPd25Q
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qID4mIHN0YWNrZWRTZWxlY3RvcnMpOwogCiAgICAgQ1NT
U2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0
b3ItPnBzZXVkb1R5cGUoKTsgfQogICAgIGJvb2wgaXNVbmtub3duUHNldWRvRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzVW5rbm93blBzZXVkb0VsZW1lbnQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggYmUyOGM2MDFiNTA4ZGZmYWY1N2IwMzVhMTJi
NTllYzJiNjEyODUxNS4uOGYwYWRmNGY3NmZlN2Y5NWJhYWVhNGI3OTBiMGI5NzI2MGM0NWE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0zOCw2ICszOCwzMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK0NTU1NlbGVjdG9y
OjpDU1NTZWxlY3RvcihDU1NTZWxlY3RvciogY29weSkKKyAgICA6IG1fcmVsYXRpb24oY29weS0+
bV9yZWxhdGlvbikKKyAgICAsIG1fbWF0Y2goY29weS0+bV9tYXRjaCkKKyAgICAsIG1fcHNldWRv
VHlwZShjb3B5LT5tX3BzZXVkb1R5cGUpCisgICAgLCBtX3BhcnNlZE50aChjb3B5LT5tX3BhcnNl
ZE50aCkKKyAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoY29weS0+bV9pc0xhc3RJblNlbGVj
dG9yTGlzdCkKKyAgICAsIG1faXNMYXN0SW5UYWdIaXN0b3J5KGNvcHktPm1faXNMYXN0SW5UYWdI
aXN0b3J5KQorICAgICwgbV9pc0ZvclBhZ2UoY29weS0+bV9pc0ZvclBhZ2UpCisgICAgLCBtX3By
aW9yUmVsYXRpb24oY29weS0+bV9wcmlvclJlbGF0aW9uKQorICAgICwgbV90YWcoY29weS0+bV90
YWcpCit7CisgICAgc2V0VmFsdWUoY29weS0+dmFsdWUoKSk7CisKKyAgICBpZiAoY29weS0+bV9o
YXNSYXJlRGF0YSkgeworICAgICAgICBjcmVhdGVSYXJlRGF0YSgpOworICAgICAgICBtX2RhdGEu
bV9yYXJlRGF0YS0+bV9hID0gY29weS0+bV9kYXRhLm1fcmFyZURhdGEtPm1fYTsKKyAgICAgICAg
bV9kYXRhLm1fcmFyZURhdGEtPm1fYiA9IGNvcHktPm1fZGF0YS5tX3JhcmVEYXRhLT5tX2I7Cisg
ICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZSA9IGNvcHktPm1fZGF0YS5tX3Jh
cmVEYXRhLT5tX2F0dHJpYnV0ZTsKKyAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1l
bnQgPSBjb3B5LT5tX2RhdGEubV9yYXJlRGF0YS0+bV9hcmd1bWVudDsKKyAgICAgICAgaWYgKGNv
cHktPm1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdC5nZXQoKSkKKyAgICAgICAgICAg
IG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdCA9IGNvcHktPm1fZGF0YS5tX3JhcmVE
YXRhLT5tX3NlbGVjdG9yTGlzdDsKKyAgICB9Cit9CisKIHZvaWQgQ1NTU2VsZWN0b3I6OmNyZWF0
ZVJhcmVEYXRhKCkKIHsKICAgICBpZiAobV9oYXNSYXJlRGF0YSkKQEAgLTY1Nyw3ICs2ODEsNyBA
QCB2b2lkIENTU1NlbGVjdG9yOjpzZXRBcmd1bWVudChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0U2VsZWN0b3JMaXN0KFBhc3NPd25QdHI8Q1NTU2VsZWN0
b3JMaXN0PiBzZWxlY3Rvckxpc3QpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsKLSAgICBtX2Rh
dGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QgPSBzZWxlY3Rvckxpc3Q7CisgICAgbV9kYXRh
Lm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0ID0gQ1NTU2VsZWN0b3JMaXN0V3JhcHBlcjo6Y3Jl
YXRlKHNlbGVjdG9yTGlzdC5sZWFrUHRyKCkpOwogfQogCiBib29sIENTU1NlbGVjdG9yOjpwYXJz
ZU50aCgpCkBAIC03MTYsNiArNzQwLDEyIEBAIENTU1NlbGVjdG9yOjpSYXJlRGF0YTo6flJhcmVE
YXRhKCkKICAgICAgICAgbV92YWx1ZS0+ZGVyZWYoKTsKIH0KIAorCitDU1NTZWxlY3Rvckxpc3RX
cmFwcGVyOjp+Q1NTU2VsZWN0b3JMaXN0V3JhcHBlcigpCit7CisgICAgZGVsZXRlIG1faW1wbDsK
K30KKwogLy8gYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHBhcnNpbmcgbnRoLWFyZ3VtZW50cwogYm9v
bCBDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OnBhcnNlTnRoKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmgKaW5kZXggYWZkNTJkZWY5YjdjNmVlMTk2OWMwM2M0YzhiYmVkM2EzMTNlMjYwOC4uOWI3
MTJiMzIzYTU5ZmE5ZmNhNTNlYWM2ZjZlZTczMjM5OTU2OTdlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmgKQEAgLTMxLDYgKzMxLDI3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgQ1NTU2VsZWN0b3JMaXN0OwogCisgICAgY2xhc3MgQ1NTU2VsZWN0b3JMaXN0V3JhcHBlciA6
cHVibGljIFJlZkNvdW50ZWQ8Q1NTU2VsZWN0b3JMaXN0V3JhcHBlcj4geworICAgICAgICBwdWJs
aWM6CisgICAgICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTZWxlY3Rvckxpc3RXcmFwcGVy
PiBjcmVhdGUoQ1NTU2VsZWN0b3JMaXN0KiBpbXBsKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTU2VsZWN0b3JMaXN0V3JhcHBlcihpbXBsKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH5DU1NTZWxlY3Rvckxpc3RXcmFwcGVyKCk7
CisKKyAgICAgICAgICAgIENTU1NlbGVjdG9yTGlzdCogZ2V0KCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbV9pbXBsOworICAgICAgICAgICAgfQorCisgICAgICAgIHBy
aXZhdGU6CisgICAgICAgICAgICBDU1NTZWxlY3Rvckxpc3QgKm1faW1wbDsKKyAgICAgICAgICAg
IENTU1NlbGVjdG9yTGlzdFdyYXBwZXIoQ1NTU2VsZWN0b3JMaXN0KiBpbXBsKQorICAgICAgICAg
ICAgICAgIDogbV9pbXBsKGltcGwpCisgICAgICAgICAgICB7IH0KKyAgICB9OworCiAgICAgLy8g
dGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2VsZWN0b3IgZm9yIGEgU3R5bGVSdWxlCiAgICAgY2xh
c3MgQ1NTU2VsZWN0b3IgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NTZWxlY3Rv
cik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjEsNiArODIsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIENTU1NlbGVjdG9yKENT
U1NlbGVjdG9yKiBjb3B5KTsKKwogICAgICAgICB+Q1NTU2VsZWN0b3IoKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAobV9oYXNSYXJlRGF0YSkKQEAgLTIyNywxNCArMjUwLDE3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmluZyo+KG1faGFzUmFy
ZURhdGEgPyAmbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUgOiAmbV9kYXRhLm1fdmFsdWUpOyB9
CiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSgpIGNvbnN0OwogICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGFyZ3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJl
RGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX2FyZ3VtZW50IDogbnVsbEF0b207IH0KLSAgICAg
ICAgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX2hhc1Jh
cmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0LmdldCgpIDogMDsgfQor
ICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzUmFyZURhdGEgJiYgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0LmdldCgpID8g
bV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0LT5nZXQoKSA6IDA7IH0KIAogICAgICAg
ICB2b2lkIHNldFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBtX3RhZyA9IHZhbHVl
OyB9CisgICAgICAgIHZvaWQgc2V0UHJpb3JSZWxhdGlvbihSZWxhdGlvbiB2YWx1ZSkgeyBtX3By
aW9yUmVsYXRpb24gPSB2YWx1ZTsgfQogICAgICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgICAgIHZvaWQgc2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAg
ICAgIHZvaWQgc2V0U2VsZWN0b3JMaXN0KFBhc3NPd25QdHI8Q1NTU2VsZWN0b3JMaXN0Pik7CiAK
KyAgICAgICAgUmVsYXRpb24gZ2V0UHJpb3JSZWxhdGlvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PFJlbGF0aW9uPihtX3ByaW9yUmVsYXRpb24pOyB9CisKICAgICAgICAgYm9vbCBwYXJzZU50aCgp
OwogICAgICAgICBib29sIG1hdGNoTnRoKGludCBjb3VudCk7CiAKQEAgLTI2NSw3ICsyOTEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pc0xhc3RJblRhZ0hpc3Rvcnkg
ICAgIDogMTsKICAgICAgICAgYm9vbCBtX2hhc1JhcmVEYXRhICAgICAgICAgICAgOiAxOwogICAg
ICAgICBib29sIG1faXNGb3JQYWdlICAgICAgICAgICAgICA6IDE7Ci0KKyAgICAgICAgdW5zaWdu
ZWQgbV9wcmlvclJlbGF0aW9uICAgICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9uCiAgICAgICAgIHVu
c2lnbmVkIHNwZWNpZmljaXR5Rm9yT25lU2VsZWN0b3IoKSBjb25zdDsKICAgICAgICAgdW5zaWdu
ZWQgc3BlY2lmaWNpdHlGb3JQYWdlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgZXh0cmFjdFBzZXVk
b1R5cGUoKSBjb25zdDsKQEAgLTI4NCw3ICszMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICBpbnQgbV9iOyAvLyBVc2VkIGZvciA6bnRoLSoKICAgICAgICAgICAgIFF1YWxp
ZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8vIHVzZWQgZm9yIGF0dHJpYnV0ZSBzZWxlY3RvcgogICAg
ICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJndW1lbnQ7IC8vIFVzZWQgZm9yIDpjb250YWlucywg
OmxhbmcgYW5kIDpudGgtKgotICAgICAgICAgICAgT3duUHRyPENTU1NlbGVjdG9yTGlzdD4gbV9z
ZWxlY3Rvckxpc3Q7IC8vIFVzZWQgZm9yIDotd2Via2l0LWFueSBhbmQgOm5vdAorICAgICAgICAg
ICAgUmVmUHRyPENTU1NlbGVjdG9yTGlzdFdyYXBwZXI+IG1fc2VsZWN0b3JMaXN0OyAvLyBVc2Vk
IGZvciA6LXdlYmtpdC1hbnkgYW5kIDpub3QKICAgICAgICAgfTsKICAgICAgICAgdm9pZCBjcmVh
dGVSYXJlRGF0YSgpOwogCkBAIC0zNTIsMTMgKzM3OCwxNSBAQCBpbmxpbmUgdm9pZCBDU1NTZWxl
Y3Rvcjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgaWYgKG1f
ZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlKQogICAgICAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEt
Pm1fdmFsdWUtPmRlcmVmKCk7CiAgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlID0g
dmFsdWUuaW1wbCgpOwotICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV92YWx1ZS0+cmVmKCk7
CisgICAgICAgIGlmIChtX2RhdGEubV9yYXJlRGF0YS0+bV92YWx1ZSkKKyAgICAgICAgICAgIG1f
ZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlLT5yZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBpZiAobV9kYXRhLm1fdmFsdWUpCiAgICAgICAgIG1fZGF0YS5tX3ZhbHVlLT5kZXJlZigp
OwogICAgIG1fZGF0YS5tX3ZhbHVlID0gdmFsdWUuaW1wbCgpOwotICAgIG1fZGF0YS5tX3ZhbHVl
LT5yZWYoKTsKKyAgICBpZiAobV9kYXRhLm1fdmFsdWUpCisgICAgICAgIG1fZGF0YS5tX3ZhbHVl
LT5yZWYoKTsKIH0KIAogaW5saW5lIHZvaWQgbW92ZShQYXNzT3duUHRyPENTU1NlbGVjdG9yPiBm
cm9tLCBDU1NTZWxlY3RvciogdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3JMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3Bw
CmluZGV4IDgwNDMwNTM3YTYxM2EwNTZiN2U1ZWFiZDQ2MTFhNTlkMThiYzYwZWYuLjAzYTVjYTAz
YzcwZGQ1NmVkNTAxODI2OWEzODM5Y2UxZDQ4OTE2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvckxpc3QuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
KwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogCkBA
IC00NCw5ICs0NSwxMCBAQCB2b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHQoQ1NTU2VsZWN0b3JM
aXN0JiBsaXN0KQogICAgIGxpc3QubV9zZWxlY3RvckFycmF5ID0gMDsKIH0KIAotdm9pZCBDU1NT
ZWxlY3Rvckxpc3Q6OmFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gPiYgc2VsZWN0b3JWZWN0b3IpCit2b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHRT
ZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3Rv
clZlY3RvciwgVmVjdG9yPFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qID4mIHN0
YWNrZWRTZWxlY3RvcnMpCiB7CiAgICAgZGVsZXRlU2VsZWN0b3JzKCk7CisKICAgICBjb25zdCBz
aXplX3QgdmVjdG9yU2l6ZSA9IHNlbGVjdG9yVmVjdG9yLnNpemUoKTsKICAgICBzaXplX3QgZmxh
dHRlbmVkU2l6ZSA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZWN0b3JTaXplOyAr
K2kpIHsKQEAgLTU0LDMxICs1Niw5OSBAQCB2b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHRTZWxl
Y3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZQogICAgICAg
ICAgICAgKytmbGF0dGVuZWRTaXplOwogICAgIH0KICAgICBBU1NFUlQoZmxhdHRlbmVkU2l6ZSk7
Ci0gICAgaWYgKGZsYXR0ZW5lZFNpemUgPT0gMSkgeworICAgIC8vIElmIHRoZXJlJ3Mgb25seSBh
IHNpbmdsZSBmbGF0dGVuZWQgc2VsZWN0b3IgY29tcG9uZW50IGFuZCBubyBzdGFja2VkIHNlbGVj
dG9ycyAoaS5lLiB0aGlzIGlzIG5vdAorICAgIC8vIHBhcnQgb2YgYSBoaWVyYXJjaHkgb2Ygc2Vs
ZWN0b3JzKSB0aGVuIHVzZSB0aGUgZmFzdCBwYXRoLgorICAgIGlmIChmbGF0dGVuZWRTaXplID09
IDEgJiYgKCFzdGFja2VkU2VsZWN0b3JzLnNpemUoKSkpIHsKICAgICAgICAgbV9zZWxlY3RvckFy
cmF5ID0gc2VsZWN0b3JWZWN0b3JbMF0tPnJlbGVhc2VTZWxlY3RvcigpLmxlYWtQdHIoKTsKICAg
ICAgICAgbV9zZWxlY3RvckFycmF5LT5zZXRMYXN0SW5TZWxlY3Rvckxpc3QoKTsKICAgICAgICAg
QVNTRVJUKG1fc2VsZWN0b3JBcnJheS0+aXNMYXN0SW5UYWdIaXN0b3J5KCkpOwogICAgICAgICBz
ZWxlY3RvclZlY3Rvci5zaHJpbmsoMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9z
ZWxlY3RvckFycmF5ID0gcmVpbnRlcnByZXRfY2FzdDxDU1NTZWxlY3Rvcio+KGZhc3RNYWxsb2Mo
c2l6ZW9mKENTU1NlbGVjdG9yKSAqIGZsYXR0ZW5lZFNpemUpKTsKLSAgICBzaXplX3QgYXJyYXlJ
bmRleCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZWN0b3JTaXplOyArK2kpIHsK
LSAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGN1cnJlbnQgPSBzZWxlY3RvclZlY3RvcltpXS5n
ZXQoKTsKLSAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKLSAgICAgICAgICAgIE93blB0cjxDU1NT
ZWxlY3Rvcj4gc2VsZWN0b3IgPSBjdXJyZW50LT5yZWxlYXNlU2VsZWN0b3IoKTsKLSAgICAgICAg
ICAgIGN1cnJlbnQgPSBjdXJyZW50LT50YWdIaXN0b3J5KCk7Ci0gICAgICAgICAgICBtb3ZlKHNl
bGVjdG9yLnJlbGVhc2UoKSwgJm1fc2VsZWN0b3JBcnJheVthcnJheUluZGV4XSk7Ci0gICAgICAg
ICAgICBBU1NFUlQoIW1fc2VsZWN0b3JBcnJheVthcnJheUluZGV4XS5pc0xhc3RJblNlbGVjdG9y
TGlzdCgpKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50KQotICAgICAgICAgICAgICAgIG1fc2Vs
ZWN0b3JBcnJheVthcnJheUluZGV4XS5zZXROb3RMYXN0SW5UYWdIaXN0b3J5KCk7Ci0gICAgICAg
ICAgICArK2FycmF5SW5kZXg7CisKKyAgICAvLyBGbGF0dGVuIHRoZSBzZWxlY3RvciBoaWVyYXJj
aHkgaW50byBleHBsb2RlZFNlbGVjdG9ycy4gRWFjaCBleHBsb2RlZFNlbGVjdG9ycyB2ZWN0b3Ig
aXMgYSBzaW5nbGUKKyAgICAvLyBlbGVtZW50IGZyb20gdGhlIGNhcnRlc2lhbiBwcm9kdWN0IG9m
IHRoZSBzZXRzIG9mIHNlbGVjdG9ycyBhdCBlYWNoIGxldmVsIGluIHRoZSBoaWVyYXJjaHkuCisg
ICAgc2l6ZV90IGV4cGxvZGVkUmVzdWx0c1NpemUgPSBzZWxlY3RvclZlY3Rvci5zaXplKCk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YWNrZWRTZWxlY3RvcnMuc2l6ZSgpOyBpKysp
CisgICAgICAgIGV4cGxvZGVkUmVzdWx0c1NpemUgKj0gc3RhY2tlZFNlbGVjdG9yc1tpXS0+c2l6
ZSgpOworCisgICAgVmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvcj4gPiBleHBsb2RlZFNlbGVjdG9y
c1tleHBsb2RlZFJlc3VsdHNTaXplXTsKKyAgICBzaXplX3QgaW5zZXJ0TG9jYXRpb25zW2V4cGxv
ZGVkUmVzdWx0c1NpemVdOworICAgIHNpemVfdCBjb25zaWRlcmVkID0gMTsKKyAgICBzaXplX3Qg
ZmluYWxTaXplID0gMDsKKworICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXhwbG9kZWRSZXN1
bHRzU2l6ZTsgaisrKSB7CisgICAgICAgIHNpemVfdCBpID0gaiAlIHNlbGVjdG9yVmVjdG9yLnNp
emUoKTsKKyAgICAgICAgYm9vbCBzdWJzZWxlY3RvciA9IHNlbGVjdG9yVmVjdG9yW2ldLT5nZXRQ
cmlvclJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOworICAgICAgICBzaXpl
X3QgcmVzdWx0ID0gbW92ZVRvRXhwbG9kZWRWZWN0b3IoJihleHBsb2RlZFNlbGVjdG9yc1tqXSks
IHNlbGVjdG9yVmVjdG9yW2ldLmdldCgpLCB0cnVlLCAwKTsKKyAgICAgICAgZmluYWxTaXplICs9
IHJlc3VsdDsKKyAgICAgICAgaW5zZXJ0TG9jYXRpb25zW2pdID0gc3Vic2VsZWN0b3IgPyAwIDog
cmVzdWx0OworICAgIH0KKworICAgIGNvbnNpZGVyZWQgPSBzZWxlY3RvclZlY3Rvci5zaXplKCk7
CisKKyAgICAvLyBUaGVyZSBhcmUgdHdvIHBvc3NpYmlsaXRpZXMgaGVyZSwgZm9yIGVhY2ggc2Vs
ZWN0b3IuCisgICAgLy8gKDEpIHRoZSBwcmV2aW91c2x5IGluc2VydGVkIHNlbGVjdG9yICh3ZSdy
ZSB3b3JraW5nIGJhY2t3YXJkcykgaGFzIGEgcHJpb3JSZWxhdGlvbgorICAgIC8vIG9mIFN1YlNl
bGVjdG9yLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGVuIHdlIGluc2VydCBiZWZvcmUgaXQgKGku
ZS4gbm90IGF0IHRoZSBlbmQgb2YKKyAgICAvLyB0aGUgZXhwbG9kZWQgbGlzdCksIGFuZCB1cGRh
dGUgdGhlIG5ld2x5IGluc2VydGVkIHNlbGVjdG9yJ3MgcmVsYXRpb24gdG8gYmUgU3ViU2VsZWN0
b3IuCisgICAgLy8gKDIpIHRoZSBwcmV2aW91c2x5IGluc2VydGVkIHNlbGVjdG9yIGhhcyBhIHBy
aW9yUmVsYXRpb24gb2Ygc29tZXRoaW5nIG90aGVyIHRoYW4KKyAgICAvLyBTdWJTZWxlY3Rvci4g
SWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlbiB3ZSBpbnNlcnQgYXQgdGhlIGVuZCBvZiB0aGUgbGlz
dCwgYW5kIHVwZGF0ZQorICAgIC8vIHRoZSBuZXh0LXRvLWxhc3Qgc2VsZWN0b3IncyByZWxhdGlv
biB0byB0aGUgaW5zZXJ0ZWQgc2VsZWN0b3IncyBwcmlvclJlbGF0aW9uLgorICAgIGZvciAoaW50
IGkgPSBzdGFja2VkU2VsZWN0b3JzLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAg
IFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIGN1cnJlbnRJblN0YWNrID0gKihz
dGFja2VkU2VsZWN0b3JzW2ldKTsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBleHBs
b2RlZFJlc3VsdHNTaXplOyBqKyspIHsKKyAgICAgICAgICAgIHNpemVfdCB1c2UgPSAoaiAvIGNv
bnNpZGVyZWQpICUgY3VycmVudEluU3RhY2suc2l6ZSgpOworICAgICAgICAgICAgYm9vbCBzdWJz
ZWxlY3RvciA9IGN1cnJlbnRJblN0YWNrW3VzZV0tPmdldFByaW9yUmVsYXRpb24oKSA9PSBDU1NT
ZWxlY3Rvcjo6U3ViU2VsZWN0b3I7CisKKyAgICAgICAgICAgIC8vIGlmIHdlIGFyZW4ndCBpbnNl
cnRpbmcgYXQgdGhlIGVuZCB3ZSBuZWVkIHRvIHVwZGF0ZQorICAgICAgICAgICAgLy8gdGhpcyBz
ZWxlY3RvcidzIHJlbGF0aW9uIHRvIGluZGljYXRlIHRoZSBuZXh0IHNlbGVjdG9yIGlzIGEgc3Vi
c2VsZWN0b3IuCisgICAgICAgICAgICBib29sIHVwZGF0ZVRvU3ViU2VsZWN0b3IgPSBpbnNlcnRM
b2NhdGlvbnNbal0gIT0gZXhwbG9kZWRTZWxlY3RvcnNbal0uc2l6ZSgpOworICAgICAgICAgICAg
c2l6ZV90IGRlbHRhID0gbW92ZVRvRXhwbG9kZWRWZWN0b3IoJihleHBsb2RlZFNlbGVjdG9yc1tq
XSksIGN1cnJlbnRJblN0YWNrW3VzZV0uZ2V0KCksIHRydWUsIGluc2VydExvY2F0aW9uc1tqXSk7
CisgICAgICAgICAgICBmaW5hbFNpemUgKz0gZGVsdGE7CisgICAgICAgICAgICBpZiAodXBkYXRl
VG9TdWJTZWxlY3RvcikKKyAgICAgICAgICAgICAgICBleHBsb2RlZFNlbGVjdG9yc1tqXVtpbnNl
cnRMb2NhdGlvbnNbal0gKyBkZWx0YSAtIDFdLmdldCgpLT5tX3JlbGF0aW9uID0gQ1NTU2VsZWN0
b3I6OlN1YlNlbGVjdG9yOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50
IGsgPSAwOworICAgICAgICAgICAgICAgIENTU1NlbGVjdG9yOjpSZWxhdGlvbiByZWxhdGlvbjsK
KyAgICAgICAgICAgICAgICBkbworICAgICAgICAgICAgICAgICAgICByZWxhdGlvbiA9IGV4cGxv
ZGVkU2VsZWN0b3JzW2pdW2luc2VydExvY2F0aW9uc1tqXSAtICgrK2spXS0+Z2V0UHJpb3JSZWxh
dGlvbigpOworICAgICAgICAgICAgICAgIHdoaWxlIChyZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6
U3ViU2VsZWN0b3IpOworICAgICAgICAgICAgICAgIGV4cGxvZGVkU2VsZWN0b3JzW2pdW2luc2Vy
dExvY2F0aW9uc1tqXSAtIDFdLmdldCgpLT5tX3JlbGF0aW9uID0gcmVsYXRpb247CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIXN1YnNlbGVjdG9yKQorICAgICAgICAgICAgICAgIGlu
c2VydExvY2F0aW9uc1tqXSA9IGV4cGxvZGVkU2VsZWN0b3JzW2pdLnNpemUoKTsKKyAgICAgICAg
fQorICAgIGNvbnNpZGVyZWQgKj0gY3VycmVudEluU3RhY2suc2l6ZSgpOworICAgIH0KKworICAg
IG1fc2VsZWN0b3JBcnJheSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q1NTU2VsZWN0b3IqPihmYXN0TWFs
bG9jKHNpemVvZihDU1NTZWxlY3RvcikgKiBmaW5hbFNpemUpKTsKKworICAgIC8vIE1vdmUgdGhl
IHNlbGVjdG9yIGNvbXBvbmVudHMgaW4gZXhwbG9kZWRTZWxlY3RvcnMgaW50byB0aGUgZmluYWwg
b3V0cHV0IHNlbGVjdG9yQXJyYXkuCisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGV4cGxvZGVkUmVzdWx0c1NpemU7IGkrKykgeworICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IGV4cGxvZGVkU2VsZWN0b3JzW2ldLnNpemUoKTsgaisrKSB7Cisg
ICAgICAgICAgICBtb3ZlKGV4cGxvZGVkU2VsZWN0b3JzW2ldW2pdLnJlbGVhc2UoKSwgJm1fc2Vs
ZWN0b3JBcnJheVtpbmRleF0pOworICAgICAgICAgICAgaWYgKGogPCBleHBsb2RlZFNlbGVjdG9y
c1tpXS5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgIG1fc2VsZWN0b3JBcnJheVtpbmRleF0u
c2V0Tm90TGFzdEluVGFnSGlzdG9yeSgpOworICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAg
fQotICAgICAgICBBU1NFUlQobV9zZWxlY3RvckFycmF5W2FycmF5SW5kZXggLSAxXS5pc0xhc3RJ
blRhZ0hpc3RvcnkoKSk7CisgICAgICAgIGV4cGxvZGVkU2VsZWN0b3JzW2ldLnNocmluaygwKTsK
ICAgICB9Ci0gICAgQVNTRVJUKGZsYXR0ZW5lZFNpemUgPT0gYXJyYXlJbmRleCk7Ci0gICAgbV9z
ZWxlY3RvckFycmF5W2FycmF5SW5kZXggLSAxXS5zZXRMYXN0SW5TZWxlY3Rvckxpc3QoKTsKLSAg
ICBzZWxlY3RvclZlY3Rvci5zaHJpbmsoMCk7CisgICAgQVNTRVJUKGluZGV4ID09IGZpbmFsU2l6
ZSk7CisgICAgbV9zZWxlY3RvckFycmF5W2luZGV4IC0gMV0uc2V0TGFzdEluU2VsZWN0b3JMaXN0
KCk7Cit9CisKK3Vuc2lnbmVkIENTU1NlbGVjdG9yTGlzdDo6bW92ZVRvRXhwbG9kZWRWZWN0b3Io
VmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvcj4gPiogdmVjdG9yLCBDU1NQYXJzZXJTZWxlY3Rvciog
Y3VycmVudCwgYm9vbCB1c2VDb3B5LCB1bnNpZ25lZCBpbnNlcnRJbmRleCkKK3sKKyAgICBpbnQg
aW5pdGlhbEluc2VydEluZGV4ID0gaW5zZXJ0SW5kZXg7CisgICAgd2hpbGUgKGN1cnJlbnQpIHsK
KyAgICAgICAgdmVjdG9yLT5pbnNlcnQoaW5zZXJ0SW5kZXgsIHVzZUNvcHkgPyBjdXJyZW50LT5k
dXBsaWNhdGVTZWxlY3RvcigpIDogY3VycmVudC0+cmVsZWFzZVNlbGVjdG9yKCkpOworICAgICAg
ICBpbnNlcnRJbmRleCArPSAxOworICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+dGFnSGlzdG9y
eSgpOworICAgIH0KKworICAgIHJldHVybiBpbnNlcnRJbmRleCAtIGluaXRpYWxJbnNlcnRJbmRl
eDsKIH0KIAogdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmRlbGV0ZVNlbGVjdG9ycygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKaW5kZXggN2Q0NWE2YTU0MzhmM2ZmYjU3M2U4NTA4MWRh
NWNhZjNlZDM3Y2MxNi4uZDg2OGUxYzMyZDRiODcxZDJjYzkyNTI5NGI4NzE0MWRkNWM1ZDNjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaApAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgfkNTU1NlbGVjdG9yTGlzdCgpOwogCiAgICAgdm9pZCBhZG9wdChDU1NTZWxlY3Rv
ckxpc3QmIGxpc3QpOwotICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRy
PENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3Rvcik7CisgICAgdm9pZCBhZG9wdFNl
bGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9y
VmVjdG9yLCBWZWN0b3I8VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogPiYgc3Rh
Y2tlZFNlbGVjdG9ycyk7CiAKICAgICBDU1NTZWxlY3RvciogZmlyc3QoKSBjb25zdCB7IHJldHVy
biBtX3NlbGVjdG9yQXJyYXkgPyBtX3NlbGVjdG9yQXJyYXkgOiAwOyB9CiAgICAgc3RhdGljIENT
U1NlbGVjdG9yKiBuZXh0KENTU1NlbGVjdG9yKik7CkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZVNlbGVjdG9ycygpOworICAgIHVuc2lnbmVkIG1v
dmVUb0V4cGxvZGVkVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3I+ID4qLCBDU1NQYXJz
ZXJTZWxlY3RvciosIGJvb2wgdXNlQ29weSwgdW5zaWduZWQgaW5zZXJ0SW5kZXgpOworCiAKICAg
ICAvLyBFbmQgb2YgYSBtdWx0aXBhcnQgc2VsZWN0b3IgaXMgaW5kaWNhdGVkIGJ5IG1faXNMYXN0
SW5UYWdIaXN0b3J5IGJpdCBpbiB0aGUgbGFzdCBpdGVtLgogICAgIC8vIEVuZCBvZiB0aGUgYXJy
YXkgaXMgaW5kaWNhdGVkIGJ5IG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgYml0IGluIHRoZSBsYXN0
IGl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggZTIzMGE5NGZkNWMyY2ZhNWIzOTA3NGQy
MDkxY2Y5YmU5ZjY2MTg2OS4uOGExM2E0N2Q3OWUxMzc1OGIzZGQwZDI1NThlMzQyMzc2ZTAzN2Vm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtNDYsNyArNDYsMTAgQEAgcHVibGljOgogICAg
IAogICAgIENTU1N0eWxlUnVsZSogZW5zdXJlQ1NTU3R5bGVSdWxlKCkgY29uc3Q7CiAgICAgCi0g
ICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4mIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNl
bGVjdG9ycyk7IH0KKyAgICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JzLCBWZWN0b3I8VmVjdG9yPE93blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gPiogPiYgc3RhY2tlZFNlbGVjdG9ycykgCisgICAgeworICAgICAgICBt
X3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9ycywgc3RhY2tlZFNlbGVj
dG9ycyk7CisgICAgfQogICAgIHZvaWQgYWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0
JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHQoc2VsZWN0b3JzKTsgfQogICAgIHZv
aWQgc2V0UHJvcGVydGllcyhQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHByb3BlcnRpZXMp
IHsgbV9wcm9wZXJ0aWVzID0gcHJvcGVydGllczsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCmluZGV4IGNjMzc3YzQ2MTNkNDEwYWU4Njk5ODVlNzMy
OWUwYjljN2UwYmE2YzIuLmYwYmE0OWNiYjM5YWRiYmM0NGY2YzVmMDNmNmIzOGJiZjQyNTc3NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAKQEAgLTM4LDE0
ICszOCwxNCBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotV2ViS2l0Q1NTUmVnaW9uUnVsZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZShDU1NTdHlsZVNo
ZWV0KiBwYXJlbnQsIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9y
cywgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZXMpCitXZWJLaXRDU1NSZWdpb25SdWxlOjpX
ZWJLaXRDU1NSZWdpb25SdWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgVmVjdG9yPE93blB0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzLCBWZWN0b3I8VmVjdG9yPE93blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gPiogPiYgc3RhY2tlZFNlbGVjdG9ycywgUGFzc1JlZlB0cjxDU1NSdWxl
TGlzdD4gcnVsZXMpCiAgICAgOiBDU1NSdWxlKHBhcmVudCwgQ1NTUnVsZTo6V0VCS0lUX1JFR0lP
Tl9SVUxFKQogICAgICwgbV9ydWxlTGlzdChydWxlcykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCBtX3J1bGVMaXN0LT5sZW5ndGgoKTsgKytpbmRleCkKICAgICAgICAg
bV9ydWxlTGlzdC0+aXRlbShpbmRleCktPnNldFBhcmVudFJ1bGUodGhpcyk7CiAKLSAgICBtX3Nl
bGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMpOworICAgIG1fc2VsZWN0
b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycywgc3RhY2tlZFNlbGVjdG9ycyk7
CiB9CiAKIFdlYktpdENTU1JlZ2lvblJ1bGU6On5XZWJLaXRDU1NSZWdpb25SdWxlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5oCmluZGV4IDYyNGVkM2Y2M2NjM2MzMzdi
MWE3MjU1ZmIxNTAxNTIxMWM0NTZkN2MuLmEzMTI0ZWZkNjA3OGE3NTJkOTcyNTc4YzE1ZjcwMTU5
NzQ1NTJhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25S
dWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaApAQCAt
NDQsOSArNDQsOSBAQCBjbGFzcyBDU1NSdWxlTGlzdDsKIAogY2xhc3MgV2ViS2l0Q1NTUmVnaW9u
UnVsZTogcHVibGljIENTU1J1bGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YktpdENTU1JlZ2lvblJ1bGU+IGNyZWF0ZShDU1NTdHlsZVNoZWV0KiBwYXJlbnQsIFZlY3RvcjxP
d25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycywgUGFzc1JlZlB0cjxDU1NSdWxl
TGlzdD4gcnVsZXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0Q1NTUmVnaW9uUnVsZT4g
Y3JlYXRlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gPiogc2VsZWN0b3JzLCBWZWN0b3I8VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gPiogPiYgc3RhY2tlZFNlbGVjdG9ycywgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZXMp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU1JlZ2lvblJ1bGUo
cGFyZW50LCBzZWxlY3RvcnMsIHJ1bGVzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViS2l0Q1NTUmVnaW9uUnVsZShwYXJlbnQsIHNlbGVjdG9ycywgc3RhY2tlZFNlbGVjdG9ycywg
cnVsZXMpKTsKICAgICB9CiAKICAgICB+V2ViS2l0Q1NTUmVnaW9uUnVsZSgpOwpAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgQ1NTUnVsZUxpc3QqIGNzc1J1bGVzKCkgY29uc3QgeyByZXR1
cm4gbV9ydWxlTGlzdC5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFdlYktpdENTU1JlZ2lvblJ1
bGUoQ1NTU3R5bGVTaGVldCogcGFyZW50LCBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+KiBzZWxlY3RvcnMsIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVzKTsKKyAgICBXZWJL
aXRDU1NSZWdpb25SdWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgVmVjdG9yPE93blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzLCBWZWN0b3I8VmVjdG9yPE93blB0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4gPiogPiYgc3RhY2tlZFNlbGVjdG9ycywgUGFzc1JlZlB0cjxDU1NSdWxlTGlz
dD4gcnVsZXMpOwogCiAgICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OwogICAgIFJl
ZlB0cjxDU1NSdWxlTGlzdD4gbV9ydWxlTGlzdDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxODY1NzNkMzZkMGU3MDlkMmNh
YmJlZmYyODY3ZGQ1MDQwNTcxNDUxLi4wNGQ3ZGMwZGRlNTA1MDM0NzcwOWYxMmI1ODNlN2YwZDY4
ZTY3ZTRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMjkgIFNoYW5lIFN0ZXBoZW5z
ICA8c2hhbmVzdGVwaGVuc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtXSVBdIEltcGxlbWVudCBD
U1MgSGllcmFyY2hpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBjc3MzL3NpbXBsZS1oaWVyYXJjaGllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAyLTI4
ICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
Z2FyZGVuaW5nLCBtYXJrIGFub3RoZXIgY29tcG9zaXRpbmcgdGVzdCBhcyBmbGFreS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2ltcGxlLWhpZXJhcmNoaWVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2NzczMvc2ltcGxlLWhpZXJhcmNoaWVzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mM2ZlYmQ3YzZjZTM0MDgyN2FkZjE1MWFjYWEyMTllMGY1YmExMmZhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNzAgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJW
aWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4Mzg0Cisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgzODQKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgzNjgKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNp
emUgNzg0eDE4IFtjb2xvcj0jRkYwMDAwXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDE5OXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTk5OiAiVGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gcmVkIHRleHQiCisgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwxOCkgc2l6ZSA0MDB4NDAgW2JnY29sb3I9I0RERERERF0KKyAgICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA0MDB4MTggW2NvbG9yPSMwMDAwRkZdCisg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjA2eDE4CisgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMDY6ICJUaGlzIGRpdiBzaG91bGQgY29udGFp
biBibHVlIHRleHQiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1OCkgc2l6ZSA0MDB4
NDAgW2NvbG9yPSMwMDgwMDBdIFtiZ2NvbG9yPSNERERERERdCisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIxNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDIxNDogIlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCw5OCkgc2l6ZSA3ODR4MTQ0CisgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIxNHgxOAorICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMjE0OiAiVGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gZ3JlZW4g
dGV4dCIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgNzg0eDE4IFtj
b2xvcj0jMDA4MDAwXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDIxNHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjE0OiAiVGhpcyBk
aXYgc2hvdWxkIGNvbnRhaW4gZ3JlZW4gdGV4dCIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDAsMzYpIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIxNHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMjE0OiAiVGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gZ3JlZW4gdGV4dCIKKyAg
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTQpIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4
MDAwXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIxNHgxOAor
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjE0OiAiVGhpcyBkaXYgc2hvdWxk
IGNvbnRhaW4gZ3JlZW4gdGV4dCIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNzIp
IHNpemUgNzg0eDcyCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3
ODR4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIzOHgx
OAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMzg6ICJUaGlzIGRpdiBz
aG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dCIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDIzOHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAyMzg6ICJUaGlzIGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dCIKKyAgICAgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNikgc2l6ZSA3ODR4MTgKKyAgICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIzOHgxOAorICAgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCAyMzg6ICJUaGlzIGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3Jl
ZW4gdGV4dCIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1NCkgc2l6ZSA3ODR4
MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIzOHgxOAor
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMzg6ICJUaGlzIGRpdiBzaG91
bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dCIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDI0Mikgc2l6ZSA3ODR4OTAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6
ZSA3ODR4MzYKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgx
OCBbY29sb3I9I0ZGQzBDQl0KKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDE1NngxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNTY6
ICJUaGlzIHRleHQgc2hvdWxkIGJlIHBpbmssIgorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICgwLDE4KSBzaXplIDc4NHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMTAxeDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDEwMTogImJ1dCBub3QgdGhpcyB0ZXh0LiIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDAsMzYpIHNpemUgNzg0eDE4IFtjb2xvcj0jRkZDMENCXQorICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE1NngxOAorICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMTU2OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBwaW5rLiIKKyAgICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTQpIHNpemUgNzg0eDE4IFtjb2xvcj0jRkZDMENCXQor
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE1NngxOAorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTU2OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBw
aW5rLiIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNzIpIHNpemUgNzg0eDE4Cisg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTgweDE4CisgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxODA6ICJUaGlzIHRleHQgc2hvdWxkIG5vdCBi
ZSBwaW5rLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDMzMikgc2l6ZSA3ODR4MzYK
KyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MzYgW2JnY29sb3I9
I0ZGRERERF0KKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgx
OCBbY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDI3NXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNzU6
ICJUaGlzIHNob3VsZCBiZSByZWQgd2l0aCBhIHBpbmsgYmFja2dyb3VuZC4iCisgICAgICAgICAg
ICBSZW5kZXJJbmxpbmUgKGdlbmVyYXRlZCkgYXQgKDAsMCkgc2l6ZSAxOTR4MTgKKyAgICAgICAg
ICAgICAgUmVuZGVyVGV4dCBhdCAoMjc1LDApIHNpemUgMTk0eDE4CisgICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDI3NSwwKSB3aWR0aCAxOTQ6ICIgKEhlcmUncyBzb21lIGluc2VydGVkIGNv
bnRlbnQpIgorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE4KSBzaXpl
IDc4NHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjcy
eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI3MjogIlRoaXMgc2hv
dWxkIGp1c3QgaGF2ZSB0aGUgcGluayBiYWNrZ3JvdW5kLiIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3NpbXBs
ZS1oaWVyYXJjaGllcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYzJmNTQ4MDEyZmVlYzBjOGY2MmJiMWYy
MTYyMGY2ZmQ4OWNkYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3NpbXBs
ZS1oaWVyYXJjaGllcy5odG1sCkBAIC0wLDAgKzEsOTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIFRlc3QgYSB0cml2aWFsbHkgbmVzdGVkIHJ1bGUgKi8K
KworLmEgeworICAgICYgLmIgeworICAgICAgICBjb2xvcjogcmVkOworICAgIH0KK30KKworLyog
VGVzdCBpbnRhcmNhbGF0aW9uIG9mIG5lc3RlZCBydWxlcyBhbmQgcHJvcGVydGllcy4gKi8KKy8q
IFRlc3QgZGVzY2VuZGFudCBzZWxlY3RvciBhbmQgbm8gc2VsZWN0b3IuICovCisKKy5jIHsKKyAg
ICBoZWlnaHQ6IDQwcHg7CisgICAgJiAuZCB7CisgICAgICAgIGNvbG9yOiBibHVlOworICAgIH0K
KyAgICB3aWR0aDogNDAwcHg7CisgICAgJi5lIHsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAg
IH0KKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGRkOworfQorCisvKiBUZXN0IG5vbi1zcGFj
ZS1iYXNlZCBjb21iaW5hdG9yIHdpdGggYWxsIHBvc3NpYmxlIHNwYWNpbmdzLiAqLworLmYgewor
ICAgICY+LmcgeworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorICAgICY+IC5oIHsKKyAg
ICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKyAgICAmID4uaSB7CisgICAgICAgIGNvbG9yOiBn
cmVlbjsKKyAgICB9CisgICAgJiA+IC5qIHsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0K
K30KKworLyogVGVzdCBtdWx0aXBsZSBuZXN0ZWQgc2VsZWN0b3JzIGluIHNhbWUgbGlzdC4gKi8K
Ky5rIHsgCisgICAgJiAubCwgJi5tLCAmICsgLm4geworICAgICAgICBjb2xvcjogcGluazsKKyAg
ICB9Cit9CisKKy8qIFRlc3QgZGVlcCBuZXN0aW5nIG9mIHNlbGVjdG9ycy4gKi8KKy5vIHsKKyAg
ICAmIC5wIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZGRkZDsKKyAgICAgICAgJiAu
cSB7CisgICAgICAgICAgICBjb2xvcjogcmVkOworICAgICAgICAgICAgJjo6YWZ0ZXIgeworICAg
ICAgICAgICAgICAgIGNvbnRlbnQ6ICIgKEhlcmUncyBzb21lIGluc2VydGVkIGNvbnRlbnQpIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworCis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGNsYXNzPSJhIj48ZGl2IGNsYXNzPSJiIj5UaGlzIGRpdiBzaG91bGQg
Y29udGFpbiByZWQgdGV4dDwvZGl2PjwvZGl2PgorCis8ZGl2IGNsYXNzPSJjIj48ZGl2IGNsYXNz
PSJkIj5UaGlzIGRpdiBzaG91bGQgY29udGFpbiBibHVlIHRleHQ8L2Rpdj48L2Rpdj4KKworPGRp
diBjbGFzcz0iYyBlIj5UaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisK
KzxkaXYgY2xhc3M9ImYiPgorICA8ZGl2IGNsYXNzPSJnIj5UaGlzIGRpdiBzaG91bGQgY29udGFp
biBncmVlbiB0ZXh0PC9kaXY+CisgIDxkaXYgY2xhc3M9ImgiPlRoaXMgZGl2IHNob3VsZCBjb250
YWluIGdyZWVuIHRleHQ8L2Rpdj4KKyAgPGRpdiBjbGFzcz0iaSI+VGhpcyBkaXYgc2hvdWxkIGNv
bnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICA8ZGl2IGNsYXNzPSJqIj5UaGlzIGRpdiBzaG91bGQg
Y29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisgIDxkaXY+CisgICAgPGRpdiBjbGFzcz0iZyI+VGhp
cyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKyAgICA8ZGl2IGNsYXNz
PSJoIj5UaGlzIGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICAgIDxk
aXYgY2xhc3M9ImkiPlRoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+
CisgICAgPGRpdiBjbGFzcz0iaiI+VGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRl
eHQ8L2Rpdj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzxkaXY+CisgICAgPGRpdiBjbGFzcz0iayI+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImwiPlRoaXMgdGV4dCBzaG91bGQgYmUgcGluayw8L2Rpdj4gYnV0
IG5vdCB0aGlzIHRleHQuPC9kaXY+CisgICAgPGRpdiBjbGFzcz0iayBtIj5UaGlzIHRleHQgc2hv
dWxkIGJlIHBpbmsuPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ibiI+VGhpcyB0ZXh0IHNob3VsZCBi
ZSBwaW5rLjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im4iPlRoaXMgdGV4dCBzaG91bGQgbm90IGJl
IHBpbmsuPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9Im8iPjxkaXYgY2xhc3M9InAiPjxkaXYg
Y2xhc3M9InEiPlRoaXMgc2hvdWxkIGJlIHJlZCB3aXRoIGEgcGluayBiYWNrZ3JvdW5kLjwvZGl2
PiBUaGlzIHNob3VsZCBqdXN0IGhhdmUgdGhlIHBpbmsgYmFja2dyb3VuZC48L2Rpdj48L2Rpdj4K
KzwvYm9keT4KKzxzY3JpcHQ+CitpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133171</attachid>
            <date>2012-03-21 19:35:40 -0700</date>
            <delta_ts>2012-03-21 22:02:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79939-20120322133537.patch</filename>
            <type>text/plain</type>
            <size>62626</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IxN2U4ZjMzMWJkNDI4
ZGRmZjE5ZjUxM2ZkOTEyMzQ3NDI1ZGEwYy4uNzUzNTE5ZjkxYWY1ZWUwN2FkMGYyZTdkZTk3MWYw
NzVlYzk3ZDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTAzLTIyICBTaGFu
ZSBTdGVwaGVucyAgPHNoYW5lc3RlcGhlbnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQXSBJ
bXBsZW1lbnQgQ1NTIEhpZXJhcmNoaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03OTkzOQorCisgICAgICAgIFRoaXMgQ1NTIGZlYXR1cmUgaXMgcHJv
cG9zZWQgaW4gdGhlIGZvbGxvd2luZyBFZGl0b3IncyBEcmFmdDoKKyAgICAgICAgaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3NzMy1oaWVyYXJjaGllcy8uCisKKyAgICAgICAgQXMgZWFjaCBzdHls
ZSBydWxlIGlzIHBhcnNlZCwgdGhlIHNlbGVjdG9yIGZvciB0aGUgc3R5bGUKKyAgICAgICAgcnVs
ZSBpcyBib3RoIGNvbnZlcnRlZCBpbnRvIGEgQ1NTU2VsZWN0b3JMaXN0IGFuZCBwdXNoZWQKKyAg
ICAgICAgb250byBhIFNlbGVjdG9yVmVjdG9yIHRvIG1haW50YWluIHRoZSBjdXJyZW50IHNlbGVj
dG9yCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgV2hlbiBhIG5lc3RlZCBzdHlsZSBydWxl
IGlzIGVuY291bnRlcmVkLCBib3RoIHRoZSBuZXcgc2VsZWN0b3IKKyAgICAgICAgYW5kIHRoZSBj
dXJyZW50IFNlbGVjdG9yVmVjdG9yIGNvbnRleHQgYXJlIHByb3ZpZGVkIHRvIHRoZQorICAgICAg
ICBuZXcgQ1NTU2VsZWN0b3JMaXN0IHRoYXQgcmVwcmVzZW50cyB0aGUgc2VsZWN0b3IgZm9yIHRo
ZSBuZXN0ZWQKKyAgICAgICAgcnVsZS4gQXQgdGhpcyBwb2ludCB0aGUgY29udGV4dCBhbmQgbmV3
IHNlbGVjdG9yIGFyZSBjb21iaW5lZCAtIAorICAgICAgICB0aGlzIGlzIGEgbGl0dGxlIGNvbXBs
ZXggYmVjYXVzZToKKyAgICAgICAgICAxKSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUg
Y29tbWEtc2VwYXJhdGVkIHNlbGVjdG9yCisgICAgICAgICAgICAgY29tcG9uZW50cyBpbiBlYWNo
IHBhcnQgb2YgdGhlIFNlbGVjdG9yVmVjdG9yLCBhbmQgdGhlc2UKKyAgICAgICAgICAgICBuZWVk
IHRvIGJlIGNvbWJpbmVkCisgICAgICAgICAgMikgdGhlIG91dHB1dCBsaXN0IG9yZGVyIChpbiBv
cmRlciBvZiBtYXRjaGluZykgZG9lc24ndCBtYXRjaAorICAgICAgICAgICAgIHRoZSBpbmNvbWlu
ZyB2ZWN0b3Igb3JkZXIgKGluIG9yZGVyIG9mIHBhcnNpbmcpIGFuZCB0aGlzCisgICAgICAgICAg
ICAgbmVlZHMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LCBlc3BlY2lhbGx5IGF0IHRoZSBib3Vu
ZGFyaWVzCisgICAgICAgICAgICAgYmV0d2VlbiBTZWxlY3RvclZlY3RvciBlbnRyaWVzLgorCisg
ICAgICAgIFBhc3QgdGhlIHBvaW50IG9mIHRoZSBDU1NTZWxlY3Rvckxpc3QsIG5vIGRlZXBlciBt
b2RpZmljYXRpb25zIGFyZQorICAgICAgICByZXF1aXJlZC4KKworICAgICAgICBOb3RlIHRoYXQg
dGhpcyBwYXRjaCBkb2Vzbid0IGltcGxlbWVudCBzdXBwb3J0IGZvciB0aGUgQ1NTT00gLSAKKyAg
ICAgICAgdGhhdCB3aWxsIGNvbWUgaW4gZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3NzMy9zaW1wbGUtaGllcmFy
Y2hpZXMuaHRtbAorCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gYWxsb3cgbmVzdGluZyBvZiBz
ZWxlY3RvcnMgdG8gYmUgcGFyc2VkLgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1BhZ2VSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6
YWRvcHRTZWxlY3RvclZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVh
dGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUpOgorCisg
ICAgICAgIEFkZCBhIHNlbGVjdG9yVmVjdG9yIHRvIHRyYWNrIGN1cnJlbnQgc2VsZWN0b3Igc3Rh
Y2sKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnJldXNhYmxlU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cHVzaFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cG9wU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoU3RhY2tlZFBh
cnNlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpTdGFja2VkUGFy
c2VkUHJvcGVydGllczo6U3RhY2tlZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpkdXBsaWNhdGVTZWxlY3Rvcik6
CisgICAgICAgIChDU1NQYXJzZXJTZWxlY3Rvcik6CisKKyAgICAgICAgVHJhY2sgcHJpb3IgcmVs
YXRpb24gdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBzdGl0Y2gKKyAgICAgICAgc2VsZWN0b3JWZWN0
b3IgKyBjdXJyZW50IHNlbGVjdG9yIGludG8gYSBjb2hlcmVudCBzZWxlY3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpnZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OkNT
U1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnNldFNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxp
c3RXcmFwcGVyOjp+Q1NTU2VsZWN0b3JMaXN0V3JhcHBlcik6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpz
ZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpnZXRQcmlv
clJlbGF0aW9uKToKKyAgICAgICAgKFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZXRWYWx1ZSk6CisKKyAgICAgICAgSW1wbGVtZW50IGFsZ29yaXRobSB0byBjb21i
aW5lIHNlbGVjdG9yVmVjdG9yIHdpdGgKKyAgICAgICAgY3VycmVudCBzZWxlY3RvciB3aGVuIGdl
bmVyYXRpbmcgdGhlIENTU1NlbGVjdG9yIGFycmF5LgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rv
ckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVj
dG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3JMaXN0Ojptb3ZlVG9FeHBsb2RlZFZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1NlbGVj
dG9yTGlzdC5oOgorICAgICAgICAoQ1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvU3R5
bGVSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmFkb3B0U2VsZWN0b3JWZWN0
b3IpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1JlZ2lvblJ1bGUpOgorICAgICAg
ICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmg6CisKIDIwMTItMDMtMjEgIERhbmEgSmFuc2Vu
cyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFYXJseSBvdXQg
aW4gYSBuZXcgcHJlcGFyZVRvRHJhdygpIHN0ZXAgaWYgY2hlY2tlcmJvYXJkaW5nIGFuIGFjY2Vs
ZXJhdGVkIGFuaW1hdGlvbiBpbiBvcmRlciB0byBza2lwIHRoZSBmcmFtZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkKaW5kZXggZWNlNmQ5M2M5MzhiNTIxNWY1MjE5ZGI1ZmMzZWY0MmRhNDY4ZWM5NC4u
NTgwYjE3ZTRmOGYzNTlmYmY5ZWUxNTk4NzI1Mjg3Y2IyMWFmODgwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55CkBAIC03MSw3ICs3MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAg
ICAgQ1NTUnVsZSogcnVsZTsKICAgICBDU1NSdWxlTGlzdCogcnVsZUxpc3Q7CiAgICAgQ1NTUGFy
c2VyU2VsZWN0b3IqIHNlbGVjdG9yOwotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHNlbGVjdG9yTGlzdDsKKyAgICBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JMaXN0
OwogICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIG1hcmdpbkJveDsKICAgICBDU1NTZWxl
Y3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CiAgICAgTWVkaWFMaXN0KiBtZWRpYUxpc3Q7CkBAIC0y
MDUsNiArMjA1LDcgQEAgc3RhdGljIGludCBjc3N5eWxleChZWVNUWVBFKiB5eWx2YWwsIHZvaWQq
IHBhcnNlcikKICV0eXBlIDxydWxlPiBjaGFyc2V0CiAldHlwZSA8cnVsZT4gaWdub3JlZF9jaGFy
c2V0CiAldHlwZSA8cnVsZT4gcnVsZXNldAorJXR5cGUgPHJ1bGU+IG5lc3RlZF9ydWxlc2V0X2Nv
bnRlbnRzCiAldHlwZSA8cnVsZT4gbWVkaWEKICV0eXBlIDxydWxlPiBpbXBvcnQKICV0eXBlIDxy
dWxlPiBuYW1lc3BhY2UKQEAgLTI1NCw2ICsyNTUsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZ
U1RZUEUqIHl5bHZhbCwgdm9pZCogcGFyc2VyKQogJXR5cGUgPHNlbGVjdG9yPiBzaW1wbGVfc2Vs
ZWN0b3IKICV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKICV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNl
bGVjdG9yX2xpc3QKKyV0eXBlIDxzZWxlY3Rvckxpc3Q+IG5lc3RlZF9zZWxlY3Rvcl9saXN0CiAl
dHlwZSA8c2VsZWN0b3JMaXN0PiBzaW1wbGVfc2VsZWN0b3JfbGlzdAogJXR5cGUgPHNlbGVjdG9y
TGlzdD4gcmVnaW9uX3NlbGVjdG9yCiAldHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yX3dpdGhfdHJh
aWxpbmdfd2hpdGVzcGFjZQpAQCAtMjY1LDkgKzI2NywxMyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4
KFlZU1RZUEUqIHl5bHZhbCwgdm9pZCogcGFyc2VyKQogCiAldHlwZSA8Ym9vbGVhbj4gZGVjbGFy
YXRpb25fbGlzdAogJXR5cGUgPGJvb2xlYW4+IGRlY2xfbGlzdAotJXR5cGUgPGJvb2xlYW4+IGRl
Y2xhcmF0aW9uCisldHlwZSA8Ym9vbGVhbj4gbmVzdGVkX3J1bGVzZXQKKyV0eXBlIDxib29sZWFu
PiBkZWNsYXJhdGlvbl9zZXAKKyV0eXBlIDxib29sZWFuPiByYXdfZGVjbGFyYXRpb24KICV0eXBl
IDxib29sZWFuPiBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMKIAorJXR5cGUgPGJvb2xlYW4+IG1h
eWJlX3NwYWNlCisKICV0eXBlIDxib29sZWFuPiBwcmlvCiAKICV0eXBlIDxpbnRlZ2VyPiBtYXRj
aApAQCAtMzI2LDkgKzMzMiw5IEBAIHdlYmtpdF92YWx1ZToKICAgICAgICAgQ1NTUGFyc2VyKiBw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgaWYgKCQ0KSB7CiAg
ICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7
Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVy
dGllcy5zaXplKCk7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1f
cGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpOwogICAgICAgICAgICAgaWYgKCFwLT5wYXJzZVZhbHVl
KHAtPm1faWQsIHAtPm1faW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKHAtPm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgLSBvbGRQYXJzZWRQcm9w
ZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAtPm1f
cGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CiAgICAgICAg
ICAgICBwLT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDYs
MTQgKzM1MiwxNCBAQCB3ZWJraXRfc2VsZWN0b3I6CiAgICAgICAgIGlmICgkNCkgewogICAgICAg
ICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAg
ICAgICAgICAgIGlmIChwLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IpCi0gICAgICAg
ICAgICAgICAgcC0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yLT5hZG9wdFNlbGVjdG9y
VmVjdG9yKCokNCk7CisgICAgICAgICAgICAgICAgcC0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNl
bGVjdG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCokNCwgcC0+bV9uZXN0ZWRTZWxlY3RvclN0YWNr
KTsKICAgICAgICAgfQogICAgIH0KIDsKIAogbWF5YmVfc3BhY2U6Ci0gICAgLyogZW1wdHkgKi8g
JXByZWMgVU5JTVBPUlRBTlRfVE9LCi0gIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQorICAgIC8q
IGVtcHR5ICovICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7ICQkID0gZmFsc2U7IH0KKyAgfCBtYXli
ZV9zcGFjZSBXSElURVNQQUNFIHsgJCQgPSB0cnVlOyB9CiAgIDsKIAogbWF5YmVfc2dtbDoKQEAg
LTg1MSwxMSArODU3LDE4IEBAIHJ1bGVzZXQ6CiAgICAgfQogICA7CiAKK25lc3RlZF9ydWxlc2V0
X2NvbnRlbnRzOgorICAgIG5lc3RlZF9zZWxlY3Rvcl9saXN0IGJlZm9yZV9ydWxlX29wZW5pbmdf
YnJhY2UgJ3snIG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0
IGNsb3NpbmdfYnJhY2UgeworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQ
YXJzZXIqPihwYXJzZXIpOworICAgICAgICAkJCA9IHAtPmNyZWF0ZVN0eWxlUnVsZSgkMSk7Cisg
ICAgfQorICA7CisKIHNlbGVjdG9yX2xpc3Q6CiAgICAgc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRB
TlRfVE9LIHsKICAgICAgICAgaWYgKCQxKSB7CiAgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBz
dGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICAgICAgJCQgPSBwLT5yZXVz
YWJsZVNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJCA9IHAtPnNlbGVjdG9yVmVjdG9y
KCk7CiAgICAgICAgICAgICAkJC0+c2hyaW5rKDApOwogICAgICAgICAgICAgJCQtPmFwcGVuZChw
LT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwogICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNl
bGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CkBAIC04NzUsNiArODg4LDU4IEBAIHNlbGVjdG9yX2xp
c3Q6CiAgICAgfQogICAgOwogCituZXN0ZWRfc2VsZWN0b3JfbGlzdDoKKyAgICBzZWxlY3RvciAl
cHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAgICAgIENT
U1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAg
ICAkJCA9IHAtPnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOwor
ICAgICAgICAgICAgaWYgKHAtPm1fdHJhaWxpbmdTcGFjZSkKKyAgICAgICAgICAgICAgICAkMS0+
c2V0UHJpb3JSZWxhdGlvbihDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgJDEtPnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OlN1
YlNlbGVjdG9yKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0
b3IoJDEpKTsKKyAgICAgICAgICAgIHAtPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlv
bigpOworICAgICAgICB9CisgICAgfQorICAgIHwgY29tYmluYXRvciBzZWxlY3RvciAlcHJlYyBV
TklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDIpIHsKKyAgICAgICAgICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAgICAkJCA9
IHAtPnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOworICAgICAg
ICAgICAgJDItPnNldFByaW9yUmVsYXRpb24oJDEpOworICAgICAgICAgICAgJCQtPmFwcGVuZChw
LT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMikpOworICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNl
bGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBuZXN0ZWRf
c2VsZWN0b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2UgJyYnIG1heWJlX3NwYWNlIHNlbGVjdG9yICVw
cmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAkNikgeworICAgICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAg
ICAgICAgICQkID0gJDE7CisgICAgICAgICAgICBpZiAoJDUpCisgICAgICAgICAgICAgICAgJDYt
PnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICQ2LT5zZXRQcmlvclJlbGF0aW9uKENTU1NlbGVjdG9yOjpT
dWJTZWxlY3Rvcik7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVj
dG9yKCQ2KSk7CisgICAgICAgICAgICBwLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRp
b24oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IG5l
c3RlZF9zZWxlY3Rvcl9saXN0ICcsJyBtYXliZV9zcGFjZSAnJicgbWF5YmVfc3BhY2UgY29tYmlu
YXRvciBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgIGlmICgkMSAmJiAkNykg
eworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
OworICAgICAgICAkJCA9ICQxOworICAgICAgICAkNy0+c2V0UHJpb3JSZWxhdGlvbigkNik7Cisg
ICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDcpKTsKKyAgICAgICAg
cC0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgfSBlbHNlCisgICAg
ICAgICQkID0gMDsKKyAgfQorICB8IG5lc3RlZF9zZWxlY3Rvcl9saXN0IGVycm9yIHsKKyAgICAg
ICAgJCQgPSAwOworICAgIH0KKyAgIDsKKwogc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNw
YWNlOgogICAgIHNlbGVjdG9yIFdISVRFU1BBQ0UgewogICAgICAgICAkJCA9ICQxOwpAQCAtMTE2
Miw3ICsxMjI3LDcgQEAgcHNldWRvOgogICAgICAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGlj
X2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOwogICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzcyk7Ci0gICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcigqcC0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDQpKTsKKyAgICAgICAgICAgICQkLT5hZG9wdFNlbGVj
dG9yVmVjdG9yKCpwLT5zaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcigkNCksIHAtPm1fbmVzdGVk
U2VsZWN0b3JTdGFjayk7CiAgICAgICAgICAgICAkMi5sb3dlcigpOwogICAgICAgICAgICAgJCQt
PnNldFZhbHVlKCQyKTsKICAgICAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUg
PSAkJC0+cHNldWRvVHlwZSgpOwpAQCAtMTIyMSw5ICsxMjg2LDkgQEAgcHNldWRvOgogICAgICAg
ICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKIAotICAgICAgICAgICAgVmVjdG9y
PE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKKyAgICAgICAgICAg
IENTU1NlbGVjdG9yVmVjdG9yIHNlbGVjdG9yVmVjdG9yOwogICAgICAgICAgICAgc2VsZWN0b3JW
ZWN0b3IuYXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAk
JC0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgICAgICAgICAkJC0+
YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3RvciwgcC0+bV9uZXN0ZWRTZWxlY3RvclN0
YWNrKTsKIAogICAgICAgICAgICAgJDIubG93ZXIoKTsKICAgICAgICAgICAgICQkLT5zZXRWYWx1
ZSgkMik7CkBAIC0xMjMyLDEwICsxMjk3LDEwIEBAIHBzZXVkbzoKICAgOwogCiBkZWNsYXJhdGlv
bl9saXN0OgotICAgIGRlY2xhcmF0aW9uIHsKKyAgICByYXdfZGVjbGFyYXRpb24gewogICAgICAg
ICAkJCA9ICQxOwogICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiB7CisgICAgfCBk
ZWNsX2xpc3QgcmF3X2RlY2xhcmF0aW9uIHsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYg
KCAkMiApCiAgICAgICAgICAgICAkJCA9ICQyOwpAQCAtMTI1OCwxNSArMTMyMywxNSBAQCBkZWNs
YXJhdGlvbl9saXN0OgogICAgIDsKIAogZGVjbF9saXN0OgotICAgIGRlY2xhcmF0aW9uICc7JyBt
YXliZV9zcGFjZSB7CisgICAgZGVjbGFyYXRpb25fc2VwIG1heWJlX3NwYWNlIHsKICAgICAgICAg
Q1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAg
cC0+bWFya1Byb3BlcnR5U3RhcnQoKTsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBk
ZWNsYXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgeworICAgIHwgcmF3X2Rl
Y2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCBtYXliZV9zcGFjZSB7CiAgICAgICAgICQkID0g
ZmFsc2U7CiAgICAgfQotICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0ICc7JyBt
YXliZV9zcGFjZSB7CisgICAgfCByYXdfZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0ICc7
JyBtYXliZV9zcGFjZSB7CiAgICAgICAgICQkID0gZmFsc2U7CiAgICAgfQogICAgIHwgZXJyb3Ig
JzsnIG1heWJlX3NwYWNlIHsKQEAgLTEyNzcsNyArMTM0Miw3IEBAIGRlY2xfbGlzdDoKICAgICB8
IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewogICAgICAg
ICAkJCA9IGZhbHNlOwogICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiAnOycgbWF5
YmVfc3BhY2UgeworICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uX3NlcCBtYXliZV9zcGFjZSB7
CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7
CiAgICAgICAgIHAtPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAgICQkID0gJDE7CkBAIC0x
Mjk2LDE3ICsxMzYxLDM5IEBAIGRlY2xfbGlzdDoKICAgICB9CiAgICAgOwogCi1kZWNsYXJhdGlv
bjoKK25lc3RlZF9ydWxlc2V0X3N0YXJ0OiAnJicgbWF5YmVfc3BhY2UgeworICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgcC0+cHVzaE5lc3Rl
ZFNlbGVjdG9yKCQyKTsKK30KKworZGVjbGFyYXRpb25fc2VwOgorICAgIG5lc3RlZF9ydWxlc2V0
IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCByYXdfZGVjbGFyYXRpb24gJzsnIHsK
KyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisKK25lc3RlZF9ydWxlc2V0OgorICAgIG5lc3RlZF9y
dWxlc2V0X3N0YXJ0IGJlZm9yZV9ydWxlc2V0IG5lc3RlZF9ydWxlc2V0X2NvbnRlbnRzIHsKKyAg
ICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAg
ICAgICAgcC0+cG9wTmVzdGVkU2VsZWN0b3IoKTsKKyAgICAgICAgaWYgKCQzKQorICAgICAgICAg
ICAgcC0+bV9zdHlsZVNoZWV0LT5hcHBlbmQoJDMpOworICAgICAgICAkJCA9IGZhbHNlOworICAg
IH0KKworcmF3X2RlY2xhcmF0aW9uOgogICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHBy
IHByaW8gewogICAgICAgICAkJCA9IGZhbHNlOwogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICBib29sIGlzUHJvcGVydHlQYXJz
ZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKCQxICYmICQ0KSB7CiAgICAgICAgICAgICBwLT5tX3Zh
bHVlTGlzdCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQg
b2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CisgICAg
ICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy0+
c2l6ZSgpOwogICAgICAgICAgICAgJCQgPSBwLT5wYXJzZVZhbHVlKCQxLCAkNSk7CiAgICAgICAg
ICAgICBpZiAoISQkKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAg
ICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0
aWVzLT5zaXplKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1ZTsKICAgICAgICAgICAgIHAtPm1f
dmFsdWVMaXN0ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YWdlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmgKaW5kZXggYzgzNzI3
NGZkYzg4NWZhNDdiNDE5MTRlYjBjZGYxMGJhOGZkNDRiNi4uNTA0MTg0OTg5MWM0ZjMxNWIyMmI4
YmQ5ZjFlM2RkM2RiZGRhZjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
Z2VSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0b3JMaXN0LmZpcnN0KCk7IH0KICAgICBTdHlsZVByb3BlcnR5U2V0
KiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQogICAgIAotICAg
IHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxl
Y3RvcnMpOyB9CisgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKENTU1NlbGVjdG9yVmVjdG9y
JiBzZWxlY3RvcnMsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc2VsZWN0b3JWZWN0b3IpIHsgbV9z
ZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMsIHNlbGVjdG9yVmVjdG9y
KTsgfQogICAgIHZvaWQgc2V0RGVjbGFyYXRpb24oUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0
PiBzdHlsZSkgeyBtX3N0eWxlID0gc3R5bGU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKaW5kZXggOWI2NmJiY2JmOTJlMmE0ZjhlYzg2NjZkOTg0ZWQ0ZDEwMDZlOWIzYi4u
Yzg2YmI3NTRjNDcxZjlhYTQyNzVhZmU3ZDMzNDhjNWQxNjdlZTIzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKQEAgLTE4Myw2ICsxODMsNyBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29s
IHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2ltcG9ydGFudChmYWxzZSkKICAgICAsIG1faWQoMCkK
ICAgICAsIG1fc3R5bGVTaGVldCgwKQorICAgICwgbV9wYXJzZWRQcm9wZXJ0aWVzKGFkb3B0UHRy
KG5ldyBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4pKQogICAgICwgbV9pblBhcnNlU2hvcnRoYW5k
KDApCiAgICAgLCBtX2N1cnJlbnRTaG9ydGhhbmQoMCkKICAgICAsIG1faW1wbGljaXRTaG9ydGhh
bmQoZmFsc2UpCkBAIC0xOTUsNiArMTk2LDcgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBz
dHJpY3RQYXJzaW5nKQogICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFYLCBVSU5UX01BWCkK
ICAgICAsIG1fcnVsZVJhbmdlTWFwKDApCiAgICAgLCBtX2N1cnJlbnRSdWxlRGF0YSgwKQorICAg
ICwgbV90cmFpbGluZ1NwYWNlKHRydWUpCiAgICAgLCBtX3BhcnNpbmdNb2RlKE5vcm1hbE1vZGUp
CiAgICAgLCBtX2N1cnJlbnRDaGFyYWN0ZXIoMCkKICAgICAsIG1fdG9rZW4oMCkKQEAgLTIwMiw2
ICsyMDQsNyBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAg
LCBtX2xhc3RTZWxlY3RvckxpbmVOdW1iZXIoMCkKICAgICAsIG1fYWxsb3dJbXBvcnRSdWxlcyh0
cnVlKQogICAgICwgbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyh0cnVlKQorICAgICwgbV9z
ZWxlY3RvclZlY3RvcihhZG9wdFB0cihuZXcgQ1NTU2VsZWN0b3JWZWN0b3IpKQogewogI2lmIFlZ
REVCVUcgPiAwCiAgICAgY3NzeXlkZWJ1ZyA9IDE7CkBAIC05NjQsOSArOTY3LDkgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBw
cm9wZXJ0eUlkLCBjb25zdAogICAgIGJvb2wgb2sgPSBmYWxzZTsKICAgICBpZiAobV9oYXNGb250
RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAg
IGlmICghbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgeworICAgIGlmICghbV9wYXJzZWRQ
cm9wZXJ0aWVzLT5pc0VtcHR5KCkpIHsKICAgICAgICAgb2sgPSB0cnVlOwotICAgICAgICBkZWNs
YXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBt
X3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNl
ZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLT5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGll
cy0+c2l6ZSgpKTsKICAgICAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC05ODcs
NyArOTkwLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlmICghcGFyc2VyLnBhcnNlQ29s
b3Ioc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1NTVmFsdWUqIHZhbHVl
ID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy5maXJzdCgpLnZhbHVlKCk7CisgICAgQ1NTVmFs
dWUqIHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy0+Zmlyc3QoKS52YWx1ZSgpOwog
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0xMDA5LDcgKzEwMTIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICBjc3N5eXBhcnNlKHRoaXMpOwogICAgIG1fcnVsZSA9IDA7
CiAKLSAgICByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9wYXJzZWRQ
cm9wZXJ0aWVzLmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eUNvbG9yOworICAgIHJldHVybiAh
bV9wYXJzZWRQcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVzLT5maXJz
dCgpLmlkKCkgPT0gQ1NTUHJvcGVydHlDb2xvcjsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNl
U3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTEwNjUsOSArMTA2OCw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURl
Y2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBjb25zdCBTdHJpbmcmIHN0
CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykK
ICAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKCFtX3BhcnNlZFBy
b3BlcnRpZXMuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFtX3BhcnNlZFByb3BlcnRpZXMtPmlzRW1w
dHkoKSkgewogICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJz
ZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGll
cy5zaXplKCkpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3Bh
cnNlZFByb3BlcnRpZXMtPmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkpOwogICAg
ICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTExMTEsMTkgKzExMTQsMTkgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeShNZWRpYUxpc3QqIHF1ZXJpZXMsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogCiB2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoaW50IHByb3BJ
ZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxp
Y2l0KQogewotICAgIG1fcGFyc2VkUHJvcGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHkocHJvcElk
LCB2YWx1ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1faW1wbGljaXRTaG9ydGhh
bmQgfHwgaW1wbGljaXQpKTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMtPmFwcGVuZChDU1NQcm9w
ZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQsIG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBs
aWNpdFNob3J0aGFuZCB8fCBpbXBsaWNpdCkpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6cm9sbGJh
Y2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKQogewogICAgIEFTU0VSVChudW0gPj0gMCk7Ci0gICAg
QVNTRVJUKG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG51bSkpOwotICAgIG1fcGFyc2VkUHJvcGVydGllcy5zaHJpbmsobV9wYXJzZWRQcm9wZXJ0aWVz
LnNpemUoKSAtIG51bSk7CisgICAgQVNTRVJUKG1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpID49
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW0pKTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMtPnNo
cmluayhtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG51bSk7CiB9CiAKIHZvaWQgQ1NTUGFy
c2VyOjpjbGVhclByb3BlcnRpZXMoKQogewotICAgIG1fcGFyc2VkUHJvcGVydGllcy5jbGVhcigp
OworICAgIG1fcGFyc2VkUHJvcGVydGllcy0+Y2xlYXIoKTsKICAgICBtX251bVBhcnNlZFByb3Bl
cnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUzsKICAg
ICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IGZhbHNlOwogfQpAQCAtMTQ3NCw3ICsxNDc3LDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7CiAgICAgICAgIGlm
IChudW0gIT0gMSB8fCAhcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eU92ZXJmbG93WCwgaW1wb3J0YW50
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0g
bV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTE0OTcsNyArMTUwMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgU2hvcnRo
YW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICAgICAg
ICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFy
c2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1
ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+bGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMTMyLDcgKzIxMzUsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNo
b3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2Up
OwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICAgICAgQ1NT
VmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5sYXN0KCkudmFsdWUoKTsKICAgICAg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI5MzMsNyArMjkzNiw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0
aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgaWYg
KCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9w
YXJzZWRQcm9wZXJ0aWVzLT5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2Nv
cGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAg
YWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7CkBAIC0yOTQzLDE3
ICsyOTQ2LDE3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29u
c3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMjogewog
ICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwg
IXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3Bl
cnRpZXNbbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDJdLnZhbHVlKCk7CisgICAgICAgICAg
ICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmF0KG1fcGFyc2VkUHJvcGVy
dGllcy0+c2l6ZSgpIC0gMikudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1w
bGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3Bl
cnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgdmFsdWUg
PSBtX3BhcnNlZFByb3BlcnRpZXNbbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDJdLnZhbHVl
KCk7CisgICAgICAgICAgICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+YXQobV9wYXJzZWRQ
cm9wZXJ0aWVzLT5zaXplKCkgLSAyKS52YWx1ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHko
cHJvcGVydGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIDM6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShw
cm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGlt
cG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1syXSwgaW1wb3J0YW50KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXNbbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDJdLnZhbHVlKCk7
CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmF0KG1f
cGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gMikudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxp
Y2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAg
ICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC03Mjk4LDcgKzczMDEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VG
bG93VGhyZWFkKGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIERvY3VtZW50KiBkb2MpCiAKICAgICBt
X3J1bGUgPSAwOwogCi0gICAgcmV0dXJuICgobV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSA9PSAx
KSAmJiAobV9wYXJzZWRQcm9wZXJ0aWVzLmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eVdlYmtp
dEZsb3dJbnRvKSk7CisgICAgcmV0dXJuICgobV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgPT0g
MSkgJiYgKG1fcGFyc2VkUHJvcGVydGllcy0+Zmlyc3QoKS5pZCgpID09IENTU1Byb3BlcnR5V2Vi
a2l0Rmxvd0ludG8pKTsKIH0KIAogLy8gbm9uZSB8IDxpZGVudD4KQEAgLTg4ODYsMTQgKzg4ODks
MTQgQEAgUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyOjpzaW5rRmxvYXRp
bmdTZWxlY3RvcihDU1NQYXJzZXJTZWxlY3RvcioKICAgICByZXR1cm4gYWRvcHRQdHIoc2VsZWN0
b3IpOwogfQogCi1WZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBDU1NQYXJzZXI6
OmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKQorQ1NTU2VsZWN0b3JWZWN0b3IqIENTU1Bh
cnNlcjo6Y3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpCiB7Ci0gICAgVmVjdG9yPE93blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JWZWN0b3IgPSBuZXcgVmVjdG9yPE93blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPjsKKyAgICBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JW
ZWN0b3IgPSBuZXcgQ1NTU2VsZWN0b3JWZWN0b3I7CiAgICAgbV9mbG9hdGluZ1NlbGVjdG9yVmVj
dG9ycy5hZGQoc2VsZWN0b3JWZWN0b3IpOwogICAgIHJldHVybiBzZWxlY3RvclZlY3RvcjsKIH0K
IAotUGFzc093blB0cjxWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+ID4gQ1NTUGFy
c2VyOjpzaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+KiBzZWxlY3RvclZlY3RvcikKK1Bhc3NPd25QdHI8Q1NTU2VsZWN0b3JWZWN0b3Ig
PiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKENTU1NlbGVjdG9yVmVjdG9y
KiBzZWxlY3RvclZlY3RvcikKIHsKICAgICBpZiAoc2VsZWN0b3JWZWN0b3IpIHsKICAgICAgICAg
QVNTRVJUKG1fZmxvYXRpbmdTZWxlY3RvclZlY3RvcnMuY29udGFpbnMoc2VsZWN0b3JWZWN0b3Ip
KTsKQEAgLTkwNDEsMTcgKzkwNDQsMTcgQEAgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZSogQ1NTUGFy
c2VyOjpjcmVhdGVLZXlmcmFtZXNSdWxlKCkKICAgICByZXR1cm4gcnVsZVB0cjsKIH0KIAotQ1NT
UnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gPiogc2VsZWN0b3JzKQorQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1
bGUoQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9ycykKIHsKICAgICBDU1NTdHlsZVJ1bGUqIHJl
c3VsdCA9IDA7CiAgICAgbWFya1J1bGVCb2R5RW5kKCk7CiAgICAgaWYgKHNlbGVjdG9ycykgewog
ICAgICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25z
ID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1
bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFzdFNlbGVjdG9yTGluZU51bWJlcik7Ci0gICAg
ICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMpOwor
ICAgICAgICBydWxlLT5zdHlsZVJ1bGUoKS0+YWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3Jz
LCBtX25lc3RlZFNlbGVjdG9yU3RhY2spOwogICAgICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlW
YWx1ZXMpCiAgICAgICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICAgICAg
cnVsZS0+c3R5bGVSdWxlKCktPnNldFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRl
KG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1f
c3RyaWN0KSk7CisgICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5zZXRQcm9wZXJ0aWVzKFN0eWxl
UHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMtPmRhdGEoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLT5zaXplKCksIG1fc3RyaWN0KSk7CiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0
KCk7CiAgICAgICAgIG1fcGFyc2VkUnVsZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAg
ICAgaWYgKG1fcnVsZVJhbmdlTWFwKSB7CkBAIC05MDczLDggKzkwNzYsOCBAQCBDU1NSdWxlKiBD
U1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+KiBzZWxlY3RvcgogQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQog
ewogICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMg
PSBmYWxzZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQcm9wZXJ0aWVz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IG1fcGFyc2Vk
UHJvcGVydGllc1tpXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQcm9w
ZXJ0aWVzLT5zaXplKCk7ICsraSkgeworICAgICAgICBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBt
X3BhcnNlZFByb3BlcnRpZXMtPmF0KGkpOwogICAgICAgICBpZiAocHJvcGVydHkuaWQoKSA9PSBD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50ICYmIHByb3BlcnR5LnZhbHVlKCktPmlzUHJpbWl0aXZlVmFs
dWUoKSkgewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5Lm1f
dmFsdWUucmVsZWFzZSgpOwogICAgICAgICAgICAgcHJvcGVydHkubV92YWx1ZSA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKQEAgLTkwODksNyArOTA5Miw3IEBAIENTU1J1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKCkKICAgICAgICAgfQogICAgIH0KICAg
ICBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBydWxlID0gQ1NTRm9udEZhY2VSdWxlOjpjcmVhdGUo
bV9zdHlsZVNoZWV0KTsKLSAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0
OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNp
emUoKSwgbV9zdHJpY3QpKTsKKyAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5
U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLT5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGll
cy0+c2l6ZSgpLCBtX3N0cmljdCkpOwogICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIENTU0Zv
bnRGYWNlUnVsZSogcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICBtX3BhcnNlZFJ1bGVzLmFwcGVu
ZChydWxlLnJlbGVhc2UoKSk7CkBAIC05MTU3LDEwICs5MTYwLDEwIEBAIENTU1J1bGUqIENTU1Bh
cnNlcjo6Y3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNl
bGVjdG9yKQogICAgIENTU1BhZ2VSdWxlKiBwYWdlUnVsZSA9IDA7CiAgICAgaWYgKHBhZ2VTZWxl
Y3RvcikgewogICAgICAgICBSZWZQdHI8Q1NTUGFnZVJ1bGU+IHJ1bGUgPSBDU1NQYWdlUnVsZTo6
Y3JlYXRlKG1fc3R5bGVTaGVldCk7Ci0gICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CisgICAgICAgIENTU1NlbGVjdG9yVmVjdG9yIHNlbGVj
dG9yVmVjdG9yOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFnZVNlbGVjdG9yKTsK
LSAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7Ci0gICAg
ICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNl
ZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX3N0cmljdCkp
OworICAgICAgICBydWxlLT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yLCBtX25l
c3RlZFNlbGVjdG9yU3RhY2spOworICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVBy
b3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLT5kYXRhKCksIG1fcGFyc2VkUHJv
cGVydGllcy0+c2l6ZSgpLCBtX3N0cmljdCkpOwogICAgICAgICBwYWdlUnVsZSA9IHJ1bGUuZ2V0
KCk7CiAgICAgICAgIG1fcGFyc2VkUnVsZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICB9
CkBAIC05MTY4LDIwICs5MTcxLDIwIEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1
bGUoUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKQogICAgIHJldHVy
biBwYWdlUnVsZTsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OnNldFJldXNhYmxlUmVnaW9uU2VsZWN0
b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzKQor
dm9pZCBDU1NQYXJzZXI6OnNldFJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0
b3JWZWN0b3IqIHNlbGVjdG9ycykKIHsKICAgICBpZiAoc2VsZWN0b3JzKQogICAgICAgICBtX3Jl
dXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3Iuc3dhcCgqc2VsZWN0b3JzKTsKIH0KIAotQ1NTUnVs
ZSogQ1NTUGFyc2VyOjpjcmVhdGVSZWdpb25SdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4qIHJlZ2lvblNlbGVjdG9yLCBDU1NSdWxlTGlzdCogcnVsZXMpCitDU1NSdWxlKiBD
U1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUoQ1NTU2VsZWN0b3JWZWN0b3IqIHJlZ2lvblNlbGVj
dG9yLCBDU1NSdWxlTGlzdCogcnVsZXMpCiB7CiAgICAgaWYgKCFjc3NSZWdpb25zRW5hYmxlZCgp
IHx8ICFyZWdpb25TZWxlY3RvciB8fCAhcnVsZXMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
bV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNl
OwogCi0gICAgUmVmUHRyPFdlYktpdENTU1JlZ2lvblJ1bGU+IHJlZ2lvblJ1bGUgPSBXZWJLaXRD
U1NSZWdpb25SdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0LCByZWdpb25TZWxlY3RvciwgcnVsZXMp
OworICAgIFJlZlB0cjxXZWJLaXRDU1NSZWdpb25SdWxlPiByZWdpb25SdWxlID0gV2ViS2l0Q1NT
UmVnaW9uUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCwgcmVnaW9uU2VsZWN0b3IsIG1fbmVzdGVk
U2VsZWN0b3JTdGFjaywgcnVsZXMpOwogCiAgICAgV2ViS2l0Q1NTUmVnaW9uUnVsZSogcmVzdWx0
ID0gcmVnaW9uUnVsZS5nZXQoKTsKICAgICBtX3BhcnNlZFJ1bGVzLmFwcGVuZChyZWdpb25SdWxl
LnJlbGVhc2UoKSk7CkBAIC05MjAyLDIyICs5MjA1LDIyIEBAIENTU1J1bGUqIENTU1BhcnNlcjo6
Y3JlYXRlTWFyZ2luQXRSdWxlKENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIC8qIG1hcmdpbkJv
eCAqCiAKIHZvaWQgQ1NTUGFyc2VyOjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7
Ci0gICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLnNpemUoKTsKKyAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gg
PSBtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmVuZERl
Y2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7Ci0gICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcyht
X3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94KTsKKyAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcy0+
c2l6ZSgpIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KTsKICAgICBtX251
bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBJTlZBTElEX05VTV9QQVJTRURfUFJP
UEVSVElFUzsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygp
CiB7CiAgICAgQVNTRVJUKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKTspIHsKLSAgICAgICAgQ1NT
UHJvcGVydHkmIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTspIHsKKyAgICAgICAg
Q1NTUHJvcGVydHkmIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5hdChpKTsKICAgICAg
ICAgaWYgKHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlGb250VmFyaWFudCAmJiBwcm9wZXJ0
eS52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBtX3BhcnNlZFByb3BlcnRp
ZXMucmVtb3ZlKGkpOworICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5yZW1vdmUoaSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICArK2k7CkBAIC05MjM4
LDcgKzkyNDEsNyBAQCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIENTU1BhcnNlcjo6Y3JlYXRlS2V5
ZnJhbWVSdWxlKENTU1BhcnNlclZhbHVlTGlzdCoga2V5cykKIAogICAgIFJlZlB0cjxXZWJLaXRD
U1NLZXlmcmFtZVJ1bGU+IGtleWZyYW1lID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlOjpjcmVhdGUo
bV9zdHlsZVNoZWV0KTsKICAgICBrZXlmcmFtZS0+c2V0S2V5VGV4dChrZXlTdHJpbmcpOwotICAg
IGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJz
ZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgbV9zdHJpY3Qp
KTsKKyAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRl
KG1fcGFyc2VkUHJvcGVydGllcy0+ZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSwg
bV9zdHJpY3QpKTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKaW5kZXggNDVjNWE0NDI1NTczZWQyODQwMTE3YmVhNmQ3MjA5MGRiMzE2NGVjMS4uNjdlMjcw
NjEzMjAyMjViYmU5YWE5ODg2MzcwOTU5MjA1N2VhNzRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFByb3BlcnR5KGludCBw
cm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNp
dCA9IGZhbHNlKTsKICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7Ci0g
ICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGll
cy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAh
bV9wYXJzZWRQcm9wZXJ0aWVzLT5pc0VtcHR5KCk7IH0KIAogICAgIGJvb2wgcGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQg
cHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGlt
cG9ydGFudCk7CkBAIC0yMjcsOCArMjI3LDggQEAgcHVibGljOgogICAgIENTU1BhcnNlclNlbGVj
dG9yKiBjcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgUGFzc093blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gc2lua0Zsb2F0aW5nU2VsZWN0b3IoQ1NTUGFyc2VyU2VsZWN0b3IqKTsKIAotICAg
IFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIGNyZWF0ZUZsb2F0aW5nU2VsZWN0
b3JWZWN0b3IoKTsKLSAgICBQYXNzT3duUHRyPFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4gPiBzaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNl
clNlbGVjdG9yPiA+Kik7CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIGNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3JWZWN0b3IoKTsKKyAgICBQYXNzT3duUHRyPENTU1NlbGVjdG9yVmVjdG9yID4gc2lua0Zs
b2F0aW5nU2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3IqKTsKIAogICAgIENTU1BhcnNl
clZhbHVlTGlzdCogY3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKICAgICBQYXNzT3duUHRyPENT
U1BhcnNlclZhbHVlTGlzdD4gc2lua0Zsb2F0aW5nVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlz
dCopOwpAQCAtMjQ1LDEwICsyNDUsMTAgQEAgcHVibGljOgogICAgIFdlYktpdENTU0tleWZyYW1l
c1J1bGUqIGNyZWF0ZUtleWZyYW1lc1J1bGUoKTsKICAgICBDU1NSdWxlKiBjcmVhdGVNZWRpYVJ1
bGUoTWVkaWFMaXN0KiwgQ1NTUnVsZUxpc3QqKTsKICAgICBDU1NSdWxlTGlzdCogY3JlYXRlUnVs
ZUxpc3QoKTsKLSAgICBDU1NSdWxlKiBjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzKTsKKyAgICBDU1NSdWxlKiBjcmVhdGVTdHlsZVJ1
bGUoQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9ycyk7CiAgICAgQ1NTUnVsZSogY3JlYXRlRm9u
dEZhY2VSdWxlKCk7CiAgICAgQ1NTUnVsZSogY3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKTsKLSAgICBDU1NSdWxlKiBjcmVhdGVSZWdpb25S
dWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHJlZ2lvblNlbGVjdG9yLCBD
U1NSdWxlTGlzdCogcnVsZXMpOworICAgIENTU1J1bGUqIGNyZWF0ZVJlZ2lvblJ1bGUoQ1NTU2Vs
ZWN0b3JWZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBDU1NSdWxlTGlzdCogcnVsZXMpOwogICAgIENT
U1J1bGUqIGNyZWF0ZU1hcmdpbkF0UnVsZShDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJn
aW5Cb3gpOwogICAgIHZvaWQgc3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKICAgICB2
b2lkIGVuZERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpOwpAQCAtMjY3LDEwICsyNjcsMzMgQEAg
cHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkQmxvY2tIaXQoKTsKIAotICAgIFZlY3RvcjxPd25Q
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHJldXNhYmxlU2VsZWN0b3JWZWN0b3IoKSB7IHJldHVy
biAmbV9yZXVzYWJsZVNlbGVjdG9yVmVjdG9yOyB9CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHNl
bGVjdG9yVmVjdG9yKCkgeyByZXR1cm4gbV9zZWxlY3RvclZlY3Rvci5nZXQoKTsgfQogCi0gICAg
dm9pZCBzZXRSZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycyk7Ci0gICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gPiogcmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcigpIHsgcmV0dXJuICZtX3Jl
dXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7IH0KKyAgICB2b2lkIHB1c2hOZXN0ZWRTZWxlY3Rv
cihib29sIHRyYWlsaW5nU3BhY2UpCisgICAgeworICAgICAgICBtX25lc3RlZFNlbGVjdG9yU3Rh
Y2suYXBwZW5kKG1fc2VsZWN0b3JWZWN0b3IucmVsZWFzZSgpKTsKKyAgICAgICAgbV9zZWxlY3Rv
clZlY3RvciA9IGFkb3B0UHRyKG5ldyBDU1NTZWxlY3RvclZlY3Rvcik7CisKKyAgICAgICAgbV9z
dGFja2VkUGFyc2VkUHJvcGVydGllcy5hcHBlbmQobmV3IFN0YWNrZWRQYXJzZWRQcm9wZXJ0aWVz
KG1fcGFyc2VkUHJvcGVydGllcy5yZWxlYXNlKCksIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9y
ZU1hcmdpbkJveCkpOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBhZG9wdFB0cihuZXcg
VmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+KTsKKyAgICAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
QmVmb3JlTWFyZ2luQm94ID0gMDsKKyAgICAgICAgbV90cmFpbGluZ1NwYWNlID0gdHJhaWxpbmdT
cGFjZTsKKyAgICB9CisKKyAgICB2b2lkIHBvcE5lc3RlZFNlbGVjdG9yKCkKKyAgICB7CisgICAg
ICAgIG1fc2VsZWN0b3JWZWN0b3IgPSBtX25lc3RlZFNlbGVjdG9yU3RhY2subGFzdCgpLnJlbGVh
c2UoKTsKKyAgICAgICAgbV9uZXN0ZWRTZWxlY3RvclN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAg
ICAgICBTdGFja2VkUGFyc2VkUHJvcGVydGllcyAqc3RhY2tIZWFkID0gbV9zdGFja2VkUGFyc2Vk
UHJvcGVydGllcy5sYXN0KCk7CisgICAgICAgIG1fc3RhY2tlZFBhcnNlZFByb3BlcnRpZXMucmVt
b3ZlTGFzdCgpOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBzdGFja0hlYWQtPm1fcGFy
c2VkUHJvcGVydGllcy5yZWxlYXNlKCk7CisgICAgICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0Jl
Zm9yZU1hcmdpbkJveCA9IHN0YWNrSGVhZC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94OworICAgICAgICBtX3RyYWlsaW5nU3BhY2UgPSB0cnVlOworICAgIH0KKworICAgIHZv
aWQgc2V0UmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3Rvciogc2Vs
ZWN0b3JzKTsKKyAgICBDU1NTZWxlY3RvclZlY3RvciogcmV1c2FibGVSZWdpb25TZWxlY3RvclZl
Y3RvcigpIHsgcmV0dXJuICZtX3JldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7IH0KIAogICAg
IHZvaWQgdXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CiAgICAgdm9pZCB1cGRh
dGVMYXN0TWVkaWFMaW5lKE1lZGlhTGlzdCopOwpAQCAtMjg1LDEyICszMDgsMjQgQEAgcHVibGlj
OgogICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IG1fa2V5ZnJhbWU7CiAgICAgT3du
UHRyPE1lZGlhUXVlcnk+IG1fbWVkaWFRdWVyeTsKICAgICBPd25QdHI8Q1NTUGFyc2VyVmFsdWVM
aXN0PiBtX3ZhbHVlTGlzdDsKLSAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gbV9wYXJzZWRQ
cm9wZXJ0aWVzOworICAgIE93blB0cjxWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gPiBtX3BhcnNl
ZFByb3BlcnRpZXM7CiAgICAgQ1NTU2VsZWN0b3JMaXN0KiBtX3NlbGVjdG9yTGlzdEZvclBhcnNl
U2VsZWN0b3I7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWVQb29sPiBtX2Nzc1ZhbHVlUG9vbDsKICAg
ICB1bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3g7CiAKKyAgICBz
dHJ1Y3QgU3RhY2tlZFBhcnNlZFByb3BlcnRpZXMgeworICAgICAgICBPd25QdHI8VmVjdG9yPENT
U1Byb3BlcnR5LCAyNTY+ID4gbV9wYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICB1bnNpZ25lZCBt
X251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3g7CisKKyAgICAgICAgU3RhY2tlZFBh
cnNlZFByb3BlcnRpZXMoUGFzc093blB0cjxWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gPiBwYXJz
ZWRQcm9wZXJ0aWVzLCB1bnNpZ25lZCBudW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94
KQorICAgICAgICA6IG1fcGFyc2VkUHJvcGVydGllcyhwYXJzZWRQcm9wZXJ0aWVzKQorICAgICAg
ICAsIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveChudW1QYXJzZWRQcm9wZXJ0
aWVzQmVmb3JlTWFyZ2luQm94KQorICAgICAgICB7IH0KKyAgICB9OworCisgICAgVmVjdG9yPFN0
YWNrZWRQYXJzZWRQcm9wZXJ0aWVzICo+IG1fc3RhY2tlZFBhcnNlZFByb3BlcnRpZXM7CisKICAg
ICBpbnQgbV9pblBhcnNlU2hvcnRoYW5kOwogICAgIGludCBtX2N1cnJlbnRTaG9ydGhhbmQ7CiAg
ICAgYm9vbCBtX2ltcGxpY2l0U2hvcnRoYW5kOwpAQCAtMzE5LDYgKzM1NCwxMCBAQCBwdWJsaWM6
CiAgICAgaW50IGxleCh2b2lkKiB5eWx2YWwpOwogICAgIGludCB0b2tlbigpIHsgcmV0dXJuIG1f
dG9rZW47IH0KIAorICAgIENTU1NlbGVjdG9yVmVjdG9yTGlzdCBtX25lc3RlZFNlbGVjdG9yU3Rh
Y2s7CisKKyAgICBib29sIG1fdHJhaWxpbmdTcGFjZTsKKwogICAgIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzZXJWYWx1ZSop
OwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVN0cmlu
Z1ZhbHVlKENTU1BhcnNlclZhbHVlKik7CiAgICAgICAgIApAQCAtMzk2LDcgKzQzNSw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYUxpc3Q+ID4gbV9wYXJzZWRNZWRpYUxpc3Rz
OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZUxpc3Q+ID4gbV9wYXJzZWRSdWxlTGlzdHM7CiAg
ICAgSGFzaFNldDxDU1NQYXJzZXJTZWxlY3Rvcio+IG1fZmxvYXRpbmdTZWxlY3RvcnM7Ci0gICAg
SGFzaFNldDxWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+Kj4gbV9mbG9hdGluZ1Nl
bGVjdG9yVmVjdG9yczsKKyAgICBIYXNoU2V0PENTU1NlbGVjdG9yVmVjdG9yKj4gbV9mbG9hdGlu
Z1NlbGVjdG9yVmVjdG9yczsKICAgICBIYXNoU2V0PENTU1BhcnNlclZhbHVlTGlzdCo+IG1fZmxv
YXRpbmdWYWx1ZUxpc3RzOwogICAgIEhhc2hTZXQ8Q1NTUGFyc2VyRnVuY3Rpb24qPiBtX2Zsb2F0
aW5nRnVuY3Rpb25zOwogCkBAIC00MDQsOCArNDQzLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
TWVkaWFRdWVyeUV4cD4gbV9mbG9hdGluZ01lZGlhUXVlcnlFeHA7CiAgICAgT3duUHRyPFZlY3Rv
cjxPd25QdHI8TWVkaWFRdWVyeUV4cD4gPiA+IG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdDsK
IAotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gbV9yZXVzYWJsZVNlbGVj
dG9yVmVjdG9yOwotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gbV9yZXVz
YWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yOworICAgIE93blB0cjxDU1NTZWxlY3RvclZlY3Rvcj4g
bV9zZWxlY3RvclZlY3RvcjsKKyAgICBDU1NTZWxlY3RvclZlY3RvciBtX3JldXNhYmxlUmVnaW9u
U2VsZWN0b3JWZWN0b3I7CiAKICAgICBSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBtX3BhcnNlZENhbGN1
bGF0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCmluZGV4IDVhZjJh
OWExNmU1OTk2Mzk5NGZiY2VhOTNkOWUyODQ2ZWIyMGVlOGIuLmYzNTFlMzc5ODNkYzVjNTc5YTgz
ZmQ2ZjhlNGM1ZjUxZjNjYjA4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
Y3BwCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBDU1NQYXJzZXJTZWxlY3Rvcjo6fkNTU1BhcnNlclNl
bGVjdG9yKCkKICAgICB9CiB9CiAKLXZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0
b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JWZWN0
b3IpCit2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKENTU1NlbGVj
dG9yVmVjdG9yJiBzZWxlY3RvclZlY3RvciwgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0JiBzdGFja2Vk
U2VsZWN0b3JzKQogewogICAgIENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0ID0gZmFzdE5l
dzxDU1NTZWxlY3Rvckxpc3Q+KCk7Ci0gICAgc2VsZWN0b3JMaXN0LT5hZG9wdFNlbGVjdG9yVmVj
dG9yKHNlbGVjdG9yVmVjdG9yKTsKKyAgICBzZWxlY3Rvckxpc3QtPmFkb3B0U2VsZWN0b3JWZWN0
b3Ioc2VsZWN0b3JWZWN0b3IsIHN0YWNrZWRTZWxlY3RvcnMpOwogICAgIG1fc2VsZWN0b3ItPnNl
dFNlbGVjdG9yTGlzdChhZG9wdFB0cihzZWxlY3Rvckxpc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDkwZDI2YTQ2ZGU4MWRkNzk0ZmI3NDRhODk3MDQzMDYw
MTMzOGZiZjAuLmIwN2MzMzBiMTRlMzgwYzI5YjExNWQ1NGM3NWRiZWY4MjI5MGM1ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTEwMyw2ICsxMDMsMTEgQEAgcHVibGlj
OgogICAgIE93blB0cjxDU1NQYXJzZXJWYWx1ZUxpc3Q+IGFyZ3M7CiB9OwogCitjbGFzcyBDU1NQ
YXJzZXJTZWxlY3RvcjsKKwordHlwZWRlZiBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+IENTU1NlbGVjdG9yVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9y
VmVjdG9yPiA+IENTU1NlbGVjdG9yVmVjdG9yTGlzdDsKKwogY2xhc3MgQ1NTUGFyc2VyU2VsZWN0
b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTExLDYgKzEx
Niw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NPd25QdHI8Q1NTU2VsZWN0b3I+IHJlbGVhc2VTZWxl
Y3RvcigpIHsgcmV0dXJuIG1fc2VsZWN0b3IucmVsZWFzZSgpOyB9CiAKKyAgICBQYXNzT3duUHRy
PENTU1NlbGVjdG9yPiBkdXBsaWNhdGVTZWxlY3RvcigpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
U1NTZWxlY3RvcihtX3NlbGVjdG9yLmdldCgpKSk7IH0KKwogICAgIHZvaWQgc2V0VGFnKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFRhZyh2YWx1ZSk7IH0KICAg
ICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9zZWxlY3Rvci0+
c2V0VmFsdWUodmFsdWUpOyB9CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0QXR0cmlidXRlKHZhbHVlKTsgfQpAQCAtMTE5
LDcgKzEyNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6
UmVsYXRpb24gdmFsdWUpIHsgbV9zZWxlY3Rvci0+bV9yZWxhdGlvbiA9IHZhbHVlOyB9CiAgICAg
dm9pZCBzZXRGb3JQYWdlKCkgeyBtX3NlbGVjdG9yLT5zZXRGb3JQYWdlKCk7IH0KIAotICAgIHZv
aWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+
JiBzZWxlY3RvclZlY3Rvcik7CisgICAgdm9pZCBzZXRQcmlvclJlbGF0aW9uKENTU1NlbGVjdG9y
OjpSZWxhdGlvbiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRQcmlvclJlbGF0aW9uKHZhbHVlKTsg
fQorIAorICAgIENTU1NlbGVjdG9yOjpSZWxhdGlvbiBnZXRQcmlvclJlbGF0aW9uKCkgeyByZXR1
cm4gbV9zZWxlY3Rvci0+Z2V0UHJpb3JSZWxhdGlvbigpOyB9CisKKyAgICB2b2lkIGFkb3B0U2Vs
ZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3ImLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmKTsK
IAogICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUoKSBjb25zdCB7IHJldHVy
biBtX3NlbGVjdG9yLT5wc2V1ZG9UeXBlKCk7IH0KICAgICBib29sIGlzVW5rbm93blBzZXVkb0Vs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc1Vua25vd25Qc2V1ZG9FbGVtZW50
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IGFlZTE5ZjZlOWIwNDhiNDRm
YWZhYjYzZGQ4NTU4ZTgxYmIyMTBmYWYuLjk1MDEzMzkwMmFkYWVkYzhlMmJmYmU3ZGRkOTgxYWJh
YjRmM2JmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMzgsNiArMzgsMzAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitD
U1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIGNvcHkpCisgICAgOiBtX3JlbGF0
aW9uKGNvcHktPm1fcmVsYXRpb24pCisgICAgLCBtX21hdGNoKGNvcHktPm1fbWF0Y2gpCisgICAg
LCBtX3BzZXVkb1R5cGUoY29weS0+bV9wc2V1ZG9UeXBlKQorICAgICwgbV9wYXJzZWROdGgoY29w
eS0+bV9wYXJzZWROdGgpCisgICAgLCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0KGNvcHktPm1faXNM
YXN0SW5TZWxlY3Rvckxpc3QpCisgICAgLCBtX2lzTGFzdEluVGFnSGlzdG9yeShjb3B5LT5tX2lz
TGFzdEluVGFnSGlzdG9yeSkKKyAgICAsIG1faXNGb3JQYWdlKGNvcHktPm1faXNGb3JQYWdlKQor
ICAgICwgbV9wcmlvclJlbGF0aW9uKGNvcHktPm1fcHJpb3JSZWxhdGlvbikKKyAgICAsIG1fdGFn
KGNvcHktPm1fdGFnKQoreworICAgIHNldFZhbHVlKGNvcHktPnZhbHVlKCkpOworCisgICAgaWYg
KGNvcHktPm1faGFzUmFyZURhdGEpIHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGEoKTsKKyAgICAg
ICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYSA9IGNvcHktPm1fZGF0YS5tX3JhcmVEYXRhLT5tX2E7
CisgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2IgPSBjb3B5LT5tX2RhdGEubV9yYXJlRGF0
YS0+bV9iOworICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGUgPSBjb3B5LT5t
X2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGU7CisgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRh
LT5tX2FyZ3VtZW50ID0gY29weS0+bV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQ7CisgICAg
ICAgIGlmIChjb3B5LT5tX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkpCisg
ICAgICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QgPSBjb3B5LT5tX2Rh
dGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3Q7CisgICAgfQorfQorCiB2b2lkIENTU1NlbGVj
dG9yOjpjcmVhdGVSYXJlRGF0YSgpCiB7CiAgICAgaWYgKG1faGFzUmFyZURhdGEpCkBAIC02NjEs
NyArNjg1LDcgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFNlbGVjdG9yTGlzdChQYXNzT3duUHRy
PENTU1NlbGVjdG9yTGlzdD4gc2VsZWN0b3JMaXN0KQogewogICAgIGNyZWF0ZVJhcmVEYXRhKCk7
Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0ID0gc2VsZWN0b3JMaXN0Owor
ICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdCA9IFJlZmNvdW50ZWRDU1NTZWxl
Y3Rvckxpc3Q6OmNyZWF0ZShzZWxlY3Rvckxpc3QubGVha1B0cigpKTsKIH0KIAogYm9vbCBDU1NT
ZWxlY3Rvcjo6cGFyc2VOdGgoKQpAQCAtNzIwLDYgKzc0NCwxMiBAQCBDU1NTZWxlY3Rvcjo6UmFy
ZURhdGE6On5SYXJlRGF0YSgpCiAgICAgICAgIG1fdmFsdWUtPmRlcmVmKCk7CiB9CiAKKworUmVm
Y291bnRlZENTU1NlbGVjdG9yTGlzdDo6flJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3QoKQorewor
ICAgIGRlbGV0ZSBtX2ltcGw7Cit9CisKIC8vIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBwYXJzaW5n
IG50aC1hcmd1bWVudHMKIGJvb2wgQ1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpwYXJzZU50aCgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IDExMmQ5NmNlYTg3YThhMjY4YTM5N2VmYmZl
ODllNWJiZTFiZGRmYjQuLjVkMzk2ODAyZjcxZDRjZjYxMTFkY2MzYWM3ODA5YzJlNzIwOGU5Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC0zMSw2ICszMSwyNSBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKIAorICAgIGNsYXNzIFJlZmNv
dW50ZWRDU1NTZWxlY3Rvckxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWZjb3VudGVkQ1NTU2Vs
ZWN0b3JMaXN0PiB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3Q+IGNyZWF0ZShDU1NTZWxlY3Rvckxpc3QqIGlt
cGwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBS
ZWZjb3VudGVkQ1NTU2VsZWN0b3JMaXN0KGltcGwpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgflJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3QoKTsKKworICAgICAgICAgICAgQ1NTU2Vs
ZWN0b3JMaXN0KiBnZXQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBt
X2ltcGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIENT
U1NlbGVjdG9yTGlzdCAqbV9pbXBsOworICAgICAgICAgICAgUmVmY291bnRlZENTU1NlbGVjdG9y
TGlzdChDU1NTZWxlY3Rvckxpc3QqIGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIH07CisK
ICAgICAvLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzZWxlY3RvciBmb3IgYSBTdHlsZVJ1bGUK
ICAgICBjbGFzcyBDU1NTZWxlY3RvciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENT
U1NlbGVjdG9yKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02MSw2ICs4MCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgQ1NTU2Vs
ZWN0b3IoQ1NTU2VsZWN0b3IqIGNvcHkpOworCiAgICAgICAgIH5DU1NTZWxlY3RvcigpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmIChtX2hhc1JhcmVEYXRhKQpAQCAtMjI4LDE0ICsyNDksMTcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQXRvbWljU3RyaW5nKj4o
bV9oYXNSYXJlRGF0YSA/ICZtX2RhdGEubV9yYXJlRGF0YS0+bV92YWx1ZSA6ICZtX2RhdGEubV92
YWx1ZSk7IH0KICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKCkgY29uc3Q7
CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJndW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQgOiBudWxsQXRvbTsg
fQotICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkg
OiAwOyB9CisgICAgICAgIENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNSYXJlRGF0YSAmJiBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3Qg
PyBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QtPmdldCgpIDogMDsgfQogCiAgICAg
ICAgIHZvaWQgc2V0VGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fdGFnID0gdmFs
dWU7IH0KKyAgICAgICAgdm9pZCBzZXRQcmlvclJlbGF0aW9uKFJlbGF0aW9uIHZhbHVlKSB7IG1f
cHJpb3JSZWxhdGlvbiA9IHZhbHVlOyB9CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJik7CiAgICAgICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudChjb25zdCBBdG9taWNTdHJpbmcmKTsKICAg
ICAgICAgdm9pZCBzZXRTZWxlY3Rvckxpc3QoUGFzc093blB0cjxDU1NTZWxlY3Rvckxpc3Q+KTsK
IAorICAgICAgICBSZWxhdGlvbiBnZXRQcmlvclJlbGF0aW9uKCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8UmVsYXRpb24+KG1fcHJpb3JSZWxhdGlvbik7IH0KKwogICAgICAgICBib29sIHBhcnNlTnRo
KCk7CiAgICAgICAgIGJvb2wgbWF0Y2hOdGgoaW50IGNvdW50KTsKIApAQCAtMjY2LDcgKzI5MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2lzTGFzdEluVGFnSGlzdG9y
eSAgICAgOiAxOwogICAgICAgICBib29sIG1faGFzUmFyZURhdGEgICAgICAgICAgICA6IDE7CiAg
ICAgICAgIGJvb2wgbV9pc0ZvclBhZ2UgICAgICAgICAgICAgIDogMTsKLQorICAgICAgICB1bnNp
Z25lZCBtX3ByaW9yUmVsYXRpb24gICAgICA6IDM7IC8vIGVudW0gUmVsYXRpb24KICAgICAgICAg
dW5zaWduZWQgc3BlY2lmaWNpdHlGb3JPbmVTZWxlY3RvcigpIGNvbnN0OwogICAgICAgICB1bnNp
Z25lZCBzcGVjaWZpY2l0eUZvclBhZ2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBleHRyYWN0UHNl
dWRvVHlwZSgpIGNvbnN0OwpAQCAtMjg1LDcgKzMwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIGludCBtX2I7IC8vIFVzZWQgZm9yIDpudGgtKgogICAgICAgICAgICAgUXVh
bGlmaWVkTmFtZSBtX2F0dHJpYnV0ZTsgLy8gdXNlZCBmb3IgYXR0cmlidXRlIHNlbGVjdG9yCiAg
ICAgICAgICAgICBBdG9taWNTdHJpbmcgbV9hcmd1bWVudDsgLy8gVXNlZCBmb3IgOmNvbnRhaW5z
LCA6bGFuZyBhbmQgOm50aC0qCi0gICAgICAgICAgICBPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiBt
X3NlbGVjdG9yTGlzdDsgLy8gVXNlZCBmb3IgOi13ZWJraXQtYW55IGFuZCA6bm90CisgICAgICAg
ICAgICBSZWZQdHI8UmVmY291bnRlZENTU1NlbGVjdG9yTGlzdD4gbV9zZWxlY3Rvckxpc3Q7IC8v
IFVzZWQgZm9yIDotd2Via2l0LWFueSBhbmQgOm5vdAogICAgICAgICB9OwogICAgICAgICB2b2lk
IGNyZWF0ZVJhcmVEYXRhKCk7CiAKQEAgLTM1MywxMyArMzc3LDE1IEBAIGlubGluZSB2b2lkIENT
U1NlbGVjdG9yOjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogICAgICAgICBp
ZiAobV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUpCiAgICAgICAgICAgICBtX2RhdGEubV9yYXJl
RGF0YS0+bV92YWx1ZS0+ZGVyZWYoKTsKICAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFs
dWUgPSB2YWx1ZS5pbXBsKCk7Ci0gICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlLT5y
ZWYoKTsKKyAgICAgICAgaWYgKG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlKQorICAgICAgICAg
ICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUtPnJlZigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChtX2RhdGEubV92YWx1ZSkKICAgICAgICAgbV9kYXRhLm1fdmFsdWUtPmRl
cmVmKCk7CiAgICAgbV9kYXRhLm1fdmFsdWUgPSB2YWx1ZS5pbXBsKCk7Ci0gICAgbV9kYXRhLm1f
dmFsdWUtPnJlZigpOworICAgIGlmIChtX2RhdGEubV92YWx1ZSkKKyAgICAgICAgbV9kYXRhLm1f
dmFsdWUtPnJlZigpOwogfQogCiBpbmxpbmUgdm9pZCBtb3ZlKFBhc3NPd25QdHI8Q1NTU2VsZWN0
b3I+IGZyb20sIENTU1NlbGVjdG9yKiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAKaW5kZXggODA0MzA1MzdhNjEzYTA1NmI3ZTVlYWJkNDYxMWE1OWQxOGJjNjBlZi4uYjBi
MThjYjM5YzI4NjhmY2ZkNTVhNDMwYmU1Mjk5OTgwZjkyMTNhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yTGlzdC5jcHAKQEAgLTI0LDEwICsyNCwxMCBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3Qu
aCIKIAotI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsOSArNDQsMTAgQEAg
dm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0KENTU1NlbGVjdG9yTGlzdCYgbGlzdCkKICAgICBs
aXN0Lm1fc2VsZWN0b3JBcnJheSA9IDA7CiB9CiAKLXZvaWQgQ1NTU2VsZWN0b3JMaXN0OjphZG9w
dFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVj
dG9yVmVjdG9yKQordm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0U2VsZWN0b3JWZWN0b3IoQ1NT
U2VsZWN0b3JWZWN0b3ImIHNlbGVjdG9yVmVjdG9yLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmIHN0
YWNrZWRTZWxlY3RvcnMpCiB7CiAgICAgZGVsZXRlU2VsZWN0b3JzKCk7CisKICAgICBjb25zdCBz
aXplX3QgdmVjdG9yU2l6ZSA9IHNlbGVjdG9yVmVjdG9yLnNpemUoKTsKICAgICBzaXplX3QgZmxh
dHRlbmVkU2l6ZSA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZWN0b3JTaXplOyAr
K2kpIHsKQEAgLTU0LDMxICs1NSw5OSBAQCB2b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHRTZWxl
Y3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZQogICAgICAg
ICAgICAgKytmbGF0dGVuZWRTaXplOwogICAgIH0KICAgICBBU1NFUlQoZmxhdHRlbmVkU2l6ZSk7
Ci0gICAgaWYgKGZsYXR0ZW5lZFNpemUgPT0gMSkgeworICAgIC8vIElmIHRoZXJlJ3Mgb25seSBh
IHNpbmdsZSBmbGF0dGVuZWQgc2VsZWN0b3IgY29tcG9uZW50IGFuZCBubyBzdGFja2VkIHNlbGVj
dG9ycyAoaS5lLiB0aGlzIGlzIG5vdAorICAgIC8vIHBhcnQgb2YgYSBoaWVyYXJjaHkgb2Ygc2Vs
ZWN0b3JzKSB0aGVuIHVzZSB0aGUgZmFzdCBwYXRoLgorICAgIGlmIChmbGF0dGVuZWRTaXplID09
IDEgJiYgKCFzdGFja2VkU2VsZWN0b3JzLnNpemUoKSkpIHsKICAgICAgICAgbV9zZWxlY3RvckFy
cmF5ID0gc2VsZWN0b3JWZWN0b3JbMF0tPnJlbGVhc2VTZWxlY3RvcigpLmxlYWtQdHIoKTsKICAg
ICAgICAgbV9zZWxlY3RvckFycmF5LT5zZXRMYXN0SW5TZWxlY3Rvckxpc3QoKTsKICAgICAgICAg
QVNTRVJUKG1fc2VsZWN0b3JBcnJheS0+aXNMYXN0SW5UYWdIaXN0b3J5KCkpOwogICAgICAgICBz
ZWxlY3RvclZlY3Rvci5zaHJpbmsoMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9z
ZWxlY3RvckFycmF5ID0gcmVpbnRlcnByZXRfY2FzdDxDU1NTZWxlY3Rvcio+KGZhc3RNYWxsb2Mo
c2l6ZW9mKENTU1NlbGVjdG9yKSAqIGZsYXR0ZW5lZFNpemUpKTsKLSAgICBzaXplX3QgYXJyYXlJ
bmRleCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZWN0b3JTaXplOyArK2kpIHsK
LSAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGN1cnJlbnQgPSBzZWxlY3RvclZlY3RvcltpXS5n
ZXQoKTsKLSAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKLSAgICAgICAgICAgIE93blB0cjxDU1NT
ZWxlY3Rvcj4gc2VsZWN0b3IgPSBjdXJyZW50LT5yZWxlYXNlU2VsZWN0b3IoKTsKLSAgICAgICAg
ICAgIGN1cnJlbnQgPSBjdXJyZW50LT50YWdIaXN0b3J5KCk7Ci0gICAgICAgICAgICBtb3ZlKHNl
bGVjdG9yLnJlbGVhc2UoKSwgJm1fc2VsZWN0b3JBcnJheVthcnJheUluZGV4XSk7Ci0gICAgICAg
ICAgICBBU1NFUlQoIW1fc2VsZWN0b3JBcnJheVthcnJheUluZGV4XS5pc0xhc3RJblNlbGVjdG9y
TGlzdCgpKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50KQotICAgICAgICAgICAgICAgIG1fc2Vs
ZWN0b3JBcnJheVthcnJheUluZGV4XS5zZXROb3RMYXN0SW5UYWdIaXN0b3J5KCk7Ci0gICAgICAg
ICAgICArK2FycmF5SW5kZXg7CisKKyAgICAvLyBGbGF0dGVuIHRoZSBzZWxlY3RvciBoaWVyYXJj
aHkgaW50byBleHBsb2RlZFNlbGVjdG9ycy4gRWFjaCBleHBsb2RlZFNlbGVjdG9ycyB2ZWN0b3Ig
aXMgYSBzaW5nbGUKKyAgICAvLyBlbGVtZW50IGZyb20gdGhlIGNhcnRlc2lhbiBwcm9kdWN0IG9m
IHRoZSBzZXRzIG9mIHNlbGVjdG9ycyBhdCBlYWNoIGxldmVsIGluIHRoZSBoaWVyYXJjaHkuCisg
ICAgc2l6ZV90IGV4cGxvZGVkUmVzdWx0c1NpemUgPSBzZWxlY3RvclZlY3Rvci5zaXplKCk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YWNrZWRTZWxlY3RvcnMuc2l6ZSgpOyBpKysp
CisgICAgICAgIGV4cGxvZGVkUmVzdWx0c1NpemUgKj0gc3RhY2tlZFNlbGVjdG9yc1tpXS0+c2l6
ZSgpOworCisgICAgVmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvcj4gPiBleHBsb2RlZFNlbGVjdG9y
c1tleHBsb2RlZFJlc3VsdHNTaXplXTsKKyAgICBzaXplX3QgaW5zZXJ0TG9jYXRpb25zW2V4cGxv
ZGVkUmVzdWx0c1NpemVdOworICAgIHNpemVfdCBjb25zaWRlcmVkID0gMTsKKyAgICBzaXplX3Qg
ZmluYWxTaXplID0gMDsKKworICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXhwbG9kZWRSZXN1
bHRzU2l6ZTsgaisrKSB7CisgICAgICAgIHNpemVfdCBpID0gaiAlIHNlbGVjdG9yVmVjdG9yLnNp
emUoKTsKKyAgICAgICAgYm9vbCBzdWJzZWxlY3RvciA9IHNlbGVjdG9yVmVjdG9yW2ldLT5nZXRQ
cmlvclJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOworICAgICAgICBzaXpl
X3QgcmVzdWx0ID0gbW92ZVRvRXhwbG9kZWRWZWN0b3IoJihleHBsb2RlZFNlbGVjdG9yc1tqXSks
IHNlbGVjdG9yVmVjdG9yW2ldLmdldCgpLCB0cnVlLCAwKTsKKyAgICAgICAgZmluYWxTaXplICs9
IHJlc3VsdDsKKyAgICAgICAgaW5zZXJ0TG9jYXRpb25zW2pdID0gc3Vic2VsZWN0b3IgPyAwIDog
cmVzdWx0OworICAgIH0KKworICAgIGNvbnNpZGVyZWQgPSBzZWxlY3RvclZlY3Rvci5zaXplKCk7
CisKKyAgICAvLyBUaGVyZSBhcmUgdHdvIHBvc3NpYmlsaXRpZXMgaGVyZSwgZm9yIGVhY2ggc2Vs
ZWN0b3IuCisgICAgLy8gKDEpIHRoZSBwcmV2aW91c2x5IGluc2VydGVkIHNlbGVjdG9yICh3ZSdy
ZSB3b3JraW5nIGJhY2t3YXJkcykgaGFzIGEgcHJpb3JSZWxhdGlvbgorICAgIC8vIG9mIFN1YlNl
bGVjdG9yLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGVuIHdlIGluc2VydCBiZWZvcmUgaXQgKGku
ZS4gbm90IGF0IHRoZSBlbmQgb2YKKyAgICAvLyB0aGUgZXhwbG9kZWQgbGlzdCksIGFuZCB1cGRh
dGUgdGhlIG5ld2x5IGluc2VydGVkIHNlbGVjdG9yJ3MgcmVsYXRpb24gdG8gYmUgU3ViU2VsZWN0
b3IuCisgICAgLy8gKDIpIHRoZSBwcmV2aW91c2x5IGluc2VydGVkIHNlbGVjdG9yIGhhcyBhIHBy
aW9yUmVsYXRpb24gb2Ygc29tZXRoaW5nIG90aGVyIHRoYW4KKyAgICAvLyBTdWJTZWxlY3Rvci4g
SWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlbiB3ZSBpbnNlcnQgYXQgdGhlIGVuZCBvZiB0aGUgbGlz
dCwgYW5kIHVwZGF0ZQorICAgIC8vIHRoZSBuZXh0LXRvLWxhc3Qgc2VsZWN0b3IncyByZWxhdGlv
biB0byB0aGUgaW5zZXJ0ZWQgc2VsZWN0b3IncyBwcmlvclJlbGF0aW9uLgorICAgIGZvciAoaW50
IGkgPSBzdGFja2VkU2VsZWN0b3JzLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAg
IENTU1NlbGVjdG9yVmVjdG9yJiBjdXJyZW50SW5TdGFjayA9ICooc3RhY2tlZFNlbGVjdG9yc1tp
XSk7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXhwbG9kZWRSZXN1bHRzU2l6ZTsg
aisrKSB7CisgICAgICAgICAgICBzaXplX3QgdXNlID0gKGogLyBjb25zaWRlcmVkKSAlIGN1cnJl
bnRJblN0YWNrLnNpemUoKTsKKyAgICAgICAgICAgIGJvb2wgc3Vic2VsZWN0b3IgPSBjdXJyZW50
SW5TdGFja1t1c2VdLT5nZXRQcmlvclJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVj
dG9yOworCisgICAgICAgICAgICAvLyBpZiB3ZSBhcmVuJ3QgaW5zZXJ0aW5nIGF0IHRoZSBlbmQg
d2UgbmVlZCB0byB1cGRhdGUKKyAgICAgICAgICAgIC8vIHRoaXMgc2VsZWN0b3IncyByZWxhdGlv
biB0byBpbmRpY2F0ZSB0aGUgbmV4dCBzZWxlY3RvciBpcyBhIHN1YnNlbGVjdG9yLgorICAgICAg
ICAgICAgYm9vbCB1cGRhdGVUb1N1YlNlbGVjdG9yID0gaW5zZXJ0TG9jYXRpb25zW2pdICE9IGV4
cGxvZGVkU2VsZWN0b3JzW2pdLnNpemUoKTsKKyAgICAgICAgICAgIHNpemVfdCBkZWx0YSA9IG1v
dmVUb0V4cGxvZGVkVmVjdG9yKCYoZXhwbG9kZWRTZWxlY3RvcnNbal0pLCBjdXJyZW50SW5TdGFj
a1t1c2VdLmdldCgpLCB0cnVlLCBpbnNlcnRMb2NhdGlvbnNbal0pOworICAgICAgICAgICAgZmlu
YWxTaXplICs9IGRlbHRhOworICAgICAgICAgICAgaWYgKHVwZGF0ZVRvU3ViU2VsZWN0b3IpCisg
ICAgICAgICAgICAgICAgZXhwbG9kZWRTZWxlY3RvcnNbal1baW5zZXJ0TG9jYXRpb25zW2pdICsg
ZGVsdGEgLSAxXS5nZXQoKS0+bV9yZWxhdGlvbiA9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBrID0gMDsKKyAgICAgICAg
ICAgICAgICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CisgICAgICAgICAgICAgICAg
ZG8KKyAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24gPSBleHBsb2RlZFNlbGVjdG9yc1tqXVtp
bnNlcnRMb2NhdGlvbnNbal0gLSAoKytrKV0tPmdldFByaW9yUmVsYXRpb24oKTsKKyAgICAgICAg
ICAgICAgICB3aGlsZSAocmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKTsKKyAg
ICAgICAgICAgICAgICBleHBsb2RlZFNlbGVjdG9yc1tqXVtpbnNlcnRMb2NhdGlvbnNbal0gLSAx
XS5nZXQoKS0+bV9yZWxhdGlvbiA9IHJlbGF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCFzdWJzZWxlY3RvcikKKyAgICAgICAgICAgICAgICBpbnNlcnRMb2NhdGlvbnNbal0g
PSBleHBsb2RlZFNlbGVjdG9yc1tqXS5zaXplKCk7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJU
KG1fc2VsZWN0b3JBcnJheVthcnJheUluZGV4IC0gMV0uaXNMYXN0SW5UYWdIaXN0b3J5KCkpOwor
ICAgIGNvbnNpZGVyZWQgKj0gY3VycmVudEluU3RhY2suc2l6ZSgpOwogICAgIH0KLSAgICBBU1NF
UlQoZmxhdHRlbmVkU2l6ZSA9PSBhcnJheUluZGV4KTsKLSAgICBtX3NlbGVjdG9yQXJyYXlbYXJy
YXlJbmRleCAtIDFdLnNldExhc3RJblNlbGVjdG9yTGlzdCgpOwotICAgIHNlbGVjdG9yVmVjdG9y
LnNocmluaygwKTsKKworICAgIG1fc2VsZWN0b3JBcnJheSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q1NT
U2VsZWN0b3IqPihmYXN0TWFsbG9jKHNpemVvZihDU1NTZWxlY3RvcikgKiBmaW5hbFNpemUpKTsK
KworICAgIC8vIE1vdmUgdGhlIHNlbGVjdG9yIGNvbXBvbmVudHMgaW4gZXhwbG9kZWRTZWxlY3Rv
cnMgaW50byB0aGUgZmluYWwgb3V0cHV0IHNlbGVjdG9yQXJyYXkuCisgICAgc2l6ZV90IGluZGV4
ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4cGxvZGVkUmVzdWx0c1NpemU7IGkr
KykgeworICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGV4cGxvZGVkU2VsZWN0b3JzW2ld
LnNpemUoKTsgaisrKSB7CisgICAgICAgICAgICBtb3ZlKGV4cGxvZGVkU2VsZWN0b3JzW2ldW2pd
LnJlbGVhc2UoKSwgJm1fc2VsZWN0b3JBcnJheVtpbmRleF0pOworICAgICAgICAgICAgaWYgKGog
PCBleHBsb2RlZFNlbGVjdG9yc1tpXS5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgIG1fc2Vs
ZWN0b3JBcnJheVtpbmRleF0uc2V0Tm90TGFzdEluVGFnSGlzdG9yeSgpOworICAgICAgICAgICAg
KytpbmRleDsKKyAgICAgICAgfQorICAgICAgICBleHBsb2RlZFNlbGVjdG9yc1tpXS5zaHJpbmso
MCk7CisgICAgfQorICAgIEFTU0VSVChpbmRleCA9PSBmaW5hbFNpemUpOworICAgIG1fc2VsZWN0
b3JBcnJheVtpbmRleCAtIDFdLnNldExhc3RJblNlbGVjdG9yTGlzdCgpOworfQorCit1bnNpZ25l
ZCBDU1NTZWxlY3Rvckxpc3Q6Om1vdmVUb0V4cGxvZGVkVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NT
U2VsZWN0b3I+ID4qIHZlY3RvciwgQ1NTUGFyc2VyU2VsZWN0b3IqIGN1cnJlbnQsIGJvb2wgdXNl
Q29weSwgdW5zaWduZWQgaW5zZXJ0SW5kZXgpCit7CisgICAgaW50IGluaXRpYWxJbnNlcnRJbmRl
eCA9IGluc2VydEluZGV4OworICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgIHZlY3Rvci0+
aW5zZXJ0KGluc2VydEluZGV4LCB1c2VDb3B5ID8gY3VycmVudC0+ZHVwbGljYXRlU2VsZWN0b3Io
KSA6IGN1cnJlbnQtPnJlbGVhc2VTZWxlY3RvcigpKTsKKyAgICAgICAgaW5zZXJ0SW5kZXggKz0g
MTsKKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnRhZ0hpc3RvcnkoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gaW5zZXJ0SW5kZXggLSBpbml0aWFsSW5zZXJ0SW5kZXg7CiB9CiAKIHZvaWQgQ1NT
U2VsZWN0b3JMaXN0OjpkZWxldGVTZWxlY3RvcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
TGlzdC5oCmluZGV4IDdkNDVhNmE1NDM4ZjNmZmI1NzNlODUwODFkYTVjYWYzZWQzN2NjMTYuLmFm
MGY3NjcxYTI5OTQ5Y2VlNmM2M2M1OWE4YWUxNGJiOGRlNWMzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3JMaXN0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ1NTU2VsZWN0b3JM
aXN0X2gKICNkZWZpbmUgQ1NTU2VsZWN0b3JMaXN0X2gKIAorI2luY2x1ZGUgIkNTU1BhcnNlclZh
bHVlcy5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM5LDcgKzQwLDcgQEAgcHVibGljOgogICAgIH5DU1NTZWxlY3Rvckxpc3QoKTsKIAogICAg
IHZvaWQgYWRvcHQoQ1NTU2VsZWN0b3JMaXN0JiBsaXN0KTsKLSAgICB2b2lkIGFkb3B0U2VsZWN0
b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JWZWN0
b3IpOworICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3RvciYsIENT
U1NlbGVjdG9yVmVjdG9yTGlzdCYpOwogCiAgICAgQ1NTU2VsZWN0b3IqIGZpcnN0KCkgY29uc3Qg
eyByZXR1cm4gbV9zZWxlY3RvckFycmF5ID8gbV9zZWxlY3RvckFycmF5IDogMDsgfQogICAgIHN0
YXRpYyBDU1NTZWxlY3RvciogbmV4dChDU1NTZWxlY3RvciopOwpAQCAtNTIsNiArNTMsOCBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVTZWxlY3RvcnMoKTsKKyAgICB1bnNp
Z25lZCBtb3ZlVG9FeHBsb2RlZFZlY3RvcihWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yPiA+Kiwg
Q1NTUGFyc2VyU2VsZWN0b3IqLCBib29sIHVzZUNvcHksIHVuc2lnbmVkIGluc2VydEluZGV4KTsK
KwogCiAgICAgLy8gRW5kIG9mIGEgbXVsdGlwYXJ0IHNlbGVjdG9yIGlzIGluZGljYXRlZCBieSBt
X2lzTGFzdEluVGFnSGlzdG9yeSBiaXQgaW4gdGhlIGxhc3QgaXRlbS4KICAgICAvLyBFbmQgb2Yg
dGhlIGFycmF5IGlzIGluZGljYXRlZCBieSBtX2lzTGFzdEluU2VsZWN0b3JMaXN0IGJpdCBpbiB0
aGUgbGFzdCBpdGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRleCA4YTY3ZmFi
ZjE5M2VhOGM5NGQ0YjZjNjgyM2QyNGM2ZmExYjU5OWY4Li5iMjUwOTVmYzlkNzE4ZTkzNjQzMzBi
NTJhYjFkYzBlZmRiNGJiMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAt
MjkyLDcgKzI5Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcygxKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBDU1NWYWx1ZSog
dmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CisgICAgICAgIENTU1Zh
bHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+bGFzdCgpLnZhbHVlKCk7CiAgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyTWlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJFbmQsIHZhbHVlLCBpbXBvcnRhbnQp
OwogICAgICAgICBtX2ltcGxpY2l0U2hvcnRoYW5kID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmgKaW5kZXggZTIzMGE5NGZkNWMyY2ZhNWIzOTA3NGQyMDkxY2Y5YmU5ZjY2MTg2OS4uNmQ1OWI4
YWFlNWU0ZWQzOTdhN2M3YzBiOWYzMWVjNTY3N2Y4OTg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUu
aApAQCAtNDYsNyArNDYsMTAgQEAgcHVibGljOgogICAgIAogICAgIENTU1N0eWxlUnVsZSogZW5z
dXJlQ1NTU3R5bGVSdWxlKCkgY29uc3Q7CiAgICAgCi0gICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVj
dG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9ycykgeyBtX3Nl
bGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9ycyk7IH0KKyAgICB2b2lkIGFk
b3B0U2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3ImIHNlbGVjdG9ycywgQ1NTU2VsZWN0
b3JWZWN0b3JMaXN0JiBzdGFja2VkU2VsZWN0b3JzKSAKKyAgICB7CisgICAgICAgIG1fc2VsZWN0
b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JzLCBzdGFja2VkU2VsZWN0b3JzKTsK
KyAgICB9CiAgICAgdm9pZCBhZG9wdFNlbGVjdG9yTGlzdChDU1NTZWxlY3Rvckxpc3QmIHNlbGVj
dG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdChzZWxlY3RvcnMpOyB9CiAgICAgdm9pZCBzZXRQ
cm9wZXJ0aWVzKFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gcHJvcGVydGllcykgeyBtX3By
b3BlcnRpZXMgPSBwcm9wZXJ0aWVzOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTUmVnaW9uUnVsZS5jcHAKaW5kZXggY2MzNzdjNDYxM2Q0MTBhZTg2OTk4NWU3MzI5ZTBiOWM3
ZTBiYTZjMi4uMGY3ODM3ODdiZGZhMzBmYzI1ZjVjZTk3NDU4YjQ3YmYzODQ1MTQ0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcApAQCAtMzgsMTQgKzM4LDE0
IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1X
ZWJLaXRDU1NSZWdpb25SdWxlOjpXZWJLaXRDU1NSZWdpb25SdWxlKENTU1N0eWxlU2hlZXQqIHBh
cmVudCwgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzLCBQYXNz
UmVmUHRyPENTU1J1bGVMaXN0PiBydWxlcykKK1dlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENT
U1JlZ2lvblJ1bGUoQ1NTU3R5bGVTaGVldCogcGFyZW50LCBDU1NTZWxlY3RvclZlY3Rvciogc2Vs
ZWN0b3JzLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmIHN0YWNrZWRTZWxlY3RvcnMsIFBhc3NSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IHJ1bGVzKQogICAgIDogQ1NTUnVsZShwYXJlbnQsIENTU1J1bGU6OldF
QktJVF9SRUdJT05fUlVMRSkKICAgICAsIG1fcnVsZUxpc3QocnVsZXMpCiB7CiAgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbV9ydWxlTGlzdC0+bGVuZ3RoKCk7ICsraW5kZXgp
CiAgICAgICAgIG1fcnVsZUxpc3QtPml0ZW0oaW5kZXgpLT5zZXRQYXJlbnRSdWxlKHRoaXMpOwog
Ci0gICAgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3JzKTsKKyAg
ICBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMsIHN0YWNrZWRT
ZWxlY3RvcnMpOwogfQogCiBXZWJLaXRDU1NSZWdpb25SdWxlOjp+V2ViS2l0Q1NTUmVnaW9uUnVs
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaAppbmRleCA2MjRlZDNm
NjNjYzNjMzM3YjFhNzI1NWZiMTUwMTUyMTFjNDU2ZDdjLi5kNmFiNGQ3YTBmYWU0ZWRiYTY0NzU4
MzAwNjJkNDQ2NmU3MTg2OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTUmVnaW9uUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25S
dWxlLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgY2xhc3MgQ1NTUnVsZUxpc3Q7CiAKIGNsYXNzIFdlYktp
dENTU1JlZ2lvblJ1bGU6IHB1YmxpYyBDU1NSdWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJLaXRDU1NSZWdpb25SdWxlPiBjcmVhdGUoQ1NTU3R5bGVTaGVldCogcGFyZW50
LCBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcnMsIFBhc3NSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IHJ1bGVzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdENTU1Jl
Z2lvblJ1bGU+IGNyZWF0ZShDU1NTdHlsZVNoZWV0KiBwYXJlbnQsIENTU1NlbGVjdG9yVmVjdG9y
KiBzZWxlY3RvcnMsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc3RhY2tlZFNlbGVjdG9ycywgUGFz
c1JlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYktpdENTU1JlZ2lvblJ1bGUocGFyZW50LCBzZWxlY3RvcnMsIHJ1bGVzKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Q1NTUmVnaW9uUnVsZShwYXJlbnQsIHNl
bGVjdG9ycywgc3RhY2tlZFNlbGVjdG9ycywgcnVsZXMpKTsKICAgICB9CiAKICAgICB+V2ViS2l0
Q1NTUmVnaW9uUnVsZSgpOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgQ1NTUnVsZUxp
c3QqIGNzc1J1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9ydWxlTGlzdC5nZXQoKTsgfQogCiBwcml2
YXRlOgotICAgIFdlYktpdENTU1JlZ2lvblJ1bGUoQ1NTU3R5bGVTaGVldCogcGFyZW50LCBWZWN0
b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcnMsIFBhc3NSZWZQdHI8Q1NT
UnVsZUxpc3Q+IHJ1bGVzKTsKKyAgICBXZWJLaXRDU1NSZWdpb25SdWxlKENTU1N0eWxlU2hlZXQq
IHBhcmVudCwgQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9ycywgQ1NTU2VsZWN0b3JWZWN0b3JM
aXN0JiBzdGFja2VkU2VsZWN0b3JzLCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBydWxlcyk7CiAK
ICAgICBDU1NTZWxlY3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7CiAgICAgUmVmUHRyPENTU1J1bGVM
aXN0PiBtX3J1bGVMaXN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRiYTdkYWQ1ZTBhODQ0YjllMTVhOTU4MzIxOWVkZDcx
ZDExNzY3NWMuLjhmMmI0NjA5ZmFlYjNlMTQwY2EyZmM3ZDNmMzRjMmRjNmNmYTI2OTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMy0yMiAgU2hhbmUgU3RlcGhlbnMgIDxzaGFuZXN0ZXBo
ZW5zQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1dJUF0gSW1wbGVtZW50IENTUyBIaWVyYXJjaGll
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5MzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMv
c2ltcGxlLWhpZXJhcmNoaWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy9z
aW1wbGUtaGllcmFyY2hpZXMuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMjEgIEVtaWwgQSBFa2x1
bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJlbW92ZSBmb3Ig
Y2hyb21pdW0tbWFjLXNub3dsZW9wYXJkIGFuZCBxdCBzcGVjaWZpYyBleHBlY3RlZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYzZmViZDdjNmNlMzQwODI3YWRmMTUxYWNhYTIxOWUwZjViYTEyZmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3NpbXBsZS1oaWVyYXJjaGllcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw3MCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZp
ZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgzODQKKyAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDM4NAorICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDM2OAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6
ZSA3ODR4MTggW2NvbG9yPSNGRjAwMDBdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMTk5eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAx
OTk6ICJUaGlzIGRpdiBzaG91bGQgY29udGFpbiByZWQgdGV4dCIKKyAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDE4KSBzaXplIDQwMHg0MCBbYmdjb2xvcj0jREREREREXQorICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDQwMHgxOCBbY29sb3I9IzAwMDBGRl0KKyAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMDZ4MTgKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIwNjogIlRoaXMgZGl2IHNob3VsZCBjb250YWlu
IGJsdWUgdGV4dCIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDU4KSBzaXplIDQwMHg0
MCBbY29sb3I9IzAwODAwMF0gW2JnY29sb3I9I0RERERERF0KKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMjE0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMjE0OiAiVGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gZ3JlZW4gdGV4dCIKKyAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDk4KSBzaXplIDc4NHgxNDQKKyAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjE0eDE4CisgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCAyMTQ6ICJUaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0
ZXh0IgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTggW2Nv
bG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MjE0eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMTQ6ICJUaGlzIGRp
diBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0IgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwzNikgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjE0eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAyMTQ6ICJUaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0IgorICAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1NCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgw
MDBdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjE0eDE4Cisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMTQ6ICJUaGlzIGRpdiBzaG91bGQg
Y29udGFpbiBncmVlbiB0ZXh0IgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw3Mikg
c2l6ZSA3ODR4NzIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4
NHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjM4eDE4
CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIzODogIlRoaXMgZGl2IHNo
b3VsZCBub3QgY29udGFpbiBncmVlbiB0ZXh0IgorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDE4KSBzaXplIDc4NHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMjM4eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDIzODogIlRoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVlbiB0ZXh0IgorICAgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM2KSBzaXplIDc4NHgxOAorICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjM4eDE4CisgICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDIzODogIlRoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVl
biB0ZXh0IgorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDU0KSBzaXplIDc4NHgx
OAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjM4eDE4Cisg
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIzODogIlRoaXMgZGl2IHNob3Vs
ZCBub3QgY29udGFpbiBncmVlbiB0ZXh0IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MjQyKSBzaXplIDc4NHg5MAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXpl
IDc4NHgzNgorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDE4
IFtjb2xvcj0jRkZDMENCXQorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMTU2eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE1Njog
IlRoaXMgdGV4dCBzaG91bGQgYmUgcGluaywiCisgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255
bW91cykgYXQgKDAsMTgpIHNpemUgNzg0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxMDF4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTAxOiAiYnV0IG5vdCB0aGlzIHRleHQuIgorICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwzNikgc2l6ZSA3ODR4MTggW2NvbG9yPSNGRkMwQ0JdCisgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTU2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxNTY6ICJUaGlzIHRleHQgc2hvdWxkIGJlIHBpbmsuIgorICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1NCkgc2l6ZSA3ODR4MTggW2NvbG9yPSNGRkMwQ0JdCisg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTU2eDE4CisgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNTY6ICJUaGlzIHRleHQgc2hvdWxkIGJlIHBp
bmsuIgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw3Mikgc2l6ZSA3ODR4MTgKKyAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxODB4MTgKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE4MDogIlRoaXMgdGV4dCBzaG91bGQgbm90IGJl
IHBpbmsuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzMyKSBzaXplIDc4NHgzNgor
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgzNiBbYmdjb2xvcj0j
RkZEREREXQorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDE4
IFtjb2xvcj0jRkYwMDAwXQorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMjc1eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI3NTog
IlRoaXMgc2hvdWxkIGJlIHJlZCB3aXRoIGEgcGluayBiYWNrZ3JvdW5kLiIKKyAgICAgICAgICAg
IFJlbmRlcklubGluZSAoZ2VuZXJhdGVkKSBhdCAoMCwwKSBzaXplIDE5NHgxOAorICAgICAgICAg
ICAgICBSZW5kZXJUZXh0IGF0ICgyNzUsMCkgc2l6ZSAxOTR4MTgKKyAgICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMjc1LDApIHdpZHRoIDE5NDogIiAoSGVyZSdzIHNvbWUgaW5zZXJ0ZWQgY29u
dGVudCkiCisgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTgpIHNpemUg
Nzg0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyNzJ4
MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjcyOiAiVGhpcyBzaG91
bGQganVzdCBoYXZlIHRoZSBwaW5rIGJhY2tncm91bmQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvc2ltcGxl
LWhpZXJhcmNoaWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBjMmY1NDgwMTJmZWVjMGM4ZjYyYmIxZjIx
NjIwZjZmZDg5Y2RjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2ltcGxl
LWhpZXJhcmNoaWVzLmh0bWwKQEAgLTAsMCArMSw5OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHN0eWxlPgorLyogVGVzdCBhIHRyaXZpYWxseSBuZXN0ZWQgcnVsZSAqLwor
CisuYSB7CisgICAgJiAuYiB7CisgICAgICAgIGNvbG9yOiByZWQ7CisgICAgfQorfQorCisvKiBU
ZXN0IGludGFyY2FsYXRpb24gb2YgbmVzdGVkIHJ1bGVzIGFuZCBwcm9wZXJ0aWVzLiAqLworLyog
VGVzdCBkZXNjZW5kYW50IHNlbGVjdG9yIGFuZCBubyBzZWxlY3Rvci4gKi8KKworLmMgeworICAg
IGhlaWdodDogNDBweDsKKyAgICAmIC5kIHsKKyAgICAgICAgY29sb3I6IGJsdWU7CisgICAgfQor
ICAgIHdpZHRoOiA0MDBweDsKKyAgICAmLmUgeworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAg
fQorICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGRkZGQ7Cit9CisKKy8qIFRlc3Qgbm9uLXNwYWNl
LWJhc2VkIGNvbWJpbmF0b3Igd2l0aCBhbGwgcG9zc2libGUgc3BhY2luZ3MuICovCisuZiB7Cisg
ICAgJj4uZyB7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9CisgICAgJj4gLmggeworICAg
ICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorICAgICYgPi5pIHsKKyAgICAgICAgY29sb3I6IGdy
ZWVuOworICAgIH0KKyAgICAmID4gLmogeworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQor
fQorCisvKiBUZXN0IG11bHRpcGxlIG5lc3RlZCBzZWxlY3RvcnMgaW4gc2FtZSBsaXN0LiAqLwor
LmsgeyAKKyAgICAmIC5sLCAmLm0sICYgKyAubiB7CisgICAgICAgIGNvbG9yOiBwaW5rOworICAg
IH0KK30KKworLyogVGVzdCBkZWVwIG5lc3Rpbmcgb2Ygc2VsZWN0b3JzLiAqLworLm8geworICAg
ICYgLnAgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkZGRkOworICAgICAgICAmIC5x
IHsKKyAgICAgICAgICAgIGNvbG9yOiByZWQ7CisgICAgICAgICAgICAmOjphZnRlciB7CisgICAg
ICAgICAgICAgICAgY29udGVudDogIiAoSGVyZSdzIHNvbWUgaW5zZXJ0ZWQgY29udGVudCkiOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisKKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgY2xhc3M9ImEiPjxkaXYgY2xhc3M9ImIiPlRoaXMgZGl2IHNob3VsZCBj
b250YWluIHJlZCB0ZXh0PC9kaXY+PC9kaXY+CisKKzxkaXYgY2xhc3M9ImMiPjxkaXYgY2xhc3M9
ImQiPlRoaXMgZGl2IHNob3VsZCBjb250YWluIGJsdWUgdGV4dDwvZGl2PjwvZGl2PgorCis8ZGl2
IGNsYXNzPSJjIGUiPlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKwor
PGRpdiBjbGFzcz0iZiI+CisgIDxkaXYgY2xhc3M9ImciPlRoaXMgZGl2IHNob3VsZCBjb250YWlu
IGdyZWVuIHRleHQ8L2Rpdj4KKyAgPGRpdiBjbGFzcz0iaCI+VGhpcyBkaXYgc2hvdWxkIGNvbnRh
aW4gZ3JlZW4gdGV4dDwvZGl2PgorICA8ZGl2IGNsYXNzPSJpIj5UaGlzIGRpdiBzaG91bGQgY29u
dGFpbiBncmVlbiB0ZXh0PC9kaXY+CisgIDxkaXYgY2xhc3M9ImoiPlRoaXMgZGl2IHNob3VsZCBj
b250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2IGNsYXNzPSJnIj5UaGlz
IGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICAgIDxkaXYgY2xhc3M9
ImgiPlRoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisgICAgPGRp
diBjbGFzcz0iaSI+VGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4K
KyAgICA8ZGl2IGNsYXNzPSJqIj5UaGlzIGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4
dDwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorPGRpdj4KKyAgICA8ZGl2IGNsYXNzPSJrIj4KKyAg
ICAgICAgPGRpdiBjbGFzcz0ibCI+VGhpcyB0ZXh0IHNob3VsZCBiZSBwaW5rLDwvZGl2PiBidXQg
bm90IHRoaXMgdGV4dC48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJrIG0iPlRoaXMgdGV4dCBzaG91
bGQgYmUgcGluay48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJuIj5UaGlzIHRleHQgc2hvdWxkIGJl
IHBpbmsuPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ibiI+VGhpcyB0ZXh0IHNob3VsZCBub3QgYmUg
cGluay48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0ibyI+PGRpdiBjbGFzcz0icCI+PGRpdiBj
bGFzcz0icSI+VGhpcyBzaG91bGQgYmUgcmVkIHdpdGggYSBwaW5rIGJhY2tncm91bmQuPC9kaXY+
IFRoaXMgc2hvdWxkIGp1c3QgaGF2ZSB0aGUgcGluayBiYWNrZ3JvdW5kLjwvZGl2PjwvZGl2Pgor
PC9ib2R5PgorPHNjcmlwdD4KK2lmIChsYXlvdXRUZXN0Q29udHJvbGxlcikgeworICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133186</attachid>
            <date>2012-03-21 22:02:57 -0700</date>
            <delta_ts>2012-07-25 22:34:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79939-20120322160254.patch</filename>
            <type>text/plain</type>
            <size>62745</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IxN2U4ZjMzMWJkNDI4
ZGRmZjE5ZjUxM2ZkOTEyMzQ3NDI1ZGEwYy4uNzUzNTE5ZjkxYWY1ZWUwN2FkMGYyZTdkZTk3MWYw
NzVlYzk3ZDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTAzLTIyICBTaGFu
ZSBTdGVwaGVucyAgPHNoYW5lc3RlcGhlbnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQXSBJ
bXBsZW1lbnQgQ1NTIEhpZXJhcmNoaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03OTkzOQorCisgICAgICAgIFRoaXMgQ1NTIGZlYXR1cmUgaXMgcHJv
cG9zZWQgaW4gdGhlIGZvbGxvd2luZyBFZGl0b3IncyBEcmFmdDoKKyAgICAgICAgaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3NzMy1oaWVyYXJjaGllcy8uCisKKyAgICAgICAgQXMgZWFjaCBzdHls
ZSBydWxlIGlzIHBhcnNlZCwgdGhlIHNlbGVjdG9yIGZvciB0aGUgc3R5bGUKKyAgICAgICAgcnVs
ZSBpcyBib3RoIGNvbnZlcnRlZCBpbnRvIGEgQ1NTU2VsZWN0b3JMaXN0IGFuZCBwdXNoZWQKKyAg
ICAgICAgb250byBhIFNlbGVjdG9yVmVjdG9yIHRvIG1haW50YWluIHRoZSBjdXJyZW50IHNlbGVj
dG9yCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgV2hlbiBhIG5lc3RlZCBzdHlsZSBydWxl
IGlzIGVuY291bnRlcmVkLCBib3RoIHRoZSBuZXcgc2VsZWN0b3IKKyAgICAgICAgYW5kIHRoZSBj
dXJyZW50IFNlbGVjdG9yVmVjdG9yIGNvbnRleHQgYXJlIHByb3ZpZGVkIHRvIHRoZQorICAgICAg
ICBuZXcgQ1NTU2VsZWN0b3JMaXN0IHRoYXQgcmVwcmVzZW50cyB0aGUgc2VsZWN0b3IgZm9yIHRo
ZSBuZXN0ZWQKKyAgICAgICAgcnVsZS4gQXQgdGhpcyBwb2ludCB0aGUgY29udGV4dCBhbmQgbmV3
IHNlbGVjdG9yIGFyZSBjb21iaW5lZCAtIAorICAgICAgICB0aGlzIGlzIGEgbGl0dGxlIGNvbXBs
ZXggYmVjYXVzZToKKyAgICAgICAgICAxKSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUg
Y29tbWEtc2VwYXJhdGVkIHNlbGVjdG9yCisgICAgICAgICAgICAgY29tcG9uZW50cyBpbiBlYWNo
IHBhcnQgb2YgdGhlIFNlbGVjdG9yVmVjdG9yLCBhbmQgdGhlc2UKKyAgICAgICAgICAgICBuZWVk
IHRvIGJlIGNvbWJpbmVkCisgICAgICAgICAgMikgdGhlIG91dHB1dCBsaXN0IG9yZGVyIChpbiBv
cmRlciBvZiBtYXRjaGluZykgZG9lc24ndCBtYXRjaAorICAgICAgICAgICAgIHRoZSBpbmNvbWlu
ZyB2ZWN0b3Igb3JkZXIgKGluIG9yZGVyIG9mIHBhcnNpbmcpIGFuZCB0aGlzCisgICAgICAgICAg
ICAgbmVlZHMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LCBlc3BlY2lhbGx5IGF0IHRoZSBib3Vu
ZGFyaWVzCisgICAgICAgICAgICAgYmV0d2VlbiBTZWxlY3RvclZlY3RvciBlbnRyaWVzLgorCisg
ICAgICAgIFBhc3QgdGhlIHBvaW50IG9mIHRoZSBDU1NTZWxlY3Rvckxpc3QsIG5vIGRlZXBlciBt
b2RpZmljYXRpb25zIGFyZQorICAgICAgICByZXF1aXJlZC4KKworICAgICAgICBOb3RlIHRoYXQg
dGhpcyBwYXRjaCBkb2Vzbid0IGltcGxlbWVudCBzdXBwb3J0IGZvciB0aGUgQ1NTT00gLSAKKyAg
ICAgICAgdGhhdCB3aWxsIGNvbWUgaW4gZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3NzMy9zaW1wbGUtaGllcmFy
Y2hpZXMuaHRtbAorCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gYWxsb3cgbmVzdGluZyBvZiBz
ZWxlY3RvcnMgdG8gYmUgcGFyc2VkLgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1BhZ2VSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6
YWRvcHRTZWxlY3RvclZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVh
dGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUpOgorCisg
ICAgICAgIEFkZCBhIHNlbGVjdG9yVmVjdG9yIHRvIHRyYWNrIGN1cnJlbnQgc2VsZWN0b3Igc3Rh
Y2sKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnJldXNhYmxlU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cHVzaFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cG9wU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoU3RhY2tlZFBh
cnNlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpTdGFja2VkUGFy
c2VkUHJvcGVydGllczo6U3RhY2tlZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpkdXBsaWNhdGVTZWxlY3Rvcik6
CisgICAgICAgIChDU1NQYXJzZXJTZWxlY3Rvcik6CisKKyAgICAgICAgVHJhY2sgcHJpb3IgcmVs
YXRpb24gdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBzdGl0Y2gKKyAgICAgICAgc2VsZWN0b3JWZWN0
b3IgKyBjdXJyZW50IHNlbGVjdG9yIGludG8gYSBjb2hlcmVudCBzZWxlY3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpnZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OkNT
U1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnNldFNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxp
c3RXcmFwcGVyOjp+Q1NTU2VsZWN0b3JMaXN0V3JhcHBlcik6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpz
ZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpnZXRQcmlv
clJlbGF0aW9uKToKKyAgICAgICAgKFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZXRWYWx1ZSk6CisKKyAgICAgICAgSW1wbGVtZW50IGFsZ29yaXRobSB0byBjb21i
aW5lIHNlbGVjdG9yVmVjdG9yIHdpdGgKKyAgICAgICAgY3VycmVudCBzZWxlY3RvciB3aGVuIGdl
bmVyYXRpbmcgdGhlIENTU1NlbGVjdG9yIGFycmF5LgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rv
ckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVj
dG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3JMaXN0Ojptb3ZlVG9FeHBsb2RlZFZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1NlbGVj
dG9yTGlzdC5oOgorICAgICAgICAoQ1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvU3R5
bGVSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmFkb3B0U2VsZWN0b3JWZWN0
b3IpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1JlZ2lvblJ1bGUpOgorICAgICAg
ICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmg6CisKIDIwMTItMDMtMjEgIERhbmEgSmFuc2Vu
cyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFYXJseSBvdXQg
aW4gYSBuZXcgcHJlcGFyZVRvRHJhdygpIHN0ZXAgaWYgY2hlY2tlcmJvYXJkaW5nIGFuIGFjY2Vs
ZXJhdGVkIGFuaW1hdGlvbiBpbiBvcmRlciB0byBza2lwIHRoZSBmcmFtZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkKaW5kZXggZWNlNmQ5M2M5MzhiNTIxNWY1MjE5ZGI1ZmMzZWY0MmRhNDY4ZWM5NC4u
NTgwYjE3ZTRmOGYzNTlmYmY5ZWUxNTk4NzI1Mjg3Y2IyMWFmODgwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55CkBAIC03MSw3ICs3MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAg
ICAgQ1NTUnVsZSogcnVsZTsKICAgICBDU1NSdWxlTGlzdCogcnVsZUxpc3Q7CiAgICAgQ1NTUGFy
c2VyU2VsZWN0b3IqIHNlbGVjdG9yOwotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHNlbGVjdG9yTGlzdDsKKyAgICBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JMaXN0
OwogICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIG1hcmdpbkJveDsKICAgICBDU1NTZWxl
Y3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CiAgICAgTWVkaWFMaXN0KiBtZWRpYUxpc3Q7CkBAIC0y
MDUsNiArMjA1LDcgQEAgc3RhdGljIGludCBjc3N5eWxleChZWVNUWVBFKiB5eWx2YWwsIHZvaWQq
IHBhcnNlcikKICV0eXBlIDxydWxlPiBjaGFyc2V0CiAldHlwZSA8cnVsZT4gaWdub3JlZF9jaGFy
c2V0CiAldHlwZSA8cnVsZT4gcnVsZXNldAorJXR5cGUgPHJ1bGU+IG5lc3RlZF9ydWxlc2V0X2Nv
bnRlbnRzCiAldHlwZSA8cnVsZT4gbWVkaWEKICV0eXBlIDxydWxlPiBpbXBvcnQKICV0eXBlIDxy
dWxlPiBuYW1lc3BhY2UKQEAgLTI1NCw2ICsyNTUsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZ
U1RZUEUqIHl5bHZhbCwgdm9pZCogcGFyc2VyKQogJXR5cGUgPHNlbGVjdG9yPiBzaW1wbGVfc2Vs
ZWN0b3IKICV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKICV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNl
bGVjdG9yX2xpc3QKKyV0eXBlIDxzZWxlY3Rvckxpc3Q+IG5lc3RlZF9zZWxlY3Rvcl9saXN0CiAl
dHlwZSA8c2VsZWN0b3JMaXN0PiBzaW1wbGVfc2VsZWN0b3JfbGlzdAogJXR5cGUgPHNlbGVjdG9y
TGlzdD4gcmVnaW9uX3NlbGVjdG9yCiAldHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yX3dpdGhfdHJh
aWxpbmdfd2hpdGVzcGFjZQpAQCAtMjY1LDkgKzI2NywxMyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4
KFlZU1RZUEUqIHl5bHZhbCwgdm9pZCogcGFyc2VyKQogCiAldHlwZSA8Ym9vbGVhbj4gZGVjbGFy
YXRpb25fbGlzdAogJXR5cGUgPGJvb2xlYW4+IGRlY2xfbGlzdAotJXR5cGUgPGJvb2xlYW4+IGRl
Y2xhcmF0aW9uCisldHlwZSA8Ym9vbGVhbj4gbmVzdGVkX3J1bGVzZXQKKyV0eXBlIDxib29sZWFu
PiBkZWNsYXJhdGlvbl9zZXAKKyV0eXBlIDxib29sZWFuPiByYXdfZGVjbGFyYXRpb24KICV0eXBl
IDxib29sZWFuPiBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMKIAorJXR5cGUgPGJvb2xlYW4+IG1h
eWJlX3NwYWNlCisKICV0eXBlIDxib29sZWFuPiBwcmlvCiAKICV0eXBlIDxpbnRlZ2VyPiBtYXRj
aApAQCAtMzI2LDkgKzMzMiw5IEBAIHdlYmtpdF92YWx1ZToKICAgICAgICAgQ1NTUGFyc2VyKiBw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgaWYgKCQ0KSB7CiAg
ICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7
Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVy
dGllcy5zaXplKCk7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1f
cGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpOwogICAgICAgICAgICAgaWYgKCFwLT5wYXJzZVZhbHVl
KHAtPm1faWQsIHAtPm1faW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKHAtPm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgLSBvbGRQYXJzZWRQcm9w
ZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAtPm1f
cGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CiAgICAgICAg
ICAgICBwLT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDYs
MTQgKzM1MiwxNCBAQCB3ZWJraXRfc2VsZWN0b3I6CiAgICAgICAgIGlmICgkNCkgewogICAgICAg
ICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAg
ICAgICAgICAgIGlmIChwLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IpCi0gICAgICAg
ICAgICAgICAgcC0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yLT5hZG9wdFNlbGVjdG9y
VmVjdG9yKCokNCk7CisgICAgICAgICAgICAgICAgcC0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNl
bGVjdG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCokNCwgcC0+bV9uZXN0ZWRTZWxlY3RvclN0YWNr
KTsKICAgICAgICAgfQogICAgIH0KIDsKIAogbWF5YmVfc3BhY2U6Ci0gICAgLyogZW1wdHkgKi8g
JXByZWMgVU5JTVBPUlRBTlRfVE9LCi0gIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQorICAgIC8q
IGVtcHR5ICovICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7ICQkID0gZmFsc2U7IH0KKyAgfCBtYXli
ZV9zcGFjZSBXSElURVNQQUNFIHsgJCQgPSB0cnVlOyB9CiAgIDsKIAogbWF5YmVfc2dtbDoKQEAg
LTg1MSwxMSArODU3LDE4IEBAIHJ1bGVzZXQ6CiAgICAgfQogICA7CiAKK25lc3RlZF9ydWxlc2V0
X2NvbnRlbnRzOgorICAgIG5lc3RlZF9zZWxlY3Rvcl9saXN0IGJlZm9yZV9ydWxlX29wZW5pbmdf
YnJhY2UgJ3snIG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0
IGNsb3NpbmdfYnJhY2UgeworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQ
YXJzZXIqPihwYXJzZXIpOworICAgICAgICAkJCA9IHAtPmNyZWF0ZVN0eWxlUnVsZSgkMSk7Cisg
ICAgfQorICA7CisKIHNlbGVjdG9yX2xpc3Q6CiAgICAgc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRB
TlRfVE9LIHsKICAgICAgICAgaWYgKCQxKSB7CiAgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBz
dGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICAgICAgJCQgPSBwLT5yZXVz
YWJsZVNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJCA9IHAtPnNlbGVjdG9yVmVjdG9y
KCk7CiAgICAgICAgICAgICAkJC0+c2hyaW5rKDApOwogICAgICAgICAgICAgJCQtPmFwcGVuZChw
LT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwogICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNl
bGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CkBAIC04NzUsNiArODg4LDU4IEBAIHNlbGVjdG9yX2xp
c3Q6CiAgICAgfQogICAgOwogCituZXN0ZWRfc2VsZWN0b3JfbGlzdDoKKyAgICBzZWxlY3RvciAl
cHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAgICAgIENT
U1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAg
ICAkJCA9IHAtPnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOwor
ICAgICAgICAgICAgaWYgKHAtPm1fdHJhaWxpbmdTcGFjZSkKKyAgICAgICAgICAgICAgICAkMS0+
c2V0UHJpb3JSZWxhdGlvbihDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgJDEtPnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OlN1
YlNlbGVjdG9yKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0
b3IoJDEpKTsKKyAgICAgICAgICAgIHAtPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlv
bigpOworICAgICAgICB9CisgICAgfQorICAgIHwgY29tYmluYXRvciBzZWxlY3RvciAlcHJlYyBV
TklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDIpIHsKKyAgICAgICAgICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAgICAkJCA9
IHAtPnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOworICAgICAg
ICAgICAgJDItPnNldFByaW9yUmVsYXRpb24oJDEpOworICAgICAgICAgICAgJCQtPmFwcGVuZChw
LT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMikpOworICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNl
bGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBuZXN0ZWRf
c2VsZWN0b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2UgJyYnIG1heWJlX3NwYWNlIHNlbGVjdG9yICVw
cmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAkNikgeworICAgICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAg
ICAgICAgICQkID0gJDE7CisgICAgICAgICAgICBpZiAoJDUpCisgICAgICAgICAgICAgICAgJDYt
PnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICQ2LT5zZXRQcmlvclJlbGF0aW9uKENTU1NlbGVjdG9yOjpT
dWJTZWxlY3Rvcik7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVj
dG9yKCQ2KSk7CisgICAgICAgICAgICBwLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRp
b24oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IG5l
c3RlZF9zZWxlY3Rvcl9saXN0ICcsJyBtYXliZV9zcGFjZSAnJicgbWF5YmVfc3BhY2UgY29tYmlu
YXRvciBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgIGlmICgkMSAmJiAkNykg
eworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
OworICAgICAgICAkJCA9ICQxOworICAgICAgICAkNy0+c2V0UHJpb3JSZWxhdGlvbigkNik7Cisg
ICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDcpKTsKKyAgICAgICAg
cC0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgfSBlbHNlCisgICAg
ICAgICQkID0gMDsKKyAgfQorICB8IG5lc3RlZF9zZWxlY3Rvcl9saXN0IGVycm9yIHsKKyAgICAg
ICAgJCQgPSAwOworICAgIH0KKyAgIDsKKwogc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNw
YWNlOgogICAgIHNlbGVjdG9yIFdISVRFU1BBQ0UgewogICAgICAgICAkJCA9ICQxOwpAQCAtMTE2
Miw3ICsxMjI3LDcgQEAgcHNldWRvOgogICAgICAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGlj
X2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOwogICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzcyk7Ci0gICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcigqcC0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDQpKTsKKyAgICAgICAgICAgICQkLT5hZG9wdFNlbGVj
dG9yVmVjdG9yKCpwLT5zaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcigkNCksIHAtPm1fbmVzdGVk
U2VsZWN0b3JTdGFjayk7CiAgICAgICAgICAgICAkMi5sb3dlcigpOwogICAgICAgICAgICAgJCQt
PnNldFZhbHVlKCQyKTsKICAgICAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUg
PSAkJC0+cHNldWRvVHlwZSgpOwpAQCAtMTIyMSw5ICsxMjg2LDkgQEAgcHNldWRvOgogICAgICAg
ICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKIAotICAgICAgICAgICAgVmVjdG9y
PE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKKyAgICAgICAgICAg
IENTU1NlbGVjdG9yVmVjdG9yIHNlbGVjdG9yVmVjdG9yOwogICAgICAgICAgICAgc2VsZWN0b3JW
ZWN0b3IuYXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAk
JC0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgICAgICAgICAkJC0+
YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3RvciwgcC0+bV9uZXN0ZWRTZWxlY3RvclN0
YWNrKTsKIAogICAgICAgICAgICAgJDIubG93ZXIoKTsKICAgICAgICAgICAgICQkLT5zZXRWYWx1
ZSgkMik7CkBAIC0xMjMyLDEwICsxMjk3LDEwIEBAIHBzZXVkbzoKICAgOwogCiBkZWNsYXJhdGlv
bl9saXN0OgotICAgIGRlY2xhcmF0aW9uIHsKKyAgICByYXdfZGVjbGFyYXRpb24gewogICAgICAg
ICAkJCA9ICQxOwogICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiB7CisgICAgfCBk
ZWNsX2xpc3QgcmF3X2RlY2xhcmF0aW9uIHsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYg
KCAkMiApCiAgICAgICAgICAgICAkJCA9ICQyOwpAQCAtMTI1OCwxNSArMTMyMywxNSBAQCBkZWNs
YXJhdGlvbl9saXN0OgogICAgIDsKIAogZGVjbF9saXN0OgotICAgIGRlY2xhcmF0aW9uICc7JyBt
YXliZV9zcGFjZSB7CisgICAgZGVjbGFyYXRpb25fc2VwIG1heWJlX3NwYWNlIHsKICAgICAgICAg
Q1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAg
cC0+bWFya1Byb3BlcnR5U3RhcnQoKTsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBk
ZWNsYXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgeworICAgIHwgcmF3X2Rl
Y2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCBtYXliZV9zcGFjZSB7CiAgICAgICAgICQkID0g
ZmFsc2U7CiAgICAgfQotICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0ICc7JyBt
YXliZV9zcGFjZSB7CisgICAgfCByYXdfZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0ICc7
JyBtYXliZV9zcGFjZSB7CiAgICAgICAgICQkID0gZmFsc2U7CiAgICAgfQogICAgIHwgZXJyb3Ig
JzsnIG1heWJlX3NwYWNlIHsKQEAgLTEyNzcsNyArMTM0Miw3IEBAIGRlY2xfbGlzdDoKICAgICB8
IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewogICAgICAg
ICAkJCA9IGZhbHNlOwogICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiAnOycgbWF5
YmVfc3BhY2UgeworICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uX3NlcCBtYXliZV9zcGFjZSB7
CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7
CiAgICAgICAgIHAtPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAgICQkID0gJDE7CkBAIC0x
Mjk2LDE3ICsxMzYxLDM5IEBAIGRlY2xfbGlzdDoKICAgICB9CiAgICAgOwogCi1kZWNsYXJhdGlv
bjoKK25lc3RlZF9ydWxlc2V0X3N0YXJ0OiAnJicgbWF5YmVfc3BhY2UgeworICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgcC0+cHVzaE5lc3Rl
ZFNlbGVjdG9yKCQyKTsKK30KKworZGVjbGFyYXRpb25fc2VwOgorICAgIG5lc3RlZF9ydWxlc2V0
IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCByYXdfZGVjbGFyYXRpb24gJzsnIHsK
KyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisKK25lc3RlZF9ydWxlc2V0OgorICAgIG5lc3RlZF9y
dWxlc2V0X3N0YXJ0IGJlZm9yZV9ydWxlc2V0IG5lc3RlZF9ydWxlc2V0X2NvbnRlbnRzIHsKKyAg
ICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAg
ICAgICAgcC0+cG9wTmVzdGVkU2VsZWN0b3IoKTsKKyAgICAgICAgaWYgKCQzKQorICAgICAgICAg
ICAgcC0+bV9zdHlsZVNoZWV0LT5hcHBlbmQoJDMpOworICAgICAgICAkJCA9IGZhbHNlOworICAg
IH0KKworcmF3X2RlY2xhcmF0aW9uOgogICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHBy
IHByaW8gewogICAgICAgICAkJCA9IGZhbHNlOwogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICBib29sIGlzUHJvcGVydHlQYXJz
ZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKCQxICYmICQ0KSB7CiAgICAgICAgICAgICBwLT5tX3Zh
bHVlTGlzdCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQg
b2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CisgICAg
ICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy0+
c2l6ZSgpOwogICAgICAgICAgICAgJCQgPSBwLT5wYXJzZVZhbHVlKCQxLCAkNSk7CiAgICAgICAg
ICAgICBpZiAoISQkKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAg
ICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0
aWVzLT5zaXplKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1ZTsKICAgICAgICAgICAgIHAtPm1f
dmFsdWVMaXN0ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YWdlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmgKaW5kZXggYzgzNzI3
NGZkYzg4NWZhNDdiNDE5MTRlYjBjZGYxMGJhOGZkNDRiNi4uNTA0MTg0OTg5MWM0ZjMxNWIyMmI4
YmQ5ZjFlM2RkM2RiZGRhZjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
Z2VSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0b3JMaXN0LmZpcnN0KCk7IH0KICAgICBTdHlsZVByb3BlcnR5U2V0
KiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQogICAgIAotICAg
IHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxl
Y3RvcnMpOyB9CisgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKENTU1NlbGVjdG9yVmVjdG9y
JiBzZWxlY3RvcnMsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc2VsZWN0b3JWZWN0b3IpIHsgbV9z
ZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMsIHNlbGVjdG9yVmVjdG9y
KTsgfQogICAgIHZvaWQgc2V0RGVjbGFyYXRpb24oUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0
PiBzdHlsZSkgeyBtX3N0eWxlID0gc3R5bGU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKaW5kZXggOWI2NmJiY2JmOTJlMmE0ZjhlYzg2NjZkOTg0ZWQ0ZDEwMDZlOWIzYi4u
Yzg2YmI3NTRjNDcxZjlhYTQyNzVhZmU3ZDMzNDhjNWQxNjdlZTIzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKQEAgLTE4Myw2ICsxODMsNyBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29s
IHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2ltcG9ydGFudChmYWxzZSkKICAgICAsIG1faWQoMCkK
ICAgICAsIG1fc3R5bGVTaGVldCgwKQorICAgICwgbV9wYXJzZWRQcm9wZXJ0aWVzKGFkb3B0UHRy
KG5ldyBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4pKQogICAgICwgbV9pblBhcnNlU2hvcnRoYW5k
KDApCiAgICAgLCBtX2N1cnJlbnRTaG9ydGhhbmQoMCkKICAgICAsIG1faW1wbGljaXRTaG9ydGhh
bmQoZmFsc2UpCkBAIC0xOTUsNiArMTk2LDcgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBz
dHJpY3RQYXJzaW5nKQogICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFYLCBVSU5UX01BWCkK
ICAgICAsIG1fcnVsZVJhbmdlTWFwKDApCiAgICAgLCBtX2N1cnJlbnRSdWxlRGF0YSgwKQorICAg
ICwgbV90cmFpbGluZ1NwYWNlKHRydWUpCiAgICAgLCBtX3BhcnNpbmdNb2RlKE5vcm1hbE1vZGUp
CiAgICAgLCBtX2N1cnJlbnRDaGFyYWN0ZXIoMCkKICAgICAsIG1fdG9rZW4oMCkKQEAgLTIwMiw2
ICsyMDQsNyBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAg
LCBtX2xhc3RTZWxlY3RvckxpbmVOdW1iZXIoMCkKICAgICAsIG1fYWxsb3dJbXBvcnRSdWxlcyh0
cnVlKQogICAgICwgbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyh0cnVlKQorICAgICwgbV9z
ZWxlY3RvclZlY3RvcihhZG9wdFB0cihuZXcgQ1NTU2VsZWN0b3JWZWN0b3IpKQogewogI2lmIFlZ
REVCVUcgPiAwCiAgICAgY3NzeXlkZWJ1ZyA9IDE7CkBAIC05NjQsOSArOTY3LDkgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBw
cm9wZXJ0eUlkLCBjb25zdAogICAgIGJvb2wgb2sgPSBmYWxzZTsKICAgICBpZiAobV9oYXNGb250
RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAg
IGlmICghbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgeworICAgIGlmICghbV9wYXJzZWRQ
cm9wZXJ0aWVzLT5pc0VtcHR5KCkpIHsKICAgICAgICAgb2sgPSB0cnVlOwotICAgICAgICBkZWNs
YXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBt
X3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNl
ZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLT5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGll
cy0+c2l6ZSgpKTsKICAgICAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC05ODcs
NyArOTkwLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlmICghcGFyc2VyLnBhcnNlQ29s
b3Ioc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1NTVmFsdWUqIHZhbHVl
ID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy5maXJzdCgpLnZhbHVlKCk7CisgICAgQ1NTVmFs
dWUqIHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy0+Zmlyc3QoKS52YWx1ZSgpOwog
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0xMDA5LDcgKzEwMTIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICBjc3N5eXBhcnNlKHRoaXMpOwogICAgIG1fcnVsZSA9IDA7
CiAKLSAgICByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9wYXJzZWRQ
cm9wZXJ0aWVzLmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eUNvbG9yOworICAgIHJldHVybiAh
bV9wYXJzZWRQcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVzLT5maXJz
dCgpLmlkKCkgPT0gQ1NTUHJvcGVydHlDb2xvcjsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNl
U3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTEwNjUsOSArMTA2OCw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURl
Y2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBjb25zdCBTdHJpbmcmIHN0
CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykK
ICAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKCFtX3BhcnNlZFBy
b3BlcnRpZXMuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFtX3BhcnNlZFByb3BlcnRpZXMtPmlzRW1w
dHkoKSkgewogICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJz
ZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGll
cy5zaXplKCkpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3Bh
cnNlZFByb3BlcnRpZXMtPmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkpOwogICAg
ICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTExMTEsMTkgKzExMTQsMTkgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeShNZWRpYUxpc3QqIHF1ZXJpZXMsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogCiB2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoaW50IHByb3BJ
ZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxp
Y2l0KQogewotICAgIG1fcGFyc2VkUHJvcGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHkocHJvcElk
LCB2YWx1ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1faW1wbGljaXRTaG9ydGhh
bmQgfHwgaW1wbGljaXQpKTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMtPmFwcGVuZChDU1NQcm9w
ZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQsIG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBs
aWNpdFNob3J0aGFuZCB8fCBpbXBsaWNpdCkpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6cm9sbGJh
Y2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKQogewogICAgIEFTU0VSVChudW0gPj0gMCk7Ci0gICAg
QVNTRVJUKG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG51bSkpOwotICAgIG1fcGFyc2VkUHJvcGVydGllcy5zaHJpbmsobV9wYXJzZWRQcm9wZXJ0aWVz
LnNpemUoKSAtIG51bSk7CisgICAgQVNTRVJUKG1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpID49
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW0pKTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMtPnNo
cmluayhtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG51bSk7CiB9CiAKIHZvaWQgQ1NTUGFy
c2VyOjpjbGVhclByb3BlcnRpZXMoKQogewotICAgIG1fcGFyc2VkUHJvcGVydGllcy5jbGVhcigp
OworICAgIG1fcGFyc2VkUHJvcGVydGllcy0+Y2xlYXIoKTsKICAgICBtX251bVBhcnNlZFByb3Bl
cnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUzsKICAg
ICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IGZhbHNlOwogfQpAQCAtMTQ3NCw3ICsxNDc3LDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7CiAgICAgICAgIGlm
IChudW0gIT0gMSB8fCAhcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eU92ZXJmbG93WCwgaW1wb3J0YW50
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0g
bV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTE0OTcsNyArMTUwMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgU2hvcnRo
YW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICAgICAg
ICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFy
c2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1
ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+bGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMTMyLDcgKzIxMzUsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNo
b3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2Up
OwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICAgICAgQ1NT
VmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5sYXN0KCkudmFsdWUoKTsKICAgICAg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI5MzMsNyArMjkzNiw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0
aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgaWYg
KCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9w
YXJzZWRQcm9wZXJ0aWVzLT5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2Nv
cGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAg
YWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7CkBAIC0yOTQzLDE3
ICsyOTQ2LDE3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29u
c3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMjogewog
ICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwg
IXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3Bl
cnRpZXNbbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDJdLnZhbHVlKCk7CisgICAgICAgICAg
ICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmF0KG1fcGFyc2VkUHJvcGVy
dGllcy0+c2l6ZSgpIC0gMikudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1w
bGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3Bl
cnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgdmFsdWUg
PSBtX3BhcnNlZFByb3BlcnRpZXNbbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDJdLnZhbHVl
KCk7CisgICAgICAgICAgICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+YXQobV9wYXJzZWRQ
cm9wZXJ0aWVzLT5zaXplKCkgLSAyKS52YWx1ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHko
cHJvcGVydGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIDM6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShw
cm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGlt
cG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1syXSwgaW1wb3J0YW50KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXNbbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDJdLnZhbHVlKCk7
CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmF0KG1f
cGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gMikudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxp
Y2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAg
ICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC03Mjk4LDcgKzczMDEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VG
bG93VGhyZWFkKGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIERvY3VtZW50KiBkb2MpCiAKICAgICBt
X3J1bGUgPSAwOwogCi0gICAgcmV0dXJuICgobV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSA9PSAx
KSAmJiAobV9wYXJzZWRQcm9wZXJ0aWVzLmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eVdlYmtp
dEZsb3dJbnRvKSk7CisgICAgcmV0dXJuICgobV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgPT0g
MSkgJiYgKG1fcGFyc2VkUHJvcGVydGllcy0+Zmlyc3QoKS5pZCgpID09IENTU1Byb3BlcnR5V2Vi
a2l0Rmxvd0ludG8pKTsKIH0KIAogLy8gbm9uZSB8IDxpZGVudD4KQEAgLTg4ODYsMTQgKzg4ODks
MTQgQEAgUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyOjpzaW5rRmxvYXRp
bmdTZWxlY3RvcihDU1NQYXJzZXJTZWxlY3RvcioKICAgICByZXR1cm4gYWRvcHRQdHIoc2VsZWN0
b3IpOwogfQogCi1WZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBDU1NQYXJzZXI6
OmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKQorQ1NTU2VsZWN0b3JWZWN0b3IqIENTU1Bh
cnNlcjo6Y3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpCiB7Ci0gICAgVmVjdG9yPE93blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JWZWN0b3IgPSBuZXcgVmVjdG9yPE93blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPjsKKyAgICBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JW
ZWN0b3IgPSBuZXcgQ1NTU2VsZWN0b3JWZWN0b3I7CiAgICAgbV9mbG9hdGluZ1NlbGVjdG9yVmVj
dG9ycy5hZGQoc2VsZWN0b3JWZWN0b3IpOwogICAgIHJldHVybiBzZWxlY3RvclZlY3RvcjsKIH0K
IAotUGFzc093blB0cjxWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+ID4gQ1NTUGFy
c2VyOjpzaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+KiBzZWxlY3RvclZlY3RvcikKK1Bhc3NPd25QdHI8Q1NTU2VsZWN0b3JWZWN0b3Ig
PiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKENTU1NlbGVjdG9yVmVjdG9y
KiBzZWxlY3RvclZlY3RvcikKIHsKICAgICBpZiAoc2VsZWN0b3JWZWN0b3IpIHsKICAgICAgICAg
QVNTRVJUKG1fZmxvYXRpbmdTZWxlY3RvclZlY3RvcnMuY29udGFpbnMoc2VsZWN0b3JWZWN0b3Ip
KTsKQEAgLTkwNDEsMTcgKzkwNDQsMTcgQEAgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZSogQ1NTUGFy
c2VyOjpjcmVhdGVLZXlmcmFtZXNSdWxlKCkKICAgICByZXR1cm4gcnVsZVB0cjsKIH0KIAotQ1NT
UnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gPiogc2VsZWN0b3JzKQorQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1
bGUoQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9ycykKIHsKICAgICBDU1NTdHlsZVJ1bGUqIHJl
c3VsdCA9IDA7CiAgICAgbWFya1J1bGVCb2R5RW5kKCk7CiAgICAgaWYgKHNlbGVjdG9ycykgewog
ICAgICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25z
ID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1
bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFzdFNlbGVjdG9yTGluZU51bWJlcik7Ci0gICAg
ICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMpOwor
ICAgICAgICBydWxlLT5zdHlsZVJ1bGUoKS0+YWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3Jz
LCBtX25lc3RlZFNlbGVjdG9yU3RhY2spOwogICAgICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlW
YWx1ZXMpCiAgICAgICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICAgICAg
cnVsZS0+c3R5bGVSdWxlKCktPnNldFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRl
KG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1f
c3RyaWN0KSk7CisgICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5zZXRQcm9wZXJ0aWVzKFN0eWxl
UHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMtPmRhdGEoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLT5zaXplKCksIG1fc3RyaWN0KSk7CiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0
KCk7CiAgICAgICAgIG1fcGFyc2VkUnVsZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAg
ICAgaWYgKG1fcnVsZVJhbmdlTWFwKSB7CkBAIC05MDczLDggKzkwNzYsOCBAQCBDU1NSdWxlKiBD
U1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+KiBzZWxlY3RvcgogQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQog
ewogICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMg
PSBmYWxzZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQcm9wZXJ0aWVz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IG1fcGFyc2Vk
UHJvcGVydGllc1tpXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQcm9w
ZXJ0aWVzLT5zaXplKCk7ICsraSkgeworICAgICAgICBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBt
X3BhcnNlZFByb3BlcnRpZXMtPmF0KGkpOwogICAgICAgICBpZiAocHJvcGVydHkuaWQoKSA9PSBD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50ICYmIHByb3BlcnR5LnZhbHVlKCktPmlzUHJpbWl0aXZlVmFs
dWUoKSkgewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5Lm1f
dmFsdWUucmVsZWFzZSgpOwogICAgICAgICAgICAgcHJvcGVydHkubV92YWx1ZSA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKQEAgLTkwODksNyArOTA5Miw3IEBAIENTU1J1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKCkKICAgICAgICAgfQogICAgIH0KICAg
ICBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBydWxlID0gQ1NTRm9udEZhY2VSdWxlOjpjcmVhdGUo
bV9zdHlsZVNoZWV0KTsKLSAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0
OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNp
emUoKSwgbV9zdHJpY3QpKTsKKyAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5
U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLT5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGll
cy0+c2l6ZSgpLCBtX3N0cmljdCkpOwogICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIENTU0Zv
bnRGYWNlUnVsZSogcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICBtX3BhcnNlZFJ1bGVzLmFwcGVu
ZChydWxlLnJlbGVhc2UoKSk7CkBAIC05MTU3LDEwICs5MTYwLDEwIEBAIENTU1J1bGUqIENTU1Bh
cnNlcjo6Y3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNl
bGVjdG9yKQogICAgIENTU1BhZ2VSdWxlKiBwYWdlUnVsZSA9IDA7CiAgICAgaWYgKHBhZ2VTZWxl
Y3RvcikgewogICAgICAgICBSZWZQdHI8Q1NTUGFnZVJ1bGU+IHJ1bGUgPSBDU1NQYWdlUnVsZTo6
Y3JlYXRlKG1fc3R5bGVTaGVldCk7Ci0gICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CisgICAgICAgIENTU1NlbGVjdG9yVmVjdG9yIHNlbGVj
dG9yVmVjdG9yOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFnZVNlbGVjdG9yKTsK
LSAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7Ci0gICAg
ICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNl
ZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX3N0cmljdCkp
OworICAgICAgICBydWxlLT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yLCBtX25l
c3RlZFNlbGVjdG9yU3RhY2spOworICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVBy
b3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLT5kYXRhKCksIG1fcGFyc2VkUHJv
cGVydGllcy0+c2l6ZSgpLCBtX3N0cmljdCkpOwogICAgICAgICBwYWdlUnVsZSA9IHJ1bGUuZ2V0
KCk7CiAgICAgICAgIG1fcGFyc2VkUnVsZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICB9
CkBAIC05MTY4LDIwICs5MTcxLDIwIEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1
bGUoUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKQogICAgIHJldHVy
biBwYWdlUnVsZTsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OnNldFJldXNhYmxlUmVnaW9uU2VsZWN0
b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzKQor
dm9pZCBDU1NQYXJzZXI6OnNldFJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0
b3JWZWN0b3IqIHNlbGVjdG9ycykKIHsKICAgICBpZiAoc2VsZWN0b3JzKQogICAgICAgICBtX3Jl
dXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3Iuc3dhcCgqc2VsZWN0b3JzKTsKIH0KIAotQ1NTUnVs
ZSogQ1NTUGFyc2VyOjpjcmVhdGVSZWdpb25SdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4qIHJlZ2lvblNlbGVjdG9yLCBDU1NSdWxlTGlzdCogcnVsZXMpCitDU1NSdWxlKiBD
U1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUoQ1NTU2VsZWN0b3JWZWN0b3IqIHJlZ2lvblNlbGVj
dG9yLCBDU1NSdWxlTGlzdCogcnVsZXMpCiB7CiAgICAgaWYgKCFjc3NSZWdpb25zRW5hYmxlZCgp
IHx8ICFyZWdpb25TZWxlY3RvciB8fCAhcnVsZXMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
bV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNl
OwogCi0gICAgUmVmUHRyPFdlYktpdENTU1JlZ2lvblJ1bGU+IHJlZ2lvblJ1bGUgPSBXZWJLaXRD
U1NSZWdpb25SdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0LCByZWdpb25TZWxlY3RvciwgcnVsZXMp
OworICAgIFJlZlB0cjxXZWJLaXRDU1NSZWdpb25SdWxlPiByZWdpb25SdWxlID0gV2ViS2l0Q1NT
UmVnaW9uUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCwgcmVnaW9uU2VsZWN0b3IsIG1fbmVzdGVk
U2VsZWN0b3JTdGFjaywgcnVsZXMpOwogCiAgICAgV2ViS2l0Q1NTUmVnaW9uUnVsZSogcmVzdWx0
ID0gcmVnaW9uUnVsZS5nZXQoKTsKICAgICBtX3BhcnNlZFJ1bGVzLmFwcGVuZChyZWdpb25SdWxl
LnJlbGVhc2UoKSk7CkBAIC05MjAyLDIyICs5MjA1LDIyIEBAIENTU1J1bGUqIENTU1BhcnNlcjo6
Y3JlYXRlTWFyZ2luQXRSdWxlKENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIC8qIG1hcmdpbkJv
eCAqCiAKIHZvaWQgQ1NTUGFyc2VyOjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7
Ci0gICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLnNpemUoKTsKKyAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gg
PSBtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmVuZERl
Y2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7Ci0gICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcyht
X3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94KTsKKyAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcy0+
c2l6ZSgpIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KTsKICAgICBtX251
bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBJTlZBTElEX05VTV9QQVJTRURfUFJP
UEVSVElFUzsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygp
CiB7CiAgICAgQVNTRVJUKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKTspIHsKLSAgICAgICAgQ1NT
UHJvcGVydHkmIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTspIHsKKyAgICAgICAg
Q1NTUHJvcGVydHkmIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5hdChpKTsKICAgICAg
ICAgaWYgKHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlGb250VmFyaWFudCAmJiBwcm9wZXJ0
eS52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBtX3BhcnNlZFByb3BlcnRp
ZXMucmVtb3ZlKGkpOworICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5yZW1vdmUoaSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICArK2k7CkBAIC05MjM4
LDcgKzkyNDEsNyBAQCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIENTU1BhcnNlcjo6Y3JlYXRlS2V5
ZnJhbWVSdWxlKENTU1BhcnNlclZhbHVlTGlzdCoga2V5cykKIAogICAgIFJlZlB0cjxXZWJLaXRD
U1NLZXlmcmFtZVJ1bGU+IGtleWZyYW1lID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlOjpjcmVhdGUo
bV9zdHlsZVNoZWV0KTsKICAgICBrZXlmcmFtZS0+c2V0S2V5VGV4dChrZXlTdHJpbmcpOwotICAg
IGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJz
ZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgbV9zdHJpY3Qp
KTsKKyAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRl
KG1fcGFyc2VkUHJvcGVydGllcy0+ZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSwg
bV9zdHJpY3QpKTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKaW5kZXggNDVjNWE0NDI1NTczZWQyODQwMTE3YmVhNmQ3MjA5MGRiMzE2NGVjMS4uNjdlMjcw
NjEzMjAyMjViYmU5YWE5ODg2MzcwOTU5MjA1N2VhNzRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFByb3BlcnR5KGludCBw
cm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNp
dCA9IGZhbHNlKTsKICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7Ci0g
ICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGll
cy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAh
bV9wYXJzZWRQcm9wZXJ0aWVzLT5pc0VtcHR5KCk7IH0KIAogICAgIGJvb2wgcGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQg
cHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGlt
cG9ydGFudCk7CkBAIC0yMjcsOCArMjI3LDggQEAgcHVibGljOgogICAgIENTU1BhcnNlclNlbGVj
dG9yKiBjcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgUGFzc093blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gc2lua0Zsb2F0aW5nU2VsZWN0b3IoQ1NTUGFyc2VyU2VsZWN0b3IqKTsKIAotICAg
IFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIGNyZWF0ZUZsb2F0aW5nU2VsZWN0
b3JWZWN0b3IoKTsKLSAgICBQYXNzT3duUHRyPFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4gPiBzaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNl
clNlbGVjdG9yPiA+Kik7CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIGNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3JWZWN0b3IoKTsKKyAgICBQYXNzT3duUHRyPENTU1NlbGVjdG9yVmVjdG9yID4gc2lua0Zs
b2F0aW5nU2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3IqKTsKIAogICAgIENTU1BhcnNl
clZhbHVlTGlzdCogY3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKICAgICBQYXNzT3duUHRyPENT
U1BhcnNlclZhbHVlTGlzdD4gc2lua0Zsb2F0aW5nVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlz
dCopOwpAQCAtMjQ1LDEwICsyNDUsMTAgQEAgcHVibGljOgogICAgIFdlYktpdENTU0tleWZyYW1l
c1J1bGUqIGNyZWF0ZUtleWZyYW1lc1J1bGUoKTsKICAgICBDU1NSdWxlKiBjcmVhdGVNZWRpYVJ1
bGUoTWVkaWFMaXN0KiwgQ1NTUnVsZUxpc3QqKTsKICAgICBDU1NSdWxlTGlzdCogY3JlYXRlUnVs
ZUxpc3QoKTsKLSAgICBDU1NSdWxlKiBjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzKTsKKyAgICBDU1NSdWxlKiBjcmVhdGVTdHlsZVJ1
bGUoQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9ycyk7CiAgICAgQ1NTUnVsZSogY3JlYXRlRm9u
dEZhY2VSdWxlKCk7CiAgICAgQ1NTUnVsZSogY3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKTsKLSAgICBDU1NSdWxlKiBjcmVhdGVSZWdpb25S
dWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHJlZ2lvblNlbGVjdG9yLCBD
U1NSdWxlTGlzdCogcnVsZXMpOworICAgIENTU1J1bGUqIGNyZWF0ZVJlZ2lvblJ1bGUoQ1NTU2Vs
ZWN0b3JWZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBDU1NSdWxlTGlzdCogcnVsZXMpOwogICAgIENT
U1J1bGUqIGNyZWF0ZU1hcmdpbkF0UnVsZShDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJn
aW5Cb3gpOwogICAgIHZvaWQgc3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKICAgICB2
b2lkIGVuZERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpOwpAQCAtMjY3LDEwICsyNjcsMzMgQEAg
cHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkQmxvY2tIaXQoKTsKIAotICAgIFZlY3RvcjxPd25Q
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHJldXNhYmxlU2VsZWN0b3JWZWN0b3IoKSB7IHJldHVy
biAmbV9yZXVzYWJsZVNlbGVjdG9yVmVjdG9yOyB9CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHNl
bGVjdG9yVmVjdG9yKCkgeyByZXR1cm4gbV9zZWxlY3RvclZlY3Rvci5nZXQoKTsgfQogCi0gICAg
dm9pZCBzZXRSZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycyk7Ci0gICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gPiogcmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcigpIHsgcmV0dXJuICZtX3Jl
dXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7IH0KKyAgICB2b2lkIHB1c2hOZXN0ZWRTZWxlY3Rv
cihib29sIHRyYWlsaW5nU3BhY2UpCisgICAgeworICAgICAgICBtX25lc3RlZFNlbGVjdG9yU3Rh
Y2suYXBwZW5kKG1fc2VsZWN0b3JWZWN0b3IucmVsZWFzZSgpKTsKKyAgICAgICAgbV9zZWxlY3Rv
clZlY3RvciA9IGFkb3B0UHRyKG5ldyBDU1NTZWxlY3RvclZlY3Rvcik7CisKKyAgICAgICAgbV9z
dGFja2VkUGFyc2VkUHJvcGVydGllcy5hcHBlbmQobmV3IFN0YWNrZWRQYXJzZWRQcm9wZXJ0aWVz
KG1fcGFyc2VkUHJvcGVydGllcy5yZWxlYXNlKCksIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9y
ZU1hcmdpbkJveCkpOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBhZG9wdFB0cihuZXcg
VmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+KTsKKyAgICAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
QmVmb3JlTWFyZ2luQm94ID0gMDsKKyAgICAgICAgbV90cmFpbGluZ1NwYWNlID0gdHJhaWxpbmdT
cGFjZTsKKyAgICB9CisKKyAgICB2b2lkIHBvcE5lc3RlZFNlbGVjdG9yKCkKKyAgICB7CisgICAg
ICAgIG1fc2VsZWN0b3JWZWN0b3IgPSBtX25lc3RlZFNlbGVjdG9yU3RhY2subGFzdCgpLnJlbGVh
c2UoKTsKKyAgICAgICAgbV9uZXN0ZWRTZWxlY3RvclN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAg
ICAgICBTdGFja2VkUGFyc2VkUHJvcGVydGllcyAqc3RhY2tIZWFkID0gbV9zdGFja2VkUGFyc2Vk
UHJvcGVydGllcy5sYXN0KCk7CisgICAgICAgIG1fc3RhY2tlZFBhcnNlZFByb3BlcnRpZXMucmVt
b3ZlTGFzdCgpOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBzdGFja0hlYWQtPm1fcGFy
c2VkUHJvcGVydGllcy5yZWxlYXNlKCk7CisgICAgICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0Jl
Zm9yZU1hcmdpbkJveCA9IHN0YWNrSGVhZC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94OworICAgICAgICBtX3RyYWlsaW5nU3BhY2UgPSB0cnVlOworICAgIH0KKworICAgIHZv
aWQgc2V0UmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3Rvciogc2Vs
ZWN0b3JzKTsKKyAgICBDU1NTZWxlY3RvclZlY3RvciogcmV1c2FibGVSZWdpb25TZWxlY3RvclZl
Y3RvcigpIHsgcmV0dXJuICZtX3JldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7IH0KIAogICAg
IHZvaWQgdXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CiAgICAgdm9pZCB1cGRh
dGVMYXN0TWVkaWFMaW5lKE1lZGlhTGlzdCopOwpAQCAtMjg1LDEyICszMDgsMjQgQEAgcHVibGlj
OgogICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IG1fa2V5ZnJhbWU7CiAgICAgT3du
UHRyPE1lZGlhUXVlcnk+IG1fbWVkaWFRdWVyeTsKICAgICBPd25QdHI8Q1NTUGFyc2VyVmFsdWVM
aXN0PiBtX3ZhbHVlTGlzdDsKLSAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gbV9wYXJzZWRQ
cm9wZXJ0aWVzOworICAgIE93blB0cjxWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gPiBtX3BhcnNl
ZFByb3BlcnRpZXM7CiAgICAgQ1NTU2VsZWN0b3JMaXN0KiBtX3NlbGVjdG9yTGlzdEZvclBhcnNl
U2VsZWN0b3I7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWVQb29sPiBtX2Nzc1ZhbHVlUG9vbDsKICAg
ICB1bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3g7CiAKKyAgICBz
dHJ1Y3QgU3RhY2tlZFBhcnNlZFByb3BlcnRpZXMgeworICAgICAgICBPd25QdHI8VmVjdG9yPENT
U1Byb3BlcnR5LCAyNTY+ID4gbV9wYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICB1bnNpZ25lZCBt
X251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3g7CisKKyAgICAgICAgU3RhY2tlZFBh
cnNlZFByb3BlcnRpZXMoUGFzc093blB0cjxWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gPiBwYXJz
ZWRQcm9wZXJ0aWVzLCB1bnNpZ25lZCBudW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94
KQorICAgICAgICA6IG1fcGFyc2VkUHJvcGVydGllcyhwYXJzZWRQcm9wZXJ0aWVzKQorICAgICAg
ICAsIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveChudW1QYXJzZWRQcm9wZXJ0
aWVzQmVmb3JlTWFyZ2luQm94KQorICAgICAgICB7IH0KKyAgICB9OworCisgICAgVmVjdG9yPFN0
YWNrZWRQYXJzZWRQcm9wZXJ0aWVzICo+IG1fc3RhY2tlZFBhcnNlZFByb3BlcnRpZXM7CisKICAg
ICBpbnQgbV9pblBhcnNlU2hvcnRoYW5kOwogICAgIGludCBtX2N1cnJlbnRTaG9ydGhhbmQ7CiAg
ICAgYm9vbCBtX2ltcGxpY2l0U2hvcnRoYW5kOwpAQCAtMzE5LDYgKzM1NCwxMCBAQCBwdWJsaWM6
CiAgICAgaW50IGxleCh2b2lkKiB5eWx2YWwpOwogICAgIGludCB0b2tlbigpIHsgcmV0dXJuIG1f
dG9rZW47IH0KIAorICAgIENTU1NlbGVjdG9yVmVjdG9yTGlzdCBtX25lc3RlZFNlbGVjdG9yU3Rh
Y2s7CisKKyAgICBib29sIG1fdHJhaWxpbmdTcGFjZTsKKwogICAgIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzZXJWYWx1ZSop
OwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVN0cmlu
Z1ZhbHVlKENTU1BhcnNlclZhbHVlKik7CiAgICAgICAgIApAQCAtMzk2LDcgKzQzNSw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYUxpc3Q+ID4gbV9wYXJzZWRNZWRpYUxpc3Rz
OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZUxpc3Q+ID4gbV9wYXJzZWRSdWxlTGlzdHM7CiAg
ICAgSGFzaFNldDxDU1NQYXJzZXJTZWxlY3Rvcio+IG1fZmxvYXRpbmdTZWxlY3RvcnM7Ci0gICAg
SGFzaFNldDxWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+Kj4gbV9mbG9hdGluZ1Nl
bGVjdG9yVmVjdG9yczsKKyAgICBIYXNoU2V0PENTU1NlbGVjdG9yVmVjdG9yKj4gbV9mbG9hdGlu
Z1NlbGVjdG9yVmVjdG9yczsKICAgICBIYXNoU2V0PENTU1BhcnNlclZhbHVlTGlzdCo+IG1fZmxv
YXRpbmdWYWx1ZUxpc3RzOwogICAgIEhhc2hTZXQ8Q1NTUGFyc2VyRnVuY3Rpb24qPiBtX2Zsb2F0
aW5nRnVuY3Rpb25zOwogCkBAIC00MDQsOCArNDQzLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
TWVkaWFRdWVyeUV4cD4gbV9mbG9hdGluZ01lZGlhUXVlcnlFeHA7CiAgICAgT3duUHRyPFZlY3Rv
cjxPd25QdHI8TWVkaWFRdWVyeUV4cD4gPiA+IG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdDsK
IAotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gbV9yZXVzYWJsZVNlbGVj
dG9yVmVjdG9yOwotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gbV9yZXVz
YWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yOworICAgIE93blB0cjxDU1NTZWxlY3RvclZlY3Rvcj4g
bV9zZWxlY3RvclZlY3RvcjsKKyAgICBDU1NTZWxlY3RvclZlY3RvciBtX3JldXNhYmxlUmVnaW9u
U2VsZWN0b3JWZWN0b3I7CiAKICAgICBSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBtX3BhcnNlZENhbGN1
bGF0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCmluZGV4IDVhZjJh
OWExNmU1OTk2Mzk5NGZiY2VhOTNkOWUyODQ2ZWIyMGVlOGIuLmYzNTFlMzc5ODNkYzVjNTc5YTgz
ZmQ2ZjhlNGM1ZjUxZjNjYjA4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
Y3BwCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBDU1NQYXJzZXJTZWxlY3Rvcjo6fkNTU1BhcnNlclNl
bGVjdG9yKCkKICAgICB9CiB9CiAKLXZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0
b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JWZWN0
b3IpCit2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKENTU1NlbGVj
dG9yVmVjdG9yJiBzZWxlY3RvclZlY3RvciwgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0JiBzdGFja2Vk
U2VsZWN0b3JzKQogewogICAgIENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0ID0gZmFzdE5l
dzxDU1NTZWxlY3Rvckxpc3Q+KCk7Ci0gICAgc2VsZWN0b3JMaXN0LT5hZG9wdFNlbGVjdG9yVmVj
dG9yKHNlbGVjdG9yVmVjdG9yKTsKKyAgICBzZWxlY3Rvckxpc3QtPmFkb3B0U2VsZWN0b3JWZWN0
b3Ioc2VsZWN0b3JWZWN0b3IsIHN0YWNrZWRTZWxlY3RvcnMpOwogICAgIG1fc2VsZWN0b3ItPnNl
dFNlbGVjdG9yTGlzdChhZG9wdFB0cihzZWxlY3Rvckxpc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDkwZDI2YTQ2ZGU4MWRkNzk0ZmI3NDRhODk3MDQzMDYw
MTMzOGZiZjAuLmIwN2MzMzBiMTRlMzgwYzI5YjExNWQ1NGM3NWRiZWY4MjI5MGM1ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTEwMyw2ICsxMDMsMTEgQEAgcHVibGlj
OgogICAgIE93blB0cjxDU1NQYXJzZXJWYWx1ZUxpc3Q+IGFyZ3M7CiB9OwogCitjbGFzcyBDU1NQ
YXJzZXJTZWxlY3RvcjsKKwordHlwZWRlZiBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+IENTU1NlbGVjdG9yVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9y
VmVjdG9yPiA+IENTU1NlbGVjdG9yVmVjdG9yTGlzdDsKKwogY2xhc3MgQ1NTUGFyc2VyU2VsZWN0
b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTExLDYgKzEx
Niw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NPd25QdHI8Q1NTU2VsZWN0b3I+IHJlbGVhc2VTZWxl
Y3RvcigpIHsgcmV0dXJuIG1fc2VsZWN0b3IucmVsZWFzZSgpOyB9CiAKKyAgICBQYXNzT3duUHRy
PENTU1NlbGVjdG9yPiBkdXBsaWNhdGVTZWxlY3RvcigpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
U1NTZWxlY3RvcihtX3NlbGVjdG9yLmdldCgpKSk7IH0KKwogICAgIHZvaWQgc2V0VGFnKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFRhZyh2YWx1ZSk7IH0KICAg
ICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9zZWxlY3Rvci0+
c2V0VmFsdWUodmFsdWUpOyB9CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0QXR0cmlidXRlKHZhbHVlKTsgfQpAQCAtMTE5
LDcgKzEyNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6
UmVsYXRpb24gdmFsdWUpIHsgbV9zZWxlY3Rvci0+bV9yZWxhdGlvbiA9IHZhbHVlOyB9CiAgICAg
dm9pZCBzZXRGb3JQYWdlKCkgeyBtX3NlbGVjdG9yLT5zZXRGb3JQYWdlKCk7IH0KIAotICAgIHZv
aWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+
JiBzZWxlY3RvclZlY3Rvcik7CisgICAgdm9pZCBzZXRQcmlvclJlbGF0aW9uKENTU1NlbGVjdG9y
OjpSZWxhdGlvbiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRQcmlvclJlbGF0aW9uKHZhbHVlKTsg
fQorIAorICAgIENTU1NlbGVjdG9yOjpSZWxhdGlvbiBnZXRQcmlvclJlbGF0aW9uKCkgeyByZXR1
cm4gbV9zZWxlY3Rvci0+Z2V0UHJpb3JSZWxhdGlvbigpOyB9CisKKyAgICB2b2lkIGFkb3B0U2Vs
ZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3ImLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmKTsK
IAogICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUoKSBjb25zdCB7IHJldHVy
biBtX3NlbGVjdG9yLT5wc2V1ZG9UeXBlKCk7IH0KICAgICBib29sIGlzVW5rbm93blBzZXVkb0Vs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc1Vua25vd25Qc2V1ZG9FbGVtZW50
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IGFlZTE5ZjZlOWIwNDhiNDRm
YWZhYjYzZGQ4NTU4ZTgxYmIyMTBmYWYuLjk1MDEzMzkwMmFkYWVkYzhlMmJmYmU3ZGRkOTgxYWJh
YjRmM2JmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMzgsNiArMzgsMzAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitD
U1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIGNvcHkpCisgICAgOiBtX3JlbGF0
aW9uKGNvcHktPm1fcmVsYXRpb24pCisgICAgLCBtX21hdGNoKGNvcHktPm1fbWF0Y2gpCisgICAg
LCBtX3BzZXVkb1R5cGUoY29weS0+bV9wc2V1ZG9UeXBlKQorICAgICwgbV9wYXJzZWROdGgoY29w
eS0+bV9wYXJzZWROdGgpCisgICAgLCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0KGNvcHktPm1faXNM
YXN0SW5TZWxlY3Rvckxpc3QpCisgICAgLCBtX2lzTGFzdEluVGFnSGlzdG9yeShjb3B5LT5tX2lz
TGFzdEluVGFnSGlzdG9yeSkKKyAgICAsIG1faXNGb3JQYWdlKGNvcHktPm1faXNGb3JQYWdlKQor
ICAgICwgbV9wcmlvclJlbGF0aW9uKGNvcHktPm1fcHJpb3JSZWxhdGlvbikKKyAgICAsIG1fdGFn
KGNvcHktPm1fdGFnKQoreworICAgIHNldFZhbHVlKGNvcHktPnZhbHVlKCkpOworCisgICAgaWYg
KGNvcHktPm1faGFzUmFyZURhdGEpIHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGEoKTsKKyAgICAg
ICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYSA9IGNvcHktPm1fZGF0YS5tX3JhcmVEYXRhLT5tX2E7
CisgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2IgPSBjb3B5LT5tX2RhdGEubV9yYXJlRGF0
YS0+bV9iOworICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGUgPSBjb3B5LT5t
X2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGU7CisgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRh
LT5tX2FyZ3VtZW50ID0gY29weS0+bV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQ7CisgICAg
ICAgIGlmIChjb3B5LT5tX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkpCisg
ICAgICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QgPSBjb3B5LT5tX2Rh
dGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3Q7CisgICAgfQorfQorCiB2b2lkIENTU1NlbGVj
dG9yOjpjcmVhdGVSYXJlRGF0YSgpCiB7CiAgICAgaWYgKG1faGFzUmFyZURhdGEpCkBAIC02NjEs
NyArNjg1LDcgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFNlbGVjdG9yTGlzdChQYXNzT3duUHRy
PENTU1NlbGVjdG9yTGlzdD4gc2VsZWN0b3JMaXN0KQogewogICAgIGNyZWF0ZVJhcmVEYXRhKCk7
Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0ID0gc2VsZWN0b3JMaXN0Owor
ICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdCA9IFJlZmNvdW50ZWRDU1NTZWxl
Y3Rvckxpc3Q6OmNyZWF0ZShzZWxlY3Rvckxpc3QubGVha1B0cigpKTsKIH0KIAogYm9vbCBDU1NT
ZWxlY3Rvcjo6cGFyc2VOdGgoKQpAQCAtNzIwLDYgKzc0NCwxMiBAQCBDU1NTZWxlY3Rvcjo6UmFy
ZURhdGE6On5SYXJlRGF0YSgpCiAgICAgICAgIG1fdmFsdWUtPmRlcmVmKCk7CiB9CiAKKworUmVm
Y291bnRlZENTU1NlbGVjdG9yTGlzdDo6flJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3QoKQorewor
ICAgIGRlbGV0ZSBtX2ltcGw7Cit9CisKIC8vIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBwYXJzaW5n
IG50aC1hcmd1bWVudHMKIGJvb2wgQ1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpwYXJzZU50aCgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IDExMmQ5NmNlYTg3YThhMjY4YTM5N2VmYmZl
ODllNWJiZTFiZGRmYjQuLjVkMzk2ODAyZjcxZDRjZjYxMTFkY2MzYWM3ODA5YzJlNzIwOGU5Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC0zMSw2ICszMSwyNSBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKIAorICAgIGNsYXNzIFJlZmNv
dW50ZWRDU1NTZWxlY3Rvckxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWZjb3VudGVkQ1NTU2Vs
ZWN0b3JMaXN0PiB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3Q+IGNyZWF0ZShDU1NTZWxlY3Rvckxpc3QqIGlt
cGwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBS
ZWZjb3VudGVkQ1NTU2VsZWN0b3JMaXN0KGltcGwpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgflJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3QoKTsKKworICAgICAgICAgICAgQ1NTU2Vs
ZWN0b3JMaXN0KiBnZXQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBt
X2ltcGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIENT
U1NlbGVjdG9yTGlzdCAqbV9pbXBsOworICAgICAgICAgICAgUmVmY291bnRlZENTU1NlbGVjdG9y
TGlzdChDU1NTZWxlY3Rvckxpc3QqIGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIH07CisK
ICAgICAvLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzZWxlY3RvciBmb3IgYSBTdHlsZVJ1bGUK
ICAgICBjbGFzcyBDU1NTZWxlY3RvciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENT
U1NlbGVjdG9yKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02MSw2ICs4MCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgQ1NTU2Vs
ZWN0b3IoQ1NTU2VsZWN0b3IqIGNvcHkpOworCiAgICAgICAgIH5DU1NTZWxlY3RvcigpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmIChtX2hhc1JhcmVEYXRhKQpAQCAtMjI4LDE0ICsyNDksMTcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQXRvbWljU3RyaW5nKj4o
bV9oYXNSYXJlRGF0YSA/ICZtX2RhdGEubV9yYXJlRGF0YS0+bV92YWx1ZSA6ICZtX2RhdGEubV92
YWx1ZSk7IH0KICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKCkgY29uc3Q7
CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJndW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQgOiBudWxsQXRvbTsg
fQotICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkg
OiAwOyB9CisgICAgICAgIENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNSYXJlRGF0YSAmJiBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3Qg
PyBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QtPmdldCgpIDogMDsgfQogCiAgICAg
ICAgIHZvaWQgc2V0VGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fdGFnID0gdmFs
dWU7IH0KKyAgICAgICAgdm9pZCBzZXRQcmlvclJlbGF0aW9uKFJlbGF0aW9uIHZhbHVlKSB7IG1f
cHJpb3JSZWxhdGlvbiA9IHZhbHVlOyB9CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJik7CiAgICAgICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudChjb25zdCBBdG9taWNTdHJpbmcmKTsKICAg
ICAgICAgdm9pZCBzZXRTZWxlY3Rvckxpc3QoUGFzc093blB0cjxDU1NTZWxlY3Rvckxpc3Q+KTsK
IAorICAgICAgICBSZWxhdGlvbiBnZXRQcmlvclJlbGF0aW9uKCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8UmVsYXRpb24+KG1fcHJpb3JSZWxhdGlvbik7IH0KKwogICAgICAgICBib29sIHBhcnNlTnRo
KCk7CiAgICAgICAgIGJvb2wgbWF0Y2hOdGgoaW50IGNvdW50KTsKIApAQCAtMjY2LDcgKzI5MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2lzTGFzdEluVGFnSGlzdG9y
eSAgICAgOiAxOwogICAgICAgICBib29sIG1faGFzUmFyZURhdGEgICAgICAgICAgICA6IDE7CiAg
ICAgICAgIGJvb2wgbV9pc0ZvclBhZ2UgICAgICAgICAgICAgIDogMTsKLQorICAgICAgICB1bnNp
Z25lZCBtX3ByaW9yUmVsYXRpb24gICAgICA6IDM7IC8vIGVudW0gUmVsYXRpb24KICAgICAgICAg
dW5zaWduZWQgc3BlY2lmaWNpdHlGb3JPbmVTZWxlY3RvcigpIGNvbnN0OwogICAgICAgICB1bnNp
Z25lZCBzcGVjaWZpY2l0eUZvclBhZ2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBleHRyYWN0UHNl
dWRvVHlwZSgpIGNvbnN0OwpAQCAtMjg1LDcgKzMwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIGludCBtX2I7IC8vIFVzZWQgZm9yIDpudGgtKgogICAgICAgICAgICAgUXVh
bGlmaWVkTmFtZSBtX2F0dHJpYnV0ZTsgLy8gdXNlZCBmb3IgYXR0cmlidXRlIHNlbGVjdG9yCiAg
ICAgICAgICAgICBBdG9taWNTdHJpbmcgbV9hcmd1bWVudDsgLy8gVXNlZCBmb3IgOmNvbnRhaW5z
LCA6bGFuZyBhbmQgOm50aC0qCi0gICAgICAgICAgICBPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiBt
X3NlbGVjdG9yTGlzdDsgLy8gVXNlZCBmb3IgOi13ZWJraXQtYW55IGFuZCA6bm90CisgICAgICAg
ICAgICBSZWZQdHI8UmVmY291bnRlZENTU1NlbGVjdG9yTGlzdD4gbV9zZWxlY3Rvckxpc3Q7IC8v
IFVzZWQgZm9yIDotd2Via2l0LWFueSBhbmQgOm5vdAogICAgICAgICB9OwogICAgICAgICB2b2lk
IGNyZWF0ZVJhcmVEYXRhKCk7CiAKQEAgLTM1MywxMyArMzc3LDE1IEBAIGlubGluZSB2b2lkIENT
U1NlbGVjdG9yOjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogICAgICAgICBp
ZiAobV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUpCiAgICAgICAgICAgICBtX2RhdGEubV9yYXJl
RGF0YS0+bV92YWx1ZS0+ZGVyZWYoKTsKICAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFs
dWUgPSB2YWx1ZS5pbXBsKCk7Ci0gICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlLT5y
ZWYoKTsKKyAgICAgICAgaWYgKG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlKQorICAgICAgICAg
ICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUtPnJlZigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChtX2RhdGEubV92YWx1ZSkKICAgICAgICAgbV9kYXRhLm1fdmFsdWUtPmRl
cmVmKCk7CiAgICAgbV9kYXRhLm1fdmFsdWUgPSB2YWx1ZS5pbXBsKCk7Ci0gICAgbV9kYXRhLm1f
dmFsdWUtPnJlZigpOworICAgIGlmIChtX2RhdGEubV92YWx1ZSkKKyAgICAgICAgbV9kYXRhLm1f
dmFsdWUtPnJlZigpOwogfQogCiBpbmxpbmUgdm9pZCBtb3ZlKFBhc3NPd25QdHI8Q1NTU2VsZWN0
b3I+IGZyb20sIENTU1NlbGVjdG9yKiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAKaW5kZXggODA0MzA1MzdhNjEzYTA1NmI3ZTVlYWJkNDYxMWE1OWQxOGJjNjBlZi4uY2Rj
NGJhMDYyZGIwMzhhMzZmNjlmYmE2ZGQ4YjNkY2NmNjZmNmZlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yTGlzdC5jcHAKQEAgLTI0LDEwICsyNCwxMCBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3Qu
aCIKIAotI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsOSArNDQsMTAgQEAg
dm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0KENTU1NlbGVjdG9yTGlzdCYgbGlzdCkKICAgICBs
aXN0Lm1fc2VsZWN0b3JBcnJheSA9IDA7CiB9CiAKLXZvaWQgQ1NTU2VsZWN0b3JMaXN0OjphZG9w
dFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVj
dG9yVmVjdG9yKQordm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0U2VsZWN0b3JWZWN0b3IoQ1NT
U2VsZWN0b3JWZWN0b3ImIHNlbGVjdG9yVmVjdG9yLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmIHN0
YWNrZWRTZWxlY3RvcnMpCiB7CiAgICAgZGVsZXRlU2VsZWN0b3JzKCk7CisKICAgICBjb25zdCBz
aXplX3QgdmVjdG9yU2l6ZSA9IHNlbGVjdG9yVmVjdG9yLnNpemUoKTsKICAgICBzaXplX3QgZmxh
dHRlbmVkU2l6ZSA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZWN0b3JTaXplOyAr
K2kpIHsKQEAgLTU0LDMxICs1NSwxMDIgQEAgdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0U2Vs
ZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2UKICAgICAg
ICAgICAgICsrZmxhdHRlbmVkU2l6ZTsKICAgICB9CiAgICAgQVNTRVJUKGZsYXR0ZW5lZFNpemUp
OwotICAgIGlmIChmbGF0dGVuZWRTaXplID09IDEpIHsKKyAgICAvLyBJZiB0aGVyZSdzIG9ubHkg
YSBzaW5nbGUgZmxhdHRlbmVkIHNlbGVjdG9yIGNvbXBvbmVudCBhbmQgbm8gc3RhY2tlZCBzZWxl
Y3RvcnMgKGkuZS4gdGhpcyBpcyBub3QKKyAgICAvLyBwYXJ0IG9mIGEgaGllcmFyY2h5IG9mIHNl
bGVjdG9ycykgdGhlbiB1c2UgdGhlIGZhc3QgcGF0aC4KKyAgICBpZiAoZmxhdHRlbmVkU2l6ZSA9
PSAxICYmICghc3RhY2tlZFNlbGVjdG9ycy5zaXplKCkpKSB7CiAgICAgICAgIG1fc2VsZWN0b3JB
cnJheSA9IHNlbGVjdG9yVmVjdG9yWzBdLT5yZWxlYXNlU2VsZWN0b3IoKS5sZWFrUHRyKCk7CiAg
ICAgICAgIG1fc2VsZWN0b3JBcnJheS0+c2V0TGFzdEluU2VsZWN0b3JMaXN0KCk7CiAgICAgICAg
IEFTU0VSVChtX3NlbGVjdG9yQXJyYXktPmlzTGFzdEluVGFnSGlzdG9yeSgpKTsKICAgICAgICAg
c2VsZWN0b3JWZWN0b3Iuc2hyaW5rKDApOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1f
c2VsZWN0b3JBcnJheSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q1NTU2VsZWN0b3IqPihmYXN0TWFsbG9j
KHNpemVvZihDU1NTZWxlY3RvcikgKiBmbGF0dGVuZWRTaXplKSk7Ci0gICAgc2l6ZV90IGFycmF5
SW5kZXggPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjdG9yU2l6ZTsgKytpKSB7
Ci0gICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBjdXJyZW50ID0gc2VsZWN0b3JWZWN0b3JbaV0u
Z2V0KCk7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50KSB7Ci0gICAgICAgICAgICBPd25QdHI8Q1NT
U2VsZWN0b3I+IHNlbGVjdG9yID0gY3VycmVudC0+cmVsZWFzZVNlbGVjdG9yKCk7Ci0gICAgICAg
ICAgICBjdXJyZW50ID0gY3VycmVudC0+dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgbW92ZShz
ZWxlY3Rvci5yZWxlYXNlKCksICZtX3NlbGVjdG9yQXJyYXlbYXJyYXlJbmRleF0pOwotICAgICAg
ICAgICAgQVNTRVJUKCFtX3NlbGVjdG9yQXJyYXlbYXJyYXlJbmRleF0uaXNMYXN0SW5TZWxlY3Rv
ckxpc3QoKSk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCkKLSAgICAgICAgICAgICAgICBtX3Nl
bGVjdG9yQXJyYXlbYXJyYXlJbmRleF0uc2V0Tm90TGFzdEluVGFnSGlzdG9yeSgpOwotICAgICAg
ICAgICAgKythcnJheUluZGV4OworCisgICAgLy8gRmxhdHRlbiB0aGUgc2VsZWN0b3IgaGllcmFy
Y2h5IGludG8gZXhwbG9kZWRTZWxlY3RvcnMuIEVhY2ggZXhwbG9kZWRTZWxlY3RvcnMgdmVjdG9y
IGlzIGEgc2luZ2xlCisgICAgLy8gZWxlbWVudCBmcm9tIHRoZSBjYXJ0ZXNpYW4gcHJvZHVjdCBv
ZiB0aGUgc2V0cyBvZiBzZWxlY3RvcnMgYXQgZWFjaCBsZXZlbCBpbiB0aGUgaGllcmFyY2h5Lgor
ICAgIHNpemVfdCBleHBsb2RlZFJlc3VsdHNTaXplID0gc2VsZWN0b3JWZWN0b3Iuc2l6ZSgpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGFja2VkU2VsZWN0b3JzLnNpemUoKTsgaSsr
KQorICAgICAgICBleHBsb2RlZFJlc3VsdHNTaXplICo9IHN0YWNrZWRTZWxlY3RvcnNbaV0tPnNp
emUoKTsKKworICAgIFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3I+ID4qIGV4cGxvZGVkU2VsZWN0
b3JzID0gbmV3IFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3I+ID5bZXhwbG9kZWRSZXN1bHRzU2l6
ZV07CisgICAgc2l6ZV90KiBpbnNlcnRMb2NhdGlvbnMgPSBuZXcgc2l6ZV90W2V4cGxvZGVkUmVz
dWx0c1NpemVdOworICAgIHNpemVfdCBjb25zaWRlcmVkID0gMTsKKyAgICBzaXplX3QgZmluYWxT
aXplID0gMDsKKworICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXhwbG9kZWRSZXN1bHRzU2l6
ZTsgaisrKSB7CisgICAgICAgIHNpemVfdCBpID0gaiAlIHNlbGVjdG9yVmVjdG9yLnNpemUoKTsK
KyAgICAgICAgYm9vbCBzdWJzZWxlY3RvciA9IHNlbGVjdG9yVmVjdG9yW2ldLT5nZXRQcmlvclJl
bGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOworICAgICAgICBzaXplX3QgcmVz
dWx0ID0gbW92ZVRvRXhwbG9kZWRWZWN0b3IoJihleHBsb2RlZFNlbGVjdG9yc1tqXSksIHNlbGVj
dG9yVmVjdG9yW2ldLmdldCgpLCB0cnVlLCAwKTsKKyAgICAgICAgZmluYWxTaXplICs9IHJlc3Vs
dDsKKyAgICAgICAgaW5zZXJ0TG9jYXRpb25zW2pdID0gc3Vic2VsZWN0b3IgPyAwIDogcmVzdWx0
OworICAgIH0KKworICAgIGNvbnNpZGVyZWQgPSBzZWxlY3RvclZlY3Rvci5zaXplKCk7CisKKyAg
ICAvLyBUaGVyZSBhcmUgdHdvIHBvc3NpYmlsaXRpZXMgaGVyZSwgZm9yIGVhY2ggc2VsZWN0b3Iu
CisgICAgLy8gKDEpIHRoZSBwcmV2aW91c2x5IGluc2VydGVkIHNlbGVjdG9yICh3ZSdyZSB3b3Jr
aW5nIGJhY2t3YXJkcykgaGFzIGEgcHJpb3JSZWxhdGlvbgorICAgIC8vIG9mIFN1YlNlbGVjdG9y
LiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGVuIHdlIGluc2VydCBiZWZvcmUgaXQgKGkuZS4gbm90
IGF0IHRoZSBlbmQgb2YKKyAgICAvLyB0aGUgZXhwbG9kZWQgbGlzdCksIGFuZCB1cGRhdGUgdGhl
IG5ld2x5IGluc2VydGVkIHNlbGVjdG9yJ3MgcmVsYXRpb24gdG8gYmUgU3ViU2VsZWN0b3IuCisg
ICAgLy8gKDIpIHRoZSBwcmV2aW91c2x5IGluc2VydGVkIHNlbGVjdG9yIGhhcyBhIHByaW9yUmVs
YXRpb24gb2Ygc29tZXRoaW5nIG90aGVyIHRoYW4KKyAgICAvLyBTdWJTZWxlY3Rvci4gSWYgdGhp
cyBpcyB0aGUgY2FzZSwgdGhlbiB3ZSBpbnNlcnQgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgYW5k
IHVwZGF0ZQorICAgIC8vIHRoZSBuZXh0LXRvLWxhc3Qgc2VsZWN0b3IncyByZWxhdGlvbiB0byB0
aGUgaW5zZXJ0ZWQgc2VsZWN0b3IncyBwcmlvclJlbGF0aW9uLgorICAgIGZvciAoaW50IGkgPSBz
dGFja2VkU2VsZWN0b3JzLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIENTU1Nl
bGVjdG9yVmVjdG9yJiBjdXJyZW50SW5TdGFjayA9ICooc3RhY2tlZFNlbGVjdG9yc1tpXSk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXhwbG9kZWRSZXN1bHRzU2l6ZTsgaisrKSB7
CisgICAgICAgICAgICBzaXplX3QgdXNlID0gKGogLyBjb25zaWRlcmVkKSAlIGN1cnJlbnRJblN0
YWNrLnNpemUoKTsKKyAgICAgICAgICAgIGJvb2wgc3Vic2VsZWN0b3IgPSBjdXJyZW50SW5TdGFj
a1t1c2VdLT5nZXRQcmlvclJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOwor
CisgICAgICAgICAgICAvLyBpZiB3ZSBhcmVuJ3QgaW5zZXJ0aW5nIGF0IHRoZSBlbmQgd2UgbmVl
ZCB0byB1cGRhdGUKKyAgICAgICAgICAgIC8vIHRoaXMgc2VsZWN0b3IncyByZWxhdGlvbiB0byBp
bmRpY2F0ZSB0aGUgbmV4dCBzZWxlY3RvciBpcyBhIHN1YnNlbGVjdG9yLgorICAgICAgICAgICAg
Ym9vbCB1cGRhdGVUb1N1YlNlbGVjdG9yID0gaW5zZXJ0TG9jYXRpb25zW2pdICE9IGV4cGxvZGVk
U2VsZWN0b3JzW2pdLnNpemUoKTsKKyAgICAgICAgICAgIHNpemVfdCBkZWx0YSA9IG1vdmVUb0V4
cGxvZGVkVmVjdG9yKCYoZXhwbG9kZWRTZWxlY3RvcnNbal0pLCBjdXJyZW50SW5TdGFja1t1c2Vd
LmdldCgpLCB0cnVlLCBpbnNlcnRMb2NhdGlvbnNbal0pOworICAgICAgICAgICAgZmluYWxTaXpl
ICs9IGRlbHRhOworICAgICAgICAgICAgaWYgKHVwZGF0ZVRvU3ViU2VsZWN0b3IpCisgICAgICAg
ICAgICAgICAgZXhwbG9kZWRTZWxlY3RvcnNbal1baW5zZXJ0TG9jYXRpb25zW2pdICsgZGVsdGEg
LSAxXS5nZXQoKS0+bV9yZWxhdGlvbiA9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBrID0gMDsKKyAgICAgICAgICAgICAg
ICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CisgICAgICAgICAgICAgICAgZG8KKyAg
ICAgICAgICAgICAgICAgICAgcmVsYXRpb24gPSBleHBsb2RlZFNlbGVjdG9yc1tqXVtpbnNlcnRM
b2NhdGlvbnNbal0gLSAoKytrKV0tPmdldFByaW9yUmVsYXRpb24oKTsKKyAgICAgICAgICAgICAg
ICB3aGlsZSAocmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKTsKKyAgICAgICAg
ICAgICAgICBleHBsb2RlZFNlbGVjdG9yc1tqXVtpbnNlcnRMb2NhdGlvbnNbal0gLSAxXS5nZXQo
KS0+bV9yZWxhdGlvbiA9IHJlbGF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KCFzdWJzZWxlY3RvcikKKyAgICAgICAgICAgICAgICBpbnNlcnRMb2NhdGlvbnNbal0gPSBleHBs
b2RlZFNlbGVjdG9yc1tqXS5zaXplKCk7CisgICAgICAgIH0KKyAgICBjb25zaWRlcmVkICo9IGN1
cnJlbnRJblN0YWNrLnNpemUoKTsKKyAgICB9CisKKyAgICBtX3NlbGVjdG9yQXJyYXkgPSByZWlu
dGVycHJldF9jYXN0PENTU1NlbGVjdG9yKj4oZmFzdE1hbGxvYyhzaXplb2YoQ1NTU2VsZWN0b3Ip
ICogZmluYWxTaXplKSk7CisKKyAgICAvLyBNb3ZlIHRoZSBzZWxlY3RvciBjb21wb25lbnRzIGlu
IGV4cGxvZGVkU2VsZWN0b3JzIGludG8gdGhlIGZpbmFsIG91dHB1dCBzZWxlY3RvckFycmF5Lgor
ICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHBsb2Rl
ZFJlc3VsdHNTaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBleHBs
b2RlZFNlbGVjdG9yc1tpXS5zaXplKCk7IGorKykgeworICAgICAgICAgICAgbW92ZShleHBsb2Rl
ZFNlbGVjdG9yc1tpXVtqXS5yZWxlYXNlKCksICZtX3NlbGVjdG9yQXJyYXlbaW5kZXhdKTsKKyAg
ICAgICAgICAgIGlmIChqIDwgZXhwbG9kZWRTZWxlY3RvcnNbaV0uc2l6ZSgpIC0gMSkKKyAgICAg
ICAgICAgICAgICBtX3NlbGVjdG9yQXJyYXlbaW5kZXhdLnNldE5vdExhc3RJblRhZ0hpc3Rvcnko
KTsKKyAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1fc2Vs
ZWN0b3JBcnJheVthcnJheUluZGV4IC0gMV0uaXNMYXN0SW5UYWdIaXN0b3J5KCkpOworICAgICAg
ICBleHBsb2RlZFNlbGVjdG9yc1tpXS5zaHJpbmsoMCk7CiAgICAgfQotICAgIEFTU0VSVChmbGF0
dGVuZWRTaXplID09IGFycmF5SW5kZXgpOwotICAgIG1fc2VsZWN0b3JBcnJheVthcnJheUluZGV4
IC0gMV0uc2V0TGFzdEluU2VsZWN0b3JMaXN0KCk7Ci0gICAgc2VsZWN0b3JWZWN0b3Iuc2hyaW5r
KDApOworICAgIEFTU0VSVChpbmRleCA9PSBmaW5hbFNpemUpOworICAgIG1fc2VsZWN0b3JBcnJh
eVtpbmRleCAtIDFdLnNldExhc3RJblNlbGVjdG9yTGlzdCgpOworCisgICAgZGVsZXRlIFtdIGV4
cGxvZGVkU2VsZWN0b3JzOworICAgIGRlbGV0ZSBbXSBpbnNlcnRMb2NhdGlvbnM7Cit9CisKK3Vu
c2lnbmVkIENTU1NlbGVjdG9yTGlzdDo6bW92ZVRvRXhwbG9kZWRWZWN0b3IoVmVjdG9yPE93blB0
cjxDU1NTZWxlY3Rvcj4gPiogdmVjdG9yLCBDU1NQYXJzZXJTZWxlY3RvciogY3VycmVudCwgYm9v
bCB1c2VDb3B5LCB1bnNpZ25lZCBpbnNlcnRJbmRleCkKK3sKKyAgICBpbnQgaW5pdGlhbEluc2Vy
dEluZGV4ID0gaW5zZXJ0SW5kZXg7CisgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgdmVj
dG9yLT5pbnNlcnQoaW5zZXJ0SW5kZXgsIHVzZUNvcHkgPyBjdXJyZW50LT5kdXBsaWNhdGVTZWxl
Y3RvcigpIDogY3VycmVudC0+cmVsZWFzZVNlbGVjdG9yKCkpOworICAgICAgICBpbnNlcnRJbmRl
eCArPSAxOworICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+dGFnSGlzdG9yeSgpOworICAgIH0K
KworICAgIHJldHVybiBpbnNlcnRJbmRleCAtIGluaXRpYWxJbnNlcnRJbmRleDsKIH0KIAogdm9p
ZCBDU1NTZWxlY3Rvckxpc3Q6OmRlbGV0ZVNlbGVjdG9ycygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3JMaXN0LmgKaW5kZXggN2Q0NWE2YTU0MzhmM2ZmYjU3M2U4NTA4MWRhNWNhZjNlZDM3Y2Mx
Ni4uYWYwZjc2NzFhMjk5NDljZWU2YzYzYzU5YThhZTE0YmI4ZGU1YzM0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvckxpc3QuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDU1NTZWxl
Y3Rvckxpc3RfaAogI2RlZmluZSBDU1NTZWxlY3Rvckxpc3RfaAogCisjaW5jbHVkZSAiQ1NTUGFy
c2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzksNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgfkNTU1NlbGVjdG9yTGlzdCgpOwog
CiAgICAgdm9pZCBhZG9wdChDU1NTZWxlY3Rvckxpc3QmIGxpc3QpOwotICAgIHZvaWQgYWRvcHRT
ZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3Rv
clZlY3Rvcik7CisgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKENTU1NlbGVjdG9yVmVjdG9y
JiwgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0Jik7CiAKICAgICBDU1NTZWxlY3RvciogZmlyc3QoKSBj
b25zdCB7IHJldHVybiBtX3NlbGVjdG9yQXJyYXkgPyBtX3NlbGVjdG9yQXJyYXkgOiAwOyB9CiAg
ICAgc3RhdGljIENTU1NlbGVjdG9yKiBuZXh0KENTU1NlbGVjdG9yKik7CkBAIC01Miw2ICs1Myw4
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZVNlbGVjdG9ycygpOworICAg
IHVuc2lnbmVkIG1vdmVUb0V4cGxvZGVkVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3I+
ID4qLCBDU1NQYXJzZXJTZWxlY3RvciosIGJvb2wgdXNlQ29weSwgdW5zaWduZWQgaW5zZXJ0SW5k
ZXgpOworCiAKICAgICAvLyBFbmQgb2YgYSBtdWx0aXBhcnQgc2VsZWN0b3IgaXMgaW5kaWNhdGVk
IGJ5IG1faXNMYXN0SW5UYWdIaXN0b3J5IGJpdCBpbiB0aGUgbGFzdCBpdGVtLgogICAgIC8vIEVu
ZCBvZiB0aGUgYXJyYXkgaXMgaW5kaWNhdGVkIGJ5IG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgYml0
IGluIHRoZSBsYXN0IGl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCmluZGV4IDhh
NjdmYWJmMTkzZWE4Yzk0ZDRiNmM2ODIzZDI0YzZmYTFiNTk5ZjguLmIyNTA5NWZjOWQ3MThlOTM2
NDMzMGI1MmFiMWRjMGVmZGI0YmIxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3Bw
CkBAIC0yOTIsNyArMjkyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVz
KDEpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIENTU1Zh
bHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAg
Q1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5sYXN0KCkudmFsdWUoKTsKICAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJNaWQsIHZhbHVlLCBpbXBvcnRhbnQp
OwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlckVuZCwgdmFsdWUsIGltcG9y
dGFudCk7CiAgICAgICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGUuaAppbmRleCBlMjMwYTk0ZmQ1YzJjZmE1YjM5MDc0ZDIwOTFjZjliZTlmNjYxODY5Li42
ZDU5YjhhYWU1ZTRlZDM5N2E3YzdjMGI5ZjMxZWM1Njc3Zjg5ODg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5oCkBAIC00Niw3ICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgQ1NTU3R5bGVSdWxl
KiBlbnN1cmVDU1NTdHlsZVJ1bGUoKSBjb25zdDsKICAgICAKLSAgICB2b2lkIGFkb3B0U2VsZWN0
b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JzKSB7
IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JzKTsgfQorICAgIHZv
aWQgYWRvcHRTZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3RvciYgc2VsZWN0b3JzLCBDU1NT
ZWxlY3RvclZlY3Rvckxpc3QmIHN0YWNrZWRTZWxlY3RvcnMpIAorICAgIHsKKyAgICAgICAgbV9z
ZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMsIHN0YWNrZWRTZWxlY3Rv
cnMpOworICAgIH0KICAgICB2b2lkIGFkb3B0U2VsZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlzdCYg
c2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0KHNlbGVjdG9ycyk7IH0KICAgICB2b2lk
IHNldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBwcm9wZXJ0aWVzKSB7
IG1fcHJvcGVydGllcyA9IHByb3BlcnRpZXM7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NSZWdpb25SdWxlLmNwcAppbmRleCBjYzM3N2M0NjEzZDQxMGFlODY5OTg1ZTczMjll
MGI5YzdlMGJhNmMyLi4wZjc4Mzc4N2JkZmEzMGZjMjVmNWNlOTc0NThiNDdiZjM4NDUxNDQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCkBAIC0zOCwxNCAr
MzgsMTQgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLVdlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1JlZ2lvblJ1bGUoQ1NTU3R5bGVTaGVl
dCogcGFyZW50LCBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcnMs
IFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVzKQorV2ViS2l0Q1NTUmVnaW9uUnVsZTo6V2Vi
S2l0Q1NTUmVnaW9uUnVsZShDU1NTdHlsZVNoZWV0KiBwYXJlbnQsIENTU1NlbGVjdG9yVmVjdG9y
KiBzZWxlY3RvcnMsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc3RhY2tlZFNlbGVjdG9ycywgUGFz
c1JlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZXMpCiAgICAgOiBDU1NSdWxlKHBhcmVudCwgQ1NTUnVs
ZTo6V0VCS0lUX1JFR0lPTl9SVUxFKQogICAgICwgbV9ydWxlTGlzdChydWxlcykKIHsKICAgICBm
b3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtX3J1bGVMaXN0LT5sZW5ndGgoKTsgKytp
bmRleCkKICAgICAgICAgbV9ydWxlTGlzdC0+aXRlbShpbmRleCktPnNldFBhcmVudFJ1bGUodGhp
cyk7CiAKLSAgICBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMp
OworICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycywgc3Rh
Y2tlZFNlbGVjdG9ycyk7CiB9CiAKIFdlYktpdENTU1JlZ2lvblJ1bGU6On5XZWJLaXRDU1NSZWdp
b25SdWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25S
dWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5oCmluZGV4IDYy
NGVkM2Y2M2NjM2MzMzdiMWE3MjU1ZmIxNTAxNTIxMWM0NTZkN2MuLmQ2YWI0ZDdhMGZhZTRlZGJh
NjQ3NTgzMDA2MmQ0NDY2ZTcxODY5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NSZWdpb25SdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Jl
Z2lvblJ1bGUuaApAQCAtNDQsOSArNDQsOSBAQCBjbGFzcyBDU1NSdWxlTGlzdDsKIAogY2xhc3Mg
V2ViS2l0Q1NTUmVnaW9uUnVsZTogcHVibGljIENTU1J1bGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYktpdENTU1JlZ2lvblJ1bGU+IGNyZWF0ZShDU1NTdHlsZVNoZWV0KiBw
YXJlbnQsIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycywgUGFz
c1JlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0
Q1NTUmVnaW9uUnVsZT4gY3JlYXRlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgQ1NTU2VsZWN0b3JW
ZWN0b3IqIHNlbGVjdG9ycywgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0JiBzdGFja2VkU2VsZWN0b3Jz
LCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBydWxlcykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViS2l0Q1NTUmVnaW9uUnVsZShwYXJlbnQsIHNlbGVjdG9ycywgcnVsZXMp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NSZWdpb25SdWxlKHBhcmVu
dCwgc2VsZWN0b3JzLCBzdGFja2VkU2VsZWN0b3JzLCBydWxlcykpOwogICAgIH0KIAogICAgIH5X
ZWJLaXRDU1NSZWdpb25SdWxlKCk7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBDU1NS
dWxlTGlzdCogY3NzUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3J1bGVMaXN0LmdldCgpOyB9CiAK
IHByaXZhdGU6Ci0gICAgV2ViS2l0Q1NTUmVnaW9uUnVsZShDU1NTdHlsZVNoZWV0KiBwYXJlbnQs
IFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycywgUGFzc1JlZlB0
cjxDU1NSdWxlTGlzdD4gcnVsZXMpOworICAgIFdlYktpdENTU1JlZ2lvblJ1bGUoQ1NTU3R5bGVT
aGVldCogcGFyZW50LCBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JzLCBDU1NTZWxlY3RvclZl
Y3Rvckxpc3QmIHN0YWNrZWRTZWxlY3RvcnMsIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVz
KTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKICAgICBSZWZQdHI8Q1NT
UnVsZUxpc3Q+IG1fcnVsZUxpc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGJhN2RhZDVlMGE4NDRiOWUxNWE5NTgzMjE5
ZWRkNzFkMTE3Njc1Yy4uOGYyYjQ2MDlmYWViM2UxNDBjYTJmYzdkM2YzNGMyZGM2Y2ZhMjY5MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAzLTIyICBTaGFuZSBTdGVwaGVucyAgPHNoYW5l
c3RlcGhlbnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQXSBJbXBsZW1lbnQgQ1NTIEhpZXJh
cmNoaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
OTkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Y3NzMy9zaW1wbGUtaGllcmFyY2hpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
c3MzL3NpbXBsZS1oaWVyYXJjaGllcy5odG1sOiBBZGRlZC4KKwogMjAxMi0wMy0yMSAgRW1pbCBB
IEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUmVtb3Zl
IGZvciBjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQgYW5kIHF0IHNwZWNpZmljIGV4cGVjdGVkCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3NpbXBsZS1oaWVyYXJjaGllcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3NpbXBsZS1oaWVyYXJjaGllcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjNmZWJkN2M2Y2UzNDA4MjdhZGYxNTFhY2FhMjE5ZTBmNWJhMTJmYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2ltcGxlLWhpZXJhcmNoaWVzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDcwIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDM4
NAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4Mzg0CisgICAgUmVuZGVy
Qm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MzY4CisgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCww
KSBzaXplIDc4NHgxOCBbY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxOTl4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDE5OTogIlRoaXMgZGl2IHNob3VsZCBjb250YWluIHJlZCB0ZXh0IgorICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgNDAweDQwIFtiZ2NvbG9yPSNERERERERdCisgICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNDAweDE4IFtjb2xvcj0jMDAwMEZG
XQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIwNngxOAorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjA2OiAiVGhpcyBkaXYgc2hvdWxkIGNv
bnRhaW4gYmx1ZSB0ZXh0IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTgpIHNpemUg
NDAweDQwIFtjb2xvcj0jMDA4MDAwXSBbYmdjb2xvcj0jREREREREXQorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMTR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAyMTQ6ICJUaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0IgorICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsOTgpIHNpemUgNzg0eDE0NAorICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMTR4MTgKKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxNDogIlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdy
ZWVuIHRleHQiCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE4KSBzaXplIDc4NHgx
OCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAyMTR4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxNDogIlRo
aXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDM2KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMTR4MTgKKyAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDIxNDogIlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQi
CisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDU0KSBzaXplIDc4NHgxOCBbY29sb3I9
IzAwODAwMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMTR4
MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxNDogIlRoaXMgZGl2IHNo
b3VsZCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDcyKSBzaXplIDc4NHg3MgorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNp
emUgNzg0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAy
Mzh4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjM4OiAiVGhpcyBk
aXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDAsMTgpIHNpemUgNzg0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAyMzh4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMjM4OiAiVGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQiCisgICAg
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzYpIHNpemUgNzg0eDE4CisgICAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMzh4MTgKKyAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjM4OiAiVGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWlu
IGdyZWVuIHRleHQiCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTQpIHNpemUg
Nzg0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMzh4
MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjM4OiAiVGhpcyBkaXYg
c2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwyNDIpIHNpemUgNzg0eDkwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDAp
IHNpemUgNzg0eDM2CisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3
ODR4MTggW2NvbG9yPSNGRkMwQ0JdCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAxNTZ4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTU2OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBwaW5rLCIKKyAgICAgICAgICBSZW5kZXJCbG9jayAo
YW5vbnltb3VzKSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEwMXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAxMDE6ICJidXQgbm90IHRoaXMgdGV4dC4iCisgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDM2KSBzaXplIDc4NHgxOCBbY29sb3I9I0ZGQzBDQl0KKyAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNTZ4MTgKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDE1NjogIlRoaXMgdGV4dCBzaG91bGQgYmUgcGluay4iCisgICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDU0KSBzaXplIDc4NHgxOCBbY29sb3I9I0ZGQzBD
Ql0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNTZ4MTgKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE1NjogIlRoaXMgdGV4dCBzaG91bGQg
YmUgcGluay4iCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDcyKSBzaXplIDc4NHgx
OAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4MHgxOAorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTgwOiAiVGhpcyB0ZXh0IHNob3VsZCBu
b3QgYmUgcGluay4iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzMzIpIHNpemUgNzg0
eDM2CisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDM2IFtiZ2Nv
bG9yPSNGRkRERERdCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3
ODR4MTggW2NvbG9yPSNGRjAwMDBdCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAyNzV4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
Mjc1OiAiVGhpcyBzaG91bGQgYmUgcmVkIHdpdGggYSBwaW5rIGJhY2tncm91bmQuIgorICAgICAg
ICAgICAgUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIGF0ICgwLDApIHNpemUgMTk0eDE4CisgICAg
ICAgICAgICAgIFJlbmRlclRleHQgYXQgKDI3NSwwKSBzaXplIDE5NHgxOAorICAgICAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgyNzUsMCkgd2lkdGggMTk0OiAiIChIZXJlJ3Mgc29tZSBpbnNlcnRl
ZCBjb250ZW50KSIKKyAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxOCkg
c2l6ZSA3ODR4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDI3MngxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNzI6ICJUaGlz
IHNob3VsZCBqdXN0IGhhdmUgdGhlIHBpbmsgYmFja2dyb3VuZC4iCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL3NpbXBsZS1oaWVyYXJjaGllcy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9z
aW1wbGUtaGllcmFyY2hpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGMyZjU0ODAxMmZlZWMwYzhmNjJi
YjFmMjE2MjBmNmZkODljZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9z
aW1wbGUtaGllcmFyY2hpZXMuaHRtbApAQCAtMCwwICsxLDk5IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiBUZXN0IGEgdHJpdmlhbGx5IG5lc3RlZCBydWxl
ICovCisKKy5hIHsKKyAgICAmIC5iIHsKKyAgICAgICAgY29sb3I6IHJlZDsKKyAgICB9Cit9CisK
Ky8qIFRlc3QgaW50YXJjYWxhdGlvbiBvZiBuZXN0ZWQgcnVsZXMgYW5kIHByb3BlcnRpZXMuICov
CisvKiBUZXN0IGRlc2NlbmRhbnQgc2VsZWN0b3IgYW5kIG5vIHNlbGVjdG9yLiAqLworCisuYyB7
CisgICAgaGVpZ2h0OiA0MHB4OworICAgICYgLmQgeworICAgICAgICBjb2xvcjogYmx1ZTsKKyAg
ICB9CisgICAgd2lkdGg6IDQwMHB4OworICAgICYuZSB7CisgICAgICAgIGNvbG9yOiBncmVlbjsK
KyAgICB9CisgICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGRkZDsKK30KKworLyogVGVzdCBub24t
c3BhY2UtYmFzZWQgY29tYmluYXRvciB3aXRoIGFsbCBwb3NzaWJsZSBzcGFjaW5ncy4gKi8KKy5m
IHsKKyAgICAmPi5nIHsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKyAgICAmPiAuaCB7
CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9CisgICAgJiA+LmkgeworICAgICAgICBjb2xv
cjogZ3JlZW47CisgICAgfQorICAgICYgPiAuaiB7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAg
ICB9Cit9CisKKy8qIFRlc3QgbXVsdGlwbGUgbmVzdGVkIHNlbGVjdG9ycyBpbiBzYW1lIGxpc3Qu
ICovCisuayB7IAorICAgICYgLmwsICYubSwgJiArIC5uIHsKKyAgICAgICAgY29sb3I6IHBpbms7
CisgICAgfQorfQorCisvKiBUZXN0IGRlZXAgbmVzdGluZyBvZiBzZWxlY3RvcnMuICovCisubyB7
CisgICAgJiAucCB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmRkZGQ7CisgICAgICAg
ICYgLnEgeworICAgICAgICAgICAgY29sb3I6IHJlZDsKKyAgICAgICAgICAgICY6OmFmdGVyIHsK
KyAgICAgICAgICAgICAgICBjb250ZW50OiAiIChIZXJlJ3Mgc29tZSBpbnNlcnRlZCBjb250ZW50
KSI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKworPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iYSI+PGRpdiBjbGFzcz0iYiI+VGhpcyBkaXYgc2hv
dWxkIGNvbnRhaW4gcmVkIHRleHQ8L2Rpdj48L2Rpdj4KKworPGRpdiBjbGFzcz0iYyI+PGRpdiBj
bGFzcz0iZCI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gYmx1ZSB0ZXh0PC9kaXY+PC9kaXY+CisK
KzxkaXYgY2xhc3M9ImMgZSI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2
PgorCis8ZGl2IGNsYXNzPSJmIj4KKyAgPGRpdiBjbGFzcz0iZyI+VGhpcyBkaXYgc2hvdWxkIGNv
bnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICA8ZGl2IGNsYXNzPSJoIj5UaGlzIGRpdiBzaG91bGQg
Y29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisgIDxkaXYgY2xhc3M9ImkiPlRoaXMgZGl2IHNob3Vs
ZCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKyAgPGRpdiBjbGFzcz0iaiI+VGhpcyBkaXYgc2hv
dWxkIGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICA8ZGl2PgorICAgIDxkaXYgY2xhc3M9Imci
PlRoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisgICAgPGRpdiBj
bGFzcz0iaCI+VGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKyAg
ICA8ZGl2IGNsYXNzPSJpIj5UaGlzIGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dDwv
ZGl2PgorICAgIDxkaXYgY2xhc3M9ImoiPlRoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVl
biB0ZXh0PC9kaXY+CisgIDwvZGl2PgorPC9kaXY+Cis8ZGl2PgorICAgIDxkaXYgY2xhc3M9Imsi
PgorICAgICAgICA8ZGl2IGNsYXNzPSJsIj5UaGlzIHRleHQgc2hvdWxkIGJlIHBpbmssPC9kaXY+
IGJ1dCBub3QgdGhpcyB0ZXh0LjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImsgbSI+VGhpcyB0ZXh0
IHNob3VsZCBiZSBwaW5rLjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im4iPlRoaXMgdGV4dCBzaG91
bGQgYmUgcGluay48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJuIj5UaGlzIHRleHQgc2hvdWxkIG5v
dCBiZSBwaW5rLjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJvIj48ZGl2IGNsYXNzPSJwIj48
ZGl2IGNsYXNzPSJxIj5UaGlzIHNob3VsZCBiZSByZWQgd2l0aCBhIHBpbmsgYmFja2dyb3VuZC48
L2Rpdj4gVGhpcyBzaG91bGQganVzdCBoYXZlIHRoZSBwaW5rIGJhY2tncm91bmQuPC9kaXY+PC9k
aXY+Cis8L2JvZHk+Cis8c2NyaXB0PgoraWYgKGxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154542</attachid>
            <date>2012-07-25 22:34:15 -0700</date>
            <delta_ts>2012-07-26 18:08:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79939-20120726153402.patch</filename>
            <type>text/plain</type>
            <size>89852</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQwMjkyM2NmNDhmMjdh
NDY0ZWJjMTM2NTUwYjJmZTFlNzc3ZWI3MC4uY2EwZWVjZDZlNTlkY2E1YzA1MGU2YjI2YzAzYmFk
Y2M2YjdmNGRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTA3LTI2ICBTaGFu
ZSBTdGVwaGVucyAgPHNoYW5lc3RlcGhlbnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQXSBJ
bXBsZW1lbnQgQ1NTIEhpZXJhcmNoaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03OTkzOQorCisgICAgICAgIFRoaXMgQ1NTIGZlYXR1cmUgaXMgcHJv
cG9zZWQgaW4gdGhlIGZvbGxvd2luZyBFZGl0b3IncyBEcmFmdDoKKyAgICAgICAgaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3NzMy1oaWVyYXJjaGllcy8uCisKKyAgICAgICAgQXMgZWFjaCBzdHls
ZSBydWxlIGlzIHBhcnNlZCwgdGhlIHNlbGVjdG9yIGZvciB0aGUgc3R5bGUKKyAgICAgICAgcnVs
ZSBpcyBib3RoIGNvbnZlcnRlZCBpbnRvIGEgQ1NTU2VsZWN0b3JMaXN0IGFuZCBwdXNoZWQKKyAg
ICAgICAgb250byBhIFNlbGVjdG9yVmVjdG9yIHRvIG1haW50YWluIHRoZSBjdXJyZW50IHNlbGVj
dG9yCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgV2hlbiBhIG5lc3RlZCBzdHlsZSBydWxl
IGlzIGVuY291bnRlcmVkLCBib3RoIHRoZSBuZXcgc2VsZWN0b3IKKyAgICAgICAgYW5kIHRoZSBj
dXJyZW50IFNlbGVjdG9yVmVjdG9yIGNvbnRleHQgYXJlIHByb3ZpZGVkIHRvIHRoZQorICAgICAg
ICBuZXcgQ1NTU2VsZWN0b3JMaXN0IHRoYXQgcmVwcmVzZW50cyB0aGUgc2VsZWN0b3IgZm9yIHRo
ZSBuZXN0ZWQKKyAgICAgICAgcnVsZS4gQXQgdGhpcyBwb2ludCB0aGUgY29udGV4dCBhbmQgbmV3
IHNlbGVjdG9yIGFyZSBjb21iaW5lZCAtIAorICAgICAgICB0aGlzIGlzIGEgbGl0dGxlIGNvbXBs
ZXggYmVjYXVzZToKKyAgICAgICAgICAxKSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUg
Y29tbWEtc2VwYXJhdGVkIHNlbGVjdG9yCisgICAgICAgICAgICAgY29tcG9uZW50cyBpbiBlYWNo
IHBhcnQgb2YgdGhlIFNlbGVjdG9yVmVjdG9yLCBhbmQgdGhlc2UKKyAgICAgICAgICAgICBuZWVk
IHRvIGJlIGNvbWJpbmVkCisgICAgICAgICAgMikgdGhlIG91dHB1dCBsaXN0IG9yZGVyIChpbiBv
cmRlciBvZiBtYXRjaGluZykgZG9lc24ndCBtYXRjaAorICAgICAgICAgICAgIHRoZSBpbmNvbWlu
ZyB2ZWN0b3Igb3JkZXIgKGluIG9yZGVyIG9mIHBhcnNpbmcpIGFuZCB0aGlzCisgICAgICAgICAg
ICAgbmVlZHMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LCBlc3BlY2lhbGx5IGF0IHRoZSBib3Vu
ZGFyaWVzCisgICAgICAgICAgICAgYmV0d2VlbiBTZWxlY3RvclZlY3RvciBlbnRyaWVzLgorCisg
ICAgICAgIFBhc3QgdGhlIHBvaW50IG9mIHRoZSBDU1NTZWxlY3Rvckxpc3QsIG5vIGRlZXBlciBt
b2RpZmljYXRpb25zIGFyZQorICAgICAgICByZXF1aXJlZC4KKworICAgICAgICBOb3RlIHRoYXQg
dGhpcyBwYXRjaCBkb2Vzbid0IGltcGxlbWVudCBzdXBwb3J0IGZvciB0aGUgQ1NTT00gLSAKKyAg
ICAgICAgdGhhdCB3aWxsIGNvbWUgaW4gZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3NzMy9zaW1wbGUtaGllcmFy
Y2hpZXMuaHRtbAorCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gYWxsb3cgbmVzdGluZyBvZiBz
ZWxlY3RvcnMgdG8gYmUgcGFyc2VkLgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1BhZ2VSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6
YWRvcHRTZWxlY3RvclZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVh
dGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUpOgorCisg
ICAgICAgIEFkZCBhIHNlbGVjdG9yVmVjdG9yIHRvIHRyYWNrIGN1cnJlbnQgc2VsZWN0b3Igc3Rh
Y2sKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnJldXNhYmxlU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cHVzaFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cG9wU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoU3RhY2tlZFBh
cnNlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpTdGFja2VkUGFy
c2VkUHJvcGVydGllczo6U3RhY2tlZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpkdXBsaWNhdGVTZWxlY3Rvcik6
CisgICAgICAgIChDU1NQYXJzZXJTZWxlY3Rvcik6CisKKyAgICAgICAgVHJhY2sgcHJpb3IgcmVs
YXRpb24gdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBzdGl0Y2gKKyAgICAgICAgc2VsZWN0b3JWZWN0
b3IgKyBjdXJyZW50IHNlbGVjdG9yIGludG8gYSBjb2hlcmVudCBzZWxlY3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpnZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OkNT
U1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnNldFNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxp
c3RXcmFwcGVyOjp+Q1NTU2VsZWN0b3JMaXN0V3JhcHBlcik6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpz
ZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpnZXRQcmlv
clJlbGF0aW9uKToKKyAgICAgICAgKFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZXRWYWx1ZSk6CisKKyAgICAgICAgSW1wbGVtZW50IGFsZ29yaXRobSB0byBjb21i
aW5lIHNlbGVjdG9yVmVjdG9yIHdpdGgKKyAgICAgICAgY3VycmVudCBzZWxlY3RvciB3aGVuIGdl
bmVyYXRpbmcgdGhlIENTU1NlbGVjdG9yIGFycmF5LgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rv
ckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVj
dG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3JMaXN0Ojptb3ZlVG9FeHBsb2RlZFZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1NlbGVj
dG9yTGlzdC5oOgorICAgICAgICAoQ1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvU3R5
bGVSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmFkb3B0U2VsZWN0b3JWZWN0
b3IpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1JlZ2lvblJ1bGUpOgorICAgICAg
ICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmg6CisKIDIwMTItMDctMjUgIEpvbmF0aGFuIERv
bmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tC
ZXJyeV0gSW50ZWdyYXRlIGNlcnRtZ3Igd2l0aCBDcmVkZW50aWFsQmFja2luZ1N0b3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKaW5kZXggMGEyNmU0NmZmOTc5MjA0YjI2ZDRjNGY4ZGVjOGY0NzVi
MjE1NzQ3NC4uN2YzMGViNTMwMWE1YzAyYTQxNDY4YTFmMGFlZTczYzExZTI2MTMwNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzksNiArMzksNyBAQCBFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfQ1NQX05FWFQgPSA7CiBF
TkFCTEVfQ1NTX0VYQ0xVU0lPTlMgPSBFTkFCTEVfQ1NTX0VYQ0xVU0lPTlM7CiBFTkFCTEVfQ1NT
X0ZJTFRFUlMgPSBFTkFCTEVfQ1NTX0ZJTFRFUlM7CitFTkFCTEVfQ1NTX0hJRVJBUkNISUVTID0g
OwogRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfUkVT
T0xVVElPTiA9IDsKIEVOQUJMRV9DU1NfUkVHSU9OUyA9IEVOQUJMRV9DU1NfUkVHSU9OUzsKQEAg
LTEzNSw0ICsxMzYsNCBAQCBFTkFCTEVfV0VCX1RJTUlORyA9IDsKIEVOQUJMRV9XT1JLRVJTID0g
RU5BQkxFX1dPUktFUlM7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RF
RklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NB
TlZBUykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVS
UykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVT
T0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVO
QUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJM
RV9DU1MzX0ZMRVhCT1gpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVf
REFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RB
VEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVW
SUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNU
T1JZX1VQTE9BRCkgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5B
QkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVf
TElOS19QUkVSRU5ERVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTUlDUk9EQVRBKSAkKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQo
RU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRUdJU1RF
Ul9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChF
TkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQp
ICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklD
QVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVU5ET19N
QU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVG
SU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FO
VkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJT
KSAkKEVOQUJMRV9DU1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElP
TikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAk
KEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFC
TEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19GTEVYQk9YKSAkKEVOQUJMRV9DVVNUT01f
U0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRB
TElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRB
SUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElBTE9H
X0VMRU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0ZJTEVfU1lTVEVN
KSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FN
RVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RB
VEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVU
X1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFC
TEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChF
TkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJM
RV9RVU9UQSkgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVfUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVf
U0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NRTF9EQVRBQkFT
RSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01f
T0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJ
TkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09O
X0xPQURJTkcpICQoRU5BQkxFX1VORE9fTUFOQUdFUikgJChFTkFCTEVfVklERU8pICQoRU5BQkxF
X1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJM
RV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChF
TkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDQ5MTgyZjNhMDkyNmFmNGIxZjU4MjljZWMxN2I4
YzlhZTU3MzZlOGUuLjhiMTFmNWFlZTMyNzc4MDAxNzUxOTdhNTQ1YzE5OWU1ZTJhMzQ2YmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCkBAIC00MCw2ICs0MCw3IEBAIEVOQUJMRV9DU1BfTkVYVCA9IDsKIEVOQUJMRV9D
U1NfQk9YX0RFQ09SQVRJT05fQlJFQUsgPSBFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFL
OwogRU5BQkxFX0NTU19FWENMVVNJT05TID0gRU5BQkxFX0NTU19FWENMVVNJT05TOwogRU5BQkxF
X0NTU19GSUxURVJTID0gRU5BQkxFX0NTU19GSUxURVJTOworRU5BQkxFX0NTU19ISUVSQVJDSElF
UyA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04gPSA7CiBFTkFCTEVfQ1NTX0lNQUdF
X1JFU09MVVRJT04gPSA7CiBFTkFCTEVfQ1NTX1JFR0lPTlMgPSBFTkFCTEVfQ1NTX1JFR0lPTlM7
CkBAIC0xMzYsNCArMTM3LDQgQEAgRU5BQkxFX1dFQl9USU1JTkcgPSA7CiBFTkFCTEVfV09SS0VS
UyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVS
RV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9E
RUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJ
TFRFUlMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdF
X1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykg
JChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChF
TkFCTEVfQ1NTM19GTEVYQk9YKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJM
RV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJ
UkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAk
KEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAk
KEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5B
QkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxF
X0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5B
QkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJD
RSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChF
TkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJW
RVJTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJ
KSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVH
SVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
ICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVf
U0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NP
UEVEKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFC
TEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9U
SUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VO
RE9fTUFOQUdFUikgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJM
RV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFC
TEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RF
Q09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklM
VEVSUykgJChFTkFCTEVfQ1NTX0hJRVJBUkNISUVTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9O
UykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQo
RU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfRkxFWEJPWCkgJChFTkFCTEVfQ1VT
VE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVf
REFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVf
REVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJ
QUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9GSUxFX1NZ
U1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxF
X0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMp
ICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVU
X1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZ
X0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFU
SE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQo
RU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEp
ICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVSUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxF
X1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5B
QkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxfREFU
QUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdf
RE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9BVVRP
U0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAkKEVO
QUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMp
ICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKaW5kZXggYzdjMTBiNTQxY2Q0
NmFkNGZlYmM2ZWZlMjg5ZTgxYjJjZmIwODYxZS4uZWY4NTE0YjMzYzAwNzc2MjI2YzBhZTNiYTJm
ZGQyNzY2NzY1MzBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC03MSw3ICs3MSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAgICAgU3R5bGVSdWxlQmFzZSogcnVsZTsKICAg
ICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4qIHJ1bGVMaXN0OwogICAgIENTU1BhcnNl
clNlbGVjdG9yKiBzZWxlY3RvcjsKLSAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+KiBzZWxlY3Rvckxpc3Q7CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9yTGlzdDsK
ICAgICBDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJnaW5Cb3g7CiAgICAgQ1NTU2VsZWN0
b3I6OlJlbGF0aW9uIHJlbGF0aW9uOwogICAgIE1lZGlhUXVlcnlTZXQqIG1lZGlhTGlzdDsKQEAg
LTIxNCw2ICsyMTQsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgdm9p
ZCogcGFyc2VyKQogJXR5cGUgPHJ1bGU+IGNoYXJzZXQKICV0eXBlIDxydWxlPiBpZ25vcmVkX2No
YXJzZXQKICV0eXBlIDxydWxlPiBydWxlc2V0CisldHlwZSA8cnVsZT4gbmVzdGVkX3J1bGVzZXRf
Y29udGVudHMKICV0eXBlIDxydWxlPiBtZWRpYQogJXR5cGUgPHJ1bGU+IGltcG9ydAogJXR5cGUg
PHJ1bGU+IG5hbWVzcGFjZQpAQCAtMjYzLDYgKzI2NCw3IEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgo
WVlTVFlQRSogeXlsdmFsLCB2b2lkKiBwYXJzZXIpCiAldHlwZSA8c2VsZWN0b3I+IHNpbXBsZV9z
ZWxlY3RvcgogJXR5cGUgPHNlbGVjdG9yPiBzZWxlY3RvcgogJXR5cGUgPHNlbGVjdG9yTGlzdD4g
c2VsZWN0b3JfbGlzdAorJXR5cGUgPHNlbGVjdG9yTGlzdD4gbmVzdGVkX3NlbGVjdG9yX2xpc3QK
ICV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNpbXBsZV9zZWxlY3Rvcl9saXN0CiAldHlwZSA8c2VsZWN0
b3JMaXN0PiByZWdpb25fc2VsZWN0b3IKICV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3Jfd2l0aF90
cmFpbGluZ193aGl0ZXNwYWNlCkBAIC0yNzQsOSArMjc2LDEzIEBAIHN0YXRpYyBpbnQgY3NzeXls
ZXgoWVlTVFlQRSogeXlsdmFsLCB2b2lkKiBwYXJzZXIpCiAKICV0eXBlIDxib29sZWFuPiBkZWNs
YXJhdGlvbl9saXN0CiAldHlwZSA8Ym9vbGVhbj4gZGVjbF9saXN0Ci0ldHlwZSA8Ym9vbGVhbj4g
ZGVjbGFyYXRpb24KKyV0eXBlIDxib29sZWFuPiBuZXN0ZWRfcnVsZXNldAorJXR5cGUgPGJvb2xl
YW4+IGRlY2xhcmF0aW9uX3NlcAorJXR5cGUgPGJvb2xlYW4+IHJhd19kZWNsYXJhdGlvbgogJXR5
cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lucwogCisldHlwZSA8Ym9vbGVhbj4g
bWF5YmVfc3BhY2UKKwogJXR5cGUgPGJvb2xlYW4+IHByaW8KIAogJXR5cGUgPGludGVnZXI+IG1h
dGNoCkBAIC0zMzUsOSArMzQxLDkgQEAgd2Via2l0X3ZhbHVlOgogICAgICAgICBDU1NQYXJzZXIq
IHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICBpZiAoJDQpIHsK
ICAgICAgICAgICAgIHAtPm1fdmFsdWVMaXN0ID0gcC0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0
KTsKLSAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9w
ZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+
bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7CiAgICAgICAgICAgICBpZiAoIXAtPnBhcnNlVmFs
dWUocC0+bV9pZCwgcC0+bV9pbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNr
TGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIG9sZFBhcnNlZFBy
b3BlcnRpZXMpOworICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+
bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAg
ICAgICAgIHAtPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KQEAgLTM1
NSwxNCArMzYxLDE0IEBAIHdlYmtpdF9zZWxlY3RvcjoKICAgICAgICAgaWYgKCQ0KSB7CiAgICAg
ICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwog
ICAgICAgICAgICAgaWYgKHAtPm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvcikKLSAgICAg
ICAgICAgICAgICBwLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3ItPmFkb3B0U2VsZWN0
b3JWZWN0b3IoKiQ0KTsKKyAgICAgICAgICAgICAgICBwLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNl
U2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3IoKiQ0LCBwLT5tX25lc3RlZFNlbGVjdG9yU3Rh
Y2spOwogICAgICAgICB9CiAgICAgfQogOwogCiBtYXliZV9zcGFjZToKLSAgICAvKiBlbXB0eSAq
LyAlcHJlYyBVTklNUE9SVEFOVF9UT0sKLSAgfCBtYXliZV9zcGFjZSBXSElURVNQQUNFCisgICAg
LyogZW1wdHkgKi8gJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsgJCQgPSBmYWxzZTsgfQorICB8IG1h
eWJlX3NwYWNlIFdISVRFU1BBQ0UgeyAkJCA9IHRydWU7IH0KICAgOwogCiBtYXliZV9zZ21sOgpA
QCAtOTIwLDExICs5MjYsMTggQEAgcnVsZXNldDoKICAgICB9CiAgIDsKIAorbmVzdGVkX3J1bGVz
ZXRfY29udGVudHM6CisgICAgbmVzdGVkX3NlbGVjdG9yX2xpc3QgYXRfcnVsZV9oZWFkZXJfZW5k
ICd7JyBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9z
aW5nX2JyYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2Vy
Kj4ocGFyc2VyKTsKKyAgICAgICAgJCQgPSBwLT5jcmVhdGVTdHlsZVJ1bGUoJDEpOworICAgIH0K
KyAgOworCiBzZWxlY3Rvcl9saXN0OgogICAgIHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RP
SyB7CiAgICAgICAgIGlmICgkMSkgewogICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGlj
X2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgICAgICQkID0gcC0+cmV1c2FibGVT
ZWxlY3RvclZlY3RvcigpOworICAgICAgICAgICAgJCQgPSBwLT5zZWxlY3RvclZlY3RvcigpOwog
ICAgICAgICAgICAgJCQtPnNocmluaygwKTsKICAgICAgICAgICAgICQkLT5hcHBlbmQocC0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKICAgICAgICAgICAgIHAtPnVwZGF0ZUxhc3RTZWxlY3Rv
ckxpbmVBbmRQb3NpdGlvbigpOwpAQCAtOTQ0LDYgKzk1Nyw1OCBAQCBzZWxlY3Rvcl9saXN0Ogog
ICAgIH0KICAgIDsKIAorbmVzdGVkX3NlbGVjdG9yX2xpc3Q6CisgICAgc2VsZWN0b3IgJXByZWMg
VU5JTVBPUlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQxKSB7CisgICAgICAgICAgICBDU1NQYXJz
ZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICAgICAgJCQg
PSBwLT5zZWxlY3RvclZlY3RvcigpOworICAgICAgICAgICAgJCQtPnNocmluaygwKTsKKyAgICAg
ICAgICAgIGlmIChwLT5tX3RyYWlsaW5nU3BhY2UpCisgICAgICAgICAgICAgICAgJDEtPnNldFBy
aW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICQxLT5zZXRQcmlvclJlbGF0aW9uKENTU1NlbGVjdG9yOjpTdWJTZWxl
Y3Rvcik7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQx
KSk7CisgICAgICAgICAgICBwLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICB8IGNvbWJpbmF0b3Igc2VsZWN0b3IgJXByZWMgVU5JTVBP
UlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQyKSB7CisgICAgICAgICAgICBDU1NQYXJzZXIqIHAg
PSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICAgICAgJCQgPSBwLT5z
ZWxlY3RvclZlY3RvcigpOworICAgICAgICAgICAgJCQtPnNocmluaygwKTsKKyAgICAgICAgICAg
ICQyLT5zZXRQcmlvclJlbGF0aW9uKCQxKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocC0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3IoJDIpKTsKKyAgICAgICAgICAgIHAtPnVwZGF0ZUxhc3RTZWxlY3Rv
ckxpbmVBbmRQb3NpdGlvbigpOworICAgICAgICB9CisgICAgfQorICAgIHwgbmVzdGVkX3NlbGVj
dG9yX2xpc3QgJywnIG1heWJlX3NwYWNlICcmJyBtYXliZV9zcGFjZSBzZWxlY3RvciAlcHJlYyBV
TklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEgJiYgJDYpIHsKKyAgICAgICAgICAgIENT
U1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAg
ICAkJCA9ICQxOworICAgICAgICAgICAgaWYgKCQ1KQorICAgICAgICAgICAgICAgICQ2LT5zZXRQ
cmlvclJlbGF0aW9uKENTU1NlbGVjdG9yOjpEZXNjZW5kYW50KTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAkNi0+c2V0UHJpb3JSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U3ViU2Vs
ZWN0b3IpOworICAgICAgICAgICAgJCQtPmFwcGVuZChwLT5zaW5rRmxvYXRpbmdTZWxlY3Rvcigk
NikpOworICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgfCBuZXN0ZWRf
c2VsZWN0b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2UgJyYnIG1heWJlX3NwYWNlIGNvbWJpbmF0b3Ig
c2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsKKyAgICBpZiAoJDEgJiYgJDcpIHsKKyAg
ICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAg
ICAgICAgJCQgPSAkMTsKKyAgICAgICAgJDctPnNldFByaW9yUmVsYXRpb24oJDYpOworICAgICAg
ICAkJC0+YXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ3KSk7CisgICAgICAgIHAtPnVw
ZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOworICAgIH0gZWxzZQorICAgICAgICAk
JCA9IDA7CisgIH0KKyAgfCBuZXN0ZWRfc2VsZWN0b3JfbGlzdCBlcnJvciB7CisgICAgICAgICQk
ID0gMDsKKyAgICB9CisgICA7CisKIHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZToK
ICAgICBzZWxlY3RvciBXSElURVNQQUNFIHsKICAgICAgICAgJCQgPSAkMTsKQEAgLTEyMjAsNyAr
MTI4NSw3IEBAIHBzZXVkbzoKICAgICAgICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKICAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3MpOwotICAgICAgICAgICAgJCQtPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnAtPnNpbmtGbG9h
dGluZ1NlbGVjdG9yVmVjdG9yKCQ0KSk7CisgICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZl
Y3RvcigqcC0+c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDQpLCBwLT5tX25lc3RlZFNlbGVj
dG9yU3RhY2spOwogICAgICAgICAgICAgJDIubG93ZXIoKTsKICAgICAgICAgICAgICQkLT5zZXRW
YWx1ZSgkMik7CiAgICAgICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQt
PnBzZXVkb1R5cGUoKTsKQEAgLTEyNzksOSArMTM0NCw5IEBAIHBzZXVkbzoKICAgICAgICAgICAg
ICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwogICAgICAgICAgICAgJCQtPnNldE1h
dGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CiAKLSAgICAgICAgICAgIFZlY3RvcjxPd25Q
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CisgICAgICAgICAgICBDU1NT
ZWxlY3RvclZlY3RvciBzZWxlY3RvclZlY3RvcjsKICAgICAgICAgICAgIHNlbGVjdG9yVmVjdG9y
LmFwcGVuZChwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOwotICAgICAgICAgICAgJCQtPmFk
b3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOworICAgICAgICAgICAgJCQtPmFkb3B0
U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IsIHAtPm1fbmVzdGVkU2VsZWN0b3JTdGFjayk7
CiAKICAgICAgICAgICAgICQyLmxvd2VyKCk7CiAgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIp
OwpAQCAtMTI5MCwxMCArMTM1NSwxMCBAQCBwc2V1ZG86CiAgIDsKIAogZGVjbGFyYXRpb25fbGlz
dDoKLSAgICBkZWNsYXJhdGlvbiB7CisgICAgcmF3X2RlY2xhcmF0aW9uIHsKICAgICAgICAgJCQg
PSAkMTsKICAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRpb24geworICAgIHwgZGVjbF9s
aXN0IHJhd19kZWNsYXJhdGlvbiB7CiAgICAgICAgICQkID0gJDE7CiAgICAgICAgIGlmICggJDIg
KQogICAgICAgICAgICAgJCQgPSAkMjsKQEAgLTEzMTYsMTUgKzEzODEsMTUgQEAgZGVjbGFyYXRp
b25fbGlzdDoKICAgICA7CiAKIGRlY2xfbGlzdDoKLSAgICBkZWNsYXJhdGlvbiAnOycgbWF5YmVf
c3BhY2UgeworICAgIGRlY2xhcmF0aW9uX3NlcCBtYXliZV9zcGFjZSB7CiAgICAgICAgIENTU1Bh
cnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgIHAtPm1h
cmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQotICAgIHwgZGVjbGFy
YXRpb24gaW52YWxpZF9ibG9ja19saXN0IG1heWJlX3NwYWNlIHsKKyAgICB8IHJhd19kZWNsYXJh
dGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgewogICAgICAgICAkJCA9IGZhbHNl
OwogICAgIH0KLSAgICB8IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAnOycgbWF5YmVf
c3BhY2UgeworICAgIHwgcmF3X2RlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAnOycgbWF5
YmVfc3BhY2UgewogICAgICAgICAkJCA9IGZhbHNlOwogICAgIH0KICAgICB8IGVycm9yICc7JyBt
YXliZV9zcGFjZSB7CkBAIC0xMzM1LDcgKzE0MDAsNyBAQCBkZWNsX2xpc3Q6CiAgICAgfCBlcnJv
ciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKICAgICAgICAgJCQg
PSBmYWxzZTsKICAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRpb24gJzsnIG1heWJlX3Nw
YWNlIHsKKyAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbl9zZXAgbWF5YmVfc3BhY2UgewogICAg
ICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAg
ICAgICBwLT5tYXJrUHJvcGVydHlTdGFydCgpOwogICAgICAgICAkJCA9ICQxOwpAQCAtMTM1NCw3
ICsxNDE5LDI5IEBAIGRlY2xfbGlzdDoKICAgICB9CiAgICAgOwogCi1kZWNsYXJhdGlvbjoKK25l
c3RlZF9ydWxlc2V0X3N0YXJ0OiAnJicgbWF5YmVfc3BhY2UgeworICAgIENTU1BhcnNlciogcCA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgcC0+cHVzaE5lc3RlZFNlbGVj
dG9yKCQyKTsKK30KKworZGVjbGFyYXRpb25fc2VwOgorICAgIG5lc3RlZF9ydWxlc2V0IHsKKyAg
ICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCByYXdfZGVjbGFyYXRpb24gJzsnIHsKKyAgICAg
ICAgJCQgPSAkMTsKKyAgICB9CisKK25lc3RlZF9ydWxlc2V0OgorICAgIG5lc3RlZF9ydWxlc2V0
X3N0YXJ0IGJlZm9yZV9zZWxlY3Rvcl9saXN0IG5lc3RlZF9ydWxlc2V0X2NvbnRlbnRzIHsKKyAg
ICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAg
ICAgICAgcC0+cG9wTmVzdGVkU2VsZWN0b3IoKTsKKyAgICAgICAgaWYgKCQzKQorICAgICAgICAg
ICAgcC0+bV9zdHlsZVNoZWV0LT5wYXJzZXJBcHBlbmRSdWxlKCQzKTsKKyAgICAgICAgJCQgPSBm
YWxzZTsKKyAgICB9CisKK3Jhd19kZWNsYXJhdGlvbjoKICAgICBWQVJfREVGSU5JVElPTiAnOicg
bWF5YmVfc3BhY2UgZXhwciBwcmlvIHsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKQEAgLTEz
NzIsMTAgKzE0NTksMTAgQEAgZGVjbGFyYXRpb246CiAgICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBh
cnNlZCA9IGZhbHNlOwogICAgICAgICBpZiAoJDEgJiYgJDQpIHsKICAgICAgICAgICAgIHAtPm1f
dmFsdWVMaXN0ID0gcC0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKLSAgICAgICAgICAgIGlu
dCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKTsKKyAg
ICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVz
LT5zaXplKCk7CiAgICAgICAgICAgICAkJCA9IHAtPnBhcnNlVmFsdWUoc3RhdGljX2Nhc3Q8Q1NT
UHJvcGVydHlJRD4oJDEpLCAkNSk7CiAgICAgICAgICAgICBpZiAoISQkKQotICAgICAgICAgICAg
ICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUo
KSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFz
dFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBvbGRQYXJzZWRQcm9w
ZXJ0aWVzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1Byb3BlcnR5UGFy
c2VkID0gdHJ1ZTsKICAgICAgICAgICAgIHAtPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhZ2VSdWxlLmgKaW5kZXggMTYzOTAwY2QxZWUzODllYWZhZDlmZjQ0ODdjNmE4NGJi
YmQyYTVlNS4uOGQxYTYwMWExZjUzYjU5ZTU3ODA4MDJhY2FmNmU2YWQzNTg0ZGY3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhZ2VSdWxlLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIGNzc1RleHQoKSBj
b25zdDsKLQogICAgIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlUGFnZSopOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA2NTA4NDQwNjA0NzdjZmM2ZWE2ZmRlYWYxMWVj
NjNiMzRhYzY0NmU3Li4yZWU4NTNkMjZlZjRjNGNjZGVlZDcwODc5Mzc1NzI5MmE2MDYzZjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMjQzLDYgKzI0Myw3IEBAIENTU1BhcnNlcjo6
Q1NTUGFyc2VyKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX2ltcG9y
dGFudChmYWxzZSkKICAgICAsIG1faWQoQ1NTUHJvcGVydHlJbnZhbGlkKQogICAgICwgbV9zdHls
ZVNoZWV0KDApCisgICAgLCBtX3BhcnNlZFByb3BlcnRpZXMoYWRvcHRQdHIobmV3IFBhcnNlZFBy
b3BlcnR5VmVjdG9yKSkKICAgICAsIG1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvcigwKQog
ICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KElOVkFMSURfTlVNX1BB
UlNFRF9QUk9QRVJUSUVTKQogICAgICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCkBAIC0yNTQsNiAr
MjU1LDcgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCkKICAgICAsIG1fcGFyc2VkVGV4dFByZWZpeExlbmd0aCgwKQogICAgICwgbV9wcm9wZXJ0
eVJhbmdlKFVJTlRfTUFYLCBVSU5UX01BWCkKICAgICAsIG1fcnVsZVNvdXJjZURhdGFSZXN1bHQo
MCkKKyAgICAsIG1fdHJhaWxpbmdTcGFjZSh0cnVlKQogICAgICwgbV9wYXJzaW5nTW9kZShOb3Jt
YWxNb2RlKQogICAgICwgbV9jdXJyZW50Q2hhcmFjdGVyKDApCiAgICAgLCBtX3Rva2VuU3RhcnQo
MCkKQEAgLTI2Miw2ICsyNjQsNyBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0KQogICAgICwgbV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKDApCiAg
ICAgLCBtX2FsbG93SW1wb3J0UnVsZXModHJ1ZSkKICAgICAsIG1fYWxsb3dOYW1lc3BhY2VEZWNs
YXJhdGlvbnModHJ1ZSkKKyAgICAsIG1fc2VsZWN0b3JWZWN0b3IoYWRvcHRQdHIobmV3IENTU1Nl
bGVjdG9yVmVjdG9yKSkKIHsKICNpZiBZWURFQlVHID4gMAogICAgIGNzc3l5ZGVidWcgPSAxOwpA
QCAtMTE1MSw5ICsxMTU0LDkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoU3R5bGVQcm9w
ZXJ0eVNldCogZGVjbGFyYXRpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHkKICAgICBib29sIG9r
ID0gZmFsc2U7CiAgICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQogICAgICAgICBkZWxl
dGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICBpZiAoIW1fcGFyc2VkUHJvcGVydGllcy5pc0Vt
cHR5KCkpIHsKKyAgICBpZiAoIW1fcGFyc2VkUHJvcGVydGllcy0+aXNFbXB0eSgpKSB7CiAgICAg
ICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMo
bV9wYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3Bl
cnRpZXMoKm1fcGFyc2VkUHJvcGVydGllcy5nZXQoKSk7CiAgICAgICAgIGNsZWFyUHJvcGVydGll
cygpOwogICAgIH0KIApAQCAtMTE3NCw3ICsxMTc3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
Q29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQog
ICAgIGlmICghcGFyc2VyLnBhcnNlQ29sb3Ioc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy5maXJz
dCgpLnZhbHVlKCk7CisgICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVy
dGllcy0+Zmlyc3QoKS52YWx1ZSgpOwogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTkyLDcgKzExOTUsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VDb2xvcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBjc3N5eXBhcnNl
KHRoaXMpOwogICAgIG1fcnVsZSA9IDA7CiAKLSAgICByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGll
cy5pc0VtcHR5KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVzLmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9w
ZXJ0eUNvbG9yOworICAgIHJldHVybiAhbV9wYXJzZWRQcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYg
bV9wYXJzZWRQcm9wZXJ0aWVzLT5maXJzdCgpLmlkKCkgPT0gQ1NTUHJvcGVydHlDb2xvcjsKIH0K
IAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEyNDIsOSArMTI0NSw5IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xh
cmF0aW9uLCBjb25zdCBTdHJpbmcmIHN0CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIGlmICht
X2hhc0ZvbnRGYWNlT25seVZhbHVlcykKICAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVz
KCk7Ci0gICAgaWYgKCFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFt
X3BhcnNlZFByb3BlcnRpZXMtPmlzRW1wdHkoKSkgewogICAgICAgICBvayA9IHRydWU7Ci0gICAg
ICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcyk7
CisgICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKCptX3BhcnNlZFByb3Bl
cnRpZXMuZ2V0KCkpOwogICAgICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTEy
ODEsMTQgKzEyODQsMTQgQEAgUGFzc093blB0cjxNZWRpYVF1ZXJ5PiBDU1NQYXJzZXI6OnBhcnNl
TWVkaWFRdWVyeShjb25zdCBTdHJpbmcmIHN0cmluZykKIH0KIAogI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQotc3RhdGljIGlubGluZSB2b2lkIGZpbHRlclByb3BlcnRpZXMoYm9vbCBpbXBvcnRh
bnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJvcGVydHlWZWN0b3ImIGlucHV0LCBWZWN0b3I8
Q1NTUHJvcGVydHksIDI1Nj4mIG91dHB1dCwgc2l6ZV90JiB1bnVzZWRFbnRyaWVzLCBCaXRBcnJh
eTxudW1DU1NQcm9wZXJ0aWVzPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5n
PiYgc2VlblZhcmlhYmxlcykKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJv
b2wgaW1wb3J0YW50LCBjb25zdCBDU1NQYXJzZXI6OlBhcnNlZFByb3BlcnR5VmVjdG9yKiBpbnB1
dCwgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+JiBvdXRwdXQsIHNpemVfdCYgdW51c2VkRW50cmll
cywgQml0QXJyYXk8bnVtQ1NTUHJvcGVydGllcz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0
b21pY1N0cmluZz4mIHNlZW5WYXJpYWJsZXMpCiAjZWxzZQotc3RhdGljIGlubGluZSB2b2lkIGZp
bHRlclByb3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJv
cGVydHlWZWN0b3ImIGlucHV0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mIG91dHB1dCwgc2l6
ZV90JiB1bnVzZWRFbnRyaWVzLCBCaXRBcnJheTxudW1DU1NQcm9wZXJ0aWVzPiYgc2VlblByb3Bl
cnRpZXMpCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsdGVyUHJvcGVydGllcyhib29sIGltcG9ydGFu
dCwgY29uc3QgQ1NTUGFyc2VyOjpQYXJzZWRQcm9wZXJ0eVZlY3RvciogaW5wdXQsIFZlY3RvcjxD
U1NQcm9wZXJ0eSwgMjU2PiYgb3V0cHV0LCBzaXplX3QmIHVudXNlZEVudHJpZXMsIEJpdEFycmF5
PG51bUNTU1Byb3BlcnRpZXM+JiBzZWVuUHJvcGVydGllcykKICNlbmRpZgogewogICAgIC8vIEFk
ZCBwcm9wZXJ0aWVzIGluIHJldmVyc2Ugb3JkZXIgc28gdGhhdCBoaWdoZXN0IHByaW9yaXR5IGRl
ZmluaXRpb25zIGFyZSByZWFjaGVkIGZpcnN0LiBEdXBsaWNhdGUgZGVmaW5pdGlvbnMgY2FuIHRo
ZW4gYmUgaWdub3JlZCB3aGVuIGZvdW5kLgotICAgIGZvciAoaW50IGkgPSBpbnB1dC5zaXplKCkg
LSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eSYgcHJvcGVydHkg
PSBpbnB1dFtpXTsKKyAgICBmb3IgKGludCBpID0gaW5wdXQtPnNpemUoKSAtIDE7IGkgPj0gMDsg
LS1pKSB7CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IGlucHV0LT5hdChp
KTsKICAgICAgICAgaWYgKHByb3BlcnR5LmlzSW1wb3J0YW50KCkgIT0gaW1wb3J0YW50KQogICAg
ICAgICAgICAgY29udGludWU7CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCkBAIC0xMzEyLDE3
ICsxMzE1LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1w
b3J0YW50LCBjb25zdCBDU1NQYXJzZXI6OlBhcnNlZFByb3BlCiBQYXNzUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVQcm9wZXJ0eVNldCgpCiB7CiAgICAgQml0
QXJyYXk8bnVtQ1NTUHJvcGVydGllcz4gc2VlblByb3BlcnRpZXM7Ci0gICAgc2l6ZV90IHVudXNl
ZEVudHJpZXMgPSBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOworICAgIHNpemVfdCB1bnVzZWRF
bnRyaWVzID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7CiAgICAgVmVjdG9yPENTU1Byb3Bl
cnR5LCAyNTY+IHJlc3VsdHModW51c2VkRW50cmllcyk7CiAKICAgICAvLyBJbXBvcnRhbnQgcHJv
cGVydGllcyBoYXZlIGhpZ2hlciBwcmlvcml0eSwgc28gYWRkIHRoZW0gZmlyc3QuIER1cGxpY2F0
ZSBkZWZpbml0aW9ucyBjYW4gdGhlbiBiZSBpZ25vcmVkIHdoZW4gZm91bmQuCiAjaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNlZW5WYXJpYWJsZXM7
Ci0gICAgZmlsdGVyUHJvcGVydGllcyh0cnVlLCBtX3BhcnNlZFByb3BlcnRpZXMsIHJlc3VsdHMs
IHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVzLCBzZWVuVmFyaWFibGVzKTsKLSAgICBmaWx0
ZXJQcm9wZXJ0aWVzKGZhbHNlLCBtX3BhcnNlZFByb3BlcnRpZXMsIHJlc3VsdHMsIHVudXNlZEVu
dHJpZXMsIHNlZW5Qcm9wZXJ0aWVzLCBzZWVuVmFyaWFibGVzKTsKKyAgICBmaWx0ZXJQcm9wZXJ0
aWVzKHRydWUsIG1fcGFyc2VkUHJvcGVydGllcy5nZXQoKSwgcmVzdWx0cywgdW51c2VkRW50cmll
cywgc2VlblByb3BlcnRpZXMsIHNlZW5WYXJpYWJsZXMpOworICAgIGZpbHRlclByb3BlcnRpZXMo
ZmFsc2UsIG1fcGFyc2VkUHJvcGVydGllcy5nZXQoKSwgcmVzdWx0cywgdW51c2VkRW50cmllcywg
c2VlblByb3BlcnRpZXMsIHNlZW5WYXJpYWJsZXMpOwogI2Vsc2UKLSAgICBmaWx0ZXJQcm9wZXJ0
aWVzKHRydWUsIG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2Vl
blByb3BlcnRpZXMpOwotICAgIGZpbHRlclByb3BlcnRpZXMoZmFsc2UsIG1fcGFyc2VkUHJvcGVy
dGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMpOworICAgIGZpbHRl
clByb3BlcnRpZXModHJ1ZSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmdldCgpLCByZXN1bHRzLCB1bnVz
ZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcyk7CisgICAgZmlsdGVyUHJvcGVydGllcyhmYWxzZSwg
bV9wYXJzZWRQcm9wZXJ0aWVzLmdldCgpLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJv
cGVydGllcyk7CiAjZW5kaWYKICAgICBpZiAodW51c2VkRW50cmllcykKICAgICAgICAgcmVzdWx0
cy5yZW1vdmUoMCwgdW51c2VkRW50cmllcyk7CkBAIC0xMzMyLDE5ICsxMzM1LDE5IEBAIFBhc3NS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVByb3BlcnR5U2V0
KCkKIAogdm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQp
CiB7Ci0gICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmFwcGVuZChDU1NQcm9wZXJ0eShwcm9wSWQsIHZh
bHVlLCBpbXBvcnRhbnQsIG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBsaWNpdFNob3J0aGFuZCB8
fCBpbXBsaWNpdCkpOworICAgIG1fcGFyc2VkUHJvcGVydGllcy0+YXBwZW5kKENTU1Byb3BlcnR5
KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0
U2hvcnRoYW5kIHx8IGltcGxpY2l0KSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpyb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKGludCBudW0pCiB7CiAgICAgQVNTRVJUKG51bSA+PSAwKTsKLSAgICBBU1NF
UlQobV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVt
KSk7Ci0gICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNocmluayhtX3BhcnNlZFByb3BlcnRpZXMuc2l6
ZSgpIC0gbnVtKTsKKyAgICBBU1NFUlQobV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgPj0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG51bSkpOworICAgIG1fcGFyc2VkUHJvcGVydGllcy0+c2hyaW5r
KG1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gbnVtKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6
OmNsZWFyUHJvcGVydGllcygpCiB7Ci0gICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmNsZWFyKCk7Cisg
ICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5jbGVhcigpOwogICAgIG1fbnVtUGFyc2VkUHJvcGVydGll
c0JlZm9yZU1hcmdpbkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogICAgIG1f
aGFzRm9udEZhY2VPbmx5VmFsdWVzID0gZmFsc2U7CiB9CkBAIC0xNzU2LDcgKzE3NTksNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7CiAgICAg
ICAgIGlmIChudW0gIT0gMSB8fCAhcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eU92ZXJmbG93WCwgaW1w
b3J0YW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICBDU1NWYWx1
ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE3NzksNyArMTc4Miw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3Bh
Y2luZyk7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJIb3Jpem9udGFsU3BhY2luZywgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMu
bGFzdCgpLnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFBy
b3BlcnRpZXMtPmxhc3QoKS52YWx1ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI0MjEsNyArMjQyNCw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQ29sbGFwc2UpOwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHdlYmtp
dE1hcmdpbkNvbGxhcHNlU2hvcnRoYW5kKCkucHJvcGVydGllcygpWzBdLCBpbXBvcnRhbnQpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1
ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIENTU1Zh
bHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+bGFzdCgpLnZhbHVlKCk7CiAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRNYXJnaW5Db2xsYXBzZVNob3J0aGFuZCgpLnByb3BlcnRp
ZXMoKVsxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQpAQCAtMzI0Miw3ICszMjQ1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVl
cyhDU1NQcm9wZXJ0eUlEIHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCAqcHJvcGVydGkKICAg
ICAgICAgY2FzZSAxOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1sw
XSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7Cisg
ICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmxhc3QoKS52
YWx1ZSgpOwogICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFBy
b3BlcnR5SW1wbGljaXQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwg
dmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJd
LCB2YWx1ZSwgaW1wb3J0YW50KTsKQEAgLTMyNTIsMTcgKzMyNTUsMTcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlNFZhbHVlcyhDU1NQcm9wZXJ0eUlEIHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJ
RCAqcHJvcGVydGkKICAgICAgICAgY2FzZSAyOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFs
dWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX3BhcnNlZFByb3BlcnRpZXMu
c2l6ZSgpIC0gMl0udmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFy
c2VkUHJvcGVydGllcy0+YXQobV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSAyKS52YWx1ZSgp
OwogICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5
SW1wbGljaXQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUs
IGltcG9ydGFudCk7Ci0gICAgICAgICAgICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX3Bh
cnNlZFByb3BlcnRpZXMuc2l6ZSgpIC0gMl0udmFsdWUoKTsKKyAgICAgICAgICAgIHZhbHVlID0g
bV9wYXJzZWRQcm9wZXJ0aWVzLT5hdChtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIDIpLnZh
bHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1w
b3J0YW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgMzog
ewogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkg
fHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShw
cm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX3BhcnNl
ZFByb3BlcnRpZXMuc2l6ZSgpIC0gMl0udmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+YXQobV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkg
LSAyKS52YWx1ZSgpOwogICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRo
aXMsIFByb3BlcnR5SW1wbGljaXQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGll
c1szXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTc2NjksNyAr
NzY3Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZsb3dUaHJlYWQoY29uc3QgU3RyaW5nJiBm
bG93TmFtZSkKIAogICAgIG1fcnVsZSA9IDA7CiAKLSAgICByZXR1cm4gKChtX3BhcnNlZFByb3Bl
cnRpZXMuc2l6ZSgpID09IDEpICYmIChtX3BhcnNlZFByb3BlcnRpZXMuZmlyc3QoKS5pZCgpID09
IENTU1Byb3BlcnR5V2Via2l0Rmxvd0ludG8pKTsKKyAgICByZXR1cm4gKChtX3BhcnNlZFByb3Bl
cnRpZXMtPnNpemUoKSA9PSAxKSAmJiAobV9wYXJzZWRQcm9wZXJ0aWVzLT5maXJzdCgpLmlkKCkg
PT0gQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bykpOwogfQogCiAvLyBub25lIHwgPGlkZW50PgpA
QCAtOTMyOCwxNCArOTMzMSwxNCBAQCBQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQ
YXJzZXI6OnNpbmtGbG9hdGluZ1NlbGVjdG9yKENTU1BhcnNlclNlbGVjdG9yKgogICAgIHJldHVy
biBhZG9wdFB0cihzZWxlY3Rvcik7CiB9CiAKLVZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIENTU1BhcnNlcjo6Y3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpCitDU1NTZWxl
Y3RvclZlY3RvciogQ1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCkKIHsK
LSAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvclZlY3RvciA9
IG5ldyBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+OworICAgIENTU1NlbGVjdG9y
VmVjdG9yKiBzZWxlY3RvclZlY3RvciA9IG5ldyBDU1NTZWxlY3RvclZlY3RvcjsKICAgICBtX2Zs
b2F0aW5nU2VsZWN0b3JWZWN0b3JzLmFkZChzZWxlY3RvclZlY3Rvcik7CiAgICAgcmV0dXJuIHNl
bGVjdG9yVmVjdG9yOwogfQogCi1QYXNzT3duUHRyPFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4gPiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKFZlY3RvcjxP
d25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yVmVjdG9yKQorUGFzc093blB0cjxD
U1NTZWxlY3RvclZlY3RvciA+IENTU1BhcnNlcjo6c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3Io
Q1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9yVmVjdG9yKQogewogICAgIGlmIChzZWxlY3RvclZl
Y3RvcikgewogICAgICAgICBBU1NFUlQobV9mbG9hdGluZ1NlbGVjdG9yVmVjdG9ycy5jb250YWlu
cyhzZWxlY3RvclZlY3RvcikpOwpAQCAtOTUyOCwxMyArOTUzMSwxMyBAQCBTdHlsZVJ1bGVLZXlm
cmFtZXMqIENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVzUnVsZShjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NPd25QdAogICAgIHJldHVybiBydWxlUHRyOwogfQogCi1TdHlsZVJ1bGVCYXNlKiBDU1NQ
YXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+
KiBzZWxlY3RvcnMpCitTdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShD
U1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JzKQogewogICAgIFN0eWxlUnVsZSogcmVzdWx0ID0g
MDsKICAgICBpZiAoc2VsZWN0b3JzKSB7CiAgICAgICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1f
YWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICAgICAgUmVmUHRyPFN0eWxl
UnVsZT4gcnVsZSA9IFN0eWxlUnVsZTo6Y3JlYXRlKG1fbGFzdFNlbGVjdG9yTGluZU51bWJlcik7
Ci0gICAgICAgIHJ1bGUtPnBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7Cisg
ICAgICAgIHJ1bGUtPnBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycywgbV9uZXN0
ZWRTZWxlY3RvclN0YWNrKTsKICAgICAgICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQog
ICAgICAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7CiAgICAgICAgIHJ1bGUtPnNl
dFByb3BlcnRpZXMoY3JlYXRlU3R5bGVQcm9wZXJ0eVNldCgpKTsKQEAgLTk1NDksOCArOTU1Miw4
IEBAIFN0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25Q
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlCiBTdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNy
ZWF0ZUZvbnRGYWNlUnVsZSgpCiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05h
bWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQ1NTUHJvcGVydHkm
IHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIENTU1By
b3BlcnR5JiBwcm9wZXJ0eSA9IG1fcGFyc2VkUHJvcGVydGllcy0+YXQoaSk7CiAgICAgICAgIGlm
IChwcm9wZXJ0eS5pZCgpID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQgJiYgcHJvcGVydHkudmFs
dWUoKS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcHJvcGVydHkud3JhcFZhbHVl
SW5Db21tYVNlcGFyYXRlZExpc3QoKTsKICAgICAgICAgZWxzZSBpZiAocHJvcGVydHkuaWQoKSA9
PSBDU1NQcm9wZXJ0eUZvbnRGYW1pbHkgJiYgKCFwcm9wZXJ0eS52YWx1ZSgpLT5pc1ZhbHVlTGlz
dCgpIHx8IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHByb3BlcnR5LnZhbHVlKCkpLT5sZW5n
dGgoKSAhPSAxKSkgewpAQCAtOTY0MSw5ICs5NjQ0LDkgQEAgU3R5bGVSdWxlQmFzZSogQ1NTUGFy
c2VyOjpjcmVhdGVQYWdlUnVsZShQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBwYWdlU2Vs
ZWMKICAgICBTdHlsZVJ1bGVQYWdlKiBwYWdlUnVsZSA9IDA7CiAgICAgaWYgKHBhZ2VTZWxlY3Rv
cikgewogICAgICAgICBSZWZQdHI8U3R5bGVSdWxlUGFnZT4gcnVsZSA9IFN0eWxlUnVsZVBhZ2U6
OmNyZWF0ZSgpOwotICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+IHNl
bGVjdG9yVmVjdG9yOworICAgICAgICBDU1NTZWxlY3RvclZlY3RvciBzZWxlY3RvclZlY3RvcjsK
ICAgICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7Ci0gICAgICAgIHJ1
bGUtPnBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOworICAgICAgICBy
dWxlLT5wYXJzZXJBZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yLCBtX25lc3RlZFNl
bGVjdG9yU3RhY2spOwogICAgICAgICBydWxlLT5zZXRQcm9wZXJ0aWVzKGNyZWF0ZVN0eWxlUHJv
cGVydHlTZXQoKSk7CiAgICAgICAgIHBhZ2VSdWxlID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9w
YXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwpAQCAtOTY1Myw3ICs5NjU2LDcgQEAg
U3R5bGVSdWxlQmFzZSogQ1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShQYXNzT3duUHRyPENTU1Bh
cnNlclNlbGVjdG9yPiBwYWdlU2VsZWMKICAgICByZXR1cm4gcGFnZVJ1bGU7CiB9CiAKLXZvaWQg
Q1NTUGFyc2VyOjpzZXRSZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycykKK3ZvaWQgQ1NTUGFyc2VyOjpzZXRSZXVz
YWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKENTU1NlbGVjdG9yVmVjdG9yKiBzZWxlY3RvcnMpCiB7
CiAgICAgaWYgKHNlbGVjdG9ycykKICAgICAgICAgbV9yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVj
dG9yLnN3YXAoKnNlbGVjdG9ycyk7CkBAIC05NjY2LDcgKzk2NjksNyBAQCBTdHlsZVJ1bGVCYXNl
KiBDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gPiogcgogCiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURl
Y2xhcmF0aW9ucyA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlUnVsZVJlZ2lvbj4gcmVnaW9u
UnVsZSA9IFN0eWxlUnVsZVJlZ2lvbjo6Y3JlYXRlKHJlZ2lvblNlbGVjdG9yLCAqcnVsZXMpOwor
ICAgIFJlZlB0cjxTdHlsZVJ1bGVSZWdpb24+IHJlZ2lvblJ1bGUgPSBTdHlsZVJ1bGVSZWdpb246
OmNyZWF0ZShyZWdpb25TZWxlY3RvciwgbV9uZXN0ZWRTZWxlY3RvclN0YWNrLCAqcnVsZXMpOwog
CiAgICAgU3R5bGVSdWxlUmVnaW9uKiByZXN1bHQgPSByZWdpb25SdWxlLmdldCgpOwogICAgIG1f
cGFyc2VkUnVsZXMuYXBwZW5kKHJlZ2lvblJ1bGUucmVsZWFzZSgpKTsKQEAgLTk2ODksMjIgKzk2
OTIsMjIgQEAgU3R5bGVSdWxlQmFzZSogQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NT
U2VsZWN0b3I6Ok1hcmdpbkJveFR5cGUgLyogbWFyZ2kKIAogdm9pZCBDU1NQYXJzZXI6OnN0YXJ0
RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkKIHsKLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXNC
ZWZvcmVNYXJnaW5Cb3ggPSBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOworICAgIG1fbnVtUGFy
c2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IG1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgp
OwogfQogCiB2b2lkIENTU1BhcnNlcjo6ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkKIHsK
LSAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgLSBt
X251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gpOworICAgIHJvbGxiYWNrTGFzdFBy
b3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBtX251bVBhcnNlZFByb3BlcnRp
ZXNCZWZvcmVNYXJnaW5Cb3gpOwogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogfQogCiB2b2lkIENTU1BhcnNl
cjo6ZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCkKIHsKICAgICBBU1NFUlQobV9oYXNGb250RmFj
ZU9ubHlWYWx1ZXMpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFByb3Bl
cnRpZXMuc2l6ZSgpOykgewotICAgICAgICBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBtX3BhcnNl
ZFByb3BlcnRpZXNbaV07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGFyc2VkUHJv
cGVydGllcy0+c2l6ZSgpOykgeworICAgICAgICBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBtX3Bh
cnNlZFByb3BlcnRpZXMtPmF0KGkpOwogICAgICAgICBpZiAocHJvcGVydHkuaWQoKSA9PSBDU1NQ
cm9wZXJ0eUZvbnRWYXJpYW50ICYmIHByb3BlcnR5LnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpIHsK
LSAgICAgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5yZW1vdmUoaSk7CisgICAgICAgICAgICBt
X3BhcnNlZFByb3BlcnRpZXMtPnJlbW92ZShpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAgICAgICAgICsraTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCA2YWNiYmEyNTI5
MzA1NWExNjMzOTJmMThkNjc3ZTFhOGE1NmE4NGIzLi4yOTAxOWRjMWI3YmQzMjZhNWNlZGU0Yjdh
YjlmZjYyOTM1ZTYyYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC04Myw3ICs4Myw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0ID0gZmFsc2UpOwogICAg
IHZvaWQgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKTsKLSAgICBib29sIGhhc1Byb3Bl
cnRpZXMoKSBjb25zdCB7IHJldHVybiAhbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKTsgfQor
ICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICFtX3BhcnNlZFByb3BlcnRp
ZXMtPmlzRW1wdHkoKTsgfQogCiAgICAgYm9vbCBwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQsIGJv
b2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQsIGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CkBAIC0yNDEsOCAr
MjQxLDggQEAgcHVibGljOgogICAgIENTU1BhcnNlclNlbGVjdG9yKiBjcmVhdGVGbG9hdGluZ1Nl
bGVjdG9yKCk7CiAgICAgUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc2lua0Zsb2F0aW5n
U2VsZWN0b3IoQ1NTUGFyc2VyU2VsZWN0b3IqKTsKIAotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+ID4qIGNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKTsKLSAgICBQYXNz
T3duUHRyPFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gPiBzaW5rRmxvYXRpbmdT
ZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+Kik7CisgICAg
Q1NTU2VsZWN0b3JWZWN0b3IqIGNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKTsKKyAgICBQ
YXNzT3duUHRyPENTU1NlbGVjdG9yVmVjdG9yID4gc2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3Io
Q1NTU2VsZWN0b3JWZWN0b3IqKTsKIAogICAgIENTU1BhcnNlclZhbHVlTGlzdCogY3JlYXRlRmxv
YXRpbmdWYWx1ZUxpc3QoKTsKICAgICBQYXNzT3duUHRyPENTU1BhcnNlclZhbHVlTGlzdD4gc2lu
a0Zsb2F0aW5nVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlzdCopOwpAQCAtMjYwLDEwICsyNjAs
MTAgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+
IFJ1bGVMaXN0OwogICAgIFN0eWxlUnVsZUJhc2UqIGNyZWF0ZU1lZGlhUnVsZShNZWRpYVF1ZXJ5
U2V0KiwgUnVsZUxpc3QqKTsKICAgICBSdWxlTGlzdCogY3JlYXRlUnVsZUxpc3QoKTsKLSAgICBT
dHlsZVJ1bGVCYXNlKiBjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gPiogc2VsZWN0b3JzKTsKKyAgICBTdHlsZVJ1bGVCYXNlKiBjcmVhdGVTdHlsZVJ1bGUo
Q1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9ycyk7CiAgICAgU3R5bGVSdWxlQmFzZSogY3JlYXRl
Rm9udEZhY2VSdWxlKCk7CiAgICAgU3R5bGVSdWxlQmFzZSogY3JlYXRlUGFnZVJ1bGUoUGFzc093
blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKTsKLSAgICBTdHlsZVJ1bGVCYXNl
KiBjcmVhdGVSZWdpb25SdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHJl
Z2lvblNlbGVjdG9yLCBSdWxlTGlzdCogcnVsZXMpOworICAgIFN0eWxlUnVsZUJhc2UqIGNyZWF0
ZVJlZ2lvblJ1bGUoQ1NTU2VsZWN0b3JWZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBSdWxlTGlzdCog
cnVsZXMpOwogICAgIFN0eWxlUnVsZUJhc2UqIGNyZWF0ZU1hcmdpbkF0UnVsZShDU1NTZWxlY3Rv
cjo6TWFyZ2luQm94VHlwZSk7CiAgICAgdm9pZCBzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJv
eCgpOwogICAgIHZvaWQgZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCk7CkBAIC0yODYsMTAg
KzI4NiwzMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRCbG9ja0hpdCgpOwogCi0gICAg
VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogcmV1c2FibGVTZWxlY3RvclZlY3Rv
cigpIHsgcmV0dXJuICZtX3JldXNhYmxlU2VsZWN0b3JWZWN0b3I7IH0KKyAgICBDU1NTZWxlY3Rv
clZlY3Rvciogc2VsZWN0b3JWZWN0b3IoKSB7IHJldHVybiBtX3NlbGVjdG9yVmVjdG9yLmdldCgp
OyB9CiAKLSAgICB2b2lkIHNldFJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93
blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzKTsKLSAgICBWZWN0b3I8T3duUHRy
PENTU1BhcnNlclNlbGVjdG9yPiA+KiByZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKCkgeyBy
ZXR1cm4gJm1fcmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcjsgfQorICAgIHZvaWQgcHVzaE5l
c3RlZFNlbGVjdG9yKGJvb2wgdHJhaWxpbmdTcGFjZSkKKyAgICB7CisgICAgICAgIG1fbmVzdGVk
U2VsZWN0b3JTdGFjay5hcHBlbmQobV9zZWxlY3RvclZlY3Rvci5yZWxlYXNlKCkpOworICAgICAg
ICBtX3NlbGVjdG9yVmVjdG9yID0gYWRvcHRQdHIobmV3IENTU1NlbGVjdG9yVmVjdG9yKTsKKwor
ICAgICAgICBtX3N0YWNrZWRQYXJzZWRQcm9wZXJ0aWVzLmFwcGVuZChuZXcgU3RhY2tlZFBhcnNl
ZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLnJlbGVhc2UoKSwgbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzQmVmb3JlTWFyZ2luQm94KSk7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcyA9IGFk
b3B0UHRyKG5ldyBQYXJzZWRQcm9wZXJ0eVZlY3Rvcik7CisgICAgICAgIG1fbnVtUGFyc2VkUHJv
cGVydGllc0JlZm9yZU1hcmdpbkJveCA9IDA7CisgICAgICAgIG1fdHJhaWxpbmdTcGFjZSA9IHRy
YWlsaW5nU3BhY2U7CisgICAgfQorCisgICAgdm9pZCBwb3BOZXN0ZWRTZWxlY3RvcigpCisgICAg
eworICAgICAgICBtX3NlbGVjdG9yVmVjdG9yID0gbV9uZXN0ZWRTZWxlY3RvclN0YWNrLmxhc3Qo
KS5yZWxlYXNlKCk7CisgICAgICAgIG1fbmVzdGVkU2VsZWN0b3JTdGFjay5yZW1vdmVMYXN0KCk7
CisKKyAgICAgICAgU3RhY2tlZFBhcnNlZFByb3BlcnRpZXMgKnN0YWNrSGVhZCA9IG1fc3RhY2tl
ZFBhcnNlZFByb3BlcnRpZXMubGFzdCgpOworICAgICAgICBtX3N0YWNrZWRQYXJzZWRQcm9wZXJ0
aWVzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzID0gc3RhY2tIZWFk
LT5tX3BhcnNlZFByb3BlcnRpZXMucmVsZWFzZSgpOworICAgICAgICBtX251bVBhcnNlZFByb3Bl
cnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBzdGFja0hlYWQtPm1fbnVtUGFyc2VkUHJvcGVydGllc0Jl
Zm9yZU1hcmdpbkJveDsKKyAgICAgICAgbV90cmFpbGluZ1NwYWNlID0gdHJ1ZTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0
b3IqIHNlbGVjdG9ycyk7CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHJldXNhYmxlUmVnaW9uU2Vs
ZWN0b3JWZWN0b3IoKSB7IHJldHVybiAmbV9yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yOyB9
CiAKICAgICB2b2lkIHVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOwogICAgIHZv
aWQgdXBkYXRlTGFzdE1lZGlhTGluZShNZWRpYVF1ZXJ5U2V0Kik7CkBAIC0zMDcsMTIgKzMzMCwy
NSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFN0eWxlS2V5ZnJhbWU+IG1fa2V5ZnJhbWU7CiAgICAg
T3duUHRyPE1lZGlhUXVlcnk+IG1fbWVkaWFRdWVyeTsKICAgICBPd25QdHI8Q1NTUGFyc2VyVmFs
dWVMaXN0PiBtX3ZhbHVlTGlzdDsKKwogICAgIHR5cGVkZWYgVmVjdG9yPENTU1Byb3BlcnR5LCAy
NTY+IFBhcnNlZFByb3BlcnR5VmVjdG9yOwotICAgIFBhcnNlZFByb3BlcnR5VmVjdG9yIG1fcGFy
c2VkUHJvcGVydGllczsKKyAgICBPd25QdHI8UGFyc2VkUHJvcGVydHlWZWN0b3I+IG1fcGFyc2Vk
UHJvcGVydGllczsKICAgICBDU1NTZWxlY3Rvckxpc3QqIG1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VT
ZWxlY3RvcjsKIAogICAgIHVuc2lnbmVkIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveDsKIAorICAgIHN0cnVjdCBTdGFja2VkUGFyc2VkUHJvcGVydGllcyB7CisgICAgICAgIE93
blB0cjxQYXJzZWRQcm9wZXJ0eVZlY3Rvcj4gbV9wYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICB1
bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3g7CisKKyAgICAgICAg
U3RhY2tlZFBhcnNlZFByb3BlcnRpZXMoUGFzc093blB0cjxQYXJzZWRQcm9wZXJ0eVZlY3RvciA+
IHBhcnNlZFByb3BlcnRpZXMsIHVuc2lnbmVkIG51bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJn
aW5Cb3gpCisgICAgICAgIDogbV9wYXJzZWRQcm9wZXJ0aWVzKHBhcnNlZFByb3BlcnRpZXMpCisg
ICAgICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KG51bVBhcnNlZFBy
b3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gpCisgICAgICAgIHsgfQorICAgIH07CisKKyAgICBWZWN0
b3I8U3RhY2tlZFBhcnNlZFByb3BlcnRpZXMgKj4gbV9zdGFja2VkUGFyc2VkUHJvcGVydGllczsK
KwogICAgIGludCBtX2luUGFyc2VTaG9ydGhhbmQ7CiAgICAgQ1NTUHJvcGVydHlJRCBtX2N1cnJl
bnRTaG9ydGhhbmQ7CiAgICAgYm9vbCBtX2ltcGxpY2l0U2hvcnRoYW5kOwpAQCAtMzQzLDYgKzM3
OSwxMCBAQCBwdWJsaWM6CiAgICAgaW50IGxleCh2b2lkKiB5eWx2YWwpOwogICAgIGludCB0b2tl
bigpIHsgcmV0dXJuIG1fdG9rZW47IH0KIAorICAgIENTU1NlbGVjdG9yVmVjdG9yTGlzdCBtX25l
c3RlZFNlbGVjdG9yU3RhY2s7CisKKyAgICBib29sIG1fdHJhaWxpbmdTcGFjZTsKKwogICAgIFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShD
U1NQYXJzZXJWYWx1ZSopOwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0
ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKENTU1BhcnNlclZhbHVlKik7CiAKQEAgLTQzMCw3ICs0NzAs
NyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFRdWVyeVNldD4gPiBtX3BhcnNl
ZE1lZGlhUXVlcnlTZXRzOwogICAgIFZlY3RvcjxPd25QdHI8UnVsZUxpc3Q+ID4gbV9wYXJzZWRS
dWxlTGlzdHM7CiAgICAgSGFzaFNldDxDU1NQYXJzZXJTZWxlY3Rvcio+IG1fZmxvYXRpbmdTZWxl
Y3RvcnM7Ci0gICAgSGFzaFNldDxWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+Kj4g
bV9mbG9hdGluZ1NlbGVjdG9yVmVjdG9yczsKKyAgICBIYXNoU2V0PENTU1NlbGVjdG9yVmVjdG9y
Kj4gbV9mbG9hdGluZ1NlbGVjdG9yVmVjdG9yczsKICAgICBIYXNoU2V0PENTU1BhcnNlclZhbHVl
TGlzdCo+IG1fZmxvYXRpbmdWYWx1ZUxpc3RzOwogICAgIEhhc2hTZXQ8Q1NTUGFyc2VyRnVuY3Rp
b24qPiBtX2Zsb2F0aW5nRnVuY3Rpb25zOwogCkBAIC00NDAsOCArNDgwLDggQEAgcHJpdmF0ZToK
IAogICAgIE93blB0cjxWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+ID4gPiBtX2Zsb2F0aW5n
S2V5ZnJhbWVWZWN0b3I7CiAKLSAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+
IG1fcmV1c2FibGVTZWxlY3RvclZlY3RvcjsKLSAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+IG1fcmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcjsKKyAgICBPd25QdHI8Q1NT
U2VsZWN0b3JWZWN0b3I+IG1fc2VsZWN0b3JWZWN0b3I7CisgICAgQ1NTU2VsZWN0b3JWZWN0b3Ig
bV9yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yOwogCiAgICAgUmVmUHRyPENTU0NhbGNWYWx1
ZT4gbV9wYXJzZWRDYWxjdWxhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlclZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmNwcAppbmRleCAzN2EwZDQ1MmM2NWM0NTVlNWM0MTA0ZTU0ZTQ3ODkyZmIyMTU1ZTA0Li42MThh
OWFjOWM0ZWZiNjc4MjNjODUwMzgxYzExYzkyMWI1MDJlNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyVmFsdWVzLmNwcApAQCAtMTE0LDEwICsxMTQsMTAgQEAgQ1NTUGFyc2VyU2VsZWN0
b3I6On5DU1NQYXJzZXJTZWxlY3RvcigpCiAgICAgfQogfQogCi12b2lkIENTU1BhcnNlclNlbGVj
dG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
ID4mIHNlbGVjdG9yVmVjdG9yKQordm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3Rv
clZlY3RvcihDU1NTZWxlY3RvclZlY3RvciYgc2VsZWN0b3JWZWN0b3IsIENTU1NlbGVjdG9yVmVj
dG9yTGlzdCYgc3RhY2tlZFNlbGVjdG9ycykKIHsKICAgICBDU1NTZWxlY3Rvckxpc3QqIHNlbGVj
dG9yTGlzdCA9IGZhc3ROZXc8Q1NTU2VsZWN0b3JMaXN0PigpOwotICAgIHNlbGVjdG9yTGlzdC0+
YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgc2VsZWN0b3JMaXN0LT5h
ZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yLCBzdGFja2VkU2VsZWN0b3JzKTsKICAg
ICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxpc3QoYWRvcHRQdHIoc2VsZWN0b3JMaXN0KSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAppbmRleCA5MGQyNmE0NmRlODFkZDc5
NGZiNzQ0YTg5NzA0MzA2MDEzMzhmYmYwLi5iMDdjMzMwYjE0ZTM4MGMyOWIxMTVkNTRjNzVkYmVm
ODIyOTBjNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCkBAIC0xMDMsNiAr
MTAzLDExIEBAIHB1YmxpYzoKICAgICBPd25QdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBhcmdzOwog
fTsKIAorY2xhc3MgQ1NTUGFyc2VyU2VsZWN0b3I7CisKK3R5cGVkZWYgVmVjdG9yPE93blB0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gPiBDU1NTZWxlY3RvclZlY3RvcjsKK3R5cGVkZWYgVmVjdG9yPE93
blB0cjxDU1NTZWxlY3RvclZlY3Rvcj4gPiBDU1NTZWxlY3RvclZlY3Rvckxpc3Q7CisKIGNsYXNz
IENTU1BhcnNlclNlbGVjdG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKQEAgLTExMSw2ICsxMTYsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzT3duUHRyPENTU1NlbGVj
dG9yPiByZWxlYXNlU2VsZWN0b3IoKSB7IHJldHVybiBtX3NlbGVjdG9yLnJlbGVhc2UoKTsgfQog
CisgICAgUGFzc093blB0cjxDU1NTZWxlY3Rvcj4gZHVwbGljYXRlU2VsZWN0b3IoKSB7IHJldHVy
biBhZG9wdFB0cihuZXcgQ1NTU2VsZWN0b3IobV9zZWxlY3Rvci5nZXQoKSkpOyB9CisKICAgICB2
b2lkIHNldFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRU
YWcodmFsdWUpOyB9CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KSB7IG1fc2VsZWN0b3ItPnNldFZhbHVlKHZhbHVlKTsgfQogICAgIHZvaWQgc2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldEF0dHJpYnV0ZSh2
YWx1ZSk7IH0KQEAgLTExOSw3ICsxMjYsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVsYXRp
b24oQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHZhbHVlKSB7IG1fc2VsZWN0b3ItPm1fcmVsYXRpb24g
PSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0Rm9yUGFnZSgpIHsgbV9zZWxlY3Rvci0+c2V0Rm9yUGFn
ZSgpOyB9CiAKLSAgICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JWZWN0b3IpOworICAgIHZvaWQgc2V0UHJpb3JSZWxh
dGlvbihDU1NTZWxlY3Rvcjo6UmVsYXRpb24gdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0UHJpb3JS
ZWxhdGlvbih2YWx1ZSk7IH0KKyAKKyAgICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gZ2V0UHJpb3JS
ZWxhdGlvbigpIHsgcmV0dXJuIG1fc2VsZWN0b3ItPmdldFByaW9yUmVsYXRpb24oKTsgfQorCisg
ICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKENTU1NlbGVjdG9yVmVjdG9yJiwgQ1NTU2VsZWN0
b3JWZWN0b3JMaXN0Jik7CiAKICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+cHNldWRvVHlwZSgpOyB9CiAgICAgYm9vbCBp
c1Vua25vd25Qc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+aXNVbmtu
b3duUHNldWRvRWxlbWVudCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCAx
MzQ3OWI2NDBhYjk2MjdiYzE1YmFjYzllYTJkNzc0MzYwNmQ5Y2NlLi5iNThlMTY4NGRlMzU4MDQz
Zjg4MGM1ZTFiMDllY2E1NmMzNDlkY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAK
QEAgLTM4LDYgKzM4LDMwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAorQ1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9yKENTU1NlbGVjdG9yKiBjb3B5
KQorICAgIDogbV9yZWxhdGlvbihjb3B5LT5tX3JlbGF0aW9uKQorICAgICwgbV9tYXRjaChjb3B5
LT5tX21hdGNoKQorICAgICwgbV9wc2V1ZG9UeXBlKGNvcHktPm1fcHNldWRvVHlwZSkKKyAgICAs
IG1fcGFyc2VkTnRoKGNvcHktPm1fcGFyc2VkTnRoKQorICAgICwgbV9pc0xhc3RJblNlbGVjdG9y
TGlzdChjb3B5LT5tX2lzTGFzdEluU2VsZWN0b3JMaXN0KQorICAgICwgbV9pc0xhc3RJblRhZ0hp
c3RvcnkoY29weS0+bV9pc0xhc3RJblRhZ0hpc3RvcnkpCisgICAgLCBtX2lzRm9yUGFnZShjb3B5
LT5tX2lzRm9yUGFnZSkKKyAgICAsIG1fcHJpb3JSZWxhdGlvbihjb3B5LT5tX3ByaW9yUmVsYXRp
b24pCisgICAgLCBtX3RhZyhjb3B5LT5tX3RhZykKK3sKKyAgICBzZXRWYWx1ZShjb3B5LT52YWx1
ZSgpKTsKKworICAgIGlmIChjb3B5LT5tX2hhc1JhcmVEYXRhKSB7CisgICAgICAgIGNyZWF0ZVJh
cmVEYXRhKCk7CisgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2EgPSBjb3B5LT5tX2RhdGEu
bV9yYXJlRGF0YS0+bV9hOworICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9iID0gY29weS0+
bV9kYXRhLm1fcmFyZURhdGEtPm1fYjsKKyAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0
cmlidXRlID0gY29weS0+bV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlOworICAgICAgICBt
X2RhdGEubV9yYXJlRGF0YS0+bV9hcmd1bWVudCA9IGNvcHktPm1fZGF0YS5tX3JhcmVEYXRhLT5t
X2FyZ3VtZW50OworICAgICAgICBpZiAoY29weS0+bV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0
b3JMaXN0LmdldCgpKQorICAgICAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JM
aXN0ID0gY29weS0+bV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0OworICAgIH0KK30K
Kwogdm9pZCBDU1NTZWxlY3Rvcjo6Y3JlYXRlUmFyZURhdGEoKQogewogICAgIGlmIChtX2hhc1Jh
cmVEYXRhKQpAQCAtNjQ4LDcgKzY3Miw3IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OnNldEFyZ3VtZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB2b2lkIENTU1NlbGVjdG9yOjpzZXRTZWxlY3Rv
ckxpc3QoUGFzc093blB0cjxDU1NTZWxlY3Rvckxpc3Q+IHNlbGVjdG9yTGlzdCkKIHsKICAgICBj
cmVhdGVSYXJlRGF0YSgpOwotICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdCA9
IHNlbGVjdG9yTGlzdDsKKyAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QgPSBS
ZWZjb3VudGVkQ1NTU2VsZWN0b3JMaXN0OjpjcmVhdGUoc2VsZWN0b3JMaXN0LmxlYWtQdHIoKSk7
CiB9CiAKIGJvb2wgQ1NTU2VsZWN0b3I6OnBhcnNlTnRoKCkKQEAgLTcwNyw2ICs3MzEsMTIgQEAg
Q1NTU2VsZWN0b3I6OlJhcmVEYXRhOjp+UmFyZURhdGEoKQogICAgICAgICBtX3ZhbHVlLT5kZXJl
ZigpOwogfQogCisKK1JlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3Q6On5SZWZjb3VudGVkQ1NTU2Vs
ZWN0b3JMaXN0KCkKK3sKKyAgICBkZWxldGUgbV9pbXBsOworfQorCiAvLyBhIGhlbHBlciBmdW5j
dGlvbiBmb3IgcGFyc2luZyBudGgtYXJndW1lbnRzCiBib29sIENTU1NlbGVjdG9yOjpSYXJlRGF0
YTo6cGFyc2VOdGgoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCAyZTllNTkwOGZj
ZDFlZTEzNTJlOTM2NzcyMDI1YTI4NmFlYTZiYjVjLi45MGI3NTlkN2I4ZDY3YTM3ZmM1MTVjNDJh
MGY1ZWIzMThiMzZiODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtMzEsNiArMzEs
MjUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDU1NTZWxlY3Rvckxpc3Q7CiAK
KyAgICBjbGFzcyBSZWZjb3VudGVkQ1NTU2VsZWN0b3JMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8
UmVmY291bnRlZENTU1NlbGVjdG9yTGlzdD4geworICAgICAgICBwdWJsaWM6CisgICAgICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZjb3VudGVkQ1NTU2VsZWN0b3JMaXN0PiBjcmVhdGUoQ1NT
U2VsZWN0b3JMaXN0KiBpbXBsKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUmVmY291bnRlZENTU1NlbGVjdG9yTGlzdChpbXBsKSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIH5SZWZjb3VudGVkQ1NTU2VsZWN0b3JMaXN0KCk7CisKKyAg
ICAgICAgICAgIENTU1NlbGVjdG9yTGlzdCogZ2V0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbV9pbXBsOworICAgICAgICAgICAgfQorCisgICAgICAgIHByaXZhdGU6
CisgICAgICAgICAgICBDU1NTZWxlY3Rvckxpc3QgKm1faW1wbDsKKyAgICAgICAgICAgIFJlZmNv
dW50ZWRDU1NTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0KiBpbXBsKSA6IG1faW1wbChpbXBs
KSB7IH0KKyAgICB9OworCiAgICAgLy8gdGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2VsZWN0b3Ig
Zm9yIGEgU3R5bGVSdWxlCiAgICAgY2xhc3MgQ1NTU2VsZWN0b3IgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTM5LDYgKzU4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBDU1NTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIENTU1Nl
bGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yJik7CiAKKyAgICAgICAgQ1NTU2VsZWN0b3IoQ1NTU2Vs
ZWN0b3IqIGNvcHkpOworCiAgICAgICAgIH5DU1NTZWxlY3RvcigpOwogCiAgICAgICAgIC8qKgpA
QCAtMTk5LDE0ICsyMjAsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgQXRvbWljU3RyaW5nKj4obV9oYXNSYXJlRGF0YSA/ICZtX2RhdGEubV9yYXJlRGF0YS0+bV92
YWx1ZSA6ICZtX2RhdGEubV92YWx1ZSk7IH0KICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJndW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXJn
dW1lbnQgOiBudWxsQXRvbTsgfQotICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlz
dCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9z
ZWxlY3Rvckxpc3QuZ2V0KCkgOiAwOyB9CisgICAgICAgIENTU1NlbGVjdG9yTGlzdCogc2VsZWN0
b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSAmJiBtX2RhdGEubV9yYXJlRGF0
YS0+bV9zZWxlY3Rvckxpc3QgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QtPmdl
dCgpIDogMDsgfQogCiAgICAgICAgIHZvaWQgc2V0VGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZh
bHVlKSB7IG1fdGFnID0gdmFsdWU7IH0KKyAgICAgICAgdm9pZCBzZXRQcmlvclJlbGF0aW9uKFJl
bGF0aW9uIHZhbHVlKSB7IG1fcHJpb3JSZWxhdGlvbiA9IHZhbHVlOyB9CiAgICAgICAgIHZvaWQg
c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgICAgIHZvaWQgc2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudChjb25zdCBB
dG9taWNTdHJpbmcmKTsKICAgICAgICAgdm9pZCBzZXRTZWxlY3Rvckxpc3QoUGFzc093blB0cjxD
U1NTZWxlY3Rvckxpc3Q+KTsKIAorICAgICAgICBSZWxhdGlvbiBnZXRQcmlvclJlbGF0aW9uKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcHJpb3JSZWxhdGlvbik7IH0KKwogICAg
ICAgICBib29sIHBhcnNlTnRoKCk7CiAgICAgICAgIGJvb2wgbWF0Y2hOdGgoaW50IGNvdW50KTsK
IApAQCAtMjM3LDcgKzI2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBt
X2lzTGFzdEluVGFnSGlzdG9yeSAgICAgOiAxOwogICAgICAgICBib29sIG1faGFzUmFyZURhdGEg
ICAgICAgICAgICA6IDE7CiAgICAgICAgIGJvb2wgbV9pc0ZvclBhZ2UgICAgICAgICAgICAgIDog
MTsKLQorICAgICAgICB1bnNpZ25lZCBtX3ByaW9yUmVsYXRpb24gICAgICA6IDM7IC8vIGVudW0g
UmVsYXRpb24KICAgICAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHlGb3JPbmVTZWxlY3RvcigpIGNv
bnN0OwogICAgICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eUZvclBhZ2UoKSBjb25zdDsKICAgICAg
ICAgdm9pZCBleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0OwpAQCAtMjU3LDcgKzI4MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGludCBtX2I7IC8vIFVzZWQgZm9yIDpudGgt
KgogICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX2F0dHJpYnV0ZTsgLy8gdXNlZCBmb3IgYXR0
cmlidXRlIHNlbGVjdG9yCiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgbV9hcmd1bWVudDsgLy8g
VXNlZCBmb3IgOmNvbnRhaW5zLCA6bGFuZyBhbmQgOm50aC0qCi0gICAgICAgICAgICBPd25QdHI8
Q1NTU2VsZWN0b3JMaXN0PiBtX3NlbGVjdG9yTGlzdDsgLy8gVXNlZCBmb3IgOi13ZWJraXQtYW55
IGFuZCA6bm90CisgICAgICAgICAgICBSZWZQdHI8UmVmY291bnRlZENTU1NlbGVjdG9yTGlzdD4g
bV9zZWxlY3Rvckxpc3Q7IC8vIFVzZWQgZm9yIDotd2Via2l0LWFueSBhbmQgOm5vdAogICAgICAg
ICAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIFJhcmVEYXRhKFBhc3NSZWZQdHI8QXRv
bWljU3RyaW5nSW1wbD4gdmFsdWUpOwpAQCAtMzI4LDEzICszNTIsMTUgQEAgaW5saW5lIHZvaWQg
Q1NTU2VsZWN0b3I6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgICAg
IGlmIChtX2RhdGEubV9yYXJlRGF0YS0+bV92YWx1ZSkKICAgICAgICAgICAgIG1fZGF0YS5tX3Jh
cmVEYXRhLT5tX3ZhbHVlLT5kZXJlZigpOwogICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV92
YWx1ZSA9IHZhbHVlLmltcGwoKTsKLSAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUt
PnJlZigpOworICAgICAgICBpZiAobV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUpCisgICAgICAg
ICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV92YWx1ZS0+cmVmKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKG1fZGF0YS5tX3ZhbHVlKQogICAgICAgICBtX2RhdGEubV92YWx1ZS0+
ZGVyZWYoKTsKICAgICBtX2RhdGEubV92YWx1ZSA9IHZhbHVlLmltcGwoKTsKLSAgICBtX2RhdGEu
bV92YWx1ZS0+cmVmKCk7CisgICAgaWYgKG1fZGF0YS5tX3ZhbHVlKQorICAgICAgICBtX2RhdGEu
bV92YWx1ZS0+cmVmKCk7CiB9CiAKIGlubGluZSB2b2lkIG1vdmUoUGFzc093blB0cjxDU1NTZWxl
Y3Rvcj4gZnJvbSwgQ1NTU2VsZWN0b3IqIHRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmNwcAppbmRleCBmYjNkMWYxMmZmNjllMWNlOWRmNjZjZTEwNzNjZDYyOTQ0YzdiYjE1Li4y
MmExMjc0NjAwZjAwZDJhMmY1OThjOTZhY2ViYTEzMjQ5ZWI1YmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMjQsMTAgKzI0LDEwIEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlz
dC5oIgogCi0jaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCw5ICs2MCwxNSBA
QCB2b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHQoQ1NTU2VsZWN0b3JMaXN0JiBsaXN0KQogICAg
IGxpc3QubV9zZWxlY3RvckFycmF5ID0gMDsKIH0KIAotdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFk
b3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2Vs
ZWN0b3JWZWN0b3IpCit2b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHRTZWxlY3RvclZlY3RvcihD
U1NTZWxlY3RvclZlY3RvciYgc2VsZWN0b3JWZWN0b3IsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYg
c3RhY2tlZFNlbGVjdG9ycykKIHsKICAgICBkZWxldGVTZWxlY3RvcnMoKTsKKworI2lmICFFTkFC
TEUoQ1NTX0hJRVJBUkNISUVTKQorICAgIGlmIChzdGFja2VkU2VsZWN0b3JzLnNpemUoKSA+IDAp
CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgY29uc3Qgc2l6ZV90IHZlY3RvclNpemUg
PSBzZWxlY3RvclZlY3Rvci5zaXplKCk7CiAgICAgc2l6ZV90IGZsYXR0ZW5lZFNpemUgPSAwOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjdG9yU2l6ZTsgKytpKSB7CkBAIC03MCwzMSAr
NzYsMTAyIEBAIHZvaWQgQ1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3Rv
cjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlCiAgICAgICAgICAgICArK2ZsYXR0ZW5l
ZFNpemU7CiAgICAgfQogICAgIEFTU0VSVChmbGF0dGVuZWRTaXplKTsKLSAgICBpZiAoZmxhdHRl
bmVkU2l6ZSA9PSAxKSB7CisgICAgLy8gSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGZsYXR0ZW5l
ZCBzZWxlY3RvciBjb21wb25lbnQgYW5kIG5vIHN0YWNrZWQgc2VsZWN0b3JzIChpLmUuIHRoaXMg
aXMgbm90CisgICAgLy8gcGFydCBvZiBhIGhpZXJhcmNoeSBvZiBzZWxlY3RvcnMpIHRoZW4gdXNl
IHRoZSBmYXN0IHBhdGguCisgICAgaWYgKGZsYXR0ZW5lZFNpemUgPT0gMSAmJiAoIXN0YWNrZWRT
ZWxlY3RvcnMuc2l6ZSgpKSkgewogICAgICAgICBtX3NlbGVjdG9yQXJyYXkgPSBzZWxlY3RvclZl
Y3RvclswXS0+cmVsZWFzZVNlbGVjdG9yKCkubGVha1B0cigpOwogICAgICAgICBtX3NlbGVjdG9y
QXJyYXktPnNldExhc3RJblNlbGVjdG9yTGlzdCgpOwogICAgICAgICBBU1NFUlQobV9zZWxlY3Rv
ckFycmF5LT5pc0xhc3RJblRhZ0hpc3RvcnkoKSk7CiAgICAgICAgIHNlbGVjdG9yVmVjdG9yLnNo
cmluaygwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3NlbGVjdG9yQXJyYXkgPSBy
ZWludGVycHJldF9jYXN0PENTU1NlbGVjdG9yKj4oZmFzdE1hbGxvYyhzaXplb2YoQ1NTU2VsZWN0
b3IpICogZmxhdHRlbmVkU2l6ZSkpOwotICAgIHNpemVfdCBhcnJheUluZGV4ID0gMDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZlY3RvclNpemU7ICsraSkgewotICAgICAgICBDU1NQYXJz
ZXJTZWxlY3RvciogY3VycmVudCA9IHNlbGVjdG9yVmVjdG9yW2ldLmdldCgpOwotICAgICAgICB3
aGlsZSAoY3VycmVudCkgewotICAgICAgICAgICAgT3duUHRyPENTU1NlbGVjdG9yPiBzZWxlY3Rv
ciA9IGN1cnJlbnQtPnJlbGVhc2VTZWxlY3RvcigpOwotICAgICAgICAgICAgY3VycmVudCA9IGN1
cnJlbnQtPnRhZ0hpc3RvcnkoKTsKLSAgICAgICAgICAgIG1vdmUoc2VsZWN0b3IucmVsZWFzZSgp
LCAmbV9zZWxlY3RvckFycmF5W2FycmF5SW5kZXhdKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9z
ZWxlY3RvckFycmF5W2FycmF5SW5kZXhdLmlzTGFzdEluU2VsZWN0b3JMaXN0KCkpOwotICAgICAg
ICAgICAgaWYgKGN1cnJlbnQpCi0gICAgICAgICAgICAgICAgbV9zZWxlY3RvckFycmF5W2FycmF5
SW5kZXhdLnNldE5vdExhc3RJblRhZ0hpc3RvcnkoKTsKLSAgICAgICAgICAgICsrYXJyYXlJbmRl
eDsKKworICAgIC8vIEZsYXR0ZW4gdGhlIHNlbGVjdG9yIGhpZXJhcmNoeSBpbnRvIGV4cGxvZGVk
U2VsZWN0b3JzLiBFYWNoIGV4cGxvZGVkU2VsZWN0b3JzIHZlY3RvciBpcyBhIHNpbmdsZQorICAg
IC8vIGVsZW1lbnQgZnJvbSB0aGUgY2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhlIHNldHMgb2Ygc2Vs
ZWN0b3JzIGF0IGVhY2ggbGV2ZWwgaW4gdGhlIGhpZXJhcmNoeS4KKyAgICBzaXplX3QgZXhwbG9k
ZWRSZXN1bHRzU2l6ZSA9IHNlbGVjdG9yVmVjdG9yLnNpemUoKTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RhY2tlZFNlbGVjdG9ycy5zaXplKCk7IGkrKykKKyAgICAgICAgZXhwbG9k
ZWRSZXN1bHRzU2l6ZSAqPSBzdGFja2VkU2VsZWN0b3JzW2ldLT5zaXplKCk7CisKKyAgICBWZWN0
b3I8T3duUHRyPENTU1NlbGVjdG9yPiA+KiBleHBsb2RlZFNlbGVjdG9ycyA9IG5ldyBWZWN0b3I8
T3duUHRyPENTU1NlbGVjdG9yPiA+W2V4cGxvZGVkUmVzdWx0c1NpemVdOworICAgIHNpemVfdCog
aW5zZXJ0TG9jYXRpb25zID0gbmV3IHNpemVfdFtleHBsb2RlZFJlc3VsdHNTaXplXTsKKyAgICBz
aXplX3QgY29uc2lkZXJlZCA9IDE7CisgICAgc2l6ZV90IGZpbmFsU2l6ZSA9IDA7CisKKyAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiA8IGV4cGxvZGVkUmVzdWx0c1NpemU7IGorKykgeworICAgICAg
ICBzaXplX3QgaSA9IGogJSBzZWxlY3RvclZlY3Rvci5zaXplKCk7CisgICAgICAgIGJvb2wgc3Vi
c2VsZWN0b3IgPSBzZWxlY3RvclZlY3RvcltpXS0+Z2V0UHJpb3JSZWxhdGlvbigpID09IENTU1Nl
bGVjdG9yOjpTdWJTZWxlY3RvcjsKKyAgICAgICAgc2l6ZV90IHJlc3VsdCA9IG1vdmVUb0V4cGxv
ZGVkVmVjdG9yKCYoZXhwbG9kZWRTZWxlY3RvcnNbal0pLCBzZWxlY3RvclZlY3RvcltpXS5nZXQo
KSwgdHJ1ZSwgMCk7CisgICAgICAgIGZpbmFsU2l6ZSArPSByZXN1bHQ7CisgICAgICAgIGluc2Vy
dExvY2F0aW9uc1tqXSA9IHN1YnNlbGVjdG9yID8gMCA6IHJlc3VsdDsKKyAgICB9CisKKyAgICBj
b25zaWRlcmVkID0gc2VsZWN0b3JWZWN0b3Iuc2l6ZSgpOworCisgICAgLy8gVGhlcmUgYXJlIHR3
byBwb3NzaWJpbGl0aWVzIGhlcmUsIGZvciBlYWNoIHNlbGVjdG9yLgorICAgIC8vICgxKSB0aGUg
cHJldmlvdXNseSBpbnNlcnRlZCBzZWxlY3RvciAod2UncmUgd29ya2luZyBiYWNrd2FyZHMpIGhh
cyBhIHByaW9yUmVsYXRpb24KKyAgICAvLyBvZiBTdWJTZWxlY3Rvci4gSWYgdGhpcyBpcyB0aGUg
Y2FzZSwgdGhlbiB3ZSBpbnNlcnQgYmVmb3JlIGl0IChpLmUuIG5vdCBhdCB0aGUgZW5kIG9mCisg
ICAgLy8gdGhlIGV4cGxvZGVkIGxpc3QpLCBhbmQgdXBkYXRlIHRoZSBuZXdseSBpbnNlcnRlZCBz
ZWxlY3RvcidzIHJlbGF0aW9uIHRvIGJlIFN1YlNlbGVjdG9yLgorICAgIC8vICgyKSB0aGUgcHJl
dmlvdXNseSBpbnNlcnRlZCBzZWxlY3RvciBoYXMgYSBwcmlvclJlbGF0aW9uIG9mIHNvbWV0aGlu
ZyBvdGhlciB0aGFuCisgICAgLy8gU3ViU2VsZWN0b3IuIElmIHRoaXMgaXMgdGhlIGNhc2UsIHRo
ZW4gd2UgaW5zZXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QsIGFuZCB1cGRhdGUKKyAgICAvLyB0
aGUgbmV4dC10by1sYXN0IHNlbGVjdG9yJ3MgcmVsYXRpb24gdG8gdGhlIGluc2VydGVkIHNlbGVj
dG9yJ3MgcHJpb3JSZWxhdGlvbi4KKyAgICBmb3IgKGludCBpID0gc3RhY2tlZFNlbGVjdG9ycy5z
aXplKCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICBDU1NTZWxlY3RvclZlY3RvciYgY3Vy
cmVudEluU3RhY2sgPSAqKHN0YWNrZWRTZWxlY3RvcnNbaV0pOworICAgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IGV4cGxvZGVkUmVzdWx0c1NpemU7IGorKykgeworICAgICAgICAgICAgc2l6
ZV90IHVzZSA9IChqIC8gY29uc2lkZXJlZCkgJSBjdXJyZW50SW5TdGFjay5zaXplKCk7CisgICAg
ICAgICAgICBib29sIHN1YnNlbGVjdG9yID0gY3VycmVudEluU3RhY2tbdXNlXS0+Z2V0UHJpb3JS
ZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjsKKworICAgICAgICAgICAgLy8g
aWYgd2UgYXJlbid0IGluc2VydGluZyBhdCB0aGUgZW5kIHdlIG5lZWQgdG8gdXBkYXRlCisgICAg
ICAgICAgICAvLyB0aGlzIHNlbGVjdG9yJ3MgcmVsYXRpb24gdG8gaW5kaWNhdGUgdGhlIG5leHQg
c2VsZWN0b3IgaXMgYSBzdWJzZWxlY3Rvci4KKyAgICAgICAgICAgIGJvb2wgdXBkYXRlVG9TdWJT
ZWxlY3RvciA9IGluc2VydExvY2F0aW9uc1tqXSAhPSBleHBsb2RlZFNlbGVjdG9yc1tqXS5zaXpl
KCk7CisgICAgICAgICAgICBzaXplX3QgZGVsdGEgPSBtb3ZlVG9FeHBsb2RlZFZlY3RvcigmKGV4
cGxvZGVkU2VsZWN0b3JzW2pdKSwgY3VycmVudEluU3RhY2tbdXNlXS5nZXQoKSwgdHJ1ZSwgaW5z
ZXJ0TG9jYXRpb25zW2pdKTsKKyAgICAgICAgICAgIGZpbmFsU2l6ZSArPSBkZWx0YTsKKyAgICAg
ICAgICAgIGlmICh1cGRhdGVUb1N1YlNlbGVjdG9yKQorICAgICAgICAgICAgICAgIGV4cGxvZGVk
U2VsZWN0b3JzW2pdW2luc2VydExvY2F0aW9uc1tqXSArIGRlbHRhIC0gMV0uZ2V0KCktPm1fcmVs
YXRpb24gPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpbnQgayA9IDA7CisgICAgICAgICAgICAgICAgQ1NTU2VsZWN0b3I6OlJl
bGF0aW9uIHJlbGF0aW9uOworICAgICAgICAgICAgICAgIGRvCisgICAgICAgICAgICAgICAgICAg
IHJlbGF0aW9uID0gZXhwbG9kZWRTZWxlY3RvcnNbal1baW5zZXJ0TG9jYXRpb25zW2pdIC0gKCsr
ayldLT5nZXRQcmlvclJlbGF0aW9uKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKHJlbGF0aW9u
ID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3Rvcik7CisgICAgICAgICAgICAgICAgZXhwbG9kZWRT
ZWxlY3RvcnNbal1baW5zZXJ0TG9jYXRpb25zW2pdIC0gMV0uZ2V0KCktPm1fcmVsYXRpb24gPSBy
ZWxhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc3Vic2VsZWN0b3IpCisg
ICAgICAgICAgICAgICAgaW5zZXJ0TG9jYXRpb25zW2pdID0gZXhwbG9kZWRTZWxlY3RvcnNbal0u
c2l6ZSgpOworICAgICAgICB9CisgICAgY29uc2lkZXJlZCAqPSBjdXJyZW50SW5TdGFjay5zaXpl
KCk7CisgICAgfQorCisgICAgbV9zZWxlY3RvckFycmF5ID0gcmVpbnRlcnByZXRfY2FzdDxDU1NT
ZWxlY3Rvcio+KGZhc3RNYWxsb2Moc2l6ZW9mKENTU1NlbGVjdG9yKSAqIGZpbmFsU2l6ZSkpOwor
CisgICAgLy8gTW92ZSB0aGUgc2VsZWN0b3IgY29tcG9uZW50cyBpbiBleHBsb2RlZFNlbGVjdG9y
cyBpbnRvIHRoZSBmaW5hbCBvdXRwdXQgc2VsZWN0b3JBcnJheS4KKyAgICBzaXplX3QgaW5kZXgg
PSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhwbG9kZWRSZXN1bHRzU2l6ZTsgaSsr
KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXhwbG9kZWRTZWxlY3RvcnNbaV0u
c2l6ZSgpOyBqKyspIHsKKyAgICAgICAgICAgIG1vdmUoZXhwbG9kZWRTZWxlY3RvcnNbaV1bal0u
cmVsZWFzZSgpLCAmbV9zZWxlY3RvckFycmF5W2luZGV4XSk7CisgICAgICAgICAgICBpZiAoaiA8
IGV4cGxvZGVkU2VsZWN0b3JzW2ldLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgbV9zZWxl
Y3RvckFycmF5W2luZGV4XS5zZXROb3RMYXN0SW5UYWdIaXN0b3J5KCk7CisgICAgICAgICAgICAr
K2luZGV4OwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtX3NlbGVjdG9yQXJyYXlbYXJyYXlJ
bmRleCAtIDFdLmlzTGFzdEluVGFnSGlzdG9yeSgpKTsKKyAgICAgICAgZXhwbG9kZWRTZWxlY3Rv
cnNbaV0uc2hyaW5rKDApOwogICAgIH0KLSAgICBBU1NFUlQoZmxhdHRlbmVkU2l6ZSA9PSBhcnJh
eUluZGV4KTsKLSAgICBtX3NlbGVjdG9yQXJyYXlbYXJyYXlJbmRleCAtIDFdLnNldExhc3RJblNl
bGVjdG9yTGlzdCgpOwotICAgIHNlbGVjdG9yVmVjdG9yLnNocmluaygwKTsKKyAgICBBU1NFUlQo
aW5kZXggPT0gZmluYWxTaXplKTsKKyAgICBtX3NlbGVjdG9yQXJyYXlbaW5kZXggLSAxXS5zZXRM
YXN0SW5TZWxlY3Rvckxpc3QoKTsKKworICAgIGRlbGV0ZSBbXSBleHBsb2RlZFNlbGVjdG9yczsK
KyAgICBkZWxldGUgW10gaW5zZXJ0TG9jYXRpb25zOworfQorCit1bnNpZ25lZCBDU1NTZWxlY3Rv
ckxpc3Q6Om1vdmVUb0V4cGxvZGVkVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3I+ID4q
IHZlY3RvciwgQ1NTUGFyc2VyU2VsZWN0b3IqIGN1cnJlbnQsIGJvb2wgdXNlQ29weSwgdW5zaWdu
ZWQgaW5zZXJ0SW5kZXgpCit7CisgICAgaW50IGluaXRpYWxJbnNlcnRJbmRleCA9IGluc2VydElu
ZGV4OworICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgIHZlY3Rvci0+aW5zZXJ0KGluc2Vy
dEluZGV4LCB1c2VDb3B5ID8gY3VycmVudC0+ZHVwbGljYXRlU2VsZWN0b3IoKSA6IGN1cnJlbnQt
PnJlbGVhc2VTZWxlY3RvcigpKTsKKyAgICAgICAgaW5zZXJ0SW5kZXggKz0gMTsKKyAgICAgICAg
Y3VycmVudCA9IGN1cnJlbnQtPnRhZ0hpc3RvcnkoKTsKKyAgICB9CisKKyAgICByZXR1cm4gaW5z
ZXJ0SW5kZXggLSBpbml0aWFsSW5zZXJ0SW5kZXg7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0b3JMaXN0
OjpkZWxldGVTZWxlY3RvcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4
IGUwYWE2NWMwMmJmMzMwODdmMmExYWIyN2YwY2QwMTRhNDM4ZTIyZWYuLmE5ZGYxNGFmNzIyMTQ5
N2ZkMDRkY2ZlZDIzNGZlZTFlMTEzYzUyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ1NTU2VsZWN0b3JMaXN0X2gKICNkZWZp
bmUgQ1NTU2VsZWN0b3JMaXN0X2gKIAorI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDcgKzQy
LDcgQEAgcHVibGljOgogICAgIH5DU1NTZWxlY3Rvckxpc3QoKTsKIAogICAgIHZvaWQgYWRvcHQo
Q1NTU2VsZWN0b3JMaXN0JiBsaXN0KTsKLSAgICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoVmVj
dG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JWZWN0b3IpOworICAgIHZv
aWQgYWRvcHRTZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3RvciYsIENTU1NlbGVjdG9yVmVj
dG9yTGlzdCYpOwogCiAgICAgQ1NTU2VsZWN0b3IqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3RvckFycmF5ID8gbV9zZWxlY3RvckFycmF5IDogMDsgfQogICAgIHN0YXRpYyBDU1NTZWxl
Y3RvciogbmV4dChDU1NTZWxlY3RvciopOwpAQCAtNTQsNiArNTUsOCBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBkZWxldGVTZWxlY3RvcnMoKTsKKyAgICB1bnNpZ25lZCBtb3ZlVG9F
eHBsb2RlZFZlY3RvcihWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yPiA+KiwgQ1NTUGFyc2VyU2Vs
ZWN0b3IqLCBib29sIHVzZUNvcHksIHVuc2lnbmVkIGluc2VydEluZGV4KTsKKwogCiAgICAgLy8g
RW5kIG9mIGEgbXVsdGlwYXJ0IHNlbGVjdG9yIGlzIGluZGljYXRlZCBieSBtX2lzTGFzdEluVGFn
SGlzdG9yeSBiaXQgaW4gdGhlIGxhc3QgaXRlbS4KICAgICAvLyBFbmQgb2YgdGhlIGFycmF5IGlz
IGluZGljYXRlZCBieSBtX2lzTGFzdEluU2VsZWN0b3JMaXN0IGJpdCBpbiB0aGUgbGFzdCBpdGVt
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRleCBkMDZiYjIwM2JhNzY1MzYzZGU1
MGZlZjA3ODAzMGMxYWM2OTZhOGJiLi5jN2VjNmQ5Zjk0MTQzMTkxZmE2YzFhZTI0NWQ4ZmQ2NmJh
ZTYzODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjgxLDcgKzI4MSw3
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoMSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICBDU1NWYWx1
ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlck1pZCwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyRW5kLCB2YWx1ZSwgaW1wb3J0YW50KTsK
ICAgICAgICAgbV9pbXBsaWNpdFNob3J0aGFuZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmNwcAppbmRleCAzNDI3ZjA1NTkyMTdlNjJmMzkyNzhhODgwNWFiM2Q4ZDhhNGU5NTI4Li5hYTA0
ZWVmNzcxMThhNjU3NzNmYTcwZmE3MmFhZDU2ZjU5ZmMxN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlLmNwcApAQCAtMjkwLDEwICsyOTAsMTAgQEAgU3R5bGVSdWxlTWVkaWE6OlN0eWxlUnVsZU1l
ZGlhKGNvbnN0IFN0eWxlUnVsZU1lZGlhJiBvKQogICAgICAgICBtX21lZGlhUXVlcmllcyA9IG8u
bV9tZWRpYVF1ZXJpZXMtPmNvcHkoKTsKIH0KIAotU3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1bGVS
ZWdpb24oVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzLCBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4mIGFkb3B0UnVsZXMpCitTdHlsZVJ1bGVSZWdpb246
OlN0eWxlUnVsZVJlZ2lvbihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxl
Y3RvcnMsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc3RhY2tlZFNlbGVjdG9ycywgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGVzKQogICAgIDogU3R5bGVSdWxlQmxvY2so
UmVnaW9uLCBhZG9wdFJ1bGVzKQogewotICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JW
ZWN0b3IoKnNlbGVjdG9ycyk7CisgICAgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3Rv
cigqc2VsZWN0b3JzLCBzdGFja2VkU2VsZWN0b3JzKTsKIH0KIAogU3R5bGVSdWxlUmVnaW9uOjpT
dHlsZVJ1bGVSZWdpb24oY29uc3QgU3R5bGVSdWxlUmVnaW9uJiBvKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZS5oCmluZGV4IDdmYzIwYTMwM2Y4NTNhYzc2YzkyZWZiMDE1M2ZiZmIzNDdmNTcyYTAuLjIwYmUx
MGM4MGI2ZDYwZDhhNDkxZWE5YWMyNzYxMDI4MzNjNmI5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmgKQEAgLTk3LDcgKzk3LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0
KiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdldCgpOyB9CiAgICAg
U3R5bGVQcm9wZXJ0eVNldCogbXV0YWJsZVByb3BlcnRpZXMoKTsKICAgICAKLSAgICB2b2lkIHBh
cnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4g
PiYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0
b3JzKTsgfQorICAgIHZvaWQgcGFyc2VyQWRvcHRTZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZl
Y3RvciYgc2VsZWN0b3JzLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmIHN0YWNrZWRTZWxlY3RvcnMp
CisgICAgeworICAgICAgICBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVj
dG9ycywgc3RhY2tlZFNlbGVjdG9ycyk7CisgICAgfQogICAgIHZvaWQgd3JhcHBlckFkb3B0U2Vs
ZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFk
b3B0KHNlbGVjdG9ycyk7IH0KICAgICB2b2lkIHNldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxTdHls
ZVByb3BlcnR5U2V0Pik7CiAKQEAgLTE0Myw3ICsxNDYsMTAgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRp
ZXMuZ2V0KCk7IH0KICAgICBTdHlsZVByb3BlcnR5U2V0KiBtdXRhYmxlUHJvcGVydGllcygpOwog
Ci0gICAgdm9pZCBwYXJzZXJBZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9y
VmVjdG9yKHNlbGVjdG9ycyk7IH0KKyAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3Io
Q1NTU2VsZWN0b3JWZWN0b3ImIHNlbGVjdG9ycywgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0JiBzdGFj
a2VkU2VsZWN0b3JzKQorICAgIHsKKyAgICAgICAgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3Rv
clZlY3RvcihzZWxlY3RvcnMsIHN0YWNrZWRTZWxlY3RvcnMpOworICAgIH0KICAgICB2b2lkIHdy
YXBwZXJBZG9wdFNlbGVjdG9yTGlzdChDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9ycykgeyBtX3Nl
bGVjdG9yTGlzdC5hZG9wdChzZWxlY3RvcnMpOyB9CiAgICAgdm9pZCBzZXRQcm9wZXJ0aWVzKFBh
c3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4pOwogCkBAIC0xOTIsOSArMTk4LDkgQEAgcHJpdmF0
ZToKIAogY2xhc3MgU3R5bGVSdWxlUmVnaW9uIDogcHVibGljIFN0eWxlUnVsZUJsb2NrIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVJ1bGVSZWdpb24+IGNyZWF0ZShWZWN0
b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8
U3R5bGVSdWxlQmFzZT4gPiYgYWRvcHRSdWxlcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHls
ZVJ1bGVSZWdpb24+IGNyZWF0ZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBz
ZWxlY3RvcnMsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc3RhY2tlZFNlbGVjdG9ycywgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGVzKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVJ1bGVSZWdpb24oc2VsZWN0b3JzLCBhZG9wdFJ1bGVzKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlUmVnaW9uKHNlbGVjdG9ycywg
c3RhY2tlZFNlbGVjdG9ycywgYWRvcHRSdWxlcykpOwogICAgIH0KIAogICAgIGNvbnN0IENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvckxpc3Q7
IH0KQEAgLTIwMiw3ICsyMDgsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVS
ZWdpb24+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlUmVnaW9u
KCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGVSZWdpb24oVmVjdG9yPE93blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiosIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYg
YWRvcHRSdWxlcyk7CisgICAgU3R5bGVSdWxlUmVnaW9uKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+ID4qLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmLCBWZWN0b3I8UmVmUHRyPFN0eWxl
UnVsZUJhc2U+ID4mIGFkb3B0UnVsZXMpOwogICAgIFN0eWxlUnVsZVJlZ2lvbihjb25zdCBTdHls
ZVJ1bGVSZWdpb24mKTsKICAgICAKICAgICBDU1NTZWxlY3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggMzQzMjM0MmE5ODFjN2VmYzk2
ZTllYjM3MDFmMGZmNmE5NmE0NGJiNy4uMGRjNTllNTFmYTc2NzUxYTQ3MzUwODY0NmE5Y2YzZjZh
N2FmZTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBp
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNDIsNiArNDIs
NyBAQAogICAgICAgJ0VOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUs9MScsCiAgICAgICAn
RU5BQkxFX0NTU19FWENMVVNJT05TPTEnLAogICAgICAgJ0VOQUJMRV9DU1NfRklMVEVSUz0xJywK
KyAgICAgICdFTkFCTEVfQ1NTX0hJRVJBUkNISUVTPTAnLAogICAgICAgJ0VOQUJMRV9DU1NfSU1B
R0VfU0VUPTEnLAogICAgICAgJ0VOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTj0wJywKICAgICAg
ICdFTkFCTEVfQ1NTX1JFR0lPTlM9MScsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDQ5MTgyZjNhMDky
NmFmNGIxZjU4MjljZWMxN2I4YzlhZTU3MzZlOGUuLjhiMTFmNWFlZTMyNzc4MDAxNzUxOTdhNTQ1
YzE5OWU1ZTJhMzQ2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00MCw2ICs0MCw3IEBAIEVOQUJM
RV9DU1BfTkVYVCA9IDsKIEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsgPSBFTkFCTEVf
Q1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLOwogRU5BQkxFX0NTU19FWENMVVNJT05TID0gRU5BQkxF
X0NTU19FWENMVVNJT05TOwogRU5BQkxFX0NTU19GSUxURVJTID0gRU5BQkxFX0NTU19GSUxURVJT
OworRU5BQkxFX0NTU19ISUVSQVJDSElFUyA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJ
T04gPSA7CiBFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04gPSA7CiBFTkFCTEVfQ1NTX1JFR0lP
TlMgPSBFTkFCTEVfQ1NTX1JFR0lPTlM7CkBAIC0xMzYsNCArMTM3LDQgQEAgRU5BQkxFX1dFQl9U
SU1JTkcgPSA7CiBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hTTFQg
PSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkp
ICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1Bf
TkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfRVhD
TFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRB
VElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05T
KSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChF
TkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19GTEVYQk9YKSAkKEVOQUJMRV9DVVNU
T01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9E
QVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9E
RVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElB
TE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0ZJTEVfU1lT
VEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVf
R0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxF
X0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRf
VFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lO
UFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRI
TUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChF
TkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkg
JChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVO
QUJMRV9RVU9UQSkgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVf
UkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFC
TEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NRTF9EQVRB
QkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19E
T01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URVhUX0FVVE9T
SVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9J
Q09OX0xPQURJTkcpICQoRU5BQkxFX1VORE9fTUFOQUdFUikgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVO
QUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykg
JChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkg
JChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9O
RVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19FWENM
VVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0hJRVJBUkNISUVTKSAk
KEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVU
SU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxF
X0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NT
UzNfRkxFWEJPWCkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNI
Qk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9U
UkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0Vf
T1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllf
VVBMT0FEKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVf
RlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAk
KEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVf
SUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBV
VF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5L
X1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5B
QkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01I
VE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVSUykgJChF
TkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFC
TEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFR0lTVEVSX1BS
T1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJM
RV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9X
T1JLRVJTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19G
T05UUykgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElP
TlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFH
RVIpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wp
ICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9U
SU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3Vy
Y2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA0
OTE4MmYzYTA5MjZhZjRiMWY1ODI5Y2VjMTdiOGM5YWU1NzM2ZThlLi44YjExZjVhZWUzMjc3ODAw
MTc1MTk3YTU0NWMxOTllNWUyYTM0NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDAsNiArNDAsNyBAQCBF
TkFCTEVfQ1NQX05FWFQgPSA7CiBFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLID0gRU5B
QkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSzsKIEVOQUJMRV9DU1NfRVhDTFVTSU9OUyA9IEVO
QUJMRV9DU1NfRVhDTFVTSU9OUzsKIEVOQUJMRV9DU1NfRklMVEVSUyA9IEVOQUJMRV9DU1NfRklM
VEVSUzsKK0VOQUJMRV9DU1NfSElFUkFSQ0hJRVMgPSA7CiBFTkFCTEVfQ1NTX0lNQUdFX09SSUVO
VEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OID0gOwogRU5BQkxFX0NTU19S
RUdJT05TID0gRU5BQkxFX0NTU19SRUdJT05TOwpAQCAtMTM2LDQgKzEzNyw0IEBAIEVOQUJMRV9X
RUJfVElNSU5HID0gOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9Y
U0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRF
UklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05f
QVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
Q1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NT
X0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVH
SU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04p
ICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfRkxFWEJPWCkgJChFTkFCTEVf
Q1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFC
TEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFC
TEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9GSUxF
X1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5B
QkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5W
QVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVO
QUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lO
UFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lO
UFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVH
QUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAk
KEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVf
TUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1Mp
ICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RB
VEEpICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVSUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5B
QkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQo
RU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxf
REFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykg
JChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktF
UlMpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVS
SU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FOSU1BVElPTl9B
UEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9D
U1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1Nf
RVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19ISUVSQVJDSElF
UykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVT
T0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVO
QUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJM
RV9DU1MzX0ZMRVhCT1gpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVf
REFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RB
VEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVW
SUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNU
T1JZX1VQTE9BRCkgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5B
QkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVf
TElOS19QUkVSRU5ERVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTUlDUk9EQVRBKSAkKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQo
RU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRUdJU1RF
Ul9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChF
TkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQp
ICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklD
QVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVU5ET19N
QU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRG
ZWF0dXJlcy5jbWFrZQppbmRleCAyODBhOWRlNWVjOTAzNWRlNzYxYTI5OGIzNjI1NTAzNzMxZDZj
YjgxLi45MjQ4N2JiMTdjZTNmYWNhN2VkZjc5Y2FmMDA0MmYwYWE3NDA0NmI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dl
YktpdEZlYXR1cmVzLmNtYWtlCkBAIC0yNCw2ICsyNCw3IEBAIE1BQ1JPIChXRUJLSVRfT1BUSU9O
X0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJ
T05fQlJFQUsgIlRvZ2dsZSBCb3ggRGVjb3JhdGlvbiBCcmVhayAoQ1NTIEJhY2tncm91bmRzIGFu
ZCBCb3JkZXJzKSBzdXBwb3J0IiBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
Q1NTX0VYQ0xVU0lPTlMgIlRvZ2dsZSBDU1MgRXhjbHVzaW9uIHN1cHBvcnQiIE9GRikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ1NTX0ZJTFRFUlMgIlRvZ2dsZSBDU1MgRmlsdGVy
cyBzdXBwb3J0IiBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NTU19ISUVS
QVJDSElFUyAiVG9nZ2xlIENTUyBIaWVyYXJjaGllcyBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTiAiVG9nZ2xlIENTUyBp
bWFnZS1vcmllbnRhdGlvbiBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OICJUb2dnbGUgQ1NTIGltYWdlLXJlc29sdXRpb24g
c3VwcG9ydCIgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DU1NfSU1BR0Vf
U0VUICJUb2dnbGUgQ1NTIGltYWdlLXNldCBzdXBwb3J0IiBPRkYpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggNjMwNmI2MTM4NmE3YzFlNGRlYTcxYTgxODU0YjQ0
MGEzNzk3NzgxMC4uNTU1ODQ2ZGFmMDE2NTZhYTQ3YTJlMjJiYzY0NTdiM2ZlMTJmNGRmZSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtNTMsNiArNTMsNyBAQCBt
eSAoCiAgICAgJGNzc0JveERlY29yYXRpb25CcmVha1N1cHBvcnQsCiAgICAgJGNzc0V4Y2x1c2lv
bnNTdXBwb3J0LAogICAgICRjc3NGaWx0ZXJzU3VwcG9ydCwKKyAgICAkY3NzSGllcmFyY2hpZXNT
dXBwb3J0LAogICAgICRjc3NJbWFnZU9yaWVudGF0aW9uU3VwcG9ydCwKICAgICAkY3NzSW1hZ2VS
ZXNvbHV0aW9uU3VwcG9ydCwKICAgICAkY3NzUmVnaW9uc1N1cHBvcnQsCkBAIC0xNjYsNiArMTY3
LDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJjc3MzLWZsZXhib3giLCBk
ZXNjID0+ICJUb2dnbGUgQ1NTMyBGbGV4Ym94IHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfQ1NTM19GTEVYQk9YIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGNzczNGbGV4Ym94
U3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4gImNzcy1oaWVyYXJjaGllcyIsIGRlc2MgPT4g
IlRvZ2dsZSBDU1MgSGllcmFyY2h5IHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
Q1NTX0hJRVJBUkNISUVTIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGNzc0hpZXJhcmNoaWVz
U3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gImNzcy1ib3gtZGVjb3JhdGlvbi1icmVhayIs
IGRlc2MgPT4gIlRvZ2dsZSBDU1MgYm94LWRlY29yYXRpb24tYnJlYWsgc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsiLCBkZWZhdWx0ID0+
IDEsIHZhbHVlID0+IFwkY3NzQm94RGVjb3JhdGlvbkJyZWFrU3VwcG9ydCB9LAogCmRpZmYgLS1n
aXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByaSBiL1Rvb2xzL3Ft
YWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJpCmluZGV4IDRkN2YyMGVlMjg4YzVmZjZm
ZDEzY2JkZTVmN2ZhMDc4ODZkOWNiYjQuLjk3ZGQ3YWU0MTUxYmE4NWQ3MGIyNDhlMGNhZTJhNWQ3
NGQ2NTk0NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVy
ZXMucHJpCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJpCkBA
IC0yNCw2ICsyNCw3IEBAIEZFQVRVUkVfREVGQVVMVFMgPSBcCiAgICAgRU5BQkxFX0NTU19FWENM
VVNJT05TPTEgXAogICAgIEVOQUJMRV9DU1NfRklMVEVSUz0xIFwKICAgICBFTkFCTEVfQ1NTX0dS
SURfTEFZT1VUPTAgXAorICAgIEVOQUJMRV9DU1NfSElFUkFSQ0hJRVM9MCBcCiAgICAgRU5BQkxF
X0NTU19JTUFHRV9PUklFTlRBVElPTj0wIFwKICAgICBFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJ
T049MCBcCiAgICAgRU5BQkxFX0NTU19SRUdJT05TPTEgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBmNjYxY2YzMTViZjg2
NDIyYTNkZDVmZTUyODEyZGE1N2Q1MTBjYWIuLmJhNWE0Mjc4OTdjZGM0YTY2ODAyYzg5NGFhZmRm
NThmMDBkYTRkMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNy0yNiAgU2hhbmUgU3Rl
cGhlbnMgIDxzaGFuZXN0ZXBoZW5zQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1dJUF0gSW1wbGVt
ZW50IENTUyBIaWVyYXJjaGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzk5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRtbDogQWRkZWQuCisKIDIwMTIt
MDctMjUgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
VGVzdHNdIFJlLWZhY3RvciBmYXN0L2Zvcm1zL251bWJlci9udW1iZXItc3BpbmJ1dHRvbi1jaGFu
Z2UtYW5kLWlucHV0LWV2ZW50cy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Np
bXBsZS1oaWVyYXJjaGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3NpbXBsZS1o
aWVyYXJjaGllcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNmZWJkN2M2Y2UzNDA4MjdhZGYx
NTFhY2FhMjE5ZTBmNWJhMTJmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
c2ltcGxlLWhpZXJhcmNoaWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcwIEBACitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDM4NAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA4MDB4Mzg0CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4
MzY4CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9I0ZGMDAwMF0K
KyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxOTl4MTgKKyAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE5OTogIlRoaXMgZGl2IHNob3VsZCBjb250
YWluIHJlZCB0ZXh0IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgNDAw
eDQwIFtiZ2NvbG9yPSNERERERERdCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDAp
IHNpemUgNDAweDE4IFtjb2xvcj0jMDAwMEZGXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDIwNngxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMjA2OiAiVGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gYmx1ZSB0ZXh0IgorICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsNTgpIHNpemUgNDAweDQwIFtjb2xvcj0jMDA4MDAwXSBbYmdjb2xv
cj0jREREREREXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMTR4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMTQ6ICJUaGlzIGRpdiBzaG91
bGQgY29udGFpbiBncmVlbiB0ZXh0IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsOTgp
IHNpemUgNzg0eDE0NAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4
NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAyMTR4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxNDog
IlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDE4KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMTR4MTgKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDIxNDogIlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRl
eHQiCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM2KSBzaXplIDc4NHgxOCBbY29s
b3I9IzAwODAwMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAy
MTR4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxNDogIlRoaXMgZGl2
IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDU0KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMTR4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDIxNDogIlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQiCisgICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDcyKSBzaXplIDc4NHg3MgorICAgICAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMzh4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMjM4OiAiVGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRl
eHQiCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgNzg0eDE4Cisg
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMzh4MTgKKyAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjM4OiAiVGhpcyBkaXYgc2hvdWxkIG5v
dCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MzYpIHNpemUgNzg0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAyMzh4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjM4OiAi
VGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsNTQpIHNpemUgNzg0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMzh4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMjM4OiAiVGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQi
CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwyNDIpIHNpemUgNzg0eDkwCisgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDM2CisgICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSNGRkMwQ0JdCisgICAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNTZ4MTgKKyAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTU2OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBwaW5r
LCIKKyAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxOCkgc2l6ZSA3ODR4
MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEwMXgxOAor
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMDE6ICJidXQgbm90IHRoaXMg
dGV4dC4iCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM2KSBzaXplIDc4NHgxOCBb
Y29sb3I9I0ZGQzBDQl0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAxNTZ4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE1NjogIlRoaXMg
dGV4dCBzaG91bGQgYmUgcGluay4iCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDU0
KSBzaXplIDc4NHgxOCBbY29sb3I9I0ZGQzBDQl0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxNTZ4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDE1NjogIlRoaXMgdGV4dCBzaG91bGQgYmUgcGluay4iCisgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDcyKSBzaXplIDc4NHgxOAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDE4MHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMTgwOiAiVGhpcyB0ZXh0IHNob3VsZCBub3QgYmUgcGluay4iCisgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwzMzIpIHNpemUgNzg0eDM2CisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDApIHNpemUgNzg0eDM2IFtiZ2NvbG9yPSNGRkRERERdCisgICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSNGRjAwMDBdCisgICAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyNzV4MTgKKyAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjc1OiAiVGhpcyBzaG91bGQgYmUgcmVkIHdpdGgg
YSBwaW5rIGJhY2tncm91bmQuIgorICAgICAgICAgICAgUmVuZGVySW5saW5lIChnZW5lcmF0ZWQp
IGF0ICgwLDApIHNpemUgMTk0eDE4CisgICAgICAgICAgICAgIFJlbmRlclRleHQgYXQgKDI3NSww
KSBzaXplIDE5NHgxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyNzUsMCkgd2lkdGgg
MTk0OiAiIChIZXJlJ3Mgc29tZSBpbnNlcnRlZCBjb250ZW50KSIKKyAgICAgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI3MngxOAorICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAyNzI6ICJUaGlzIHNob3VsZCBqdXN0IGhhdmUgdGhlIHBpbmsgYmFj
a2dyb3VuZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3NpbXBsZS1oaWVyYXJjaGll
cy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMGMyZjU0ODAxMmZlZWMwYzhmNjJiYjFmMjE2MjBmNmZkODljZGM0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRtbApAQCAtMCww
ICsxLDk5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiBU
ZXN0IGEgdHJpdmlhbGx5IG5lc3RlZCBydWxlICovCisKKy5hIHsKKyAgICAmIC5iIHsKKyAgICAg
ICAgY29sb3I6IHJlZDsKKyAgICB9Cit9CisKKy8qIFRlc3QgaW50YXJjYWxhdGlvbiBvZiBuZXN0
ZWQgcnVsZXMgYW5kIHByb3BlcnRpZXMuICovCisvKiBUZXN0IGRlc2NlbmRhbnQgc2VsZWN0b3Ig
YW5kIG5vIHNlbGVjdG9yLiAqLworCisuYyB7CisgICAgaGVpZ2h0OiA0MHB4OworICAgICYgLmQg
eworICAgICAgICBjb2xvcjogYmx1ZTsKKyAgICB9CisgICAgd2lkdGg6IDQwMHB4OworICAgICYu
ZSB7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9CisgICAgYmFja2dyb3VuZC1jb2xvcjog
I2RkZGRkZDsKK30KKworLyogVGVzdCBub24tc3BhY2UtYmFzZWQgY29tYmluYXRvciB3aXRoIGFs
bCBwb3NzaWJsZSBzcGFjaW5ncy4gKi8KKy5mIHsKKyAgICAmPi5nIHsKKyAgICAgICAgY29sb3I6
IGdyZWVuOworICAgIH0KKyAgICAmPiAuaCB7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9
CisgICAgJiA+LmkgeworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorICAgICYgPiAuaiB7
CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9Cit9CisKKy8qIFRlc3QgbXVsdGlwbGUgbmVz
dGVkIHNlbGVjdG9ycyBpbiBzYW1lIGxpc3QuICovCisuayB7IAorICAgICYgLmwsICYubSwgJiAr
IC5uIHsKKyAgICAgICAgY29sb3I6IHBpbms7CisgICAgfQorfQorCisvKiBUZXN0IGRlZXAgbmVz
dGluZyBvZiBzZWxlY3RvcnMuICovCisubyB7CisgICAgJiAucCB7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6ICNmZmRkZGQ7CisgICAgICAgICYgLnEgeworICAgICAgICAgICAgY29sb3I6IHJl
ZDsKKyAgICAgICAgICAgICY6OmFmdGVyIHsKKyAgICAgICAgICAgICAgICBjb250ZW50OiAiIChI
ZXJlJ3Mgc29tZSBpbnNlcnRlZCBjb250ZW50KSI7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iYSI+
PGRpdiBjbGFzcz0iYiI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gcmVkIHRleHQ8L2Rpdj48L2Rp
dj4KKworPGRpdiBjbGFzcz0iYyI+PGRpdiBjbGFzcz0iZCI+VGhpcyBkaXYgc2hvdWxkIGNvbnRh
aW4gYmx1ZSB0ZXh0PC9kaXY+PC9kaXY+CisKKzxkaXYgY2xhc3M9ImMgZSI+VGhpcyBkaXYgc2hv
dWxkIGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorCis8ZGl2IGNsYXNzPSJmIj4KKyAgPGRpdiBj
bGFzcz0iZyI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICA8ZGl2
IGNsYXNzPSJoIj5UaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisgIDxk
aXYgY2xhc3M9ImkiPlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKyAg
PGRpdiBjbGFzcz0iaiI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2Pgor
ICA8ZGl2PgorICAgIDxkaXYgY2xhc3M9ImciPlRoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBn
cmVlbiB0ZXh0PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iaCI+VGhpcyBkaXYgc2hvdWxkIG5vdCBj
b250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJpIj5UaGlzIGRpdiBzaG91
bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImoiPlRoaXMg
ZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisgIDwvZGl2PgorPC9kaXY+
Cis8ZGl2PgorICAgIDxkaXYgY2xhc3M9ImsiPgorICAgICAgICA8ZGl2IGNsYXNzPSJsIj5UaGlz
IHRleHQgc2hvdWxkIGJlIHBpbmssPC9kaXY+IGJ1dCBub3QgdGhpcyB0ZXh0LjwvZGl2PgorICAg
IDxkaXYgY2xhc3M9ImsgbSI+VGhpcyB0ZXh0IHNob3VsZCBiZSBwaW5rLjwvZGl2PgorICAgIDxk
aXYgY2xhc3M9Im4iPlRoaXMgdGV4dCBzaG91bGQgYmUgcGluay48L2Rpdj4KKyAgICA8ZGl2IGNs
YXNzPSJuIj5UaGlzIHRleHQgc2hvdWxkIG5vdCBiZSBwaW5rLjwvZGl2PgorPC9kaXY+Cis8ZGl2
IGNsYXNzPSJvIj48ZGl2IGNsYXNzPSJwIj48ZGl2IGNsYXNzPSJxIj5UaGlzIHNob3VsZCBiZSBy
ZWQgd2l0aCBhIHBpbmsgYmFja2dyb3VuZC48L2Rpdj4gVGhpcyBzaG91bGQganVzdCBoYXZlIHRo
ZSBwaW5rIGJhY2tncm91bmQuPC9kaXY+PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgoraWYgKGxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK30KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDM4MjNiZjQ2ZDgxZWQyN2Y5OGZhYjdlYWNmNTE1YWViNmJiZGE1MTUu
LjY5Y2NkOTEyOTE0NjAzN2E0MjI2ZDg1NDlkOTlmMzZjMWNmYWUzNjAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTY5LDYgKzE2OSw5
IEBAIEJVR1dLODkwNTIgU0tJUCA6IGZhc3QvY3NzL2ltYWdlLW9yaWVudGF0aW9uID0gUEFTUwog
Ly8gQ2hyb21pdW0gbmVlZHMgbGFyZ2VyIG1lZGlhIGZpbGVzIHRvIHRlc3QgYnVmZmVyaW5nIHRo
aXMgd2F5LgogQlVHV0s4ODE3MiBTS0lQIDogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1idWZmZXJl
ZC5odG1sID0gUEFTUwogCisvLyBDU1MgSGllcmFyY2hpZXMgYXJlIG5vdCB5ZXQgZW5hYmxlZC4K
K0JVR1dLNzk5MzkgU0tJUCA6IGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0bWwgPSBQQVNTCisK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLyBXT05URklYIFRFU1RTCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2Mzc0ZDc4NzYyMGQ5NDRlNWMyNzcy
MjEzNWZkYmM5Y2Y0OTAxNTZjLi44ZDUzYzFmNjhiZmIzOGU5NjE4ZTA1N2FiNjJhOWJjMTlmZjAz
NTcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzgz
LDYgKzM4MywxMCBAQCBCVUdXSzg0MTg2IFNLSVAgOiBmYXN0L3RleHQtYXV0b3NpemluZyA9IFBB
U1MKIAogLy8gRGlhbG9nIGVsZW1lbnQgaXMgbm90IHlldCBlbmFibGVkLgogQlVHV0s4NDYzNSBT
S0lQIDogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQgPSBURVhUCisKKy8vIENTUyBIaWVyYXJj
aGllcyBhcmUgbm90IHlldCBlbmFibGVkLgorQlVHV0s3OTkzOSBTS0lQIDogY3NzMy9zaW1wbGUt
aGllcmFyY2hpZXMuaHRtbCA9IFBBU1MKKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCiAvLyBFbmQgb2YgRXhwZWN0ZWQgZmFpbHVyZXMKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCAwZDExMjU5ZjhjMTFhMjc2ZWZjYmUzMDZmMjA4NmUwNGZiZThiYWFkLi4zNzQzZjFiODk2MjM0
NGIxNzQ5YTg1ZGVmNjZiNjNlZjYwNGMyMDMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMjIsNiArMjIsOSBAQCBCVUdXSzg1MjYyIFNLSVAgOiBmYXN0
L2Nzcy9pbWFnZS1yZXNvbHV0aW9uID0gUEFTUwogLy8gQ1NTIGltYWdlLW9yaWVudGF0aW9uIGlz
IG5vdCB5ZXQgZW5hYmxlZC4KIEJVR1dLODkwNTIgU0tJUCA6IGZhc3QvY3NzL2ltYWdlLW9yaWVu
dGF0aW9uID0gUEFTUwogCisvLyBDU1MgSGllcmFyY2hpZXMgYXJlIG5vdCB5ZXQgZW5hYmxlZC4K
K0JVR1dLNzk5MzkgU0tJUCA6IGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0bWwgPSBQQVNTCisK
IC8vIE91ciBzbG93IHRlc3RzLCBpbiBhbHBoYWJldGljYWwgb3JkZXIuCiBCVUdXSzU3NjcyIDog
aHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5odG1sID0g
VEVYVCBQQVNTCiAKQEAgLTMwNCw0ICszMDcsNCBAQCBCVUdXSzkxNTA1IDogcGxhdGZvcm0vbWFj
L3BsdWdpbnMvcm9vdC1vYmplY3QtcHJlbWF0dXJlLWRlbGV0ZS1jcmFzaC5odG1sID0gQ1JBUwog
QlVHV0s5MTU1MiA6IGZhc3QvdGV4dC9kZXNjZW50LWNsaXAtaW4tc2NhbGVkLXBhZ2UuaHRtbCA9
IElNQUdFCiAKIC8vIExheW91dCBUZXN0IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1hbmltYXRpb24uaHRtbCBpcyBmYWlsaW5nCi1CVUdXSzg0ODEzIDogY3NzMy9maWx0ZXJzL2N1
c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sID0gVEVYVApcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKK0JVR1dLODQ4MTMgOiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0
ZXItYW5pbWF0aW9uLmh0bWwgPSBURVhUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA5YmEyYTYxYThiNTlmMjU1Yzc3Yzc0M2U1MGJmZDQ1NGM0ZjBiZThmLi4x
ZDhmNWExOTEwYzRjZjA5M2VlNzQwYjYwYTI1ZTBkM2RiYjFmNGMzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgzLDYgKzgzLDkgQEAgQlVHV0s4NTI2MiBT
S0lQIDogZmFzdC9jc3MvaW1hZ2UtcmVzb2x1dGlvbiA9IFBBU1MKIC8vIENTUyBpbWFnZS1vcmll
bnRhdGlvbiBpcyBub3QgeWV0IGVuYWJsZWQuCiBCVUdXSzg5MDUyIFNLSVAgOiBmYXN0L2Nzcy9p
bWFnZS1vcmllbnRhdGlvbiA9IFBBU1MKIAorLy8gQ1NTIEhpZXJhcmNoaWVzIGFyZSBub3QgeWV0
IGVuYWJsZWQuCitCVUdXSzc5OTM5IFNLSVAgOiBjc3MzL3NpbXBsZS1oaWVyYXJjaGllcy5odG1s
ID0gUEFTUworCiAvLyBOZWVkcyByZWJhc2VsaW5lIGFmdGVyIGJ1ZyA4NjQ0MQogLy8gZmFpbGlu
ZyBuZXcgdGVzdHMKIEJVR1dLODY0NDEgU0tJUCA6IGZhc3QvYm9yZGVycy9ib3JkZXItYW50aWFs
aWFzaW5nLmh0bWwgPSBJTUFHRQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154799</attachid>
            <date>2012-07-26 18:08:47 -0700</date>
            <delta_ts>2012-08-07 00:04:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79939-20120727110834.patch</filename>
            <type>text/plain</type>
            <size>68127</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRjMmZlZDdmYzU1ZTA2
NmVhZDAwMzNhODY1NDk3MDg5Yzg3YTQ5My4uYzljZmIzMmMxYTRmYjE3ZTliODRkYjIzZDJhZjEz
NWNkMTA1NjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTA3LTI3ICBTaGFu
ZSBTdGVwaGVucyAgPHNoYW5lc3RlcGhlbnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQXSBJ
bXBsZW1lbnQgQ1NTIEhpZXJhcmNoaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03OTkzOQorCisgICAgICAgIFRoaXMgQ1NTIGZlYXR1cmUgaXMgcHJv
cG9zZWQgaW4gdGhlIGZvbGxvd2luZyBFZGl0b3IncyBEcmFmdDoKKyAgICAgICAgaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3NzMy1oaWVyYXJjaGllcy8uCisKKyAgICAgICAgQXMgZWFjaCBzdHls
ZSBydWxlIGlzIHBhcnNlZCwgdGhlIHNlbGVjdG9yIGZvciB0aGUgc3R5bGUKKyAgICAgICAgcnVs
ZSBpcyBib3RoIGNvbnZlcnRlZCBpbnRvIGEgQ1NTU2VsZWN0b3JMaXN0IGFuZCBwdXNoZWQKKyAg
ICAgICAgb250byBhIFNlbGVjdG9yVmVjdG9yIHRvIG1haW50YWluIHRoZSBjdXJyZW50IHNlbGVj
dG9yCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgV2hlbiBhIG5lc3RlZCBzdHlsZSBydWxl
IGlzIGVuY291bnRlcmVkLCBib3RoIHRoZSBuZXcgc2VsZWN0b3IKKyAgICAgICAgYW5kIHRoZSBj
dXJyZW50IFNlbGVjdG9yVmVjdG9yIGNvbnRleHQgYXJlIHByb3ZpZGVkIHRvIHRoZQorICAgICAg
ICBuZXcgQ1NTU2VsZWN0b3JMaXN0IHRoYXQgcmVwcmVzZW50cyB0aGUgc2VsZWN0b3IgZm9yIHRo
ZSBuZXN0ZWQKKyAgICAgICAgcnVsZS4gQXQgdGhpcyBwb2ludCB0aGUgY29udGV4dCBhbmQgbmV3
IHNlbGVjdG9yIGFyZSBjb21iaW5lZCAtIAorICAgICAgICB0aGlzIGlzIGEgbGl0dGxlIGNvbXBs
ZXggYmVjYXVzZToKKyAgICAgICAgICAxKSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUg
Y29tbWEtc2VwYXJhdGVkIHNlbGVjdG9yCisgICAgICAgICAgICAgY29tcG9uZW50cyBpbiBlYWNo
IHBhcnQgb2YgdGhlIFNlbGVjdG9yVmVjdG9yLCBhbmQgdGhlc2UKKyAgICAgICAgICAgICBuZWVk
IHRvIGJlIGNvbWJpbmVkCisgICAgICAgICAgMikgdGhlIG91dHB1dCBsaXN0IG9yZGVyIChpbiBv
cmRlciBvZiBtYXRjaGluZykgZG9lc24ndCBtYXRjaAorICAgICAgICAgICAgIHRoZSBpbmNvbWlu
ZyB2ZWN0b3Igb3JkZXIgKGluIG9yZGVyIG9mIHBhcnNpbmcpIGFuZCB0aGlzCisgICAgICAgICAg
ICAgbmVlZHMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LCBlc3BlY2lhbGx5IGF0IHRoZSBib3Vu
ZGFyaWVzCisgICAgICAgICAgICAgYmV0d2VlbiBTZWxlY3RvclZlY3RvciBlbnRyaWVzLgorCisg
ICAgICAgIFBhc3QgdGhlIHBvaW50IG9mIHRoZSBDU1NTZWxlY3Rvckxpc3QsIG5vIGRlZXBlciBt
b2RpZmljYXRpb25zIGFyZQorICAgICAgICByZXF1aXJlZC4KKworICAgICAgICBOb3RlIHRoYXQg
dGhpcyBwYXRjaCBkb2Vzbid0IGltcGxlbWVudCBzdXBwb3J0IGZvciB0aGUgQ1NTT00gLSAKKyAg
ICAgICAgdGhhdCB3aWxsIGNvbWUgaW4gZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3NzMy9zaW1wbGUtaGllcmFy
Y2hpZXMuaHRtbAorCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gYWxsb3cgbmVzdGluZyBvZiBz
ZWxlY3RvcnMgdG8gYmUgcGFyc2VkLgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1BhZ2VSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6
YWRvcHRTZWxlY3RvclZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVh
dGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUpOgorCisg
ICAgICAgIEFkZCBhIHNlbGVjdG9yVmVjdG9yIHRvIHRyYWNrIGN1cnJlbnQgc2VsZWN0b3Igc3Rh
Y2sKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnJldXNhYmxlU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cHVzaFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cG9wU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoU3RhY2tlZFBh
cnNlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpTdGFja2VkUGFy
c2VkUHJvcGVydGllczo6U3RhY2tlZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpkdXBsaWNhdGVTZWxlY3Rvcik6
CisgICAgICAgIChDU1NQYXJzZXJTZWxlY3Rvcik6CisKKyAgICAgICAgVHJhY2sgcHJpb3IgcmVs
YXRpb24gdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBzdGl0Y2gKKyAgICAgICAgc2VsZWN0b3JWZWN0
b3IgKyBjdXJyZW50IHNlbGVjdG9yIGludG8gYSBjb2hlcmVudCBzZWxlY3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpnZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OkNT
U1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnNldFNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxp
c3RXcmFwcGVyOjp+Q1NTU2VsZWN0b3JMaXN0V3JhcHBlcik6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpz
ZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpnZXRQcmlv
clJlbGF0aW9uKToKKyAgICAgICAgKFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZXRWYWx1ZSk6CisKKyAgICAgICAgSW1wbGVtZW50IGFsZ29yaXRobSB0byBjb21i
aW5lIHNlbGVjdG9yVmVjdG9yIHdpdGgKKyAgICAgICAgY3VycmVudCBzZWxlY3RvciB3aGVuIGdl
bmVyYXRpbmcgdGhlIENTU1NlbGVjdG9yIGFycmF5LgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rv
ckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVj
dG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3JMaXN0Ojptb3ZlVG9FeHBsb2RlZFZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1NlbGVj
dG9yTGlzdC5oOgorICAgICAgICAoQ1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvU3R5
bGVSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmFkb3B0U2VsZWN0b3JWZWN0
b3IpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1JlZ2lvblJ1bGUpOgorICAgICAg
ICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmg6CisKIDIwMTItMDctMjYgIFNoYW5lIFN0ZXBo
ZW5zICA8c2hhbmVzdGVwaGVuc0Bnb29nbGUuY29tPgogCiAgICAgICAgIENvbXBpbGUgZmxhZyBm
b3IgQ1NTIEhpZXJhcmNoaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCBjN2MxMGI1NDFj
ZDQ2YWQ0ZmViYzZlZmUyODllODFiMmNmYjA4NjFlLi5lZjg1MTRiMzNjMDA3NzYyMjZjMGFlM2Jh
MmZkZDI3NjY3NjUzMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1h
ci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTcxLDcgKzcxLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlOwog
ICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiogcnVsZUxpc3Q7CiAgICAgQ1NTUGFy
c2VyU2VsZWN0b3IqIHNlbGVjdG9yOwotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHNlbGVjdG9yTGlzdDsKKyAgICBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JMaXN0
OwogICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIG1hcmdpbkJveDsKICAgICBDU1NTZWxl
Y3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CiAgICAgTWVkaWFRdWVyeVNldCogbWVkaWFMaXN0OwpA
QCAtMjE0LDYgKzIxNCw3IEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQRSogeXlsdmFsLCB2
b2lkKiBwYXJzZXIpCiAldHlwZSA8cnVsZT4gY2hhcnNldAogJXR5cGUgPHJ1bGU+IGlnbm9yZWRf
Y2hhcnNldAogJXR5cGUgPHJ1bGU+IHJ1bGVzZXQKKyV0eXBlIDxydWxlPiBuZXN0ZWRfcnVsZXNl
dF9jb250ZW50cwogJXR5cGUgPHJ1bGU+IG1lZGlhCiAldHlwZSA8cnVsZT4gaW1wb3J0CiAldHlw
ZSA8cnVsZT4gbmFtZXNwYWNlCkBAIC0yNjMsNiArMjY0LDcgQEAgc3RhdGljIGludCBjc3N5eWxl
eChZWVNUWVBFKiB5eWx2YWwsIHZvaWQqIHBhcnNlcikKICV0eXBlIDxzZWxlY3Rvcj4gc2ltcGxl
X3NlbGVjdG9yCiAldHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yCiAldHlwZSA8c2VsZWN0b3JMaXN0
PiBzZWxlY3Rvcl9saXN0CisldHlwZSA8c2VsZWN0b3JMaXN0PiBuZXN0ZWRfc2VsZWN0b3JfbGlz
dAogJXR5cGUgPHNlbGVjdG9yTGlzdD4gc2ltcGxlX3NlbGVjdG9yX2xpc3QKICV0eXBlIDxzZWxl
Y3Rvckxpc3Q+IHJlZ2lvbl9zZWxlY3RvcgogJXR5cGUgPHNlbGVjdG9yPiBzZWxlY3Rvcl93aXRo
X3RyYWlsaW5nX3doaXRlc3BhY2UKQEAgLTI3NCw5ICsyNzYsMTMgQEAgc3RhdGljIGludCBjc3N5
eWxleChZWVNUWVBFKiB5eWx2YWwsIHZvaWQqIHBhcnNlcikKIAogJXR5cGUgPGJvb2xlYW4+IGRl
Y2xhcmF0aW9uX2xpc3QKICV0eXBlIDxib29sZWFuPiBkZWNsX2xpc3QKLSV0eXBlIDxib29sZWFu
PiBkZWNsYXJhdGlvbgorJXR5cGUgPGJvb2xlYW4+IG5lc3RlZF9ydWxlc2V0CisldHlwZSA8Ym9v
bGVhbj4gZGVjbGFyYXRpb25fc2VwCisldHlwZSA8Ym9vbGVhbj4gcmF3X2RlY2xhcmF0aW9uCiAl
dHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zCiAKKyV0eXBlIDxib29sZWFu
PiBtYXliZV9zcGFjZQorCiAldHlwZSA8Ym9vbGVhbj4gcHJpbwogCiAldHlwZSA8aW50ZWdlcj4g
bWF0Y2gKQEAgLTMzNSw5ICszNDEsOSBAQCB3ZWJraXRfdmFsdWU6CiAgICAgICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgIGlmICgkNCkg
ewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3Qo
JDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX3BhcnNlZFBy
b3BlcnRpZXMuc2l6ZSgpOworICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBw
LT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKICAgICAgICAgICAgIGlmICghcC0+cGFyc2VW
YWx1ZShwLT5tX2lkLCBwLT5tX2ltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcC0+cm9sbGJh
Y2tMYXN0UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpIC0gb2xkUGFyc2Vk
UHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhw
LT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwogICAg
ICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBudWxscHRyOwogICAgICAgICB9CiAgICAgfQpAQCAt
MzU1LDE0ICszNjEsMTQgQEAgd2Via2l0X3NlbGVjdG9yOgogICAgICAgICBpZiAoJDQpIHsKICAg
ICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7
CiAgICAgICAgICAgICBpZiAocC0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yKQotICAg
ICAgICAgICAgICAgIHAtPm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3Rvci0+YWRvcHRTZWxl
Y3RvclZlY3RvcigqJDQpOworICAgICAgICAgICAgICAgIHAtPm1fc2VsZWN0b3JMaXN0Rm9yUGFy
c2VTZWxlY3Rvci0+YWRvcHRTZWxlY3RvclZlY3RvcigqJDQsIHAtPm1fbmVzdGVkU2VsZWN0b3JT
dGFjayk7CiAgICAgICAgIH0KICAgICB9CiA7CiAKIG1heWJlX3NwYWNlOgotICAgIC8qIGVtcHR5
ICovICVwcmVjIFVOSU1QT1JUQU5UX1RPSwotICB8IG1heWJlX3NwYWNlIFdISVRFU1BBQ0UKKyAg
ICAvKiBlbXB0eSAqLyAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeyAkJCA9IGZhbHNlOyB9CisgIHwg
bWF5YmVfc3BhY2UgV0hJVEVTUEFDRSB7ICQkID0gdHJ1ZTsgfQogICA7CiAKIG1heWJlX3NnbWw6
CkBAIC05MjAsMTEgKzkyNiwxOCBAQCBydWxlc2V0OgogICAgIH0KICAgOwogCituZXN0ZWRfcnVs
ZXNldF9jb250ZW50czoKKyAgICBuZXN0ZWRfc2VsZWN0b3JfbGlzdCBhdF9ydWxlX2hlYWRlcl9l
bmQgJ3snIG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0IGNs
b3NpbmdfYnJhY2UgeworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJz
ZXIqPihwYXJzZXIpOworICAgICAgICAkJCA9IHAtPmNyZWF0ZVN0eWxlUnVsZSgkMSk7CisgICAg
fQorICA7CisKIHNlbGVjdG9yX2xpc3Q6CiAgICAgc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRf
VE9LIHsKICAgICAgICAgaWYgKCQxKSB7CiAgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICAgICAgJCQgPSBwLT5yZXVzYWJs
ZVNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJCA9IHAtPnNlbGVjdG9yVmVjdG9yKCk7
CiAgICAgICAgICAgICAkJC0+c2hyaW5rKDApOwogICAgICAgICAgICAgJCQtPmFwcGVuZChwLT5z
aW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwogICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNlbGVj
dG9yTGluZUFuZFBvc2l0aW9uKCk7CkBAIC05NDQsNiArOTU3LDU4IEBAIHNlbGVjdG9yX2xpc3Q6
CiAgICAgfQogICAgOwogCituZXN0ZWRfc2VsZWN0b3JfbGlzdDoKKyAgICBzZWxlY3RvciAlcHJl
YyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAgICAgIENTU1Bh
cnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAgICAk
JCA9IHAtPnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOworICAg
ICAgICAgICAgaWYgKHAtPm1fdHJhaWxpbmdTcGFjZSkKKyAgICAgICAgICAgICAgICAkMS0+c2V0
UHJpb3JSZWxhdGlvbihDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgJDEtPnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OlN1YlNl
bGVjdG9yKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3Io
JDEpKTsKKyAgICAgICAgICAgIHAtPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlvbigp
OworICAgICAgICB9CisgICAgfQorICAgIHwgY29tYmluYXRvciBzZWxlY3RvciAlcHJlYyBVTklN
UE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDIpIHsKKyAgICAgICAgICAgIENTU1BhcnNlciog
cCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAgICAkJCA9IHAt
PnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOworICAgICAgICAg
ICAgJDItPnNldFByaW9yUmVsYXRpb24oJDEpOworICAgICAgICAgICAgJCQtPmFwcGVuZChwLT5z
aW5rRmxvYXRpbmdTZWxlY3RvcigkMikpOworICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNlbGVj
dG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBuZXN0ZWRfc2Vs
ZWN0b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2UgJyYnIG1heWJlX3NwYWNlIHNlbGVjdG9yICVwcmVj
IFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAkNikgeworICAgICAgICAgICAg
Q1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAgICAg
ICAgICQkID0gJDE7CisgICAgICAgICAgICBpZiAoJDUpCisgICAgICAgICAgICAgICAgJDYtPnNl
dFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICQ2LT5zZXRQcmlvclJlbGF0aW9uKENTU1NlbGVjdG9yOjpTdWJT
ZWxlY3Rvcik7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9y
KCQ2KSk7CisgICAgICAgICAgICBwLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24o
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IG5lc3Rl
ZF9zZWxlY3Rvcl9saXN0ICcsJyBtYXliZV9zcGFjZSAnJicgbWF5YmVfc3BhY2UgY29tYmluYXRv
ciBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgIGlmICgkMSAmJiAkNykgewor
ICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwor
ICAgICAgICAkJCA9ICQxOworICAgICAgICAkNy0+c2V0UHJpb3JSZWxhdGlvbigkNik7CisgICAg
ICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDcpKTsKKyAgICAgICAgcC0+
dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgfSBlbHNlCisgICAgICAg
ICQkID0gMDsKKyAgfQorICB8IG5lc3RlZF9zZWxlY3Rvcl9saXN0IGVycm9yIHsKKyAgICAgICAg
JCQgPSAwOworICAgIH0KKyAgIDsKKwogc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNl
OgogICAgIHNlbGVjdG9yIFdISVRFU1BBQ0UgewogICAgICAgICAkJCA9ICQxOwpAQCAtMTIyMCw3
ICsxMjg1LDcgQEAgcHNldWRvOgogICAgICAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGljX2Nh
c3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRp
bmdTZWxlY3RvcigpOwogICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzcyk7Ci0gICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcigqcC0+c2lua0Zs
b2F0aW5nU2VsZWN0b3JWZWN0b3IoJDQpKTsKKyAgICAgICAgICAgICQkLT5hZG9wdFNlbGVjdG9y
VmVjdG9yKCpwLT5zaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcigkNCksIHAtPm1fbmVzdGVkU2Vs
ZWN0b3JTdGFjayk7CiAgICAgICAgICAgICAkMi5sb3dlcigpOwogICAgICAgICAgICAgJCQtPnNl
dFZhbHVlKCQyKTsKICAgICAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAk
JC0+cHNldWRvVHlwZSgpOwpAQCAtMTI3OSw5ICsxMzQ0LDkgQEAgcHNldWRvOgogICAgICAgICAg
ICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKIAotICAgICAgICAgICAgVmVjdG9yPE93
blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKKyAgICAgICAgICAgIENT
U1NlbGVjdG9yVmVjdG9yIHNlbGVjdG9yVmVjdG9yOwogICAgICAgICAgICAgc2VsZWN0b3JWZWN0
b3IuYXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkJC0+
YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgICAgICAgICAkJC0+YWRv
cHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3RvciwgcC0+bV9uZXN0ZWRTZWxlY3RvclN0YWNr
KTsKIAogICAgICAgICAgICAgJDIubG93ZXIoKTsKICAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgk
Mik7CkBAIC0xMjkwLDEwICsxMzU1LDEwIEBAIHBzZXVkbzoKICAgOwogCiBkZWNsYXJhdGlvbl9s
aXN0OgotICAgIGRlY2xhcmF0aW9uIHsKKyAgICByYXdfZGVjbGFyYXRpb24gewogICAgICAgICAk
JCA9ICQxOwogICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiB7CisgICAgfCBkZWNs
X2xpc3QgcmF3X2RlY2xhcmF0aW9uIHsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYgKCAk
MiApCiAgICAgICAgICAgICAkJCA9ICQyOwpAQCAtMTMxNiwxNSArMTM4MSwxNSBAQCBkZWNsYXJh
dGlvbl9saXN0OgogICAgIDsKIAogZGVjbF9saXN0OgotICAgIGRlY2xhcmF0aW9uICc7JyBtYXli
ZV9zcGFjZSB7CisgICAgZGVjbGFyYXRpb25fc2VwIG1heWJlX3NwYWNlIHsKICAgICAgICAgQ1NT
UGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgcC0+
bWFya1Byb3BlcnR5U3RhcnQoKTsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBkZWNs
YXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgeworICAgIHwgcmF3X2RlY2xh
cmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCBtYXliZV9zcGFjZSB7CiAgICAgICAgICQkID0gZmFs
c2U7CiAgICAgfQotICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0ICc7JyBtYXli
ZV9zcGFjZSB7CisgICAgfCByYXdfZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0ICc7JyBt
YXliZV9zcGFjZSB7CiAgICAgICAgICQkID0gZmFsc2U7CiAgICAgfQogICAgIHwgZXJyb3IgJzsn
IG1heWJlX3NwYWNlIHsKQEAgLTEzMzUsNyArMTQwMCw3IEBAIGRlY2xfbGlzdDoKICAgICB8IGVy
cm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewogICAgICAgICAk
JCA9IGZhbHNlOwogICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiAnOycgbWF5YmVf
c3BhY2UgeworICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uX3NlcCBtYXliZV9zcGFjZSB7CiAg
ICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAg
ICAgICAgIHAtPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAgICQkID0gJDE7CkBAIC0xMzU0
LDcgKzE0MTksMjkgQEAgZGVjbF9saXN0OgogICAgIH0KICAgICA7CiAKLWRlY2xhcmF0aW9uOgor
bmVzdGVkX3J1bGVzZXRfc3RhcnQ6ICcmJyBtYXliZV9zcGFjZSB7CisgICAgQ1NTUGFyc2VyKiBw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICBwLT5wdXNoTmVzdGVkU2Vs
ZWN0b3IoJDIpOworfQorCitkZWNsYXJhdGlvbl9zZXA6CisgICAgbmVzdGVkX3J1bGVzZXQgewor
ICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IHJhd19kZWNsYXJhdGlvbiAnOycgeworICAg
ICAgICAkJCA9ICQxOworICAgIH0KKworbmVzdGVkX3J1bGVzZXQ6CisgICAgbmVzdGVkX3J1bGVz
ZXRfc3RhcnQgYmVmb3JlX3NlbGVjdG9yX2xpc3QgbmVzdGVkX3J1bGVzZXRfY29udGVudHMgewor
ICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwor
ICAgICAgICBwLT5wb3BOZXN0ZWRTZWxlY3RvcigpOworICAgICAgICBpZiAoJDMpCisgICAgICAg
ICAgICBwLT5tX3N0eWxlU2hlZXQtPnBhcnNlckFwcGVuZFJ1bGUoJDMpOworICAgICAgICAkJCA9
IGZhbHNlOworICAgIH0KKworcmF3X2RlY2xhcmF0aW9uOgogICAgIFZBUl9ERUZJTklUSU9OICc6
JyBtYXliZV9zcGFjZSBleHByIHByaW8gewogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAg
ICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwpAQCAt
MTM3MiwxMCArMTQ1OSwxMCBAQCBkZWNsYXJhdGlvbjoKICAgICAgICAgYm9vbCBpc1Byb3BlcnR5
UGFyc2VkID0gZmFsc2U7CiAgICAgICAgIGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAgcC0+
bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAg
aW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOwor
ICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX3BhcnNlZFByb3BlcnRp
ZXMtPnNpemUoKTsKICAgICAgICAgICAgICQkID0gcC0+cGFyc2VWYWx1ZShzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPigkMSksICQ1KTsKICAgICAgICAgICAgIGlmICghJCQpCi0gICAgICAgICAg
ICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMuc2l6
ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgcC0+cm9sbGJhY2tM
YXN0UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9sZFBhcnNlZFBy
b3BlcnRpZXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGlzUHJvcGVydHlQ
YXJzZWQgPSB0cnVlOwogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFnZVJ1bGUuaAppbmRleCAxNjM5MDBjZDFlZTM4OWVhZmFkOWZmNDQ4N2M2YTg0
YmJiZDJhNWU1Li44ZDFhNjAxYTFmNTNiNTllNTc4MDgwMmFjYWY2ZTZhZDM1ODRkZjc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFnZVJ1bGUuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgY3NzVGV4dCgp
IGNvbnN0OwotCiAgICAgdm9pZCByZWF0dGFjaChTdHlsZVJ1bGVQYWdlKik7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDY1MDg0NDA2MDQ3N2NmYzZlYTZmZGVhZjEx
ZWM2M2IzNGFjNjQ2ZTcuLjJlZTg1M2QyNmVmNGM0Y2NkZWVkNzA4NzkzNzU3MjkyYTYwNjNmM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0yNDMsNiArMjQzLDcgQEAgQ1NTUGFyc2Vy
OjpDU1NQYXJzZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1faW1w
b3J0YW50KGZhbHNlKQogICAgICwgbV9pZChDU1NQcm9wZXJ0eUludmFsaWQpCiAgICAgLCBtX3N0
eWxlU2hlZXQoMCkKKyAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhhZG9wdFB0cihuZXcgUGFyc2Vk
UHJvcGVydHlWZWN0b3IpKQogICAgICwgbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yKDAp
CiAgICAgLCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3goSU5WQUxJRF9OVU1f
UEFSU0VEX1BST1BFUlRJRVMpCiAgICAgLCBtX2luUGFyc2VTaG9ydGhhbmQoMCkKQEAgLTI1NCw2
ICsyNTUsNyBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0KQogICAgICwgbV9wYXJzZWRUZXh0UHJlZml4TGVuZ3RoKDApCiAgICAgLCBtX3Byb3Bl
cnR5UmFuZ2UoVUlOVF9NQVgsIFVJTlRfTUFYKQogICAgICwgbV9ydWxlU291cmNlRGF0YVJlc3Vs
dCgwKQorICAgICwgbV90cmFpbGluZ1NwYWNlKHRydWUpCiAgICAgLCBtX3BhcnNpbmdNb2RlKE5v
cm1hbE1vZGUpCiAgICAgLCBtX2N1cnJlbnRDaGFyYWN0ZXIoMCkKICAgICAsIG1fdG9rZW5TdGFy
dCgwKQpAQCAtMjYyLDYgKzI2NCw3IEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX2xhc3RTZWxlY3RvckxpbmVOdW1iZXIoMCkK
ICAgICAsIG1fYWxsb3dJbXBvcnRSdWxlcyh0cnVlKQogICAgICwgbV9hbGxvd05hbWVzcGFjZURl
Y2xhcmF0aW9ucyh0cnVlKQorICAgICwgbV9zZWxlY3RvclZlY3RvcihhZG9wdFB0cihuZXcgQ1NT
U2VsZWN0b3JWZWN0b3IpKQogewogI2lmIFlZREVCVUcgPiAwCiAgICAgY3NzeXlkZWJ1ZyA9IDE7
CkBAIC0xMTUxLDkgKzExNTQsOSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVBy
b3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eQogICAgIGJvb2wg
b2sgPSBmYWxzZTsKICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAgIGRl
bGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgIGlmICghbV9wYXJzZWRQcm9wZXJ0aWVzLmlz
RW1wdHkoKSkgeworICAgIGlmICghbV9wYXJzZWRQcm9wZXJ0aWVzLT5pc0VtcHR5KCkpIHsKICAg
ICAgICAgb2sgPSB0cnVlOwotICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGll
cyhtX3BhcnNlZFByb3BlcnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJv
cGVydGllcygqbV9wYXJzZWRQcm9wZXJ0aWVzLmdldCgpKTsKICAgICAgICAgY2xlYXJQcm9wZXJ0
aWVzKCk7CiAgICAgfQogCkBAIC0xMTc0LDcgKzExNzcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJpY3Qp
CiAgICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihzdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzLmZp
cnN0KCkudmFsdWUoKTsKKyAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9w
ZXJ0aWVzLT5maXJzdCgpLnZhbHVlKCk7CiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExOTIsNyArMTE5NSw3IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGNzc3l5cGFy
c2UodGhpcyk7CiAgICAgbV9ydWxlID0gMDsKIAotICAgIHJldHVybiAhbV9wYXJzZWRQcm9wZXJ0
aWVzLmlzRW1wdHkoKSAmJiBtX3BhcnNlZFByb3BlcnRpZXMuZmlyc3QoKS5pZCgpID09IENTU1By
b3BlcnR5Q29sb3I7CisgICAgcmV0dXJuICFtX3BhcnNlZFByb3BlcnRpZXMtPmlzRW1wdHkoKSAm
JiBtX3BhcnNlZFByb3BlcnRpZXMtPmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eUNvbG9yOwog
fQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBjb25z
dCBTdHJpbmcmIHN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTI0Miw5ICsxMjQ1LDkg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldCogZGVj
bGFyYXRpb24sIGNvbnN0IFN0cmluZyYgc3QKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgaWYg
KG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQogICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1
ZXMoKTsKLSAgICBpZiAoIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKKyAgICBpZiAo
IW1fcGFyc2VkUHJvcGVydGllcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsKLSAg
ICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVz
KTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMoKm1fcGFyc2VkUHJv
cGVydGllcy5nZXQoKSk7CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAt
MTI4MSwxNCArMTI4NCwxNCBAQCBQYXNzT3duUHRyPE1lZGlhUXVlcnk+IENTU1BhcnNlcjo6cGFy
c2VNZWRpYVF1ZXJ5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogfQogCiAjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCi1zdGF0aWMgaW5saW5lIHZvaWQgZmlsdGVyUHJvcGVydGllcyhib29sIGltcG9y
dGFudCwgY29uc3QgQ1NTUGFyc2VyOjpQYXJzZWRQcm9wZXJ0eVZlY3RvciYgaW5wdXQsIFZlY3Rv
cjxDU1NQcm9wZXJ0eSwgMjU2PiYgb3V0cHV0LCBzaXplX3QmIHVudXNlZEVudHJpZXMsIEJpdEFy
cmF5PG51bUNTU1Byb3BlcnRpZXM+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9taWNTdHJp
bmc+JiBzZWVuVmFyaWFibGVzKQorc3RhdGljIGlubGluZSB2b2lkIGZpbHRlclByb3BlcnRpZXMo
Ym9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJvcGVydHlWZWN0b3IqIGlu
cHV0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mIG91dHB1dCwgc2l6ZV90JiB1bnVzZWRFbnRy
aWVzLCBCaXRBcnJheTxudW1DU1NQcm9wZXJ0aWVzPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8
QXRvbWljU3RyaW5nPiYgc2VlblZhcmlhYmxlcykKICNlbHNlCi1zdGF0aWMgaW5saW5lIHZvaWQg
ZmlsdGVyUHJvcGVydGllcyhib29sIGltcG9ydGFudCwgY29uc3QgQ1NTUGFyc2VyOjpQYXJzZWRQ
cm9wZXJ0eVZlY3RvciYgaW5wdXQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiYgb3V0cHV0LCBz
aXplX3QmIHVudXNlZEVudHJpZXMsIEJpdEFycmF5PG51bUNTU1Byb3BlcnRpZXM+JiBzZWVuUHJv
cGVydGllcykKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1wb3J0
YW50LCBjb25zdCBDU1NQYXJzZXI6OlBhcnNlZFByb3BlcnR5VmVjdG9yKiBpbnB1dCwgVmVjdG9y
PENTU1Byb3BlcnR5LCAyNTY+JiBvdXRwdXQsIHNpemVfdCYgdW51c2VkRW50cmllcywgQml0QXJy
YXk8bnVtQ1NTUHJvcGVydGllcz4mIHNlZW5Qcm9wZXJ0aWVzKQogI2VuZGlmCiB7CiAgICAgLy8g
QWRkIHByb3BlcnRpZXMgaW4gcmV2ZXJzZSBvcmRlciBzbyB0aGF0IGhpZ2hlc3QgcHJpb3JpdHkg
ZGVmaW5pdGlvbnMgYXJlIHJlYWNoZWQgZmlyc3QuIER1cGxpY2F0ZSBkZWZpbml0aW9ucyBjYW4g
dGhlbiBiZSBpZ25vcmVkIHdoZW4gZm91bmQuCi0gICAgZm9yIChpbnQgaSA9IGlucHV0LnNpemUo
KSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0
eSA9IGlucHV0W2ldOworICAgIGZvciAoaW50IGkgPSBpbnB1dC0+c2l6ZSgpIC0gMTsgaSA+PSAw
OyAtLWkpIHsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gaW5wdXQtPmF0
KGkpOwogICAgICAgICBpZiAocHJvcGVydHkuaXNJbXBvcnRhbnQoKSAhPSBpbXBvcnRhbnQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKQEAgLTEzMTIs
MTcgKzEzMTUsMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZpbHRlclByb3BlcnRpZXMoYm9vbCBp
bXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJvcGUKIFBhc3NSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVByb3BlcnR5U2V0KCkKIHsKICAgICBC
aXRBcnJheTxudW1DU1NQcm9wZXJ0aWVzPiBzZWVuUHJvcGVydGllczsKLSAgICBzaXplX3QgdW51
c2VkRW50cmllcyA9IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CisgICAgc2l6ZV90IHVudXNl
ZEVudHJpZXMgPSBtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKICAgICBWZWN0b3I8Q1NTUHJv
cGVydHksIDI1Nj4gcmVzdWx0cyh1bnVzZWRFbnRyaWVzKTsKIAogICAgIC8vIEltcG9ydGFudCBw
cm9wZXJ0aWVzIGhhdmUgaGlnaGVyIHByaW9yaXR5LCBzbyBhZGQgdGhlbSBmaXJzdC4gRHVwbGlj
YXRlIGRlZmluaXRpb25zIGNhbiB0aGVuIGJlIGlnbm9yZWQgd2hlbiBmb3VuZC4KICNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gc2VlblZhcmlhYmxl
czsKLSAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUsIG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0
cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMsIHNlZW5WYXJpYWJsZXMpOwotICAgIGZp
bHRlclByb3BlcnRpZXMoZmFsc2UsIG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2Vk
RW50cmllcywgc2VlblByb3BlcnRpZXMsIHNlZW5WYXJpYWJsZXMpOworICAgIGZpbHRlclByb3Bl
cnRpZXModHJ1ZSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmdldCgpLCByZXN1bHRzLCB1bnVzZWRFbnRy
aWVzLCBzZWVuUHJvcGVydGllcywgc2VlblZhcmlhYmxlcyk7CisgICAgZmlsdGVyUHJvcGVydGll
cyhmYWxzZSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmdldCgpLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVz
LCBzZWVuUHJvcGVydGllcywgc2VlblZhcmlhYmxlcyk7CiAjZWxzZQotICAgIGZpbHRlclByb3Bl
cnRpZXModHJ1ZSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBz
ZWVuUHJvcGVydGllcyk7Ci0gICAgZmlsdGVyUHJvcGVydGllcyhmYWxzZSwgbV9wYXJzZWRQcm9w
ZXJ0aWVzLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcyk7CisgICAgZmls
dGVyUHJvcGVydGllcyh0cnVlLCBtX3BhcnNlZFByb3BlcnRpZXMuZ2V0KCksIHJlc3VsdHMsIHVu
dXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVzKTsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKGZhbHNl
LCBtX3BhcnNlZFByb3BlcnRpZXMuZ2V0KCksIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Q
cm9wZXJ0aWVzKTsKICNlbmRpZgogICAgIGlmICh1bnVzZWRFbnRyaWVzKQogICAgICAgICByZXN1
bHRzLnJlbW92ZSgwLCB1bnVzZWRFbnRyaWVzKTsKQEAgLTEzMzIsMTkgKzEzMzUsMTkgQEAgUGFz
c1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUHJvcGVydHlT
ZXQoKQogCiB2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQs
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNp
dCkKIHsKLSAgICBtX3BhcnNlZFByb3BlcnRpZXMuYXBwZW5kKENTU1Byb3BlcnR5KHByb3BJZCwg
dmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5k
IHx8IGltcGxpY2l0KSk7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5hcHBlbmQoQ1NTUHJvcGVy
dHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1faW1wbGlj
aXRTaG9ydGhhbmQgfHwgaW1wbGljaXQpKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnJvbGxiYWNr
TGFzdFByb3BlcnRpZXMoaW50IG51bSkKIHsKICAgICBBU1NFUlQobnVtID49IDApOwotICAgIEFT
U0VSVChtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihu
dW0pKTsKLSAgICBtX3BhcnNlZFByb3BlcnRpZXMuc2hyaW5rKG1fcGFyc2VkUHJvcGVydGllcy5z
aXplKCkgLSBudW0pOworICAgIEFTU0VSVChtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSA+PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtKSk7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5zaHJp
bmsobV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBudW0pOwogfQogCiB2b2lkIENTU1BhcnNl
cjo6Y2xlYXJQcm9wZXJ0aWVzKCkKIHsKLSAgICBtX3BhcnNlZFByb3BlcnRpZXMuY2xlYXIoKTsK
KyAgICBtX3BhcnNlZFByb3BlcnRpZXMtPmNsZWFyKCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0
aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7CiAgICAg
bV9oYXNGb250RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKIH0KQEAgLTE3NTYsNyArMTc1OSw3IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKICAg
ICAgICAgaWYgKG51bSAhPSAxIHx8ICFwYXJzZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBp
bXBvcnRhbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBDU1NWYWx1ZSog
dmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CisgICAgICAgIENTU1Zh
bHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+bGFzdCgpLnZhbHVlKCk7CiAgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTc3OSw3ICsxNzgyLDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQog
ICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJT
cGFjaW5nKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckhvcml6b250YWxTcGFjaW5nLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGll
cy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2Vk
UHJvcGVydGllcy0+bGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZywgdmFsdWUsIGltcG9ydGFudCk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjQyMSw3ICsyNDI0LDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUod2Vi
a2l0TWFyZ2luQ29sbGFwc2VTaG9ydGhhbmQoKS5wcm9wZXJ0aWVzKClbMF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICAgICAgQ1NT
VmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5sYXN0KCkudmFsdWUoKTsKICAgICAg
ICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdE1hcmdpbkNvbGxhcHNlU2hvcnRoYW5kKCkucHJvcGVy
dGllcygpWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CkBAIC0zMjQyLDcgKzMyNDUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2U0VmFs
dWVzKENTU1Byb3BlcnR5SUQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEICpwcm9wZXJ0aQog
ICAgICAgICBjYXNlIDE6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVz
WzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsK
KyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+bGFzdCgp
LnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywg
UHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFd
LCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNb
Ml0sIHZhbHVlLCBpbXBvcnRhbnQpOwpAQCAtMzI1MiwxNyArMzI1NSwxNyBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2U0VmFsdWVzKENTU1Byb3BlcnR5SUQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0
eUlEICpwcm9wZXJ0aQogICAgICAgICBjYXNlIDI6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VW
YWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNb
MV0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fcGFyc2VkUHJvcGVydGll
cy5zaXplKCkgLSAyXS52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9w
YXJzZWRQcm9wZXJ0aWVzLT5hdChtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIDIpLnZhbHVl
KCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVy
dHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJdLCB2YWx1
ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21f
cGFyc2VkUHJvcGVydGllcy5zaXplKCkgLSAyXS52YWx1ZSgpOworICAgICAgICAgICAgdmFsdWUg
PSBtX3BhcnNlZFByb3BlcnRpZXMtPmF0KG1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gMiku
dmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBp
bXBvcnRhbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSAz
OiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVl
KHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fcGFy
c2VkUHJvcGVydGllcy5zaXplKCkgLSAyXS52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUq
IHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5hdChtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUo
KSAtIDIpLnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUo
dGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0
aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzY2OSw3
ICs3NjcyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmxvd1RocmVhZChjb25zdCBTdHJpbmcm
IGZsb3dOYW1lKQogCiAgICAgbV9ydWxlID0gMDsKIAotICAgIHJldHVybiAoKG1fcGFyc2VkUHJv
cGVydGllcy5zaXplKCkgPT0gMSkgJiYgKG1fcGFyc2VkUHJvcGVydGllcy5maXJzdCgpLmlkKCkg
PT0gQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bykpOworICAgIHJldHVybiAoKG1fcGFyc2VkUHJv
cGVydGllcy0+c2l6ZSgpID09IDEpICYmIChtX3BhcnNlZFByb3BlcnRpZXMtPmZpcnN0KCkuaWQo
KSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dJbnRvKSk7CiB9CiAKIC8vIG5vbmUgfCA8aWRlbnQ+
CkBAIC05MzI4LDE0ICs5MzMxLDE0IEBAIFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENT
U1BhcnNlcjo6c2lua0Zsb2F0aW5nU2VsZWN0b3IoQ1NTUGFyc2VyU2VsZWN0b3IqCiAgICAgcmV0
dXJuIGFkb3B0UHRyKHNlbGVjdG9yKTsKIH0KIAotVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gPiogQ1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCkKK0NTU1Nl
bGVjdG9yVmVjdG9yKiBDU1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKQog
ewotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yVmVjdG9y
ID0gbmV3IFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID47CisgICAgQ1NTU2VsZWN0
b3JWZWN0b3IqIHNlbGVjdG9yVmVjdG9yID0gbmV3IENTU1NlbGVjdG9yVmVjdG9yOwogICAgIG1f
ZmxvYXRpbmdTZWxlY3RvclZlY3RvcnMuYWRkKHNlbGVjdG9yVmVjdG9yKTsKICAgICByZXR1cm4g
c2VsZWN0b3JWZWN0b3I7CiB9CiAKLVBhc3NPd25QdHI8VmVjdG9yPE93blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gPiA+IENTU1BhcnNlcjo6c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoVmVjdG9y
PE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JWZWN0b3IpCitQYXNzT3duUHRy
PENTU1NlbGVjdG9yVmVjdG9yID4gQ1NTUGFyc2VyOjpzaW5rRmxvYXRpbmdTZWxlY3RvclZlY3Rv
cihDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JWZWN0b3IpCiB7CiAgICAgaWYgKHNlbGVjdG9y
VmVjdG9yKSB7CiAgICAgICAgIEFTU0VSVChtX2Zsb2F0aW5nU2VsZWN0b3JWZWN0b3JzLmNvbnRh
aW5zKHNlbGVjdG9yVmVjdG9yKSk7CkBAIC05NTI4LDEzICs5NTMxLDEzIEBAIFN0eWxlUnVsZUtl
eWZyYW1lcyogQ1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZXNSdWxlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgUGFzc093blB0CiAgICAgcmV0dXJuIHJ1bGVQdHI7CiB9CiAKLVN0eWxlUnVsZUJhc2UqIENT
U1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
ID4qIHNlbGVjdG9ycykKK1N0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxl
KENTU1NlbGVjdG9yVmVjdG9yKiBzZWxlY3RvcnMpCiB7CiAgICAgU3R5bGVSdWxlKiByZXN1bHQg
PSAwOwogICAgIGlmIChzZWxlY3RvcnMpIHsKICAgICAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0g
bV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwogICAgICAgICBSZWZQdHI8U3R5
bGVSdWxlPiBydWxlID0gU3R5bGVSdWxlOjpjcmVhdGUobV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVy
KTsKLSAgICAgICAgcnVsZS0+cGFyc2VyQWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3JzKTsK
KyAgICAgICAgcnVsZS0+cGFyc2VyQWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3JzLCBtX25l
c3RlZFNlbGVjdG9yU3RhY2spOwogICAgICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMp
CiAgICAgICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKICAgICAgICAgcnVsZS0+
c2V0UHJvcGVydGllcyhjcmVhdGVTdHlsZVByb3BlcnR5U2V0KCkpOwpAQCAtOTU0OSw4ICs5NTUy
LDggQEAgU3R5bGVSdWxlQmFzZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPE93
blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2UKIFN0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6
Y3JlYXRlRm9udEZhY2VSdWxlKCkKIHsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93
TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0
eSYgcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ1NT
UHJvcGVydHkmIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5hdChpKTsKICAgICAgICAg
aWYgKHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlGb250VmFyaWFudCAmJiBwcm9wZXJ0eS52
YWx1ZSgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICBwcm9wZXJ0eS53cmFwVmFs
dWVJbkNvbW1hU2VwYXJhdGVkTGlzdCgpOwogICAgICAgICBlbHNlIGlmIChwcm9wZXJ0eS5pZCgp
ID09IENTU1Byb3BlcnR5Rm9udEZhbWlseSAmJiAoIXByb3BlcnR5LnZhbHVlKCktPmlzVmFsdWVM
aXN0KCkgfHwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJvcGVydHkudmFsdWUoKSktPmxl
bmd0aCgpICE9IDEpKSB7CkBAIC05NjQxLDkgKzk2NDQsOSBAQCBTdHlsZVJ1bGVCYXNlKiBDU1NQ
YXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VT
ZWxlYwogICAgIFN0eWxlUnVsZVBhZ2UqIHBhZ2VSdWxlID0gMDsKICAgICBpZiAocGFnZVNlbGVj
dG9yKSB7CiAgICAgICAgIFJlZlB0cjxTdHlsZVJ1bGVQYWdlPiBydWxlID0gU3R5bGVSdWxlUGFn
ZTo6Y3JlYXRlKCk7Ci0gICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4g
c2VsZWN0b3JWZWN0b3I7CisgICAgICAgIENTU1NlbGVjdG9yVmVjdG9yIHNlbGVjdG9yVmVjdG9y
OwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFnZVNlbGVjdG9yKTsKLSAgICAgICAg
cnVsZS0+cGFyc2VyQWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgICAg
IHJ1bGUtPnBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IsIG1fbmVzdGVk
U2VsZWN0b3JTdGFjayk7CiAgICAgICAgIHJ1bGUtPnNldFByb3BlcnRpZXMoY3JlYXRlU3R5bGVQ
cm9wZXJ0eVNldCgpKTsKICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBt
X3BhcnNlZFJ1bGVzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CkBAIC05NjUzLDcgKzk2NTYsNyBA
QCBTdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBhc3NPd25QdHI8Q1NT
UGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlYwogICAgIHJldHVybiBwYWdlUnVsZTsKIH0KIAotdm9p
ZCBDU1NQYXJzZXI6OnNldFJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzKQordm9pZCBDU1NQYXJzZXI6OnNldFJl
dXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9ycykK
IHsKICAgICBpZiAoc2VsZWN0b3JzKQogICAgICAgICBtX3JldXNhYmxlUmVnaW9uU2VsZWN0b3JW
ZWN0b3Iuc3dhcCgqc2VsZWN0b3JzKTsKQEAgLTk2NjYsNyArOTY2OSw3IEBAIFN0eWxlUnVsZUJh
c2UqIENTU1BhcnNlcjo6Y3JlYXRlUmVnaW9uUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+KiByCiAKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNl
RGVjbGFyYXRpb25zID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U3R5bGVSdWxlUmVnaW9uPiByZWdp
b25SdWxlID0gU3R5bGVSdWxlUmVnaW9uOjpjcmVhdGUocmVnaW9uU2VsZWN0b3IsICpydWxlcyk7
CisgICAgUmVmUHRyPFN0eWxlUnVsZVJlZ2lvbj4gcmVnaW9uUnVsZSA9IFN0eWxlUnVsZVJlZ2lv
bjo6Y3JlYXRlKHJlZ2lvblNlbGVjdG9yLCBtX25lc3RlZFNlbGVjdG9yU3RhY2ssICpydWxlcyk7
CiAKICAgICBTdHlsZVJ1bGVSZWdpb24qIHJlc3VsdCA9IHJlZ2lvblJ1bGUuZ2V0KCk7CiAgICAg
bV9wYXJzZWRSdWxlcy5hcHBlbmQocmVnaW9uUnVsZS5yZWxlYXNlKCkpOwpAQCAtOTY4OSwyMiAr
OTY5MiwyMiBAQCBTdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZU1hcmdpbkF0UnVsZShD
U1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSAvKiBtYXJnaQogCiB2b2lkIENTU1BhcnNlcjo6c3Rh
cnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKQogewotICAgIG1fbnVtUGFyc2VkUHJvcGVydGll
c0JlZm9yZU1hcmdpbkJveCA9IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CisgICAgbV9udW1Q
YXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXpl
KCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKQog
ewotICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAt
IG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCk7CisgICAgcm9sbGJhY2tMYXN0
UHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG1fbnVtUGFyc2VkUHJvcGVy
dGllc0JlZm9yZU1hcmdpbkJveCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7CiB9CiAKIHZvaWQgQ1NTUGFy
c2VyOjpkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKQogewogICAgIEFTU0VSVChtX2hhc0ZvbnRG
YWNlT25seVZhbHVlcyk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGFyc2VkUHJv
cGVydGllcy5zaXplKCk7KSB7Ci0gICAgICAgIENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IG1fcGFy
c2VkUHJvcGVydGllc1tpXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLT5zaXplKCk7KSB7CisgICAgICAgIENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IG1f
cGFyc2VkUHJvcGVydGllcy0+YXQoaSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eS5pZCgpID09IENT
U1Byb3BlcnR5Rm9udFZhcmlhbnQgJiYgcHJvcGVydHkudmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkg
ewotICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnJlbW92ZShpKTsKKyAgICAgICAgICAg
IG1fcGFyc2VkUHJvcGVydGllcy0+cmVtb3ZlKGkpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KICAgICAgICAgKytpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDZhY2JiYTI1
MjkzMDU1YTE2MzM5MmYxOGQ2NzdlMWE4YTU2YTg0YjMuLjI5MDE5ZGMxYjdiZDMyNmE1Y2VkZTRi
N2FiOWZmNjI5MzVlNjJiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTgzLDcgKzgzLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSk7CiAg
ICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBudW0pOwotICAgIGJvb2wgaGFzUHJv
cGVydGllcygpIGNvbnN0IHsgcmV0dXJuICFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9
CisgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVy
dGllcy0+aXNFbXB0eSgpOyB9CiAKICAgICBib29sIHBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCwg
Ym9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwg
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYsIGJvb2wgaW1wb3J0YW50KTsKQEAgLTI0MSw4
ICsyNDEsOCBAQCBwdWJsaWM6CiAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKICAgICBQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBzaW5rRmxvYXRp
bmdTZWxlY3RvcihDU1NQYXJzZXJTZWxlY3RvciopOwogCi0gICAgVmVjdG9yPE93blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gPiogY3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpOwotICAgIFBh
c3NPd25QdHI8VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiA+IHNpbmtGbG9hdGlu
Z1NlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qKTsKKyAg
ICBDU1NTZWxlY3RvclZlY3RvciogY3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpOworICAg
IFBhc3NPd25QdHI8Q1NTU2VsZWN0b3JWZWN0b3IgPiBzaW5rRmxvYXRpbmdTZWxlY3RvclZlY3Rv
cihDU1NTZWxlY3RvclZlY3RvciopOwogCiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBjcmVhdGVG
bG9hdGluZ1ZhbHVlTGlzdCgpOwogICAgIFBhc3NPd25QdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBz
aW5rRmxvYXRpbmdWYWx1ZUxpc3QoQ1NTUGFyc2VyVmFsdWVMaXN0Kik7CkBAIC0yNjAsMTAgKzI2
MCwxMCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
ID4gUnVsZUxpc3Q7CiAgICAgU3R5bGVSdWxlQmFzZSogY3JlYXRlTWVkaWFSdWxlKE1lZGlhUXVl
cnlTZXQqLCBSdWxlTGlzdCopOwogICAgIFJ1bGVMaXN0KiBjcmVhdGVSdWxlTGlzdCgpOwotICAg
IFN0eWxlUnVsZUJhc2UqIGNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+KiBzZWxlY3RvcnMpOworICAgIFN0eWxlUnVsZUJhc2UqIGNyZWF0ZVN0eWxlUnVs
ZShDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JzKTsKICAgICBTdHlsZVJ1bGVCYXNlKiBjcmVh
dGVGb250RmFjZVJ1bGUoKTsKICAgICBTdHlsZVJ1bGVCYXNlKiBjcmVhdGVQYWdlUnVsZShQYXNz
T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBwYWdlU2VsZWN0b3IpOwotICAgIFN0eWxlUnVsZUJh
c2UqIGNyZWF0ZVJlZ2lvblJ1bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiog
cmVnaW9uU2VsZWN0b3IsIFJ1bGVMaXN0KiBydWxlcyk7CisgICAgU3R5bGVSdWxlQmFzZSogY3Jl
YXRlUmVnaW9uUnVsZShDU1NTZWxlY3RvclZlY3RvciogcmVnaW9uU2VsZWN0b3IsIFJ1bGVMaXN0
KiBydWxlcyk7CiAgICAgU3R5bGVSdWxlQmFzZSogY3JlYXRlTWFyZ2luQXRSdWxlKENTU1NlbGVj
dG9yOjpNYXJnaW5Cb3hUeXBlKTsKICAgICB2b2lkIHN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2lu
Qm94KCk7CiAgICAgdm9pZCBlbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKQEAgLTI4Niwx
MCArMjg2LDMzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZEJsb2NrSGl0KCk7CiAKLSAg
ICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiByZXVzYWJsZVNlbGVjdG9yVmVj
dG9yKCkgeyByZXR1cm4gJm1fcmV1c2FibGVTZWxlY3RvclZlY3RvcjsgfQorICAgIENTU1NlbGVj
dG9yVmVjdG9yKiBzZWxlY3RvclZlY3RvcigpIHsgcmV0dXJuIG1fc2VsZWN0b3JWZWN0b3IuZ2V0
KCk7IH0KIAotICAgIHZvaWQgc2V0UmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcihWZWN0b3I8
T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcnMpOwotICAgIFZlY3RvcjxPd25Q
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoKSB7
IHJldHVybiAmbV9yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yOyB9CisgICAgdm9pZCBwdXNo
TmVzdGVkU2VsZWN0b3IoYm9vbCB0cmFpbGluZ1NwYWNlKQorICAgIHsKKyAgICAgICAgbV9uZXN0
ZWRTZWxlY3RvclN0YWNrLmFwcGVuZChtX3NlbGVjdG9yVmVjdG9yLnJlbGVhc2UoKSk7CisgICAg
ICAgIG1fc2VsZWN0b3JWZWN0b3IgPSBhZG9wdFB0cihuZXcgQ1NTU2VsZWN0b3JWZWN0b3IpOwor
CisgICAgICAgIG1fc3RhY2tlZFBhcnNlZFByb3BlcnRpZXMuYXBwZW5kKG5ldyBTdGFja2VkUGFy
c2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMucmVsZWFzZSgpLCBtX251bVBhcnNlZFBy
b3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gpKTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzID0g
YWRvcHRQdHIobmV3IFBhcnNlZFByb3BlcnR5VmVjdG9yKTsKKyAgICAgICAgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gMDsKKyAgICAgICAgbV90cmFpbGluZ1NwYWNlID0g
dHJhaWxpbmdTcGFjZTsKKyAgICB9CisKKyAgICB2b2lkIHBvcE5lc3RlZFNlbGVjdG9yKCkKKyAg
ICB7CisgICAgICAgIG1fc2VsZWN0b3JWZWN0b3IgPSBtX25lc3RlZFNlbGVjdG9yU3RhY2subGFz
dCgpLnJlbGVhc2UoKTsKKyAgICAgICAgbV9uZXN0ZWRTZWxlY3RvclN0YWNrLnJlbW92ZUxhc3Qo
KTsKKworICAgICAgICBTdGFja2VkUGFyc2VkUHJvcGVydGllcyAqc3RhY2tIZWFkID0gbV9zdGFj
a2VkUGFyc2VkUHJvcGVydGllcy5sYXN0KCk7CisgICAgICAgIG1fc3RhY2tlZFBhcnNlZFByb3Bl
cnRpZXMucmVtb3ZlTGFzdCgpOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBzdGFja0hl
YWQtPm1fcGFyc2VkUHJvcGVydGllcy5yZWxlYXNlKCk7CisgICAgICAgIG1fbnVtUGFyc2VkUHJv
cGVydGllc0JlZm9yZU1hcmdpbkJveCA9IHN0YWNrSGVhZC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVz
QmVmb3JlTWFyZ2luQm94OworICAgICAgICBtX3RyYWlsaW5nU3BhY2UgPSB0cnVlOworICAgIH0K
KworICAgIHZvaWQgc2V0UmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZl
Y3Rvciogc2VsZWN0b3JzKTsKKyAgICBDU1NTZWxlY3RvclZlY3RvciogcmV1c2FibGVSZWdpb25T
ZWxlY3RvclZlY3RvcigpIHsgcmV0dXJuICZtX3JldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7
IH0KIAogICAgIHZvaWQgdXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CiAgICAg
dm9pZCB1cGRhdGVMYXN0TWVkaWFMaW5lKE1lZGlhUXVlcnlTZXQqKTsKQEAgLTMwNywxMiArMzMw
LDI1IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8U3R5bGVLZXlmcmFtZT4gbV9rZXlmcmFtZTsKICAg
ICBPd25QdHI8TWVkaWFRdWVyeT4gbV9tZWRpYVF1ZXJ5OwogICAgIE93blB0cjxDU1NQYXJzZXJW
YWx1ZUxpc3Q+IG1fdmFsdWVMaXN0OworCiAgICAgdHlwZWRlZiBWZWN0b3I8Q1NTUHJvcGVydHks
IDI1Nj4gUGFyc2VkUHJvcGVydHlWZWN0b3I7Ci0gICAgUGFyc2VkUHJvcGVydHlWZWN0b3IgbV9w
YXJzZWRQcm9wZXJ0aWVzOworICAgIE93blB0cjxQYXJzZWRQcm9wZXJ0eVZlY3Rvcj4gbV9wYXJz
ZWRQcm9wZXJ0aWVzOwogICAgIENTU1NlbGVjdG9yTGlzdCogbV9zZWxlY3Rvckxpc3RGb3JQYXJz
ZVNlbGVjdG9yOwogCiAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94OwogCisgICAgc3RydWN0IFN0YWNrZWRQYXJzZWRQcm9wZXJ0aWVzIHsKKyAgICAgICAg
T3duUHRyPFBhcnNlZFByb3BlcnR5VmVjdG9yPiBtX3BhcnNlZFByb3BlcnRpZXM7CisgICAgICAg
IHVuc2lnbmVkIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveDsKKworICAgICAg
ICBTdGFja2VkUGFyc2VkUHJvcGVydGllcyhQYXNzT3duUHRyPFBhcnNlZFByb3BlcnR5VmVjdG9y
ID4gcGFyc2VkUHJvcGVydGllcywgdW5zaWduZWQgbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1h
cmdpbkJveCkKKyAgICAgICAgOiBtX3BhcnNlZFByb3BlcnRpZXMocGFyc2VkUHJvcGVydGllcykK
KyAgICAgICAgLCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gobnVtUGFyc2Vk
UHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCkKKyAgICAgICAgeyB9CisgICAgfTsKKworICAgIFZl
Y3RvcjxTdGFja2VkUGFyc2VkUHJvcGVydGllcyAqPiBtX3N0YWNrZWRQYXJzZWRQcm9wZXJ0aWVz
OworCiAgICAgaW50IG1faW5QYXJzZVNob3J0aGFuZDsKICAgICBDU1NQcm9wZXJ0eUlEIG1fY3Vy
cmVudFNob3J0aGFuZDsKICAgICBib29sIG1faW1wbGljaXRTaG9ydGhhbmQ7CkBAIC0zNDMsNiAr
Mzc5LDEwIEBAIHB1YmxpYzoKICAgICBpbnQgbGV4KHZvaWQqIHl5bHZhbCk7CiAgICAgaW50IHRv
a2VuKCkgeyByZXR1cm4gbV90b2tlbjsgfQogCisgICAgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0IG1f
bmVzdGVkU2VsZWN0b3JTdGFjazsKKworICAgIGJvb2wgbV90cmFpbGluZ1NwYWNlOworCiAgICAg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVl
KENTU1BhcnNlclZhbHVlKik7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3Jl
YXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsKIApAQCAtNDMwLDcgKzQ3
MCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiA+IG1fcGFy
c2VkTWVkaWFRdWVyeVNldHM7CiAgICAgVmVjdG9yPE93blB0cjxSdWxlTGlzdD4gPiBtX3BhcnNl
ZFJ1bGVMaXN0czsKICAgICBIYXNoU2V0PENTU1BhcnNlclNlbGVjdG9yKj4gbV9mbG9hdGluZ1Nl
bGVjdG9yczsKLSAgICBIYXNoU2V0PFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4q
PiBtX2Zsb2F0aW5nU2VsZWN0b3JWZWN0b3JzOworICAgIEhhc2hTZXQ8Q1NTU2VsZWN0b3JWZWN0
b3IqPiBtX2Zsb2F0aW5nU2VsZWN0b3JWZWN0b3JzOwogICAgIEhhc2hTZXQ8Q1NTUGFyc2VyVmFs
dWVMaXN0Kj4gbV9mbG9hdGluZ1ZhbHVlTGlzdHM7CiAgICAgSGFzaFNldDxDU1NQYXJzZXJGdW5j
dGlvbio+IG1fZmxvYXRpbmdGdW5jdGlvbnM7CiAKQEAgLTQ0MCw4ICs0ODAsOCBAQCBwcml2YXRl
OgogCiAgICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4gPiA+IG1fZmxvYXRp
bmdLZXlmcmFtZVZlY3RvcjsKIAotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
ID4gbV9yZXVzYWJsZVNlbGVjdG9yVmVjdG9yOwotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+ID4gbV9yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yOworICAgIE93blB0cjxD
U1NTZWxlY3RvclZlY3Rvcj4gbV9zZWxlY3RvclZlY3RvcjsKKyAgICBDU1NTZWxlY3RvclZlY3Rv
ciBtX3JldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7CiAKICAgICBSZWZQdHI8Q1NTQ2FsY1Zh
bHVlPiBtX3BhcnNlZENhbGN1bGF0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuY3BwCmluZGV4IDM3YTBkNDUyYzY1YzQ1NWU1YzQxMDRlNTRlNDc4OTJmYjIxNTVlMDQuLjYx
OGE5YWM5YzRlZmI2NzgyM2M4NTAzODFjMTFjOTIxYjUwMmU2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXJWYWx1ZXMuY3BwCkBAIC0xMTQsMTAgKzExNCwxMCBAQCBDU1NQYXJzZXJTZWxl
Y3Rvcjo6fkNTU1BhcnNlclNlbGVjdG9yKCkKICAgICB9CiB9CiAKLXZvaWQgQ1NTUGFyc2VyU2Vs
ZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gPiYgc2VsZWN0b3JWZWN0b3IpCit2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVj
dG9yVmVjdG9yKENTU1NlbGVjdG9yVmVjdG9yJiBzZWxlY3RvclZlY3RvciwgQ1NTU2VsZWN0b3JW
ZWN0b3JMaXN0JiBzdGFja2VkU2VsZWN0b3JzKQogewogICAgIENTU1NlbGVjdG9yTGlzdCogc2Vs
ZWN0b3JMaXN0ID0gZmFzdE5ldzxDU1NTZWxlY3Rvckxpc3Q+KCk7Ci0gICAgc2VsZWN0b3JMaXN0
LT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKKyAgICBzZWxlY3Rvckxpc3Qt
PmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IsIHN0YWNrZWRTZWxlY3RvcnMpOwog
ICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChhZG9wdFB0cihzZWxlY3Rvckxpc3QpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDkwZDI2YTQ2ZGU4MWRk
Nzk0ZmI3NDRhODk3MDQzMDYwMTMzOGZiZjAuLmIwN2MzMzBiMTRlMzgwYzI5YjExNWQ1NGM3NWRi
ZWY4MjI5MGM1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTEwMyw2
ICsxMDMsMTEgQEAgcHVibGljOgogICAgIE93blB0cjxDU1NQYXJzZXJWYWx1ZUxpc3Q+IGFyZ3M7
CiB9OwogCitjbGFzcyBDU1NQYXJzZXJTZWxlY3RvcjsKKwordHlwZWRlZiBWZWN0b3I8T3duUHRy
PENTU1BhcnNlclNlbGVjdG9yPiA+IENTU1NlbGVjdG9yVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8
T3duUHRyPENTU1NlbGVjdG9yVmVjdG9yPiA+IENTU1NlbGVjdG9yVmVjdG9yTGlzdDsKKwogY2xh
c3MgQ1NTUGFyc2VyU2VsZWN0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgpAQCAtMTExLDYgKzExNiw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NPd25QdHI8Q1NTU2Vs
ZWN0b3I+IHJlbGVhc2VTZWxlY3RvcigpIHsgcmV0dXJuIG1fc2VsZWN0b3IucmVsZWFzZSgpOyB9
CiAKKyAgICBQYXNzT3duUHRyPENTU1NlbGVjdG9yPiBkdXBsaWNhdGVTZWxlY3RvcigpIHsgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDU1NTZWxlY3RvcihtX3NlbGVjdG9yLmdldCgpKSk7IH0KKwogICAg
IHZvaWQgc2V0VGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNl
dFRhZyh2YWx1ZSk7IH0KICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpIHsgbV9zZWxlY3Rvci0+c2V0VmFsdWUodmFsdWUpOyB9CiAgICAgdm9pZCBzZXRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0QXR0cmlidXRl
KHZhbHVlKTsgfQpAQCAtMTE5LDcgKzEyNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWxh
dGlvbihDU1NTZWxlY3Rvcjo6UmVsYXRpb24gdmFsdWUpIHsgbV9zZWxlY3Rvci0+bV9yZWxhdGlv
biA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRGb3JQYWdlKCkgeyBtX3NlbGVjdG9yLT5zZXRGb3JQ
YWdlKCk7IH0KIAotICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENT
U1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3Rvcik7CisgICAgdm9pZCBzZXRQcmlvclJl
bGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlvbiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRQcmlv
clJlbGF0aW9uKHZhbHVlKTsgfQorIAorICAgIENTU1NlbGVjdG9yOjpSZWxhdGlvbiBnZXRQcmlv
clJlbGF0aW9uKCkgeyByZXR1cm4gbV9zZWxlY3Rvci0+Z2V0UHJpb3JSZWxhdGlvbigpOyB9CisK
KyAgICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3ImLCBDU1NTZWxl
Y3RvclZlY3Rvckxpc3QmKTsKIAogICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5
cGUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5wc2V1ZG9UeXBlKCk7IH0KICAgICBib29s
IGlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc1Vu
a25vd25Qc2V1ZG9FbGVtZW50KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4
IDEzNDc5YjY0MGFiOTYyN2JjMTViYWNjOWVhMmQ3NzQzNjA2ZDljY2UuLmI1OGUxNjg0ZGUzNTgw
NDNmODgwYzVlMWIwOWVjYTU2YzM0OWRjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNw
cApAQCAtMzgsNiArMzgsMzAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCitDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIGNv
cHkpCisgICAgOiBtX3JlbGF0aW9uKGNvcHktPm1fcmVsYXRpb24pCisgICAgLCBtX21hdGNoKGNv
cHktPm1fbWF0Y2gpCisgICAgLCBtX3BzZXVkb1R5cGUoY29weS0+bV9wc2V1ZG9UeXBlKQorICAg
ICwgbV9wYXJzZWROdGgoY29weS0+bV9wYXJzZWROdGgpCisgICAgLCBtX2lzTGFzdEluU2VsZWN0
b3JMaXN0KGNvcHktPm1faXNMYXN0SW5TZWxlY3Rvckxpc3QpCisgICAgLCBtX2lzTGFzdEluVGFn
SGlzdG9yeShjb3B5LT5tX2lzTGFzdEluVGFnSGlzdG9yeSkKKyAgICAsIG1faXNGb3JQYWdlKGNv
cHktPm1faXNGb3JQYWdlKQorICAgICwgbV9wcmlvclJlbGF0aW9uKGNvcHktPm1fcHJpb3JSZWxh
dGlvbikKKyAgICAsIG1fdGFnKGNvcHktPm1fdGFnKQoreworICAgIHNldFZhbHVlKGNvcHktPnZh
bHVlKCkpOworCisgICAgaWYgKGNvcHktPm1faGFzUmFyZURhdGEpIHsKKyAgICAgICAgY3JlYXRl
UmFyZURhdGEoKTsKKyAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYSA9IGNvcHktPm1fZGF0
YS5tX3JhcmVEYXRhLT5tX2E7CisgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2IgPSBjb3B5
LT5tX2RhdGEubV9yYXJlRGF0YS0+bV9iOworICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9h
dHRyaWJ1dGUgPSBjb3B5LT5tX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGU7CisgICAgICAg
IG1fZGF0YS5tX3JhcmVEYXRhLT5tX2FyZ3VtZW50ID0gY29weS0+bV9kYXRhLm1fcmFyZURhdGEt
Pm1fYXJndW1lbnQ7CisgICAgICAgIGlmIChjb3B5LT5tX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxl
Y3Rvckxpc3QuZ2V0KCkpCisgICAgICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rv
ckxpc3QgPSBjb3B5LT5tX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3Q7CisgICAgfQor
fQorCiB2b2lkIENTU1NlbGVjdG9yOjpjcmVhdGVSYXJlRGF0YSgpCiB7CiAgICAgaWYgKG1faGFz
UmFyZURhdGEpCkBAIC02NDgsNyArNjcyLDcgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1l
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFNlbGVj
dG9yTGlzdChQYXNzT3duUHRyPENTU1NlbGVjdG9yTGlzdD4gc2VsZWN0b3JMaXN0KQogewogICAg
IGNyZWF0ZVJhcmVEYXRhKCk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0
ID0gc2VsZWN0b3JMaXN0OworICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdCA9
IFJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3Q6OmNyZWF0ZShzZWxlY3Rvckxpc3QubGVha1B0cigp
KTsKIH0KIAogYm9vbCBDU1NTZWxlY3Rvcjo6cGFyc2VOdGgoKQpAQCAtNzA3LDYgKzczMSwxMiBA
QCBDU1NTZWxlY3Rvcjo6UmFyZURhdGE6On5SYXJlRGF0YSgpCiAgICAgICAgIG1fdmFsdWUtPmRl
cmVmKCk7CiB9CiAKKworUmVmY291bnRlZENTU1NlbGVjdG9yTGlzdDo6flJlZmNvdW50ZWRDU1NT
ZWxlY3Rvckxpc3QoKQoreworICAgIGRlbGV0ZSBtX2ltcGw7Cit9CisKIC8vIGEgaGVscGVyIGZ1
bmN0aW9uIGZvciBwYXJzaW5nIG50aC1hcmd1bWVudHMKIGJvb2wgQ1NTU2VsZWN0b3I6OlJhcmVE
YXRhOjpwYXJzZU50aCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IDJlOWU1OTA4
ZmNkMWVlMTM1MmU5MzY3NzIwMjVhMjg2YWVhNmJiNWMuLjkwYjc1OWQ3YjhkNjdhMzdmYzUxNWM0
MmEwZjVlYjMxOGIzNmI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC0zMSw2ICsz
MSwyNSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsK
IAorICAgIGNsYXNzIFJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3QgOiBwdWJsaWMgUmVmQ291bnRl
ZDxSZWZjb3VudGVkQ1NTU2VsZWN0b3JMaXN0PiB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3Q+IGNyZWF0ZShD
U1NTZWxlY3Rvckxpc3QqIGltcGwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSZWZjb3VudGVkQ1NTU2VsZWN0b3JMaXN0KGltcGwpKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgflJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3QoKTsKKwor
ICAgICAgICAgICAgQ1NTU2VsZWN0b3JMaXN0KiBnZXQoKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBtX2ltcGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0
ZToKKyAgICAgICAgICAgIENTU1NlbGVjdG9yTGlzdCAqbV9pbXBsOworICAgICAgICAgICAgUmVm
Y291bnRlZENTU1NlbGVjdG9yTGlzdChDU1NTZWxlY3Rvckxpc3QqIGltcGwpIDogbV9pbXBsKGlt
cGwpIHsgfQorICAgIH07CisKICAgICAvLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzZWxlY3Rv
ciBmb3IgYSBTdHlsZVJ1bGUKICAgICBjbGFzcyBDU1NTZWxlY3RvciB7CiAgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMzksNiArNTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIENTU1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgQ1NT
U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImKTsKIAorICAgICAgICBDU1NTZWxlY3RvcihDU1NT
ZWxlY3RvciogY29weSk7CisKICAgICAgICAgfkNTU1NlbGVjdG9yKCk7CiAKICAgICAgICAgLyoq
CkBAIC0xOTksMTQgKzIyMCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBBdG9taWNTdHJpbmcqPihtX2hhc1JhcmVEYXRhID8gJm1fZGF0YS5tX3JhcmVEYXRhLT5t
X3ZhbHVlIDogJm1fZGF0YS5tX3ZhbHVlKTsgfQogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGUoKSBjb25zdDsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmd1bWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9h
cmd1bWVudCA6IG51bGxBdG9tOyB9Ci0gICAgICAgIENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JM
aXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5t
X3NlbGVjdG9yTGlzdC5nZXQoKSA6IDA7IH0KKyAgICAgICAgQ1NTU2VsZWN0b3JMaXN0KiBzZWxl
Y3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhICYmIG1fZGF0YS5tX3JhcmVE
YXRhLT5tX3NlbGVjdG9yTGlzdCA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdC0+
Z2V0KCkgOiAwOyB9CiAKICAgICAgICAgdm9pZCBzZXRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dmFsdWUpIHsgbV90YWcgPSB2YWx1ZTsgfQorICAgICAgICB2b2lkIHNldFByaW9yUmVsYXRpb24o
UmVsYXRpb24gdmFsdWUpIHsgbV9wcmlvclJlbGF0aW9uID0gdmFsdWU7IH0KICAgICAgICAgdm9p
ZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICAgICAgdm9pZCBzZXRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2b2lkIHNldEFyZ3VtZW50KGNvbnN0
IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldFNlbGVjdG9yTGlzdChQYXNzT3duUHRy
PENTU1NlbGVjdG9yTGlzdD4pOwogCisgICAgICAgIFJlbGF0aW9uIGdldFByaW9yUmVsYXRpb24o
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbj4obV9wcmlvclJlbGF0aW9uKTsgfQorCiAg
ICAgICAgIGJvb2wgcGFyc2VOdGgoKTsKICAgICAgICAgYm9vbCBtYXRjaE50aChpbnQgY291bnQp
OwogCkBAIC0yMzcsNyArMjYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29s
IG1faXNMYXN0SW5UYWdIaXN0b3J5ICAgICA6IDE7CiAgICAgICAgIGJvb2wgbV9oYXNSYXJlRGF0
YSAgICAgICAgICAgIDogMTsKICAgICAgICAgYm9vbCBtX2lzRm9yUGFnZSAgICAgICAgICAgICAg
OiAxOwotCisgICAgICAgIHVuc2lnbmVkIG1fcHJpb3JSZWxhdGlvbiAgICAgIDogMzsgLy8gZW51
bSBSZWxhdGlvbgogICAgICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eUZvck9uZVNlbGVjdG9yKCkg
Y29uc3Q7CiAgICAgICAgIHVuc2lnbmVkIHNwZWNpZmljaXR5Rm9yUGFnZSgpIGNvbnN0OwogICAg
ICAgICB2b2lkIGV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3Q7CkBAIC0yNTcsNyArMjgxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgaW50IG1fYjsgLy8gVXNlZCBmb3IgOm50
aC0qCiAgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG1fYXR0cmlidXRlOyAvLyB1c2VkIGZvciBh
dHRyaWJ1dGUgc2VsZWN0b3IKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBtX2FyZ3VtZW50OyAv
LyBVc2VkIGZvciA6Y29udGFpbnMsIDpsYW5nIGFuZCA6bnRoLSoKLSAgICAgICAgICAgIE93blB0
cjxDU1NTZWxlY3Rvckxpc3Q+IG1fc2VsZWN0b3JMaXN0OyAvLyBVc2VkIGZvciA6LXdlYmtpdC1h
bnkgYW5kIDpub3QKKyAgICAgICAgICAgIFJlZlB0cjxSZWZjb3VudGVkQ1NTU2VsZWN0b3JMaXN0
PiBtX3NlbGVjdG9yTGlzdDsgLy8gVXNlZCBmb3IgOi13ZWJraXQtYW55IGFuZCA6bm90CiAgICAg
ICAgIAogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgUmFyZURhdGEoUGFzc1JlZlB0cjxB
dG9taWNTdHJpbmdJbXBsPiB2YWx1ZSk7CkBAIC0zMjgsMTMgKzM1MiwxNSBAQCBpbmxpbmUgdm9p
ZCBDU1NTZWxlY3Rvcjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICAg
ICAgaWYgKG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlKQogICAgICAgICAgICAgbV9kYXRhLm1f
cmFyZURhdGEtPm1fdmFsdWUtPmRlcmVmKCk7CiAgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5t
X3ZhbHVlID0gdmFsdWUuaW1wbCgpOwotICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV92YWx1
ZS0+cmVmKCk7CisgICAgICAgIGlmIChtX2RhdGEubV9yYXJlRGF0YS0+bV92YWx1ZSkKKyAgICAg
ICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlLT5yZWYoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAobV9kYXRhLm1fdmFsdWUpCiAgICAgICAgIG1fZGF0YS5tX3ZhbHVl
LT5kZXJlZigpOwogICAgIG1fZGF0YS5tX3ZhbHVlID0gdmFsdWUuaW1wbCgpOwotICAgIG1fZGF0
YS5tX3ZhbHVlLT5yZWYoKTsKKyAgICBpZiAobV9kYXRhLm1fdmFsdWUpCisgICAgICAgIG1fZGF0
YS5tX3ZhbHVlLT5yZWYoKTsKIH0KIAogaW5saW5lIHZvaWQgbW92ZShQYXNzT3duUHRyPENTU1Nl
bGVjdG9yPiBmcm9tLCBDU1NTZWxlY3RvciogdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ckxpc3QuY3BwCmluZGV4IGZiM2QxZjEyZmY2OWUxY2U5ZGY2NmNlMTA3M2NkNjI5NDRjN2JiMTUu
LjUzODcwYzAyZTcyMDMyNDFiMTMxODU1MDY2NWVhZjJkNDI0MjQwNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCkBAIC0yNCwxNCArMjQsMTcgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAorCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JM
aXN0LmgiCiAKLSNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlIDx3dGYvT3du
QXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEV4cGxvZGVkUmVzdWx0
cyA9IDB4MTAwMDA7CisKIENTU1NlbGVjdG9yTGlzdDo6fkNTU1NlbGVjdG9yTGlzdCgpCiB7CiAg
ICAgZGVsZXRlU2VsZWN0b3JzKCk7CkBAIC02MCw5ICs2MywxNSBAQCB2b2lkIENTU1NlbGVjdG9y
TGlzdDo6YWRvcHQoQ1NTU2VsZWN0b3JMaXN0JiBsaXN0KQogICAgIGxpc3QubV9zZWxlY3RvckFy
cmF5ID0gMDsKIH0KIAotdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0U2VsZWN0b3JWZWN0b3Io
VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JWZWN0b3IpCit2b2lk
IENTU1NlbGVjdG9yTGlzdDo6YWRvcHRTZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3RvciYg
c2VsZWN0b3JWZWN0b3IsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc3RhY2tlZFNlbGVjdG9ycykK
IHsKICAgICBkZWxldGVTZWxlY3RvcnMoKTsKKworI2lmICFFTkFCTEUoQ1NTX0hJRVJBUkNISUVT
KQorICAgIGlmICghc3RhY2tlZFNlbGVjdG9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KyNlbmRpZgorCiAgICAgY29uc3Qgc2l6ZV90IHZlY3RvclNpemUgPSBzZWxlY3RvclZlY3Rvci5z
aXplKCk7CiAgICAgc2l6ZV90IGZsYXR0ZW5lZFNpemUgPSAwOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdmVjdG9yU2l6ZTsgKytpKSB7CkBAIC03MCwzMSArNzksMTAxIEBAIHZvaWQgQ1NT
U2VsZWN0b3JMaXN0OjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+ID4mIHNlCiAgICAgICAgICAgICArK2ZsYXR0ZW5lZFNpemU7CiAgICAgfQogICAg
IEFTU0VSVChmbGF0dGVuZWRTaXplKTsKLSAgICBpZiAoZmxhdHRlbmVkU2l6ZSA9PSAxKSB7Cisg
ICAgLy8gSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGZsYXR0ZW5lZCBzZWxlY3RvciBjb21wb25l
bnQgYW5kIG5vIHN0YWNrZWQgc2VsZWN0b3JzIChpLmUuIHRoaXMgaXMgbm90CisgICAgLy8gcGFy
dCBvZiBhIGhpZXJhcmNoeSBvZiBzZWxlY3RvcnMpIHRoZW4gdXNlIHRoZSBmYXN0IHBhdGguCisg
ICAgaWYgKGZsYXR0ZW5lZFNpemUgPT0gMSAmJiBzdGFja2VkU2VsZWN0b3JzLmlzRW1wdHkoKSkg
ewogICAgICAgICBtX3NlbGVjdG9yQXJyYXkgPSBzZWxlY3RvclZlY3RvclswXS0+cmVsZWFzZVNl
bGVjdG9yKCkubGVha1B0cigpOwogICAgICAgICBtX3NlbGVjdG9yQXJyYXktPnNldExhc3RJblNl
bGVjdG9yTGlzdCgpOwogICAgICAgICBBU1NFUlQobV9zZWxlY3RvckFycmF5LT5pc0xhc3RJblRh
Z0hpc3RvcnkoKSk7CiAgICAgICAgIHNlbGVjdG9yVmVjdG9yLnNocmluaygwKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBtX3NlbGVjdG9yQXJyYXkgPSByZWludGVycHJldF9jYXN0PENT
U1NlbGVjdG9yKj4oZmFzdE1hbGxvYyhzaXplb2YoQ1NTU2VsZWN0b3IpICogZmxhdHRlbmVkU2l6
ZSkpOwotICAgIHNpemVfdCBhcnJheUluZGV4ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZlY3RvclNpemU7ICsraSkgewotICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogY3VycmVu
dCA9IHNlbGVjdG9yVmVjdG9yW2ldLmdldCgpOwotICAgICAgICB3aGlsZSAoY3VycmVudCkgewot
ICAgICAgICAgICAgT3duUHRyPENTU1NlbGVjdG9yPiBzZWxlY3RvciA9IGN1cnJlbnQtPnJlbGVh
c2VTZWxlY3RvcigpOwotICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnRhZ0hpc3Rvcnko
KTsKLSAgICAgICAgICAgIG1vdmUoc2VsZWN0b3IucmVsZWFzZSgpLCAmbV9zZWxlY3RvckFycmF5
W2FycmF5SW5kZXhdKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9zZWxlY3RvckFycmF5W2FycmF5
SW5kZXhdLmlzTGFzdEluU2VsZWN0b3JMaXN0KCkpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnQp
Ci0gICAgICAgICAgICAgICAgbV9zZWxlY3RvckFycmF5W2FycmF5SW5kZXhdLnNldE5vdExhc3RJ
blRhZ0hpc3RvcnkoKTsKLSAgICAgICAgICAgICsrYXJyYXlJbmRleDsKKworICAgIC8vIEZsYXR0
ZW4gdGhlIHNlbGVjdG9yIGhpZXJhcmNoeSBpbnRvIGV4cGxvZGVkU2VsZWN0b3JzLiBFYWNoIGV4
cGxvZGVkU2VsZWN0b3JzIHZlY3RvciBpcyBhIHNpbmdsZQorICAgIC8vIGVsZW1lbnQgZnJvbSB0
aGUgY2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhlIHNldHMgb2Ygc2VsZWN0b3JzIGF0IGVhY2ggbGV2
ZWwgaW4gdGhlIGhpZXJhcmNoeS4KKyAgICBzaXplX3QgZXhwbG9kZWRSZXN1bHRzU2l6ZSA9IHNl
bGVjdG9yVmVjdG9yLnNpemUoKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhY2tl
ZFNlbGVjdG9ycy5zaXplKCk7ICsraSkgeworICAgICAgICBleHBsb2RlZFJlc3VsdHNTaXplICo9
IHN0YWNrZWRTZWxlY3RvcnNbaV0tPnNpemUoKTsKKyAgICAgICAgaWYgKGV4cGxvZGVkUmVzdWx0
c1NpemUgPiBtYXhFeHBsb2RlZFJlc3VsdHMpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgT3duQXJyYXlQdHI8VmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvcj4gPiA+IGV4cGxvZGVk
U2VsZWN0b3JzID0gYWRvcHRBcnJheVB0cihuZXcgVmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvcj4g
PltleHBsb2RlZFJlc3VsdHNTaXplXSk7CisgICAgT3duQXJyYXlQdHI8c2l6ZV90PiBpbnNlcnRM
b2NhdGlvbnMgPSBhZG9wdEFycmF5UHRyKG5ldyBzaXplX3RbZXhwbG9kZWRSZXN1bHRzU2l6ZV0p
OworICAgIHNpemVfdCBmaW5hbFNpemUgPSAwOworCisgICAgZm9yIChzaXplX3QgZXhwbG9kZWRJ
bmRleCA9IDA7IGV4cGxvZGVkSW5kZXggPCBleHBsb2RlZFJlc3VsdHNTaXplOyArK2V4cGxvZGVk
SW5kZXgpIHsKKyAgICAgICAgc2l6ZV90IHNlbGVjdG9ySW5kZXggPSBleHBsb2RlZEluZGV4ICUg
c2VsZWN0b3JWZWN0b3Iuc2l6ZSgpOworICAgICAgICBib29sIHN1YnNlbGVjdG9yID0gc2VsZWN0
b3JWZWN0b3Jbc2VsZWN0b3JJbmRleF0tPmdldFByaW9yUmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rv
cjo6U3ViU2VsZWN0b3I7CisgICAgICAgIHNpemVfdCByZXN1bHQgPSBtb3ZlVG9FeHBsb2RlZFZl
Y3RvcigmKGV4cGxvZGVkU2VsZWN0b3JzW2V4cGxvZGVkSW5kZXhdKSwgc2VsZWN0b3JWZWN0b3Jb
c2VsZWN0b3JJbmRleF0uZ2V0KCksIHRydWUsIDApOworICAgICAgICBmaW5hbFNpemUgKz0gcmVz
dWx0OworICAgICAgICBpbnNlcnRMb2NhdGlvbnNbZXhwbG9kZWRJbmRleF0gPSBzdWJzZWxlY3Rv
ciA/IDAgOiByZXN1bHQ7CisgICAgfQorCisgICAgc2l6ZV90IGNvbnNpZGVyZWQgPSBzZWxlY3Rv
clZlY3Rvci5zaXplKCk7CisKKyAgICAvLyBUaGVyZSBhcmUgdHdvIHBvc3NpYmlsaXRpZXMgaGVy
ZSwgZm9yIGVhY2ggc2VsZWN0b3IuCisgICAgLy8gKDEpIHRoZSBwcmV2aW91c2x5IGluc2VydGVk
IHNlbGVjdG9yICh3ZSdyZSB3b3JraW5nIGJhY2t3YXJkcykgaGFzIGEgcHJpb3JSZWxhdGlvbgor
ICAgIC8vIG9mIFN1YlNlbGVjdG9yLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGVuIHdlIGluc2Vy
dCBiZWZvcmUgaXQgKGkuZS4gbm90IGF0IHRoZSBlbmQgb2YKKyAgICAvLyB0aGUgZXhwbG9kZWQg
bGlzdCksIGFuZCB1cGRhdGUgdGhlIG5ld2x5IGluc2VydGVkIHNlbGVjdG9yJ3MgcmVsYXRpb24g
dG8gYmUgU3ViU2VsZWN0b3IuCisgICAgLy8gKDIpIHRoZSBwcmV2aW91c2x5IGluc2VydGVkIHNl
bGVjdG9yIGhhcyBhIHByaW9yUmVsYXRpb24gb2Ygc29tZXRoaW5nIG90aGVyIHRoYW4KKyAgICAv
LyBTdWJTZWxlY3Rvci4gSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlbiB3ZSBpbnNlcnQgYXQgdGhl
IGVuZCBvZiB0aGUgbGlzdCwgYW5kIHVwZGF0ZQorICAgIC8vIHRoZSBuZXh0LXRvLWxhc3Qgc2Vs
ZWN0b3IncyByZWxhdGlvbiB0byB0aGUgaW5zZXJ0ZWQgc2VsZWN0b3IncyBwcmlvclJlbGF0aW9u
LgorICAgIGZvciAoaW50IHN0YWNrZWRJbmRleCA9IHN0YWNrZWRTZWxlY3RvcnMuc2l6ZSgpIC0g
MTsgc3RhY2tlZEluZGV4ID49IDA7IC0tc3RhY2tlZEluZGV4KSB7CisgICAgICAgIENTU1NlbGVj
dG9yVmVjdG9yJiBjdXJyZW50SW5TdGFjayA9ICooc3RhY2tlZFNlbGVjdG9yc1tzdGFja2VkSW5k
ZXhdKTsKKyAgICAgICAgZm9yIChzaXplX3QgZXhwbG9kZWRJbmRleCA9IDA7IGV4cGxvZGVkSW5k
ZXggPCBleHBsb2RlZFJlc3VsdHNTaXplOyArK2V4cGxvZGVkSW5kZXgpIHsKKyAgICAgICAgICAg
IHNpemVfdCBjdXJyZW50SW5kZXggPSAoZXhwbG9kZWRJbmRleCAvIGNvbnNpZGVyZWQpICUgY3Vy
cmVudEluU3RhY2suc2l6ZSgpOworICAgICAgICAgICAgYm9vbCBzdWJzZWxlY3RvciA9IGN1cnJl
bnRJblN0YWNrW2N1cnJlbnRJbmRleF0tPmdldFByaW9yUmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rv
cjo6U3ViU2VsZWN0b3I7CisKKyAgICAgICAgICAgIC8vIGlmIHdlIGFyZW4ndCBpbnNlcnRpbmcg
YXQgdGhlIGVuZCB3ZSBuZWVkIHRvIHVwZGF0ZQorICAgICAgICAgICAgLy8gdGhpcyBzZWxlY3Rv
cidzIHJlbGF0aW9uIHRvIGluZGljYXRlIHRoZSBuZXh0IHNlbGVjdG9yIGlzIGEgc3Vic2VsZWN0
b3IuCisgICAgICAgICAgICBib29sIHVwZGF0ZVRvU3ViU2VsZWN0b3IgPSBpbnNlcnRMb2NhdGlv
bnNbZXhwbG9kZWRJbmRleF0gIT0gZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9kZWRJbmRleF0uc2l6
ZSgpOworICAgICAgICAgICAgc2l6ZV90IGRlbHRhID0gbW92ZVRvRXhwbG9kZWRWZWN0b3IoJihl
eHBsb2RlZFNlbGVjdG9yc1tleHBsb2RlZEluZGV4XSksIGN1cnJlbnRJblN0YWNrW2N1cnJlbnRJ
bmRleF0uZ2V0KCksIHRydWUsIGluc2VydExvY2F0aW9uc1tleHBsb2RlZEluZGV4XSk7CisgICAg
ICAgICAgICBmaW5hbFNpemUgKz0gZGVsdGE7CisgICAgICAgICAgICBpZiAodXBkYXRlVG9TdWJT
ZWxlY3RvcikKKyAgICAgICAgICAgICAgICBleHBsb2RlZFNlbGVjdG9yc1tleHBsb2RlZEluZGV4
XVtpbnNlcnRMb2NhdGlvbnNbZXhwbG9kZWRJbmRleF0gKyBkZWx0YSAtIDFdLmdldCgpLT5tX3Jl
bGF0aW9uID0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IDA7CisgICAgICAgICAgICAgICAgQ1NTU2VsZWN0
b3I6OlJlbGF0aW9uIHJlbGF0aW9uOworICAgICAgICAgICAgICAgIGRvCisgICAgICAgICAgICAg
ICAgICAgIHJlbGF0aW9uID0gZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9kZWRJbmRleF1baW5zZXJ0
TG9jYXRpb25zW2V4cGxvZGVkSW5kZXhdIC0gKCsrb2Zmc2V0KV0tPmdldFByaW9yUmVsYXRpb24o
KTsKKyAgICAgICAgICAgICAgICB3aGlsZSAocmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlN1YlNl
bGVjdG9yKTsKKyAgICAgICAgICAgICAgICBleHBsb2RlZFNlbGVjdG9yc1tleHBsb2RlZEluZGV4
XVtpbnNlcnRMb2NhdGlvbnNbZXhwbG9kZWRJbmRleF0gLSAxXS5nZXQoKS0+bV9yZWxhdGlvbiA9
IHJlbGF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFzdWJzZWxlY3RvcikK
KyAgICAgICAgICAgICAgICBpbnNlcnRMb2NhdGlvbnNbZXhwbG9kZWRJbmRleF0gPSBleHBsb2Rl
ZFNlbGVjdG9yc1tleHBsb2RlZEluZGV4XS5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgY29u
c2lkZXJlZCAqPSBjdXJyZW50SW5TdGFjay5zaXplKCk7CisgICAgfQorCisgICAgbV9zZWxlY3Rv
ckFycmF5ID0gcmVpbnRlcnByZXRfY2FzdDxDU1NTZWxlY3Rvcio+KGZhc3RNYWxsb2Moc2l6ZW9m
KENTU1NlbGVjdG9yKSAqIGZpbmFsU2l6ZSkpOworCisgICAgLy8gTW92ZSB0aGUgc2VsZWN0b3Ig
Y29tcG9uZW50cyBpbiBleHBsb2RlZFNlbGVjdG9ycyBpbnRvIHRoZSBmaW5hbCBvdXRwdXQgc2Vs
ZWN0b3JBcnJheS4KKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIGZvciAoc2l6ZV90IGV4cGxv
ZGVkSW5kZXggPSAwOyBleHBsb2RlZEluZGV4IDwgZXhwbG9kZWRSZXN1bHRzU2l6ZTsgKytleHBs
b2RlZEluZGV4KSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNlbGVjdG9ySW5kZXggPSAwOyBzZWxl
Y3RvckluZGV4IDwgZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9kZWRJbmRleF0uc2l6ZSgpOyArK3Nl
bGVjdG9ySW5kZXgpIHsKKyAgICAgICAgICAgIG1vdmUoZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9k
ZWRJbmRleF1bc2VsZWN0b3JJbmRleF0ucmVsZWFzZSgpLCAmbV9zZWxlY3RvckFycmF5W2luZGV4
XSk7CisgICAgICAgICAgICBpZiAoc2VsZWN0b3JJbmRleCA8IGV4cGxvZGVkU2VsZWN0b3JzW2V4
cGxvZGVkSW5kZXhdLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgbV9zZWxlY3RvckFycmF5
W2luZGV4XS5zZXROb3RMYXN0SW5UYWdIaXN0b3J5KCk7CisgICAgICAgICAgICArK2luZGV4Owog
ICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtX3NlbGVjdG9yQXJyYXlbYXJyYXlJbmRleCAtIDFd
LmlzTGFzdEluVGFnSGlzdG9yeSgpKTsKKyAgICAgICAgZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9k
ZWRJbmRleF0uc2hyaW5rKDApOworICAgIH0KKyAgICBBU1NFUlQoaW5kZXggPT0gZmluYWxTaXpl
KTsKKyAgICBtX3NlbGVjdG9yQXJyYXlbaW5kZXggLSAxXS5zZXRMYXN0SW5TZWxlY3Rvckxpc3Qo
KTsKK30KKwordW5zaWduZWQgQ1NTU2VsZWN0b3JMaXN0Ojptb3ZlVG9FeHBsb2RlZFZlY3RvcihW
ZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yPiA+KiB2ZWN0b3IsIENTU1BhcnNlclNlbGVjdG9yKiBj
dXJyZW50LCBib29sIHVzZUNvcHksIHVuc2lnbmVkIGluc2VydEluZGV4KQoreworICAgIGludCBp
bml0aWFsSW5zZXJ0SW5kZXggPSBpbnNlcnRJbmRleDsKKyAgICB3aGlsZSAoY3VycmVudCkgewor
ICAgICAgICB2ZWN0b3ItPmluc2VydChpbnNlcnRJbmRleCwgdXNlQ29weSA/IGN1cnJlbnQtPmR1
cGxpY2F0ZVNlbGVjdG9yKCkgOiBjdXJyZW50LT5yZWxlYXNlU2VsZWN0b3IoKSk7CisgICAgICAg
IGluc2VydEluZGV4ICs9IDE7CisgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT50YWdIaXN0b3J5
KCk7CiAgICAgfQotICAgIEFTU0VSVChmbGF0dGVuZWRTaXplID09IGFycmF5SW5kZXgpOwotICAg
IG1fc2VsZWN0b3JBcnJheVthcnJheUluZGV4IC0gMV0uc2V0TGFzdEluU2VsZWN0b3JMaXN0KCk7
Ci0gICAgc2VsZWN0b3JWZWN0b3Iuc2hyaW5rKDApOworCisgICAgcmV0dXJuIGluc2VydEluZGV4
IC0gaW5pdGlhbEluc2VydEluZGV4OwogfQogCiB2b2lkIENTU1NlbGVjdG9yTGlzdDo6ZGVsZXRl
U2VsZWN0b3JzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAppbmRleCBlMGFhNjVj
MDJiZjMzMDg3ZjJhMWFiMjdmMGNkMDE0YTQzOGUyMmVmLi5hOWRmMTRhZjcyMjE0OTdmZDA0ZGNm
ZWQyMzRmZWUxZTExM2M1MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3JMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENTU1NlbGVjdG9yTGlzdF9oCiAjZGVmaW5lIENTU1Nl
bGVjdG9yTGlzdF9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKICNpbmNsdWRlICJD
U1NTZWxlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw3ICs0Miw3IEBAIHB1
YmxpYzoKICAgICB+Q1NTU2VsZWN0b3JMaXN0KCk7CiAKICAgICB2b2lkIGFkb3B0KENTU1NlbGVj
dG9yTGlzdCYgbGlzdCk7Ci0gICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25Q
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yKTsKKyAgICB2b2lkIGFkb3B0
U2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3ImLCBDU1NTZWxlY3RvclZlY3Rvckxpc3Qm
KTsKIAogICAgIENTU1NlbGVjdG9yKiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JB
cnJheSA/IG1fc2VsZWN0b3JBcnJheSA6IDA7IH0KICAgICBzdGF0aWMgQ1NTU2VsZWN0b3IqIG5l
eHQoQ1NTU2VsZWN0b3IqKTsKQEAgLTU0LDYgKzU1LDggQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIHZvaWQgZGVsZXRlU2VsZWN0b3JzKCk7CisgICAgdW5zaWduZWQgbW92ZVRvRXhwbG9kZWRW
ZWN0b3IoVmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvcj4gPiosIENTU1BhcnNlclNlbGVjdG9yKiwg
Ym9vbCB1c2VDb3B5LCB1bnNpZ25lZCBpbnNlcnRJbmRleCk7CisKIAogICAgIC8vIEVuZCBvZiBh
IG11bHRpcGFydCBzZWxlY3RvciBpcyBpbmRpY2F0ZWQgYnkgbV9pc0xhc3RJblRhZ0hpc3Rvcnkg
Yml0IGluIHRoZSBsYXN0IGl0ZW0uCiAgICAgLy8gRW5kIG9mIHRoZSBhcnJheSBpcyBpbmRpY2F0
ZWQgYnkgbV9pc0xhc3RJblNlbGVjdG9yTGlzdCBiaXQgaW4gdGhlIGxhc3QgaXRlbS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKaW5kZXggZDA2YmIyMDNiYTc2NTM2M2RlNTBmZWYwNzgw
MzBjMWFjNjk2YThiYi4uYzdlYzZkOWY5NDE0MzE5MWZhNmMxYWUyNDVkOGZkNjZiYWU2Mzg4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgICAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKDEpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1f
cGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVl
ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlNYXJrZXJNaWQsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlckVuZCwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAg
IG1faW1wbGljaXRTaG9ydGhhbmQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5k
ZXggMzQyN2YwNTU5MjE3ZTYyZjM5Mjc4YTg4MDVhYjNkOGQ4YTRlOTUyOC4uYWEwNGVlZjc3MTE4
YTY1NzczZmE3MGZhNzJhYWQ1NmY1OWZjMTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAK
QEAgLTI5MCwxMCArMjkwLDEwIEBAIFN0eWxlUnVsZU1lZGlhOjpTdHlsZVJ1bGVNZWRpYShjb25z
dCBTdHlsZVJ1bGVNZWRpYSYgbykKICAgICAgICAgbV9tZWRpYVF1ZXJpZXMgPSBvLm1fbWVkaWFR
dWVyaWVzLT5jb3B5KCk7CiB9CiAKLVN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVnaW9uKFZl
Y3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycywgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGVzKQorU3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1
bGVSZWdpb24oVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzLCBD
U1NTZWxlY3RvclZlY3Rvckxpc3QmIHN0YWNrZWRTZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlQmFzZT4gPiYgYWRvcHRSdWxlcykKICAgICA6IFN0eWxlUnVsZUJsb2NrKFJlZ2lvbiwg
YWRvcHRSdWxlcykKIHsKLSAgICBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKCpz
ZWxlY3RvcnMpOworICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVj
dG9ycywgc3RhY2tlZFNlbGVjdG9ycyk7CiB9CiAKIFN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxl
UmVnaW9uKGNvbnN0IFN0eWxlUnVsZVJlZ2lvbiYgbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRl
eCA3ZmMyMGEzMDNmODUzYWM3NmM5MmVmYjAxNTNmYmZiMzQ3ZjU3MmEwLi4yMGJlMTBjODBiNmQ2
MGQ4YTQ5MWVhOWFjMjc2MTAyODMzYzZiOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC05
Nyw3ICs5NywxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQoKTsgfQogICAgIFN0eWxlUHJv
cGVydHlTZXQqIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgCi0gICAgdm9pZCBwYXJzZXJBZG9w
dFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVj
dG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9ycyk7IH0K
KyAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3ImIHNl
bGVjdG9ycywgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0JiBzdGFja2VkU2VsZWN0b3JzKQorICAgIHsK
KyAgICAgICAgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMsIHN0
YWNrZWRTZWxlY3RvcnMpOworICAgIH0KICAgICB2b2lkIHdyYXBwZXJBZG9wdFNlbGVjdG9yTGlz
dChDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdChzZWxl
Y3RvcnMpOyB9CiAgICAgdm9pZCBzZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0
eVNldD4pOwogCkBAIC0xNDMsNyArMTQ2LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHlsZVBy
b3BlcnR5U2V0KiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdldCgp
OyB9CiAgICAgU3R5bGVQcm9wZXJ0eVNldCogbXV0YWJsZVByb3BlcnRpZXMoKTsKIAotICAgIHZv
aWQgcGFyc2VyQWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVj
dG9yPiA+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3Rvcihz
ZWxlY3RvcnMpOyB9CisgICAgdm9pZCBwYXJzZXJBZG9wdFNlbGVjdG9yVmVjdG9yKENTU1NlbGVj
dG9yVmVjdG9yJiBzZWxlY3RvcnMsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc3RhY2tlZFNlbGVj
dG9ycykKKyAgICB7CisgICAgICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3Io
c2VsZWN0b3JzLCBzdGFja2VkU2VsZWN0b3JzKTsKKyAgICB9CiAgICAgdm9pZCB3cmFwcGVyQWRv
cHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxp
c3QuYWRvcHQoc2VsZWN0b3JzKTsgfQogICAgIHZvaWQgc2V0UHJvcGVydGllcyhQYXNzUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+KTsKIApAQCAtMTkyLDkgKzE5OCw5IEBAIHByaXZhdGU6CiAKIGNs
YXNzIFN0eWxlUnVsZVJlZ2lvbiA6IHB1YmxpYyBTdHlsZVJ1bGVCbG9jayB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVSdWxlUmVnaW9uPiBjcmVhdGUoVmVjdG9yPE93blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVs
ZUJhc2U+ID4mIGFkb3B0UnVsZXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVSdWxlUmVn
aW9uPiBjcmVhdGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3Jz
LCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmIHN0YWNrZWRTZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8
U3R5bGVSdWxlQmFzZT4gPiYgYWRvcHRSdWxlcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU3R5bGVSdWxlUmVnaW9uKHNlbGVjdG9ycywgYWRvcHRSdWxlcykpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVsZVJlZ2lvbihzZWxlY3RvcnMsIHN0YWNrZWRT
ZWxlY3RvcnMsIGFkb3B0UnVsZXMpKTsKICAgICB9CiAKICAgICBjb25zdCBDU1NTZWxlY3Rvckxp
c3QmIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JMaXN0OyB9CkBAIC0y
MDIsNyArMjA4LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlUmVnaW9uPiBj
b3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVsZVJlZ2lvbigqdGhpcykp
OyB9CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVSdWxlUmVnaW9uKFZlY3RvcjxPd25QdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+ID4qLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4mIGFkb3B0UnVs
ZXMpOworICAgIFN0eWxlUnVsZVJlZ2lvbihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+KiwgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0JiwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
PiA+JiBhZG9wdFJ1bGVzKTsKICAgICBTdHlsZVJ1bGVSZWdpb24oY29uc3QgU3R5bGVSdWxlUmVn
aW9uJik7CiAgICAgCiAgICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDBmNjYxY2YzMTViZjg2NDIyYTNkZDVmZTUyODEyZGE1N2Q1MTBjYWIuLmJhNWE0Mjc4OTdjZGM0
YTY2ODAyYzg5NGFhZmRmNThmMDBkYTRkMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0w
Ny0yNiAgU2hhbmUgU3RlcGhlbnMgIDxzaGFuZXN0ZXBoZW5zQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgW1dJUF0gSW1wbGVtZW50IENTUyBIaWVyYXJjaGllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRtbDog
QWRkZWQuCisKIDIwMTItMDctMjUgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbVGVzdHNdIFJlLWZhY3RvciBmYXN0L2Zvcm1zL251bWJlci9udW1iZXIt
c3BpbmJ1dHRvbi1jaGFuZ2UtYW5kLWlucHV0LWV2ZW50cy5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL3NpbXBsZS1oaWVyYXJjaGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9jc3MzL3NpbXBsZS1oaWVyYXJjaGllcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNmZWJk
N2M2Y2UzNDA4MjdhZGYxNTFhY2FhMjE5ZTBmNWJhMTJmYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2NzczMvc2ltcGxlLWhpZXJhcmNoaWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDcwIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDM4NAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4Mzg0CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4MzY4CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXpl
IDc4NHgxOAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBb
Y29sb3I9I0ZGMDAwMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAxOTl4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE5OTogIlRoaXMg
ZGl2IHNob3VsZCBjb250YWluIHJlZCB0ZXh0IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMTgpIHNpemUgNDAweDQwIFtiZ2NvbG9yPSNERERERERdCisgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDApIHNpemUgNDAweDE4IFtjb2xvcj0jMDAwMEZGXQorICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIwNngxOAorICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMjA2OiAiVGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gYmx1ZSB0ZXh0
IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTgpIHNpemUgNDAweDQwIFtjb2xvcj0j
MDA4MDAwXSBbYmdjb2xvcj0jREREREREXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAyMTR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMTQ6
ICJUaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0IgorICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDAsOTgpIHNpemUgNzg0eDE0NAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMTR4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDIxNDogIlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQiCisgICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE4KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAw
MF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMTR4MTgKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxNDogIlRoaXMgZGl2IHNob3VsZCBj
b250YWluIGdyZWVuIHRleHQiCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM2KSBz
aXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAyMTR4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDIxNDogIlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDU0KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMTR4MTgKKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxNDogIlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdy
ZWVuIHRleHQiCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDcyKSBzaXplIDc4NHg3
MgorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDE4CisgICAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMzh4MTgKKyAgICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjM4OiAiVGhpcyBkaXYgc2hvdWxkIG5vdCBj
b250YWluIGdyZWVuIHRleHQiCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgp
IHNpemUgNzg0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAyMzh4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjM4OiAiVGhp
cyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQiCisgICAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMzYpIHNpemUgNzg0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAyMzh4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMjM4OiAiVGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQiCisg
ICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTQpIHNpemUgNzg0eDE4CisgICAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMzh4MTgKKyAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjM4OiAiVGhpcyBkaXYgc2hvdWxkIG5vdCBjb250
YWluIGdyZWVuIHRleHQiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwyNDIpIHNpemUg
Nzg0eDkwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDM2Cisg
ICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSNG
RkMwQ0JdCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNTZ4
MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTU2OiAiVGhpcyB0ZXh0
IHNob3VsZCBiZSBwaW5rLCIKKyAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
MCwxOCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDEwMXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMDE6
ICJidXQgbm90IHRoaXMgdGV4dC4iCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM2
KSBzaXplIDc4NHgxOCBbY29sb3I9I0ZGQzBDQl0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxNTZ4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDE1NjogIlRoaXMgdGV4dCBzaG91bGQgYmUgcGluay4iCisgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDU0KSBzaXplIDc4NHgxOCBbY29sb3I9I0ZGQzBDQl0KKyAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNTZ4MTgKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDE1NjogIlRoaXMgdGV4dCBzaG91bGQgYmUgcGluay4iCisgICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDcyKSBzaXplIDc4NHgxOAorICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4MHgxOAorICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMTgwOiAiVGhpcyB0ZXh0IHNob3VsZCBub3QgYmUgcGluay4iCisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzMzIpIHNpemUgNzg0eDM2CisgICAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDM2IFtiZ2NvbG9yPSNGRkRERERdCisg
ICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSNG
RjAwMDBdCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyNzV4
MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjc1OiAiVGhpcyBzaG91
bGQgYmUgcmVkIHdpdGggYSBwaW5rIGJhY2tncm91bmQuIgorICAgICAgICAgICAgUmVuZGVySW5s
aW5lIChnZW5lcmF0ZWQpIGF0ICgwLDApIHNpemUgMTk0eDE4CisgICAgICAgICAgICAgIFJlbmRl
clRleHQgYXQgKDI3NSwwKSBzaXplIDE5NHgxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgyNzUsMCkgd2lkdGggMTk0OiAiIChIZXJlJ3Mgc29tZSBpbnNlcnRlZCBjb250ZW50KSIKKyAg
ICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTgKKyAg
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI3MngxOAorICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNzI6ICJUaGlzIHNob3VsZCBqdXN0IGhh
dmUgdGhlIHBpbmsgYmFja2dyb3VuZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Np
bXBsZS1oaWVyYXJjaGllcy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9zaW1wbGUtaGllcmFyY2hp
ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MGNkNWI5MmI3ODZlNDY4OWIwN2JiZTE2NDVmZmY2MTdjOWZl
NTFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zaW1wbGUtaGllcmFyY2hp
ZXMuaHRtbApAQCAtMCwwICsxLDk1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c3R5bGU+CisvKiBUZXN0IGEgdHJpdmlhbGx5IG5lc3RlZCBydWxlICovCisKKy5hIHsKKyAg
ICAmIC5iIHsKKyAgICAgICAgY29sb3I6IHJlZDsKKyAgICB9Cit9CisKKy8qIFRlc3QgaW50YXJj
YWxhdGlvbiBvZiBuZXN0ZWQgcnVsZXMgYW5kIHByb3BlcnRpZXMuICovCisvKiBUZXN0IGRlc2Nl
bmRhbnQgc2VsZWN0b3IgYW5kIG5vIHNlbGVjdG9yLiAqLworCisuYyB7CisgICAgaGVpZ2h0OiA0
MHB4OworICAgICYgLmQgeworICAgICAgICBjb2xvcjogYmx1ZTsKKyAgICB9CisgICAgd2lkdGg6
IDQwMHB4OworICAgICYuZSB7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogI2RkZGRkZDsKK30KKworLyogVGVzdCBub24tc3BhY2UtYmFzZWQgY29t
YmluYXRvciB3aXRoIGFsbCBwb3NzaWJsZSBzcGFjaW5ncy4gKi8KKy5mIHsKKyAgICAmPi5nIHsK
KyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKyAgICAmPiAuaCB7CisgICAgICAgIGNvbG9y
OiBncmVlbjsKKyAgICB9CisgICAgJiA+LmkgeworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAg
fQorICAgICYgPiAuaiB7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9Cit9CisKKy8qIFRl
c3QgbXVsdGlwbGUgbmVzdGVkIHNlbGVjdG9ycyBpbiBzYW1lIGxpc3QuICovCisuayB7IAorICAg
ICYgLmwsICYubSwgJiArIC5uIHsKKyAgICAgICAgY29sb3I6IHBpbms7CisgICAgfQorfQorCisv
KiBUZXN0IGRlZXAgbmVzdGluZyBvZiBzZWxlY3RvcnMuICovCisubyB7CisgICAgJiAucCB7Cisg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmRkZGQ7CisgICAgICAgICYgLnEgeworICAgICAg
ICAgICAgY29sb3I6IHJlZDsKKyAgICAgICAgICAgICY6OmFmdGVyIHsKKyAgICAgICAgICAgICAg
ICBjb250ZW50OiAiIChIZXJlJ3Mgc29tZSBpbnNlcnRlZCBjb250ZW50KSI7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBjbGFzcz0iYSI+PGRpdiBjbGFzcz0iYiI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gcmVk
IHRleHQ8L2Rpdj48L2Rpdj4KKworPGRpdiBjbGFzcz0iYyI+PGRpdiBjbGFzcz0iZCI+VGhpcyBk
aXYgc2hvdWxkIGNvbnRhaW4gYmx1ZSB0ZXh0PC9kaXY+PC9kaXY+CisKKzxkaXYgY2xhc3M9ImMg
ZSI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorCis8ZGl2IGNsYXNz
PSJmIj4KKyAgPGRpdiBjbGFzcz0iZyI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gZ3JlZW4gdGV4
dDwvZGl2PgorICA8ZGl2IGNsYXNzPSJoIj5UaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0
ZXh0PC9kaXY+CisgIDxkaXYgY2xhc3M9ImkiPlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVu
IHRleHQ8L2Rpdj4KKyAgPGRpdiBjbGFzcz0iaiI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gZ3Jl
ZW4gdGV4dDwvZGl2PgorICA8ZGl2PgorICAgIDxkaXYgY2xhc3M9ImciPlRoaXMgZGl2IHNob3Vs
ZCBub3QgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iaCI+VGhpcyBk
aXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJp
Ij5UaGlzIGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICAgIDxkaXYg
Y2xhc3M9ImoiPlRoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+Cisg
IDwvZGl2PgorPC9kaXY+Cis8ZGl2PgorICAgIDxkaXYgY2xhc3M9ImsiPgorICAgICAgICA8ZGl2
IGNsYXNzPSJsIj5UaGlzIHRleHQgc2hvdWxkIGJlIHBpbmssPC9kaXY+IGJ1dCBub3QgdGhpcyB0
ZXh0LjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImsgbSI+VGhpcyB0ZXh0IHNob3VsZCBiZSBwaW5r
LjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im4iPlRoaXMgdGV4dCBzaG91bGQgYmUgcGluay48L2Rp
dj4KKyAgICA8ZGl2IGNsYXNzPSJuIj5UaGlzIHRleHQgc2hvdWxkIG5vdCBiZSBwaW5rLjwvZGl2
PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJvIj48ZGl2IGNsYXNzPSJwIj48ZGl2IGNsYXNzPSJxIj5U
aGlzIHNob3VsZCBiZSByZWQgd2l0aCBhIHBpbmsgYmFja2dyb3VuZC48L2Rpdj4gVGhpcyBzaG91
bGQganVzdCBoYXZlIHRoZSBwaW5rIGJhY2tncm91bmQuPC9kaXY+PC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
cwppbmRleCAzODIzYmY0NmQ4MWVkMjdmOThmYWI3ZWFjZjUxNWFlYjZiYmRhNTE1Li42OWNjZDkx
MjkxNDYwMzdhNDIyNmQ4NTQ5ZDk5ZjM2YzFjZmFlMzYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE2OSw2ICsxNjksOSBAQCBCVUdX
Szg5MDUyIFNLSVAgOiBmYXN0L2Nzcy9pbWFnZS1vcmllbnRhdGlvbiA9IFBBU1MKIC8vIENocm9t
aXVtIG5lZWRzIGxhcmdlciBtZWRpYSBmaWxlcyB0byB0ZXN0IGJ1ZmZlcmluZyB0aGlzIHdheS4K
IEJVR1dLODgxNzIgU0tJUCA6IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYnVmZmVyZWQuaHRtbCA9
IFBBU1MKIAorLy8gQ1NTIEhpZXJhcmNoaWVzIGFyZSBub3QgeWV0IGVuYWJsZWQuCitCVUdXSzc5
OTM5IFNLSVAgOiBjc3MzL3NpbXBsZS1oaWVyYXJjaGllcy5odG1sID0gUEFTUworCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogLy8gV09OVEZJWCBURVNUUwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjM3NGQ3ODc2MjBkOTQ0ZTVjMjc3MjIxMzVmZGJj
OWNmNDkwMTU2Yy4uOGQ1M2MxZjY4YmZiMzhlOTYxOGUwNTdhYjYyYTliYzE5ZmYwMzU3MiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM4Myw2ICszODMs
MTAgQEAgQlVHV0s4NDE4NiBTS0lQIDogZmFzdC90ZXh0LWF1dG9zaXppbmcgPSBQQVNTCiAKIC8v
IERpYWxvZyBlbGVtZW50IGlzIG5vdCB5ZXQgZW5hYmxlZC4KIEJVR1dLODQ2MzUgU0tJUCA6IGZh
c3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50ID0gVEVYVAorCisvLyBDU1MgSGllcmFyY2hpZXMgYXJl
IG5vdCB5ZXQgZW5hYmxlZC4KK0JVR1dLNzk5MzkgU0tJUCA6IGNzczMvc2ltcGxlLWhpZXJhcmNo
aWVzLmh0bWwgPSBQQVNTCisKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8g
RW5kIG9mIEV4cGVjdGVkIGZhaWx1cmVzCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMGQxMTI1
OWY4YzExYTI3NmVmY2JlMzA2ZjIwODZlMDRmYmU4YmFhZC4uMzc0M2YxYjg5NjIzNDRiMTc0OWE4
NWRlZjY2YjYzZWY2MDRjMjAzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTIyLDYgKzIyLDkgQEAgQlVHV0s4NTI2MiBTS0lQIDogZmFzdC9jc3MvaW1h
Z2UtcmVzb2x1dGlvbiA9IFBBU1MKIC8vIENTUyBpbWFnZS1vcmllbnRhdGlvbiBpcyBub3QgeWV0
IGVuYWJsZWQuCiBCVUdXSzg5MDUyIFNLSVAgOiBmYXN0L2Nzcy9pbWFnZS1vcmllbnRhdGlvbiA9
IFBBU1MKIAorLy8gQ1NTIEhpZXJhcmNoaWVzIGFyZSBub3QgeWV0IGVuYWJsZWQuCitCVUdXSzc5
OTM5IFNLSVAgOiBjc3MzL3NpbXBsZS1oaWVyYXJjaGllcy5odG1sID0gUEFTUworCiAvLyBPdXIg
c2xvdyB0ZXN0cywgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgogQlVHV0s1NzY3MiA6IGh0dHAvdGVz
dHMvbG9jYWwvZmlsZWFwaS9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuaHRtbCA9IFRFWFQgUEFT
UwogCkBAIC0zMDQsNCArMzA3LDQgQEAgQlVHV0s5MTUwNSA6IHBsYXRmb3JtL21hYy9wbHVnaW5z
L3Jvb3Qtb2JqZWN0LXByZW1hdHVyZS1kZWxldGUtY3Jhc2guaHRtbCA9IENSQVMKIEJVR1dLOTE1
NTIgOiBmYXN0L3RleHQvZGVzY2VudC1jbGlwLWluLXNjYWxlZC1wYWdlLmh0bWwgPSBJTUFHRQog
CiAvLyBMYXlvdXQgVGVzdCBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0
aW9uLmh0bWwgaXMgZmFpbGluZwotQlVHV0s4NDgxMyA6IGNzczMvZmlsdGVycy9jdXN0b20vY3Vz
dG9tLWZpbHRlci1hbmltYXRpb24uaHRtbCA9IFRFWFQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCitCVUdXSzg0ODEzIDogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1h
dGlvbi5odG1sID0gVEVYVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggOWJhMmE2MWE4YjU5ZjI1NWM3N2M3NDNlNTBiZmQ0NTRjNGYwYmU4Zi4uMWQ4ZjVhMTkx
MGM0Y2YwOTNlZTc0MGI2MGEyNWUwZDNkYmIxZjRjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9UZXN0RXhwZWN0YXRpb25zCkBAIC04Myw2ICs4Myw5IEBAIEJVR1dLODUyNjIgU0tJUCA6IGZh
c3QvY3NzL2ltYWdlLXJlc29sdXRpb24gPSBQQVNTCiAvLyBDU1MgaW1hZ2Utb3JpZW50YXRpb24g
aXMgbm90IHlldCBlbmFibGVkLgogQlVHV0s4OTA1MiBTS0lQIDogZmFzdC9jc3MvaW1hZ2Utb3Jp
ZW50YXRpb24gPSBQQVNTCiAKKy8vIENTUyBIaWVyYXJjaGllcyBhcmUgbm90IHlldCBlbmFibGVk
LgorQlVHV0s3OTkzOSBTS0lQIDogY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRtbCA9IFBBU1MK
KwogLy8gTmVlZHMgcmViYXNlbGluZSBhZnRlciBidWcgODY0NDEKIC8vIGZhaWxpbmcgbmV3IHRl
c3RzCiBCVUdXSzg2NDQxIFNLSVAgOiBmYXN0L2JvcmRlcnMvYm9yZGVyLWFudGlhbGlhc2luZy5o
dG1sID0gSU1BR0UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156881</attachid>
            <date>2012-08-07 00:01:10 -0700</date>
            <delta_ts>2012-08-07 17:05:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79939-20120807170044.patch</filename>
            <type>text/plain</type>
            <size>67564</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgzZDVmMjc4MzM1ZGQ1
ZTY2OWIwOTVjMmQzOGVhYWIzZjdmOTkwNC4uMzA0ZjcyY2Y1MTRiODI3NTA1MjY3ZDkxMWZmMzdm
MTk5NTY4MGE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTA4LTA4ICBTaGFu
ZSBTdGVwaGVucyAgPHNoYW5lc3RlcGhlbnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQXSBJ
bXBsZW1lbnQgQ1NTIEhpZXJhcmNoaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03OTkzOQorCisgICAgICAgIFRoaXMgQ1NTIGZlYXR1cmUgaXMgcHJv
cG9zZWQgaW4gdGhlIGZvbGxvd2luZyBFZGl0b3IncyBEcmFmdDoKKyAgICAgICAgaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3NzMy1oaWVyYXJjaGllcy8uCisKKyAgICAgICAgQXMgZWFjaCBzdHls
ZSBydWxlIGlzIHBhcnNlZCwgdGhlIHNlbGVjdG9yIGZvciB0aGUgc3R5bGUKKyAgICAgICAgcnVs
ZSBpcyBib3RoIGNvbnZlcnRlZCBpbnRvIGEgQ1NTU2VsZWN0b3JMaXN0IGFuZCBwdXNoZWQKKyAg
ICAgICAgb250byBhIFNlbGVjdG9yVmVjdG9yIHRvIG1haW50YWluIHRoZSBjdXJyZW50IHNlbGVj
dG9yCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgV2hlbiBhIG5lc3RlZCBzdHlsZSBydWxl
IGlzIGVuY291bnRlcmVkLCBib3RoIHRoZSBuZXcgc2VsZWN0b3IKKyAgICAgICAgYW5kIHRoZSBj
dXJyZW50IFNlbGVjdG9yVmVjdG9yIGNvbnRleHQgYXJlIHByb3ZpZGVkIHRvIHRoZQorICAgICAg
ICBuZXcgQ1NTU2VsZWN0b3JMaXN0IHRoYXQgcmVwcmVzZW50cyB0aGUgc2VsZWN0b3IgZm9yIHRo
ZSBuZXN0ZWQKKyAgICAgICAgcnVsZS4gQXQgdGhpcyBwb2ludCB0aGUgY29udGV4dCBhbmQgbmV3
IHNlbGVjdG9yIGFyZSBjb21iaW5lZCAtIAorICAgICAgICB0aGlzIGlzIGEgbGl0dGxlIGNvbXBs
ZXggYmVjYXVzZToKKyAgICAgICAgICAxKSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUg
Y29tbWEtc2VwYXJhdGVkIHNlbGVjdG9yCisgICAgICAgICAgICAgY29tcG9uZW50cyBpbiBlYWNo
IHBhcnQgb2YgdGhlIFNlbGVjdG9yVmVjdG9yLCBhbmQgdGhlc2UKKyAgICAgICAgICAgICBuZWVk
IHRvIGJlIGNvbWJpbmVkCisgICAgICAgICAgMikgdGhlIG91dHB1dCBsaXN0IG9yZGVyIChpbiBv
cmRlciBvZiBtYXRjaGluZykgZG9lc24ndCBtYXRjaAorICAgICAgICAgICAgIHRoZSBpbmNvbWlu
ZyB2ZWN0b3Igb3JkZXIgKGluIG9yZGVyIG9mIHBhcnNpbmcpIGFuZCB0aGlzCisgICAgICAgICAg
ICAgbmVlZHMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LCBlc3BlY2lhbGx5IGF0IHRoZSBib3Vu
ZGFyaWVzCisgICAgICAgICAgICAgYmV0d2VlbiBTZWxlY3RvclZlY3RvciBlbnRyaWVzLgorCisg
ICAgICAgIFBhc3QgdGhlIHBvaW50IG9mIHRoZSBDU1NTZWxlY3Rvckxpc3QsIG5vIGRlZXBlciBt
b2RpZmljYXRpb25zIGFyZQorICAgICAgICByZXF1aXJlZC4KKworICAgICAgICBOb3RlIHRoYXQg
dGhpcyBwYXRjaCBkb2Vzbid0IGltcGxlbWVudCBzdXBwb3J0IGZvciB0aGUgQ1NTT00gLSAKKyAg
ICAgICAgdGhhdCB3aWxsIGNvbWUgaW4gZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3NzMy9zaW1wbGUtaGllcmFy
Y2hpZXMuaHRtbAorCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gYWxsb3cgbmVzdGluZyBvZiBz
ZWxlY3RvcnMgdG8gYmUgcGFyc2VkLgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1BhZ2VSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6
YWRvcHRTZWxlY3RvclZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVh
dGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUpOgorCisg
ICAgICAgIEFkZCBhIHNlbGVjdG9yVmVjdG9yIHRvIHRyYWNrIGN1cnJlbnQgc2VsZWN0b3Igc3Rh
Y2sKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnJldXNhYmxlU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cHVzaFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cG9wU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoU3RhY2tlZFBh
cnNlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpTdGFja2VkUGFy
c2VkUHJvcGVydGllczo6U3RhY2tlZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpkdXBsaWNhdGVTZWxlY3Rvcik6
CisgICAgICAgIChDU1NQYXJzZXJTZWxlY3Rvcik6CisKKyAgICAgICAgVHJhY2sgcHJpb3IgcmVs
YXRpb24gdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBzdGl0Y2gKKyAgICAgICAgc2VsZWN0b3JWZWN0
b3IgKyBjdXJyZW50IHNlbGVjdG9yIGludG8gYSBjb2hlcmVudCBzZWxlY3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpnZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OkNT
U1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnNldFNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxp
c3RXcmFwcGVyOjp+Q1NTU2VsZWN0b3JMaXN0V3JhcHBlcik6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpz
ZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpnZXRQcmlv
clJlbGF0aW9uKToKKyAgICAgICAgKFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZXRWYWx1ZSk6CisKKyAgICAgICAgSW1wbGVtZW50IGFsZ29yaXRobSB0byBjb21i
aW5lIHNlbGVjdG9yVmVjdG9yIHdpdGgKKyAgICAgICAgY3VycmVudCBzZWxlY3RvciB3aGVuIGdl
bmVyYXRpbmcgdGhlIENTU1NlbGVjdG9yIGFycmF5LgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rv
ckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVj
dG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3JMaXN0Ojptb3ZlVG9FeHBsb2RlZFZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1NlbGVj
dG9yTGlzdC5oOgorICAgICAgICAoQ1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvU3R5
bGVSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmFkb3B0U2VsZWN0b3JWZWN0
b3IpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1JlZ2lvblJ1bGUpOgorICAgICAg
ICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmg6CisKIDIwMTItMDgtMDcgIFNoYW5lIFN0ZXBo
ZW5zICA8c2hhbmVzdGVwaGVuc0Bnb29nbGUuY29tPgogCiAgICAgICAgIENvbXBpbGUgZmxhZyBm
b3IgQ1NTIEhpZXJhcmNoaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA5OTY4ZTc2NjAw
N2VlZjE3YWExNjk2ZmIwMmU0ZmY3NGQzNDJmMTAyLi4xZGI0NjY1YjM0OTlhYzc4M2ExY2UxMzdm
NjI2MDQzMTI1YzEwMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1h
ci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTcwLDcgKzcwLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlOwog
ICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiogcnVsZUxpc3Q7CiAgICAgQ1NTUGFy
c2VyU2VsZWN0b3IqIHNlbGVjdG9yOwotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHNlbGVjdG9yTGlzdDsKKyAgICBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JMaXN0
OwogICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIG1hcmdpbkJveDsKICAgICBDU1NTZWxl
Y3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CiAgICAgTWVkaWFRdWVyeVNldCogbWVkaWFMaXN0OwpA
QCAtMjEzLDYgKzIxMyw3IEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBD
U1NQYXJzZXIqIHBhcnNlcikKICV0eXBlIDxydWxlPiBjaGFyc2V0CiAldHlwZSA8cnVsZT4gaWdu
b3JlZF9jaGFyc2V0CiAldHlwZSA8cnVsZT4gcnVsZXNldAorJXR5cGUgPHJ1bGU+IG5lc3RlZF9y
dWxlc2V0X2NvbnRlbnRzCiAldHlwZSA8cnVsZT4gbWVkaWEKICV0eXBlIDxydWxlPiBpbXBvcnQK
ICV0eXBlIDxydWxlPiBuYW1lc3BhY2UKQEAgLTI2Miw2ICsyNjMsNyBAQCBzdGF0aWMgaW50IGNz
c3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgQ1NTUGFyc2VyKiBwYXJzZXIpCiAldHlwZSA8c2VsZWN0
b3I+IHNpbXBsZV9zZWxlY3RvcgogJXR5cGUgPHNlbGVjdG9yPiBzZWxlY3RvcgogJXR5cGUgPHNl
bGVjdG9yTGlzdD4gc2VsZWN0b3JfbGlzdAorJXR5cGUgPHNlbGVjdG9yTGlzdD4gbmVzdGVkX3Nl
bGVjdG9yX2xpc3QKICV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNpbXBsZV9zZWxlY3Rvcl9saXN0CiAl
dHlwZSA8c2VsZWN0b3JMaXN0PiByZWdpb25fc2VsZWN0b3IKICV0eXBlIDxzZWxlY3Rvcj4gc2Vs
ZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCkBAIC0yNzMsOSArMjc1LDEzIEBAIHN0YXRp
YyBpbnQgY3NzeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBDU1NQYXJzZXIqIHBhcnNlcikKIAogJXR5
cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uX2xpc3QKICV0eXBlIDxib29sZWFuPiBkZWNsX2xpc3QK
LSV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbgorJXR5cGUgPGJvb2xlYW4+IG5lc3RlZF9ydWxl
c2V0CisldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25fc2VwCisldHlwZSA8Ym9vbGVhbj4gcmF3
X2RlY2xhcmF0aW9uCiAldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zCiAK
KyV0eXBlIDxib29sZWFuPiBtYXliZV9zcGFjZQorCiAldHlwZSA8Ym9vbGVhbj4gcHJpbwogCiAl
dHlwZSA8aW50ZWdlcj4gbWF0Y2gKQEAgLTMzMyw5ICszMzksOSBAQCB3ZWJraXRfdmFsdWU6CiAg
ICAgV0VCS0lUX1ZBTFVFX1NZTSAneycgbWF5YmVfc3BhY2UgZXhwciAnfScgewogICAgICAgICBp
ZiAoJDQpIHsKICAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtG
bG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGll
cyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgICAgIGludCBv
bGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsK
ICAgICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKHBhcnNlci0+bV9pZCwgcGFyc2Vy
LT5tX2ltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcGFyc2VyLT5yb2xsYmFja0xhc3RQcm9w
ZXJ0aWVzKHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIG9sZFBhcnNlZFByb3Bl
cnRpZXMpOworICAgICAgICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhw
YXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7
CiAgICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKICAgICAgICAgfQog
ICAgIH0KQEAgLTM0OSwxNiArMzU1LDE0IEBAIHdlYmtpdF9tZWRpYXF1ZXJ5OgogCiB3ZWJraXRf
c2VsZWN0b3I6CiAgICAgV0VCS0lUX1NFTEVDVE9SX1NZTSAneycgbWF5YmVfc3BhY2Ugc2VsZWN0
b3JfbGlzdCAnfScgewotICAgICAgICBpZiAoJDQpIHsKLSAgICAgICAgICAgIGlmIChwYXJzZXIt
Pm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvcikKLSAgICAgICAgICAgICAgICBwYXJzZXIt
Pm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3Rvci0+YWRvcHRTZWxlY3RvclZlY3RvcigqJDQp
OwotICAgICAgICB9CisgICAgICAgIGlmIChwYXJzZXItPm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VT
ZWxlY3RvcikKKyAgICAgICAgICAgIHBhcnNlci0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVj
dG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCokNCwgcGFyc2VyLT5tX25lc3RlZFNlbGVjdG9yU3Rh
Y2spOwogICAgIH0KIDsKIAogbWF5YmVfc3BhY2U6Ci0gICAgLyogZW1wdHkgKi8gJXByZWMgVU5J
TVBPUlRBTlRfVE9LCi0gIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQorICAgIC8qIGVtcHR5ICov
ICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7ICQkID0gZmFsc2U7IH0KKyAgfCBtYXliZV9zcGFjZSBX
SElURVNQQUNFIHsgJCQgPSB0cnVlOyB9CiAgIDsKIAogbWF5YmVfc2dtbDoKQEAgLTkwOSwxMCAr
OTEzLDE3IEBAIHJ1bGVzZXQ6CiAgICAgfQogICA7CiAKK25lc3RlZF9ydWxlc2V0X2NvbnRlbnRz
OgorICAgIG5lc3RlZF9zZWxlY3Rvcl9saXN0IGF0X3J1bGVfaGVhZGVyX2VuZCAneycgbWF5YmVf
c3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7
CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7
CisgICAgICAgICQkID0gcC0+Y3JlYXRlU3R5bGVSdWxlKCQxKTsKKyAgICB9CisgIDsKKwogc2Vs
ZWN0b3JfbGlzdDoKICAgICBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgewogICAgICAg
ICBpZiAoJDEpIHsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXVzYWJsZVNlbGVjdG9yVmVj
dG9yKCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+c2VsZWN0b3JWZWN0b3IoKTsKICAgICAg
ICAgICAgICQkLT5zaHJpbmsoMCk7CiAgICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKICAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdFNl
bGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CkBAIC05MzEsNiArOTQyLDU4IEBAIHNlbGVjdG9yX2xp
c3Q6CiAgICAgfQogICAgOwogCituZXN0ZWRfc2VsZWN0b3JfbGlzdDoKKyAgICBzZWxlY3RvciAl
cHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAgICAgIENT
U1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAg
ICAkJCA9IHAtPnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOwor
ICAgICAgICAgICAgaWYgKHAtPm1fdHJhaWxpbmdTcGFjZSkKKyAgICAgICAgICAgICAgICAkMS0+
c2V0UHJpb3JSZWxhdGlvbihDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgJDEtPnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OlN1
YlNlbGVjdG9yKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0
b3IoJDEpKTsKKyAgICAgICAgICAgIHAtPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlv
bigpOworICAgICAgICB9CisgICAgfQorICAgIHwgY29tYmluYXRvciBzZWxlY3RvciAlcHJlYyBV
TklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDIpIHsKKyAgICAgICAgICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAgICAkJCA9
IHAtPnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOworICAgICAg
ICAgICAgJDItPnNldFByaW9yUmVsYXRpb24oJDEpOworICAgICAgICAgICAgJCQtPmFwcGVuZChw
LT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMikpOworICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNl
bGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBuZXN0ZWRf
c2VsZWN0b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2UgJyYnIG1heWJlX3NwYWNlIHNlbGVjdG9yICVw
cmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAkNikgeworICAgICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAg
ICAgICAgICQkID0gJDE7CisgICAgICAgICAgICBpZiAoJDUpCisgICAgICAgICAgICAgICAgJDYt
PnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICQ2LT5zZXRQcmlvclJlbGF0aW9uKENTU1NlbGVjdG9yOjpT
dWJTZWxlY3Rvcik7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVj
dG9yKCQ2KSk7CisgICAgICAgICAgICBwLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRp
b24oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IG5l
c3RlZF9zZWxlY3Rvcl9saXN0ICcsJyBtYXliZV9zcGFjZSAnJicgbWF5YmVfc3BhY2UgY29tYmlu
YXRvciBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgIGlmICgkMSAmJiAkNykg
eworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
OworICAgICAgICAkJCA9ICQxOworICAgICAgICAkNy0+c2V0UHJpb3JSZWxhdGlvbigkNik7Cisg
ICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDcpKTsKKyAgICAgICAg
cC0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgfSBlbHNlCisgICAg
ICAgICQkID0gMDsKKyAgfQorICB8IG5lc3RlZF9zZWxlY3Rvcl9saXN0IGVycm9yIHsKKyAgICAg
ICAgJCQgPSAwOworICAgIH0KKyAgIDsKKwogc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNw
YWNlOgogICAgIHNlbGVjdG9yIFdISVRFU1BBQ0UgewogICAgICAgICAkJCA9ICQxOwpAQCAtMTE5
Myw3ICsxMjU2LDcgQEAgcHNldWRvOgogICAgICAgICBpZiAoJDQpIHsKICAgICAgICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgICAgICQkLT5hZG9wdFNl
bGVjdG9yVmVjdG9yKCpwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCQ0KSk7Cisg
ICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcigqcGFyc2VyLT5zaW5rRmxvYXRpbmdT
ZWxlY3RvclZlY3RvcigkNCksIHBhcnNlci0+bV9uZXN0ZWRTZWxlY3RvclN0YWNrKTsKICAgICAg
ICAgICAgICQyLmxvd2VyKCk7CiAgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwogICAgICAg
ICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CkBA
IC0xMjQ4LDkgKzEzMTEsOSBAQCBwc2V1ZG86CiAgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdTZWxlY3RvcigpOwogICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzcyk7CiAKLSAgICAgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CisgICAgICAgICAgICBDU1NTZWxlY3RvclZlY3Rv
ciBzZWxlY3RvclZlY3RvcjsKICAgICAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwYXJz
ZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkJC0+YWRvcHRTZWxl
Y3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3Rv
clZlY3RvcihzZWxlY3RvclZlY3RvciwgcGFyc2VyLT5tX25lc3RlZFNlbGVjdG9yU3RhY2spOwog
CiAgICAgICAgICAgICAkMi5sb3dlcigpOwogICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsK
QEAgLTEyNTksMTAgKzEzMjIsMTAgQEAgcHNldWRvOgogICA7CiAKIGRlY2xhcmF0aW9uX2xpc3Q6
Ci0gICAgZGVjbGFyYXRpb24geworICAgIHJhd19kZWNsYXJhdGlvbiB7CiAgICAgICAgICQkID0g
JDE7CiAgICAgfQotICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uIHsKKyAgICB8IGRlY2xfbGlz
dCByYXdfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoICQyICkK
ICAgICAgICAgICAgICQkID0gJDI7CkBAIC0xMjg1LDE0ICsxMzQ4LDE0IEBAIGRlY2xhcmF0aW9u
X2xpc3Q6CiAgICAgOwogCiBkZWNsX2xpc3Q6Ci0gICAgZGVjbGFyYXRpb24gJzsnIG1heWJlX3Nw
YWNlIHsKKyAgICBkZWNsYXJhdGlvbl9zZXAgbWF5YmVfc3BhY2UgewogICAgICAgICBwYXJzZXIt
Pm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQotICAgIHwgZGVj
bGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0IG1heWJlX3NwYWNlIHsKKyAgICB8IHJhd19kZWNs
YXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgewogICAgICAgICAkJCA9IGZh
bHNlOwogICAgIH0KLSAgICB8IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAnOycgbWF5
YmVfc3BhY2UgeworICAgIHwgcmF3X2RlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAnOycg
bWF5YmVfc3BhY2UgewogICAgICAgICAkJCA9IGZhbHNlOwogICAgIH0KICAgICB8IGVycm9yICc7
JyBtYXliZV9zcGFjZSB7CkBAIC0xMzAyLDcgKzEzNjUsNyBAQCBkZWNsX2xpc3Q6CiAgICAgfCBl
cnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKICAgICAgICAg
JCQgPSBmYWxzZTsKICAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRpb24gJzsnIG1heWJl
X3NwYWNlIHsKKyAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbl9zZXAgbWF5YmVfc3BhY2Ugewog
ICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAgICQkID0gJDE7CiAg
ICAgICAgIGlmICgkMikKQEAgLTEzMTgsNyArMTM4MSwyOSBAQCBkZWNsX2xpc3Q6CiAgICAgfQog
ICAgIDsKIAotZGVjbGFyYXRpb246CituZXN0ZWRfcnVsZXNldF9zdGFydDogJyYnIG1heWJlX3Nw
YWNlIHsKKyAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
OworICAgIHAtPnB1c2hOZXN0ZWRTZWxlY3RvcigkMik7Cit9CisKK2RlY2xhcmF0aW9uX3NlcDoK
KyAgICBuZXN0ZWRfcnVsZXNldCB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgcmF3
X2RlY2xhcmF0aW9uICc7JyB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorCituZXN0ZWRfcnVs
ZXNldDoKKyAgICBuZXN0ZWRfcnVsZXNldF9zdGFydCBiZWZvcmVfc2VsZWN0b3JfbGlzdCBuZXN0
ZWRfcnVsZXNldF9jb250ZW50cyB7CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgIHAtPnBvcE5lc3RlZFNlbGVjdG9yKCk7Cisg
ICAgICAgIGlmICgkMykKKyAgICAgICAgICAgIHAtPm1fc3R5bGVTaGVldC0+cGFyc2VyQXBwZW5k
UnVsZSgkMyk7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorCityYXdfZGVjbGFyYXRpb246
CiAgICAgVkFSX0RFRklOSVRJT04gJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7CiAjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCiAgICAgICAgIHBhcnNlci0+c3RvcmVWYXJpYWJsZURlY2xhcmF0
aW9uKCQxLCBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCksICQ1KTsKQEAgLTEzMzQs
MTAgKzE0MTksMTAgQEAgZGVjbGFyYXRpb246CiAgICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBhcnNl
ZCA9IGZhbHNlOwogICAgICAgICBpZiAoJDEgJiYgJDQpIHsKICAgICAgICAgICAgIHBhcnNlci0+
bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAg
ICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVz
LnNpemUoKTsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5t
X3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKICAgICAgICAgICAgICQkID0gcGFyc2VyLT5wYXJz
ZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KCQxKSwgJDUpOwogICAgICAgICAgICAg
aWYgKCEkJCkKLSAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7
CisgICAgICAgICAgICAgICAgcGFyc2VyLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHBhcnNlci0+
bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1ZTsKICAg
ICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFn
ZVJ1bGUuaAppbmRleCBhZWQ0ZGY0YWUwMWE1YjcxNjA5ZThkYjI4NDcyMDQ1MDg5OTM4MTdmLi5j
ZGYyZDZiM2Y0NWMzMTAwOTIwYTI2MTkyNzA3OTFlNDcwYjFhM2VlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFnZVJ1bGUuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZWxlY3Rv
clRleHQoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwotCiAg
ICAgdm9pZCByZWF0dGFjaChTdHlsZVJ1bGVQYWdlKik7CiAKICAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCmluZGV4IDU5OWFiZGZhMzkwNWZlMTRhOGM1M2EyYTNiYWMyMWIzYTdlNjlmNWUu
LjI1NzgwZDRjZTg2Y2ZkMTNkYzk3MmI5NGZiMjI3NmNhOWRiMDlmYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCkBAIC0yNDQsNiArMjQ0LDcgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1faW1wb3J0YW50KGZhbHNlKQog
ICAgICwgbV9pZChDU1NQcm9wZXJ0eUludmFsaWQpCiAgICAgLCBtX3N0eWxlU2hlZXQoMCkKKyAg
ICAsIG1fcGFyc2VkUHJvcGVydGllcyhhZG9wdFB0cihuZXcgUGFyc2VkUHJvcGVydHlWZWN0b3Ip
KQogICAgICwgbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yKDApCiAgICAgLCBtX251bVBh
cnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3goSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJ
RVMpCiAgICAgLCBtX2luUGFyc2VTaG9ydGhhbmQoMCkKQEAgLTI1NSw2ICsyNTYsNyBAQCBDU1NQ
YXJzZXI6OkNTU1BhcnNlcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogICAgICwg
bV9wYXJzZWRUZXh0UHJlZml4TGVuZ3RoKDApCiAgICAgLCBtX3Byb3BlcnR5UmFuZ2UoVUlOVF9N
QVgsIFVJTlRfTUFYKQogICAgICwgbV9ydWxlU291cmNlRGF0YVJlc3VsdCgwKQorICAgICwgbV90
cmFpbGluZ1NwYWNlKHRydWUpCiAgICAgLCBtX3BhcnNpbmdNb2RlKE5vcm1hbE1vZGUpCiAgICAg
LCBtX2N1cnJlbnRDaGFyYWN0ZXIoMCkKICAgICAsIG1fdG9rZW5TdGFydCgwKQpAQCAtMjYzLDYg
KzI2NSw3IEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCiAgICAgLCBtX2xhc3RTZWxlY3RvckxpbmVOdW1iZXIoMCkKICAgICAsIG1fYWxsb3dJ
bXBvcnRSdWxlcyh0cnVlKQogICAgICwgbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyh0cnVl
KQorICAgICwgbV9zZWxlY3RvclZlY3RvcihhZG9wdFB0cihuZXcgQ1NTU2VsZWN0b3JWZWN0b3Ip
KQogewogI2lmIFlZREVCVUcgPiAwCiAgICAgY3NzeXlkZWJ1ZyA9IDE7CkBAIC0xMTUyLDkgKzEx
NTUsOSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNs
YXJhdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eQogICAgIGJvb2wgb2sgPSBmYWxzZTsKICAg
ICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25s
eVZhbHVlcygpOwotICAgIGlmICghbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgeworICAg
IGlmICghbV9wYXJzZWRQcm9wZXJ0aWVzLT5pc0VtcHR5KCkpIHsKICAgICAgICAgb2sgPSB0cnVl
OwotICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3Bl
cnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcygqbV9wYXJz
ZWRQcm9wZXJ0aWVzLmdldCgpKTsKICAgICAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgfQog
CkBAIC0xMTc1LDcgKzExNzgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihSR0JBMzIm
IGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJpY3QpCiAgICAgaWYgKCFwYXJz
ZXIucGFyc2VDb2xvcihzdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NW
YWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzLmZpcnN0KCkudmFsdWUoKTsK
KyAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzLT5maXJzdCgp
LnZhbHVlKCk7CiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTExOTMsNyArMTE5Niw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUNvbG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGNzc3l5cGFyc2UodGhpcyk7CiAgICAg
bV9ydWxlID0gMDsKIAotICAgIHJldHVybiAhbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSAm
JiBtX3BhcnNlZFByb3BlcnRpZXMuZmlyc3QoKS5pZCgpID09IENTU1Byb3BlcnR5Q29sb3I7Cisg
ICAgcmV0dXJuICFtX3BhcnNlZFByb3BlcnRpZXMtPmlzRW1wdHkoKSAmJiBtX3BhcnNlZFByb3Bl
cnRpZXMtPmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eUNvbG9yOwogfQogCiBib29sIENTU1Bh
cnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTI0Myw5ICsxMjQ2LDkgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlRGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGNvbnN0
IFN0cmluZyYgc3QKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgaWYgKG1faGFzRm9udEZhY2VP
bmx5VmFsdWVzKQogICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICBpZiAo
IW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIW1fcGFyc2VkUHJvcGVy
dGllcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgZGVjbGFyYXRp
b24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGVj
bGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMoKm1fcGFyc2VkUHJvcGVydGllcy5nZXQoKSk7
CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAtMTI4MiwxNCArMTI4NSwx
NCBAQCBQYXNzT3duUHRyPE1lZGlhUXVlcnk+IENTU1BhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5KGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogfQogCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi1zdGF0
aWMgaW5saW5lIHZvaWQgZmlsdGVyUHJvcGVydGllcyhib29sIGltcG9ydGFudCwgY29uc3QgQ1NT
UGFyc2VyOjpQYXJzZWRQcm9wZXJ0eVZlY3RvciYgaW5wdXQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwg
MjU2PiYgb3V0cHV0LCBzaXplX3QmIHVudXNlZEVudHJpZXMsIEJpdEFycmF5PG51bUNTU1Byb3Bl
cnRpZXM+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuVmFyaWFi
bGVzKQorc3RhdGljIGlubGluZSB2b2lkIGZpbHRlclByb3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQs
IGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJvcGVydHlWZWN0b3IqIGlucHV0LCBWZWN0b3I8Q1NT
UHJvcGVydHksIDI1Nj4mIG91dHB1dCwgc2l6ZV90JiB1bnVzZWRFbnRyaWVzLCBCaXRBcnJheTxu
dW1DU1NQcm9wZXJ0aWVzPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
c2VlblZhcmlhYmxlcykKICNlbHNlCi1zdGF0aWMgaW5saW5lIHZvaWQgZmlsdGVyUHJvcGVydGll
cyhib29sIGltcG9ydGFudCwgY29uc3QgQ1NTUGFyc2VyOjpQYXJzZWRQcm9wZXJ0eVZlY3RvciYg
aW5wdXQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiYgb3V0cHV0LCBzaXplX3QmIHVudXNlZEVu
dHJpZXMsIEJpdEFycmF5PG51bUNTU1Byb3BlcnRpZXM+JiBzZWVuUHJvcGVydGllcykKK3N0YXRp
YyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1wb3J0YW50LCBjb25zdCBDU1NQ
YXJzZXI6OlBhcnNlZFByb3BlcnR5VmVjdG9yKiBpbnB1dCwgVmVjdG9yPENTU1Byb3BlcnR5LCAy
NTY+JiBvdXRwdXQsIHNpemVfdCYgdW51c2VkRW50cmllcywgQml0QXJyYXk8bnVtQ1NTUHJvcGVy
dGllcz4mIHNlZW5Qcm9wZXJ0aWVzKQogI2VuZGlmCiB7CiAgICAgLy8gQWRkIHByb3BlcnRpZXMg
aW4gcmV2ZXJzZSBvcmRlciBzbyB0aGF0IGhpZ2hlc3QgcHJpb3JpdHkgZGVmaW5pdGlvbnMgYXJl
IHJlYWNoZWQgZmlyc3QuIER1cGxpY2F0ZSBkZWZpbml0aW9ucyBjYW4gdGhlbiBiZSBpZ25vcmVk
IHdoZW4gZm91bmQuCi0gICAgZm9yIChpbnQgaSA9IGlucHV0LnNpemUoKSAtIDE7IGkgPj0gMDsg
LS1pKSB7Ci0gICAgICAgIGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IGlucHV0W2ldOwor
ICAgIGZvciAoaW50IGkgPSBpbnB1dC0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAg
ICAgY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gaW5wdXQtPmF0KGkpOwogICAgICAgICBp
ZiAocHJvcGVydHkuaXNJbXBvcnRhbnQoKSAhPSBpbXBvcnRhbnQpCiAgICAgICAgICAgICBjb250
aW51ZTsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKQEAgLTEzMTMsMTcgKzEzMTYsMTcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGZpbHRlclByb3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0
IENTU1BhcnNlcjo6UGFyc2VkUHJvcGUKIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NT
UGFyc2VyOjpjcmVhdGVTdHlsZVByb3BlcnR5U2V0KCkKIHsKICAgICBCaXRBcnJheTxudW1DU1NQ
cm9wZXJ0aWVzPiBzZWVuUHJvcGVydGllczsKLSAgICBzaXplX3QgdW51c2VkRW50cmllcyA9IG1f
cGFyc2VkUHJvcGVydGllcy5zaXplKCk7CisgICAgc2l6ZV90IHVudXNlZEVudHJpZXMgPSBtX3Bh
cnNlZFByb3BlcnRpZXMtPnNpemUoKTsKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gcmVz
dWx0cyh1bnVzZWRFbnRyaWVzKTsKIAogICAgIC8vIEltcG9ydGFudCBwcm9wZXJ0aWVzIGhhdmUg
aGlnaGVyIHByaW9yaXR5LCBzbyBhZGQgdGhlbSBmaXJzdC4gRHVwbGljYXRlIGRlZmluaXRpb25z
IGNhbiB0aGVuIGJlIGlnbm9yZWQgd2hlbiBmb3VuZC4KICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxF
UykKICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gc2VlblZhcmlhYmxlczsKLSAgICBmaWx0ZXJQ
cm9wZXJ0aWVzKHRydWUsIG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmll
cywgc2VlblByb3BlcnRpZXMsIHNlZW5WYXJpYWJsZXMpOwotICAgIGZpbHRlclByb3BlcnRpZXMo
ZmFsc2UsIG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblBy
b3BlcnRpZXMsIHNlZW5WYXJpYWJsZXMpOworICAgIGZpbHRlclByb3BlcnRpZXModHJ1ZSwgbV9w
YXJzZWRQcm9wZXJ0aWVzLmdldCgpLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVy
dGllcywgc2VlblZhcmlhYmxlcyk7CisgICAgZmlsdGVyUHJvcGVydGllcyhmYWxzZSwgbV9wYXJz
ZWRQcm9wZXJ0aWVzLmdldCgpLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGll
cywgc2VlblZhcmlhYmxlcyk7CiAjZWxzZQotICAgIGZpbHRlclByb3BlcnRpZXModHJ1ZSwgbV9w
YXJzZWRQcm9wZXJ0aWVzLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcyk7
Ci0gICAgZmlsdGVyUHJvcGVydGllcyhmYWxzZSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCByZXN1bHRz
LCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcyk7CisgICAgZmlsdGVyUHJvcGVydGllcyh0
cnVlLCBtX3BhcnNlZFByb3BlcnRpZXMuZ2V0KCksIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNl
ZW5Qcm9wZXJ0aWVzKTsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKGZhbHNlLCBtX3BhcnNlZFByb3Bl
cnRpZXMuZ2V0KCksIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVzKTsKICNl
bmRpZgogICAgIGlmICh1bnVzZWRFbnRyaWVzKQogICAgICAgICByZXN1bHRzLnJlbW92ZSgwLCB1
bnVzZWRFbnRyaWVzKTsKQEAgLTEzMzMsMTkgKzEzMzYsMTkgQEAgUGFzc1JlZlB0cjxTdHlsZVBy
b3BlcnR5U2V0PiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUHJvcGVydHlTZXQoKQogCiB2b2lkIENT
U1BhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCkKIHsKLSAgICBtX3Bh
cnNlZFByb3BlcnRpZXMuYXBwZW5kKENTU1Byb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFu
dCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5kIHx8IGltcGxpY2l0KSk7
CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5hcHBlbmQoQ1NTUHJvcGVydHkocHJvcElkLCB2YWx1
ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1faW1wbGljaXRTaG9ydGhhbmQgfHwg
aW1wbGljaXQpKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
aW50IG51bSkKIHsKICAgICBBU1NFUlQobnVtID49IDApOwotICAgIEFTU0VSVChtX3BhcnNlZFBy
b3BlcnRpZXMuc2l6ZSgpID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW0pKTsKLSAgICBtX3Bh
cnNlZFByb3BlcnRpZXMuc2hyaW5rKG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgLSBudW0pOwor
ICAgIEFTU0VSVChtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSA+PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obnVtKSk7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5zaHJpbmsobV9wYXJzZWRQcm9w
ZXJ0aWVzLT5zaXplKCkgLSBudW0pOwogfQogCiB2b2lkIENTU1BhcnNlcjo6Y2xlYXJQcm9wZXJ0
aWVzKCkKIHsKLSAgICBtX3BhcnNlZFByb3BlcnRpZXMuY2xlYXIoKTsKKyAgICBtX3BhcnNlZFBy
b3BlcnRpZXMtPmNsZWFyKCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2lu
Qm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7CiAgICAgbV9oYXNGb250RmFjZU9u
bHlWYWx1ZXMgPSBmYWxzZTsKIH0KQEAgLTE3NTcsNyArMTc2MCw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKICAgICAgICAgaWYgKG51bSAh
PSAxIHx8ICFwYXJzZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBpbXBvcnRhbnQpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNl
ZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1f
cGFyc2VkUHJvcGVydGllcy0+bGFzdCgpLnZhbHVlKCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5T3ZlcmZsb3dZLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtMTc4MCw3ICsxNzgzLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgU2hv
cnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICAg
ICAgICAgIGlmICghcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxT
cGFjaW5nLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUo
KTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+bGFz
dCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclZlcnRpY2FsU3BhY2luZywgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjQyNyw3ICsyNDMwLDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5D
b2xsYXBzZSk7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFw
c2VTaG9ydGhhbmQoKS5wcm9wZXJ0aWVzKClbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQ
cm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0g
bV9wYXJzZWRQcm9wZXJ0aWVzLT5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3Bl
cnR5KHdlYmtpdE1hcmdpbkNvbGxhcHNlU2hvcnRoYW5kKCkucHJvcGVydGllcygpWzFdLCB2YWx1
ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0z
MjYwLDcgKzMyNjMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKENTU1Byb3BlcnR5
SUQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEICpwcm9wZXJ0aQogICAgICAgICBjYXNlIDE6
IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIENT
U1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+bGFzdCgpLnZhbHVlKCk7CiAgICAg
ICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNp
dCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0
YW50KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBv
cnRhbnQpOwpAQCAtMzI3MCwxNyArMzI3MywxNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2U0VmFs
dWVzKENTU1Byb3BlcnR5SUQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEICpwcm9wZXJ0aQog
ICAgICAgICBjYXNlIDI6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVz
WzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgLSAyXS52
YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
LT5hdChtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIDIpLnZhbHVlKCk7CiAgICAgICAgICAg
ICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAg
ICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0YW50KTsK
LSAgICAgICAgICAgIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fcGFyc2VkUHJvcGVydGll
cy5zaXplKCkgLSAyXS52YWx1ZSgpOworICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3Bl
cnRpZXMtPmF0KG1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gMikudmFsdWUoKTsKICAgICAg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSAzOiB7CiAgICAgICAgICAg
ICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMl0s
IGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
Q1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fcGFyc2VkUHJvcGVydGllcy5z
aXplKCkgLSAyXS52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzLT5hdChtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIDIpLnZhbHVlKCk7
CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJ
bXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwg
aW1wb3J0YW50KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzc4Myw3ICs3Nzg2LDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlRmxvd1RocmVhZChjb25zdCBTdHJpbmcmIGZsb3dOYW1lKQogCiAg
ICAgbV9ydWxlID0gMDsKIAotICAgIHJldHVybiAoKG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkg
PT0gMSkgJiYgKG1fcGFyc2VkUHJvcGVydGllcy5maXJzdCgpLmlkKCkgPT0gQ1NTUHJvcGVydHlX
ZWJraXRGbG93SW50bykpOworICAgIHJldHVybiAoKG1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgp
ID09IDEpICYmIChtX3BhcnNlZFByb3BlcnRpZXMtPmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdEZsb3dJbnRvKSk7CiB9CiAKIC8vIG5vbmUgfCA8aWRlbnQ+CkBAIC05NDQyLDE0ICs5
NDQ1LDE0IEBAIFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlcjo6c2lua0Zs
b2F0aW5nU2VsZWN0b3IoQ1NTUGFyc2VyU2VsZWN0b3IqCiAgICAgcmV0dXJuIGFkb3B0UHRyKHNl
bGVjdG9yKTsKIH0KIAotVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogQ1NTUGFy
c2VyOjpjcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCkKK0NTU1NlbGVjdG9yVmVjdG9yKiBD
U1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKQogewotICAgIFZlY3RvcjxP
d25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yVmVjdG9yID0gbmV3IFZlY3RvcjxP
d25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID47CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVj
dG9yVmVjdG9yID0gbmV3IENTU1NlbGVjdG9yVmVjdG9yOwogICAgIG1fZmxvYXRpbmdTZWxlY3Rv
clZlY3RvcnMuYWRkKHNlbGVjdG9yVmVjdG9yKTsKICAgICByZXR1cm4gc2VsZWN0b3JWZWN0b3I7
CiB9CiAKLVBhc3NPd25QdHI8VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiA+IENT
U1BhcnNlcjo6c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JWZWN0b3IpCitQYXNzT3duUHRyPENTU1NlbGVjdG9yVmVj
dG9yID4gQ1NTUGFyc2VyOjpzaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZl
Y3Rvciogc2VsZWN0b3JWZWN0b3IpCiB7CiAgICAgaWYgKHNlbGVjdG9yVmVjdG9yKSB7CiAgICAg
ICAgIEFTU0VSVChtX2Zsb2F0aW5nU2VsZWN0b3JWZWN0b3JzLmNvbnRhaW5zKHNlbGVjdG9yVmVj
dG9yKSk7CkBAIC05NjQyLDEzICs5NjQ1LDEzIEBAIFN0eWxlUnVsZUtleWZyYW1lcyogQ1NTUGFy
c2VyOjpjcmVhdGVLZXlmcmFtZXNSdWxlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0CiAg
ICAgcmV0dXJuIHJ1bGVQdHI7CiB9CiAKLVN0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6Y3JlYXRl
U3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycykK
K1N0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKENTU1NlbGVjdG9yVmVj
dG9yKiBzZWxlY3RvcnMpCiB7CiAgICAgU3R5bGVSdWxlKiByZXN1bHQgPSAwOwogICAgIGlmIChz
ZWxlY3RvcnMpIHsKICAgICAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFj
ZURlY2xhcmF0aW9ucyA9IGZhbHNlOwogICAgICAgICBSZWZQdHI8U3R5bGVSdWxlPiBydWxlID0g
U3R5bGVSdWxlOjpjcmVhdGUobV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKTsKLSAgICAgICAgcnVs
ZS0+cGFyc2VyQWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3JzKTsKKyAgICAgICAgcnVsZS0+
cGFyc2VyQWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3JzLCBtX25lc3RlZFNlbGVjdG9yU3Rh
Y2spOwogICAgICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAgICAgICBk
ZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKICAgICAgICAgcnVsZS0+c2V0UHJvcGVydGllcyhj
cmVhdGVTdHlsZVByb3BlcnR5U2V0KCkpOwpAQCAtOTY2NCw4ICs5NjY3LDggQEAgU3R5bGVSdWxl
QmFzZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gPiogc2UKIFN0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VS
dWxlKCkKIHsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFy
YXRpb25zID0gZmFsc2U7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGFyc2VkUHJv
cGVydGllcy5zaXplKCk7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBt
X3BhcnNlZFByb3BlcnRpZXNbaV07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGFy
c2VkUHJvcGVydGllcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ1NTUHJvcGVydHkmIHByb3Bl
cnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5hdChpKTsKICAgICAgICAgaWYgKHByb3BlcnR5Lmlk
KCkgPT0gQ1NTUHJvcGVydHlGb250VmFyaWFudCAmJiBwcm9wZXJ0eS52YWx1ZSgpLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICBwcm9wZXJ0eS53cmFwVmFsdWVJbkNvbW1hU2VwYXJh
dGVkTGlzdCgpOwogICAgICAgICBlbHNlIGlmIChwcm9wZXJ0eS5pZCgpID09IENTU1Byb3BlcnR5
Rm9udEZhbWlseSAmJiAoIXByb3BlcnR5LnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwgc3RhdGlj
X2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJvcGVydHkudmFsdWUoKSktPmxlbmd0aCgpICE9IDEpKSB7
CkBAIC05NzU2LDkgKzk3NTksOSBAQCBTdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZVBh
Z2VSdWxlKFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlYwogICAgIFN0eWxl
UnVsZVBhZ2UqIHBhZ2VSdWxlID0gMDsKICAgICBpZiAocGFnZVNlbGVjdG9yKSB7CiAgICAgICAg
IFJlZlB0cjxTdHlsZVJ1bGVQYWdlPiBydWxlID0gU3R5bGVSdWxlUGFnZTo6Y3JlYXRlKCk7Ci0g
ICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7
CisgICAgICAgIENTU1NlbGVjdG9yVmVjdG9yIHNlbGVjdG9yVmVjdG9yOwogICAgICAgICBzZWxl
Y3RvclZlY3Rvci5hcHBlbmQocGFnZVNlbGVjdG9yKTsKLSAgICAgICAgcnVsZS0+cGFyc2VyQWRv
cHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgICAgIHJ1bGUtPnBhcnNlckFk
b3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IsIG1fbmVzdGVkU2VsZWN0b3JTdGFjayk7
CiAgICAgICAgIHJ1bGUtPnNldFByb3BlcnRpZXMoY3JlYXRlU3R5bGVQcm9wZXJ0eVNldCgpKTsK
ICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVzLmFw
cGVuZChydWxlLnJlbGVhc2UoKSk7CkBAIC05NzY4LDcgKzk3NzEsNyBAQCBTdHlsZVJ1bGVCYXNl
KiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
IHBhZ2VTZWxlYwogICAgIHJldHVybiBwYWdlUnVsZTsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OnNl
dFJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gPiogc2VsZWN0b3JzKQordm9pZCBDU1NQYXJzZXI6OnNldFJldXNhYmxlUmVnaW9uU2Vs
ZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9ycykKIHsKICAgICBpZiAoc2Vs
ZWN0b3JzKQogICAgICAgICBtX3JldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3Iuc3dhcCgqc2Vs
ZWN0b3JzKTsKQEAgLTk3ODEsNyArOTc4NCw3IEBAIFN0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6
Y3JlYXRlUmVnaW9uUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiByCiAK
ICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0g
ZmFsc2U7CiAKLSAgICBSZWZQdHI8U3R5bGVSdWxlUmVnaW9uPiByZWdpb25SdWxlID0gU3R5bGVS
dWxlUmVnaW9uOjpjcmVhdGUocmVnaW9uU2VsZWN0b3IsICpydWxlcyk7CisgICAgUmVmUHRyPFN0
eWxlUnVsZVJlZ2lvbj4gcmVnaW9uUnVsZSA9IFN0eWxlUnVsZVJlZ2lvbjo6Y3JlYXRlKHJlZ2lv
blNlbGVjdG9yLCBtX25lc3RlZFNlbGVjdG9yU3RhY2ssICpydWxlcyk7CiAKICAgICBTdHlsZVJ1
bGVSZWdpb24qIHJlc3VsdCA9IHJlZ2lvblJ1bGUuZ2V0KCk7CiAgICAgbV9wYXJzZWRSdWxlcy5h
cHBlbmQocmVnaW9uUnVsZS5yZWxlYXNlKCkpOwpAQCAtOTgwNCwyMiArOTgwNywyMiBAQCBTdHls
ZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZU1hcmdpbkF0UnVsZShDU1NTZWxlY3Rvcjo6TWFy
Z2luQm94VHlwZSAvKiBtYXJnaQogCiB2b2lkIENTU1BhcnNlcjo6c3RhcnREZWNsYXJhdGlvbnNG
b3JNYXJnaW5Cb3goKQogewotICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJv
eCA9IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CisgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
QmVmb3JlTWFyZ2luQm94ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7CiB9CiAKIHZvaWQg
Q1NTUGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKQogewotICAgIHJvbGxiYWNr
TGFzdFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIG1fbnVtUGFyc2VkUHJv
cGVydGllc0JlZm9yZU1hcmdpbkJveCk7CisgICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhtX3Bh
cnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJ
RF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpkZWxldGVGb250
RmFjZU9ubHlWYWx1ZXMoKQogewogICAgIEFTU0VSVChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7
KSB7Ci0gICAgICAgIENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IG1fcGFyc2VkUHJvcGVydGllc1tp
XTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXpl
KCk7KSB7CisgICAgICAgIENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IG1fcGFyc2VkUHJvcGVydGll
cy0+YXQoaSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eS5pZCgpID09IENTU1Byb3BlcnR5Rm9udFZh
cmlhbnQgJiYgcHJvcGVydHkudmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAg
bV9wYXJzZWRQcm9wZXJ0aWVzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIG1fcGFyc2VkUHJvcGVy
dGllcy0+cmVtb3ZlKGkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgKytpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGRmNDI3MWQ5ODliM2E2ZmUwNmIwN2Mw
MzY5ODIzNGE4ZWI4NTcyZWQuLjAxZGZhZWFkZDZhMTk1ZGZmMzIyNmVlNzcwNmU5Nzk3NTE0ZTZl
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwg
Ym9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSk7CiAgICAgdm9pZCByb2xsYmFj
a0xhc3RQcm9wZXJ0aWVzKGludCBudW0pOwotICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0
IHsgcmV0dXJuICFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNQ
cm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy0+aXNFbXB0eSgp
OyB9CiAKICAgICBib29sIHBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQp
OwogICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYsIGJvb2wgaW1wb3J0YW50KTsKQEAgLTI0OSw4ICsyNDksOCBAQCBwdWJs
aWM6CiAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAg
ICBQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBzaW5rRmxvYXRpbmdTZWxlY3RvcihDU1NQ
YXJzZXJTZWxlY3RvciopOwogCi0gICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4g
PiogY3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpOwotICAgIFBhc3NPd25QdHI8VmVjdG9y
PE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiA+IHNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9y
KFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qKTsKKyAgICBDU1NTZWxlY3RvclZl
Y3RvciogY3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpOworICAgIFBhc3NPd25QdHI8Q1NT
U2VsZWN0b3JWZWN0b3I+IHNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKENTU1NlbGVjdG9yVmVj
dG9yKik7CiAKICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0
KCk7CiAgICAgUGFzc093blB0cjxDU1NQYXJzZXJWYWx1ZUxpc3Q+IHNpbmtGbG9hdGluZ1ZhbHVl
TGlzdChDU1NQYXJzZXJWYWx1ZUxpc3QqKTsKQEAgLTI2OCwxMCArMjY4LDEwIEBAIHB1YmxpYzoK
ICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiBSdWxlTGlzdDsKICAg
ICBTdHlsZVJ1bGVCYXNlKiBjcmVhdGVNZWRpYVJ1bGUoTWVkaWFRdWVyeVNldCosIFJ1bGVMaXN0
Kik7CiAgICAgUnVsZUxpc3QqIGNyZWF0ZVJ1bGVMaXN0KCk7Ci0gICAgU3R5bGVSdWxlQmFzZSog
Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVj
dG9ycyk7CisgICAgU3R5bGVSdWxlQmFzZSogY3JlYXRlU3R5bGVSdWxlKENTU1NlbGVjdG9yVmVj
dG9yKiBzZWxlY3RvcnMpOwogICAgIFN0eWxlUnVsZUJhc2UqIGNyZWF0ZUZvbnRGYWNlUnVsZSgp
OwogICAgIFN0eWxlUnVsZUJhc2UqIGNyZWF0ZVBhZ2VSdWxlKFBhc3NPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+IHBhZ2VTZWxlY3Rvcik7Ci0gICAgU3R5bGVSdWxlQmFzZSogY3JlYXRlUmVnaW9u
UnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiByZWdpb25TZWxlY3Rvciwg
UnVsZUxpc3QqIHJ1bGVzKTsKKyAgICBTdHlsZVJ1bGVCYXNlKiBjcmVhdGVSZWdpb25SdWxlKENT
U1NlbGVjdG9yVmVjdG9yKiByZWdpb25TZWxlY3RvciwgUnVsZUxpc3QqIHJ1bGVzKTsKICAgICBT
dHlsZVJ1bGVCYXNlKiBjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6Ok1hcmdpbkJveFR5
cGUpOwogICAgIHZvaWQgc3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKICAgICB2b2lk
IGVuZERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpOwpAQCAtMjk0LDEwICsyOTQsMzMgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBpbnZhbGlkQmxvY2tIaXQoKTsKIAotICAgIFZlY3RvcjxPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHJldXNhYmxlU2VsZWN0b3JWZWN0b3IoKSB7IHJldHVybiAm
bV9yZXVzYWJsZVNlbGVjdG9yVmVjdG9yOyB9CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVj
dG9yVmVjdG9yKCkgeyByZXR1cm4gbV9zZWxlY3RvclZlY3Rvci5nZXQoKTsgfQogCi0gICAgdm9p
ZCBzZXRSZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+ID4qIHNlbGVjdG9ycyk7Ci0gICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gPiogcmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcigpIHsgcmV0dXJuICZtX3JldXNh
YmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7IH0KKyAgICB2b2lkIHB1c2hOZXN0ZWRTZWxlY3Rvcihi
b29sIHRyYWlsaW5nU3BhY2UpCisgICAgeworICAgICAgICBtX25lc3RlZFNlbGVjdG9yU3RhY2su
YXBwZW5kKG1fc2VsZWN0b3JWZWN0b3IucmVsZWFzZSgpKTsKKyAgICAgICAgbV9zZWxlY3RvclZl
Y3RvciA9IGFkb3B0UHRyKG5ldyBDU1NTZWxlY3RvclZlY3Rvcik7CisKKyAgICAgICAgbV9zdGFj
a2VkUGFyc2VkUHJvcGVydGllcy5hcHBlbmQobmV3IFN0YWNrZWRQYXJzZWRQcm9wZXJ0aWVzKG1f
cGFyc2VkUHJvcGVydGllcy5yZWxlYXNlKCksIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1h
cmdpbkJveCkpOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBhZG9wdFB0cihuZXcgUGFy
c2VkUHJvcGVydHlWZWN0b3IpOworICAgICAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVN
YXJnaW5Cb3ggPSAwOworICAgICAgICBtX3RyYWlsaW5nU3BhY2UgPSB0cmFpbGluZ1NwYWNlOwor
ICAgIH0KKworICAgIHZvaWQgcG9wTmVzdGVkU2VsZWN0b3IoKQorICAgIHsKKyAgICAgICAgbV9z
ZWxlY3RvclZlY3RvciA9IG1fbmVzdGVkU2VsZWN0b3JTdGFjay5sYXN0KCkucmVsZWFzZSgpOwor
ICAgICAgICBtX25lc3RlZFNlbGVjdG9yU3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAgICAgIFN0
YWNrZWRQYXJzZWRQcm9wZXJ0aWVzICpzdGFja0hlYWQgPSBtX3N0YWNrZWRQYXJzZWRQcm9wZXJ0
aWVzLmxhc3QoKTsKKyAgICAgICAgbV9zdGFja2VkUGFyc2VkUHJvcGVydGllcy5yZW1vdmVMYXN0
KCk7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcyA9IHN0YWNrSGVhZC0+bV9wYXJzZWRQcm9w
ZXJ0aWVzLnJlbGVhc2UoKTsKKyAgICAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94ID0gc3RhY2tIZWFkLT5tX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3g7
CisgICAgICAgIG1fdHJhaWxpbmdTcGFjZSA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBzZXRS
ZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKENTU1NlbGVjdG9yVmVjdG9yKiBzZWxlY3RvcnMp
OworICAgIENTU1NlbGVjdG9yVmVjdG9yKiByZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKCkg
eyByZXR1cm4gJm1fcmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcjsgfQogCiAgICAgdm9pZCB1
cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKICAgICB2b2lkIHVwZGF0ZUxhc3RN
ZWRpYUxpbmUoTWVkaWFRdWVyeVNldCopOwpAQCAtMzE1LDEyICszMzgsMjUgQEAgcHVibGljOgog
ICAgIFJlZlB0cjxTdHlsZUtleWZyYW1lPiBtX2tleWZyYW1lOwogICAgIE93blB0cjxNZWRpYVF1
ZXJ5PiBtX21lZGlhUXVlcnk7CiAgICAgT3duUHRyPENTU1BhcnNlclZhbHVlTGlzdD4gbV92YWx1
ZUxpc3Q7CisKICAgICB0eXBlZGVmIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiBQYXJzZWRQcm9w
ZXJ0eVZlY3RvcjsKLSAgICBQYXJzZWRQcm9wZXJ0eVZlY3RvciBtX3BhcnNlZFByb3BlcnRpZXM7
CisgICAgT3duUHRyPFBhcnNlZFByb3BlcnR5VmVjdG9yPiBtX3BhcnNlZFByb3BlcnRpZXM7CiAg
ICAgQ1NTU2VsZWN0b3JMaXN0KiBtX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3I7CiAKICAg
ICB1bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3g7CiAKKyAgICBz
dHJ1Y3QgU3RhY2tlZFBhcnNlZFByb3BlcnRpZXMgeworICAgICAgICBPd25QdHI8UGFyc2VkUHJv
cGVydHlWZWN0b3I+IG1fcGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgdW5zaWduZWQgbV9udW1Q
YXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94OworCisgICAgICAgIFN0YWNrZWRQYXJzZWRQ
cm9wZXJ0aWVzKFBhc3NPd25QdHI8UGFyc2VkUHJvcGVydHlWZWN0b3IgPiBwYXJzZWRQcm9wZXJ0
aWVzLCB1bnNpZ25lZCBudW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KQorICAgICAg
ICA6IG1fcGFyc2VkUHJvcGVydGllcyhwYXJzZWRQcm9wZXJ0aWVzKQorICAgICAgICAsIG1fbnVt
UGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveChudW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3Jl
TWFyZ2luQm94KQorICAgICAgICB7IH0KKyAgICB9OworCisgICAgVmVjdG9yPFN0YWNrZWRQYXJz
ZWRQcm9wZXJ0aWVzICo+IG1fc3RhY2tlZFBhcnNlZFByb3BlcnRpZXM7CisKICAgICBpbnQgbV9p
blBhcnNlU2hvcnRoYW5kOwogICAgIENTU1Byb3BlcnR5SUQgbV9jdXJyZW50U2hvcnRoYW5kOwog
ICAgIGJvb2wgbV9pbXBsaWNpdFNob3J0aGFuZDsKQEAgLTM1MSw2ICszODcsMTAgQEAgcHVibGlj
OgogICAgIGludCBsZXgodm9pZCogeXlsdmFsKTsKICAgICBpbnQgdG9rZW4oKSB7IHJldHVybiBt
X3Rva2VuOyB9CiAKKyAgICBDU1NTZWxlY3RvclZlY3Rvckxpc3QgbV9uZXN0ZWRTZWxlY3RvclN0
YWNrOworCisgICAgYm9vbCBtX3RyYWlsaW5nU3BhY2U7CisKICAgICBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NTUGFyc2VyVmFsdWUq
KTsKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVTdHJp
bmdWYWx1ZShDU1NQYXJzZXJWYWx1ZSopOwogCkBAIC00MzgsNyArNDc4LDcgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhUXVlcnlTZXQ+ID4gbV9wYXJzZWRNZWRpYVF1ZXJ5U2V0
czsKICAgICBWZWN0b3I8T3duUHRyPFJ1bGVMaXN0PiA+IG1fcGFyc2VkUnVsZUxpc3RzOwogICAg
IEhhc2hTZXQ8Q1NTUGFyc2VyU2VsZWN0b3IqPiBtX2Zsb2F0aW5nU2VsZWN0b3JzOwotICAgIEhh
c2hTZXQ8VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPio+IG1fZmxvYXRpbmdTZWxl
Y3RvclZlY3RvcnM7CisgICAgSGFzaFNldDxDU1NTZWxlY3RvclZlY3Rvcio+IG1fZmxvYXRpbmdT
ZWxlY3RvclZlY3RvcnM7CiAgICAgSGFzaFNldDxDU1NQYXJzZXJWYWx1ZUxpc3QqPiBtX2Zsb2F0
aW5nVmFsdWVMaXN0czsKICAgICBIYXNoU2V0PENTU1BhcnNlckZ1bmN0aW9uKj4gbV9mbG9hdGlu
Z0Z1bmN0aW9uczsKIApAQCAtNDQ4LDggKzQ4OCw4IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8
VmVjdG9yPFJlZlB0cjxTdHlsZUtleWZyYW1lPiA+ID4gbV9mbG9hdGluZ0tleWZyYW1lVmVjdG9y
OwogCi0gICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBtX3JldXNhYmxlU2Vs
ZWN0b3JWZWN0b3I7Ci0gICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBtX3Jl
dXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7CisgICAgT3duUHRyPENTU1NlbGVjdG9yVmVjdG9y
PiBtX3NlbGVjdG9yVmVjdG9yOworICAgIENTU1NlbGVjdG9yVmVjdG9yIG1fcmV1c2FibGVSZWdp
b25TZWxlY3RvclZlY3RvcjsKIAogICAgIFJlZlB0cjxDU1NDYWxjVmFsdWU+IG1fcGFyc2VkQ2Fs
Y3VsYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKaW5kZXggMzdh
MGQ0NTJjNjVjNDU1ZTVjNDEwNGU1NGU0Nzg5MmZiMjE1NWUwNC4uNjE4YTlhYzljNGVmYjY3ODIz
Yzg1MDM4MWMxMWM5MjFiNTAyZTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVl
cy5jcHAKQEAgLTExNCwxMCArMTE0LDEwIEBAIENTU1BhcnNlclNlbGVjdG9yOjp+Q1NTUGFyc2Vy
U2VsZWN0b3IoKQogICAgIH0KIH0KIAotdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxl
Y3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZl
Y3RvcikKK3ZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IoQ1NTU2Vs
ZWN0b3JWZWN0b3ImIHNlbGVjdG9yVmVjdG9yLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmIHN0YWNr
ZWRTZWxlY3RvcnMpCiB7CiAgICAgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QgPSBmYXN0
TmV3PENTU1NlbGVjdG9yTGlzdD4oKTsKLSAgICBzZWxlY3Rvckxpc3QtPmFkb3B0U2VsZWN0b3JW
ZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOworICAgIHNlbGVjdG9yTGlzdC0+YWRvcHRTZWxlY3RvclZl
Y3RvcihzZWxlY3RvclZlY3Rvciwgc3RhY2tlZFNlbGVjdG9ycyk7CiAgICAgbV9zZWxlY3Rvci0+
c2V0U2VsZWN0b3JMaXN0KGFkb3B0UHRyKHNlbGVjdG9yTGlzdCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggYzMyYTU3ZGQ2ODc5OThkZWQ2YzI0MDFmNDRkZDMz
MTk0YTJjMjk1NC4uNGEyM2RhMThlYjU5MzM0ODM5NjQ4NjAxNjcxZjA1MmFlMzdlNzAxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTA0LDYgKzEwNCwxMSBAQCBwdWJs
aWM6CiAgICAgT3duUHRyPENTU1BhcnNlclZhbHVlTGlzdD4gYXJnczsKIH07CiAKK2NsYXNzIENT
U1BhcnNlclNlbGVjdG9yOworCit0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4gQ1NTU2VsZWN0b3JWZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0
b3JWZWN0b3I+ID4gQ1NTU2VsZWN0b3JWZWN0b3JMaXN0OworCiBjbGFzcyBDU1NQYXJzZXJTZWxl
Y3RvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMTIsNiAr
MTE3LDggQEAgcHVibGljOgogCiAgICAgUGFzc093blB0cjxDU1NTZWxlY3Rvcj4gcmVsZWFzZVNl
bGVjdG9yKCkgeyByZXR1cm4gbV9zZWxlY3Rvci5yZWxlYXNlKCk7IH0KIAorICAgIFBhc3NPd25Q
dHI8Q1NTU2VsZWN0b3I+IGR1cGxpY2F0ZVNlbGVjdG9yKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3
IENTU1NlbGVjdG9yKG1fc2VsZWN0b3IuZ2V0KCkpKTsgfQorCiAgICAgdm9pZCBzZXRUYWcoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0VGFnKHZhbHVlKTsgfQog
ICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX3NlbGVjdG9y
LT5zZXRWYWx1ZSh2YWx1ZSk7IH0KICAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRBdHRyaWJ1dGUodmFsdWUpOyB9CkBAIC0x
MjAsNyArMTI3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlbGF0aW9uKENTU1NlbGVjdG9y
OjpSZWxhdGlvbiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX3JlbGF0aW9uID0gdmFsdWU7IH0KICAg
ICB2b2lkIHNldEZvclBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQogCi0gICAg
dm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
ID4mIHNlbGVjdG9yVmVjdG9yKTsKKyAgICB2b2lkIHNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0
b3I6OlJlbGF0aW9uIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFByaW9yUmVsYXRpb24odmFsdWUp
OyB9CisgCisgICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIGdldFByaW9yUmVsYXRpb24oKSB7IHJl
dHVybiBtX3NlbGVjdG9yLT5nZXRQcmlvclJlbGF0aW9uKCk7IH0KKworICAgIHZvaWQgYWRvcHRT
ZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3RvciYsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYp
OwogCiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsgfQogICAgIGJvb2wgaXNVbmtub3duUHNldWRv
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzVW5rbm93blBzZXVkb0VsZW1l
bnQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggMTM0NzliNjQwYWI5NjI3
YmMxNWJhY2M5ZWEyZDc3NDM2MDZkOWNjZS4uYjU4ZTE2ODRkZTM1ODA0M2Y4ODBjNWUxYjA5ZWNh
NTZjMzQ5ZGNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0zOCw2ICszOCwz
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
K0NTU1NlbGVjdG9yOjpDU1NTZWxlY3RvcihDU1NTZWxlY3RvciogY29weSkKKyAgICA6IG1fcmVs
YXRpb24oY29weS0+bV9yZWxhdGlvbikKKyAgICAsIG1fbWF0Y2goY29weS0+bV9tYXRjaCkKKyAg
ICAsIG1fcHNldWRvVHlwZShjb3B5LT5tX3BzZXVkb1R5cGUpCisgICAgLCBtX3BhcnNlZE50aChj
b3B5LT5tX3BhcnNlZE50aCkKKyAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoY29weS0+bV9p
c0xhc3RJblNlbGVjdG9yTGlzdCkKKyAgICAsIG1faXNMYXN0SW5UYWdIaXN0b3J5KGNvcHktPm1f
aXNMYXN0SW5UYWdIaXN0b3J5KQorICAgICwgbV9pc0ZvclBhZ2UoY29weS0+bV9pc0ZvclBhZ2Up
CisgICAgLCBtX3ByaW9yUmVsYXRpb24oY29weS0+bV9wcmlvclJlbGF0aW9uKQorICAgICwgbV90
YWcoY29weS0+bV90YWcpCit7CisgICAgc2V0VmFsdWUoY29weS0+dmFsdWUoKSk7CisKKyAgICBp
ZiAoY29weS0+bV9oYXNSYXJlRGF0YSkgeworICAgICAgICBjcmVhdGVSYXJlRGF0YSgpOworICAg
ICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9hID0gY29weS0+bV9kYXRhLm1fcmFyZURhdGEtPm1f
YTsKKyAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYiA9IGNvcHktPm1fZGF0YS5tX3JhcmVE
YXRhLT5tX2I7CisgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZSA9IGNvcHkt
Pm1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZTsKKyAgICAgICAgbV9kYXRhLm1fcmFyZURh
dGEtPm1fYXJndW1lbnQgPSBjb3B5LT5tX2RhdGEubV9yYXJlRGF0YS0+bV9hcmd1bWVudDsKKyAg
ICAgICAgaWYgKGNvcHktPm1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdC5nZXQoKSkK
KyAgICAgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdCA9IGNvcHktPm1f
ZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdDsKKyAgICB9Cit9CisKIHZvaWQgQ1NTU2Vs
ZWN0b3I6OmNyZWF0ZVJhcmVEYXRhKCkKIHsKICAgICBpZiAobV9oYXNSYXJlRGF0YSkKQEAgLTY0
OCw3ICs2NzIsNyBAQCB2b2lkIENTU1NlbGVjdG9yOjpzZXRBcmd1bWVudChjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0U2VsZWN0b3JMaXN0KFBhc3NPd25Q
dHI8Q1NTU2VsZWN0b3JMaXN0PiBzZWxlY3Rvckxpc3QpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEo
KTsKLSAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QgPSBzZWxlY3Rvckxpc3Q7
CisgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0ID0gUmVmY291bnRlZENTU1Nl
bGVjdG9yTGlzdDo6Y3JlYXRlKHNlbGVjdG9yTGlzdC5sZWFrUHRyKCkpOwogfQogCiBib29sIENT
U1NlbGVjdG9yOjpwYXJzZU50aCgpCkBAIC03MDcsNiArNzMxLDEyIEBAIENTU1NlbGVjdG9yOjpS
YXJlRGF0YTo6flJhcmVEYXRhKCkKICAgICAgICAgbV92YWx1ZS0+ZGVyZWYoKTsKIH0KIAorCitS
ZWZjb3VudGVkQ1NTU2VsZWN0b3JMaXN0Ojp+UmVmY291bnRlZENTU1NlbGVjdG9yTGlzdCgpCit7
CisgICAgZGVsZXRlIG1faW1wbDsKK30KKwogLy8gYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHBhcnNp
bmcgbnRoLWFyZ3VtZW50cwogYm9vbCBDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OnBhcnNlTnRoKCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggMmU5ZTU5MDhmY2QxZWUxMzUyZTkzNjc3
MjAyNWEyODZhZWE2YmI1Yy4uOTBiNzU5ZDdiOGQ2N2EzN2ZjNTE1YzQyYTBmNWViMzE4YjM2Yjgx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTMxLDYgKzMxLDI1IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OwogCisgICAgY2xhc3MgUmVm
Y291bnRlZENTU1NlbGVjdG9yTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZmNvdW50ZWRDU1NT
ZWxlY3Rvckxpc3Q+IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UmVmY291bnRlZENTU1NlbGVjdG9yTGlzdD4gY3JlYXRlKENTU1NlbGVjdG9yTGlzdCog
aW1wbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3QoaW1wbCkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB+UmVmY291bnRlZENTU1NlbGVjdG9yTGlzdCgpOworCisgICAgICAgICAgICBDU1NT
ZWxlY3Rvckxpc3QqIGdldCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1faW1wbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAg
Q1NTU2VsZWN0b3JMaXN0ICptX2ltcGw7CisgICAgICAgICAgICBSZWZjb3VudGVkQ1NTU2VsZWN0
b3JMaXN0KENTU1NlbGVjdG9yTGlzdCogaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9CisgICAgfTsK
KwogICAgIC8vIHRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNlbGVjdG9yIGZvciBhIFN0eWxlUnVs
ZQogICAgIGNsYXNzIENTU1NlbGVjdG9yIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC0zOSw2ICs1OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ1NTU2Vs
ZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICBDU1NTZWxlY3Rvcihjb25zdCBD
U1NTZWxlY3RvciYpOwogCisgICAgICAgIENTU1NlbGVjdG9yKENTU1NlbGVjdG9yKiBjb3B5KTsK
KwogICAgICAgICB+Q1NTU2VsZWN0b3IoKTsKIAogICAgICAgICAvKioKQEAgLTE5OSwxNCArMjIw
LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmlu
Zyo+KG1faGFzUmFyZURhdGEgPyAmbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUgOiAmbV9kYXRh
Lm1fdmFsdWUpOyB9CiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSgpIGNv
bnN0OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyZ3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX2FyZ3VtZW50IDogbnVsbEF0
b207IH0KLSAgICAgICAgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0Lmdl
dCgpIDogMDsgfQorICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgJiYgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JM
aXN0ID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0LT5nZXQoKSA6IDA7IH0KIAog
ICAgICAgICB2b2lkIHNldFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBtX3RhZyA9
IHZhbHVlOyB9CisgICAgICAgIHZvaWQgc2V0UHJpb3JSZWxhdGlvbihSZWxhdGlvbiB2YWx1ZSkg
eyBtX3ByaW9yUmVsYXRpb24gPSB2YWx1ZTsgfQogICAgICAgICB2b2lkIHNldFZhbHVlKGNvbnN0
IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgICAgIHZvaWQgc2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJik7
CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0b3JMaXN0KFBhc3NPd25QdHI8Q1NTU2VsZWN0b3JMaXN0
Pik7CiAKKyAgICAgICAgUmVsYXRpb24gZ2V0UHJpb3JSZWxhdGlvbigpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFJlbGF0aW9uPihtX3ByaW9yUmVsYXRpb24pOyB9CisKICAgICAgICAgYm9vbCBwYXJz
ZU50aCgpOwogICAgICAgICBib29sIG1hdGNoTnRoKGludCBjb3VudCk7CiAKQEAgLTIzNyw3ICsy
NjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pc0xhc3RJblRhZ0hp
c3RvcnkgICAgIDogMTsKICAgICAgICAgYm9vbCBtX2hhc1JhcmVEYXRhICAgICAgICAgICAgOiAx
OwogICAgICAgICBib29sIG1faXNGb3JQYWdlICAgICAgICAgICAgICA6IDE7Ci0KKyAgICAgICAg
dW5zaWduZWQgbV9wcmlvclJlbGF0aW9uICAgICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9uCiAgICAg
ICAgIHVuc2lnbmVkIHNwZWNpZmljaXR5Rm9yT25lU2VsZWN0b3IoKSBjb25zdDsKICAgICAgICAg
dW5zaWduZWQgc3BlY2lmaWNpdHlGb3JQYWdlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgZXh0cmFj
dFBzZXVkb1R5cGUoKSBjb25zdDsKQEAgLTI1Nyw3ICsyODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICBpbnQgbV9iOyAvLyBVc2VkIGZvciA6bnRoLSoKICAgICAgICAgICAg
IFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8vIHVzZWQgZm9yIGF0dHJpYnV0ZSBzZWxlY3Rv
cgogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJndW1lbnQ7IC8vIFVzZWQgZm9yIDpjb250
YWlucywgOmxhbmcgYW5kIDpudGgtKgotICAgICAgICAgICAgT3duUHRyPENTU1NlbGVjdG9yTGlz
dD4gbV9zZWxlY3Rvckxpc3Q7IC8vIFVzZWQgZm9yIDotd2Via2l0LWFueSBhbmQgOm5vdAorICAg
ICAgICAgICAgUmVmUHRyPFJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3Q+IG1fc2VsZWN0b3JMaXN0
OyAvLyBVc2VkIGZvciA6LXdlYmtpdC1hbnkgYW5kIDpub3QKICAgICAgICAgCiAgICAgICAgIHBy
aXZhdGU6CiAgICAgICAgICAgICBSYXJlRGF0YShQYXNzUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+
IHZhbHVlKTsKQEAgLTMyOCwxMyArMzUyLDE1IEBAIGlubGluZSB2b2lkIENTU1NlbGVjdG9yOjpz
ZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogICAgICAgICBpZiAobV9kYXRhLm1f
cmFyZURhdGEtPm1fdmFsdWUpCiAgICAgICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV92YWx1
ZS0+ZGVyZWYoKTsKICAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUgPSB2YWx1ZS5p
bXBsKCk7Ci0gICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlLT5yZWYoKTsKKyAgICAg
ICAgaWYgKG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlKQorICAgICAgICAgICAgbV9kYXRhLm1f
cmFyZURhdGEtPm1fdmFsdWUtPnJlZigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
IChtX2RhdGEubV92YWx1ZSkKICAgICAgICAgbV9kYXRhLm1fdmFsdWUtPmRlcmVmKCk7CiAgICAg
bV9kYXRhLm1fdmFsdWUgPSB2YWx1ZS5pbXBsKCk7Ci0gICAgbV9kYXRhLm1fdmFsdWUtPnJlZigp
OworICAgIGlmIChtX2RhdGEubV92YWx1ZSkKKyAgICAgICAgbV9kYXRhLm1fdmFsdWUtPnJlZigp
OwogfQogCiBpbmxpbmUgdm9pZCBtb3ZlKFBhc3NPd25QdHI8Q1NTU2VsZWN0b3I+IGZyb20sIENT
U1NlbGVjdG9yKiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKaW5kZXgg
N2Y2YzMyMzU5NGNjYTFmYTJhMDFlYThlNTZlYTA1NjNmMTVjMDdkYS4uYTE5NjUzYWI0NWY3MDUx
ODEwZTI5NTA4NzhlMWFjOWQwYjM5OThhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
TGlzdC5jcHAKQEAgLTI0LDE1ICsyNCwxOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKIAogI2luY2x1
ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgogI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWF4RXhwbG9kZWRSZXN1bHRzID0gMHgxMDAwMDsKKwogQ1NTU2VsZWN0b3JMaXN0Ojp+Q1NT
U2VsZWN0b3JMaXN0KCkKIHsKICAgICBkZWxldGVTZWxlY3RvcnMoKTsKQEAgLTU4LDkgKzYyLDE1
IEBAIHZvaWQgQ1NTU2VsZWN0b3JMaXN0OjphZG9wdChDU1NTZWxlY3Rvckxpc3QmIGxpc3QpCiAg
ICAgbGlzdC5tX3NlbGVjdG9yQXJyYXkgPSAwOwogfQogCi12b2lkIENTU1NlbGVjdG9yTGlzdDo6
YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBz
ZWxlY3RvclZlY3RvcikKK3ZvaWQgQ1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVjdG9yVmVjdG9y
KENTU1NlbGVjdG9yVmVjdG9yJiBzZWxlY3RvclZlY3RvciwgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0
JiBzdGFja2VkU2VsZWN0b3JzKQogewogICAgIGRlbGV0ZVNlbGVjdG9ycygpOworCisjaWYgIUVO
QUJMRShDU1NfSElFUkFSQ0hJRVMpCisgICAgaWYgKCFzdGFja2VkU2VsZWN0b3JzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBjb25zdCBzaXplX3QgdmVjdG9yU2l6
ZSA9IHNlbGVjdG9yVmVjdG9yLnNpemUoKTsKICAgICBzaXplX3QgZmxhdHRlbmVkU2l6ZSA9IDA7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZWN0b3JTaXplOyArK2kpIHsKQEAgLTY4LDMx
ICs3OCwxMDEgQEAgdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0U2VsZWN0b3JWZWN0b3IoVmVj
dG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2UKICAgICAgICAgICAgICsrZmxhdHRl
bmVkU2l6ZTsKICAgICB9CiAgICAgQVNTRVJUKGZsYXR0ZW5lZFNpemUpOwotICAgIGlmIChmbGF0
dGVuZWRTaXplID09IDEpIHsKKyAgICAvLyBJZiB0aGVyZSdzIG9ubHkgYSBzaW5nbGUgZmxhdHRl
bmVkIHNlbGVjdG9yIGNvbXBvbmVudCBhbmQgbm8gc3RhY2tlZCBzZWxlY3RvcnMgKGkuZS4gdGhp
cyBpcyBub3QKKyAgICAvLyBwYXJ0IG9mIGEgaGllcmFyY2h5IG9mIHNlbGVjdG9ycykgdGhlbiB1
c2UgdGhlIGZhc3QgcGF0aC4KKyAgICBpZiAoZmxhdHRlbmVkU2l6ZSA9PSAxICYmIHN0YWNrZWRT
ZWxlY3RvcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fc2VsZWN0b3JBcnJheSA9IHNlbGVjdG9y
VmVjdG9yWzBdLT5yZWxlYXNlU2VsZWN0b3IoKS5sZWFrUHRyKCk7CiAgICAgICAgIG1fc2VsZWN0
b3JBcnJheS0+c2V0TGFzdEluU2VsZWN0b3JMaXN0KCk7CiAgICAgICAgIEFTU0VSVChtX3NlbGVj
dG9yQXJyYXktPmlzTGFzdEluVGFnSGlzdG9yeSgpKTsKICAgICAgICAgc2VsZWN0b3JWZWN0b3Iu
c2hyaW5rKDApOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fc2VsZWN0b3JBcnJheSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Q1NTU2VsZWN0b3IqPihmYXN0TWFsbG9jKHNpemVvZihDU1NTZWxl
Y3RvcikgKiBmbGF0dGVuZWRTaXplKSk7Ci0gICAgc2l6ZV90IGFycmF5SW5kZXggPSAwOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjdG9yU2l6ZTsgKytpKSB7Ci0gICAgICAgIENTU1Bh
cnNlclNlbGVjdG9yKiBjdXJyZW50ID0gc2VsZWN0b3JWZWN0b3JbaV0uZ2V0KCk7Ci0gICAgICAg
IHdoaWxlIChjdXJyZW50KSB7Ci0gICAgICAgICAgICBPd25QdHI8Q1NTU2VsZWN0b3I+IHNlbGVj
dG9yID0gY3VycmVudC0+cmVsZWFzZVNlbGVjdG9yKCk7Ci0gICAgICAgICAgICBjdXJyZW50ID0g
Y3VycmVudC0+dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgbW92ZShzZWxlY3Rvci5yZWxlYXNl
KCksICZtX3NlbGVjdG9yQXJyYXlbYXJyYXlJbmRleF0pOwotICAgICAgICAgICAgQVNTRVJUKCFt
X3NlbGVjdG9yQXJyYXlbYXJyYXlJbmRleF0uaXNMYXN0SW5TZWxlY3Rvckxpc3QoKSk7Ci0gICAg
ICAgICAgICBpZiAoY3VycmVudCkKLSAgICAgICAgICAgICAgICBtX3NlbGVjdG9yQXJyYXlbYXJy
YXlJbmRleF0uc2V0Tm90TGFzdEluVGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgKythcnJheUlu
ZGV4OworCisgICAgLy8gRmxhdHRlbiB0aGUgc2VsZWN0b3IgaGllcmFyY2h5IGludG8gZXhwbG9k
ZWRTZWxlY3RvcnMuIEVhY2ggZXhwbG9kZWRTZWxlY3RvcnMgdmVjdG9yIGlzIGEgc2luZ2xlCisg
ICAgLy8gZWxlbWVudCBmcm9tIHRoZSBjYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aGUgc2V0cyBvZiBz
ZWxlY3RvcnMgYXQgZWFjaCBsZXZlbCBpbiB0aGUgaGllcmFyY2h5LgorICAgIHNpemVfdCBleHBs
b2RlZFJlc3VsdHNTaXplID0gc2VsZWN0b3JWZWN0b3Iuc2l6ZSgpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdGFja2VkU2VsZWN0b3JzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGV4
cGxvZGVkUmVzdWx0c1NpemUgKj0gc3RhY2tlZFNlbGVjdG9yc1tpXS0+c2l6ZSgpOworICAgICAg
ICBpZiAoZXhwbG9kZWRSZXN1bHRzU2l6ZSA+IG1heEV4cGxvZGVkUmVzdWx0cykKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBPd25BcnJheVB0cjxWZWN0b3I8T3duUHRyPENTU1Nl
bGVjdG9yPiA+ID4gZXhwbG9kZWRTZWxlY3RvcnMgPSBhZG9wdEFycmF5UHRyKG5ldyBWZWN0b3I8
T3duUHRyPENTU1NlbGVjdG9yPiA+W2V4cGxvZGVkUmVzdWx0c1NpemVdKTsKKyAgICBPd25BcnJh
eVB0cjxzaXplX3Q+IGluc2VydExvY2F0aW9ucyA9IGFkb3B0QXJyYXlQdHIobmV3IHNpemVfdFtl
eHBsb2RlZFJlc3VsdHNTaXplXSk7CisgICAgc2l6ZV90IGZpbmFsU2l6ZSA9IDA7CisKKyAgICBm
b3IgKHNpemVfdCBleHBsb2RlZEluZGV4ID0gMDsgZXhwbG9kZWRJbmRleCA8IGV4cGxvZGVkUmVz
dWx0c1NpemU7ICsrZXhwbG9kZWRJbmRleCkgeworICAgICAgICBzaXplX3Qgc2VsZWN0b3JJbmRl
eCA9IGV4cGxvZGVkSW5kZXggJSBzZWxlY3RvclZlY3Rvci5zaXplKCk7CisgICAgICAgIGJvb2wg
c3Vic2VsZWN0b3IgPSBzZWxlY3RvclZlY3RvcltzZWxlY3RvckluZGV4XS0+Z2V0UHJpb3JSZWxh
dGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjsKKyAgICAgICAgc2l6ZV90IHJlc3Vs
dCA9IG1vdmVUb0V4cGxvZGVkVmVjdG9yKCYoZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9kZWRJbmRl
eF0pLCBzZWxlY3RvclZlY3RvcltzZWxlY3RvckluZGV4XS5nZXQoKSwgdHJ1ZSwgMCk7CisgICAg
ICAgIGZpbmFsU2l6ZSArPSByZXN1bHQ7CisgICAgICAgIGluc2VydExvY2F0aW9uc1tleHBsb2Rl
ZEluZGV4XSA9IHN1YnNlbGVjdG9yID8gMCA6IHJlc3VsdDsKKyAgICB9CisKKyAgICBzaXplX3Qg
Y29uc2lkZXJlZCA9IHNlbGVjdG9yVmVjdG9yLnNpemUoKTsKKworICAgIC8vIFRoZXJlIGFyZSB0
d28gcG9zc2liaWxpdGllcyBoZXJlLCBmb3IgZWFjaCBzZWxlY3Rvci4KKyAgICAvLyAoMSkgdGhl
IHByZXZpb3VzbHkgaW5zZXJ0ZWQgc2VsZWN0b3IgKHdlJ3JlIHdvcmtpbmcgYmFja3dhcmRzKSBo
YXMgYSBwcmlvclJlbGF0aW9uCisgICAgLy8gb2YgU3ViU2VsZWN0b3IuIElmIHRoaXMgaXMgdGhl
IGNhc2UsIHRoZW4gd2UgaW5zZXJ0IGJlZm9yZSBpdCAoaS5lLiBub3QgYXQgdGhlIGVuZCBvZgor
ICAgIC8vIHRoZSBleHBsb2RlZCBsaXN0KSwgYW5kIHVwZGF0ZSB0aGUgbmV3bHkgaW5zZXJ0ZWQg
c2VsZWN0b3IncyByZWxhdGlvbiB0byBiZSBTdWJTZWxlY3Rvci4KKyAgICAvLyAoMikgdGhlIHBy
ZXZpb3VzbHkgaW5zZXJ0ZWQgc2VsZWN0b3IgaGFzIGEgcHJpb3JSZWxhdGlvbiBvZiBzb21ldGhp
bmcgb3RoZXIgdGhhbgorICAgIC8vIFN1YlNlbGVjdG9yLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0
aGVuIHdlIGluc2VydCBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LCBhbmQgdXBkYXRlCisgICAgLy8g
dGhlIG5leHQtdG8tbGFzdCBzZWxlY3RvcidzIHJlbGF0aW9uIHRvIHRoZSBpbnNlcnRlZCBzZWxl
Y3RvcidzIHByaW9yUmVsYXRpb24uCisgICAgZm9yIChpbnQgc3RhY2tlZEluZGV4ID0gc3RhY2tl
ZFNlbGVjdG9ycy5zaXplKCkgLSAxOyBzdGFja2VkSW5kZXggPj0gMDsgLS1zdGFja2VkSW5kZXgp
IHsKKyAgICAgICAgQ1NTU2VsZWN0b3JWZWN0b3ImIGN1cnJlbnRJblN0YWNrID0gKihzdGFja2Vk
U2VsZWN0b3JzW3N0YWNrZWRJbmRleF0pOworICAgICAgICBmb3IgKHNpemVfdCBleHBsb2RlZElu
ZGV4ID0gMDsgZXhwbG9kZWRJbmRleCA8IGV4cGxvZGVkUmVzdWx0c1NpemU7ICsrZXhwbG9kZWRJ
bmRleCkgeworICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRJbmRleCA9IChleHBsb2RlZEluZGV4
IC8gY29uc2lkZXJlZCkgJSBjdXJyZW50SW5TdGFjay5zaXplKCk7CisgICAgICAgICAgICBib29s
IHN1YnNlbGVjdG9yID0gY3VycmVudEluU3RhY2tbY3VycmVudEluZGV4XS0+Z2V0UHJpb3JSZWxh
dGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjsKKworICAgICAgICAgICAgLy8gaWYg
d2UgYXJlbid0IGluc2VydGluZyBhdCB0aGUgZW5kIHdlIG5lZWQgdG8gdXBkYXRlCisgICAgICAg
ICAgICAvLyB0aGlzIHNlbGVjdG9yJ3MgcmVsYXRpb24gdG8gaW5kaWNhdGUgdGhlIG5leHQgc2Vs
ZWN0b3IgaXMgYSBzdWJzZWxlY3Rvci4KKyAgICAgICAgICAgIGJvb2wgdXBkYXRlVG9TdWJTZWxl
Y3RvciA9IGluc2VydExvY2F0aW9uc1tleHBsb2RlZEluZGV4XSAhPSBleHBsb2RlZFNlbGVjdG9y
c1tleHBsb2RlZEluZGV4XS5zaXplKCk7CisgICAgICAgICAgICBzaXplX3QgZGVsdGEgPSBtb3Zl
VG9FeHBsb2RlZFZlY3RvcigmKGV4cGxvZGVkU2VsZWN0b3JzW2V4cGxvZGVkSW5kZXhdKSwgY3Vy
cmVudEluU3RhY2tbY3VycmVudEluZGV4XS5nZXQoKSwgdHJ1ZSwgaW5zZXJ0TG9jYXRpb25zW2V4
cGxvZGVkSW5kZXhdKTsKKyAgICAgICAgICAgIGZpbmFsU2l6ZSArPSBkZWx0YTsKKyAgICAgICAg
ICAgIGlmICh1cGRhdGVUb1N1YlNlbGVjdG9yKQorICAgICAgICAgICAgICAgIGV4cGxvZGVkU2Vs
ZWN0b3JzW2V4cGxvZGVkSW5kZXhdW2luc2VydExvY2F0aW9uc1tleHBsb2RlZEluZGV4XSArIGRl
bHRhIC0gMV0uZ2V0KCktPm1fcmVsYXRpb24gPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKKyAgICAg
ICAgICAgICAgICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CisgICAgICAgICAgICAg
ICAgZG8KKyAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24gPSBleHBsb2RlZFNlbGVjdG9yc1tl
eHBsb2RlZEluZGV4XVtpbnNlcnRMb2NhdGlvbnNbZXhwbG9kZWRJbmRleF0gLSAoKytvZmZzZXQp
XS0+Z2V0UHJpb3JSZWxhdGlvbigpOworICAgICAgICAgICAgICAgIHdoaWxlIChyZWxhdGlvbiA9
PSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpOworICAgICAgICAgICAgICAgIGV4cGxvZGVkU2Vs
ZWN0b3JzW2V4cGxvZGVkSW5kZXhdW2luc2VydExvY2F0aW9uc1tleHBsb2RlZEluZGV4XSAtIDFd
LmdldCgpLT5tX3JlbGF0aW9uID0gcmVsYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoIXN1YnNlbGVjdG9yKQorICAgICAgICAgICAgICAgIGluc2VydExvY2F0aW9uc1tleHBs
b2RlZEluZGV4XSA9IGV4cGxvZGVkU2VsZWN0b3JzW2V4cGxvZGVkSW5kZXhdLnNpemUoKTsKKyAg
ICAgICAgfQorICAgICAgICBjb25zaWRlcmVkICo9IGN1cnJlbnRJblN0YWNrLnNpemUoKTsKKyAg
ICB9CisKKyAgICBtX3NlbGVjdG9yQXJyYXkgPSByZWludGVycHJldF9jYXN0PENTU1NlbGVjdG9y
Kj4oZmFzdE1hbGxvYyhzaXplb2YoQ1NTU2VsZWN0b3IpICogZmluYWxTaXplKSk7CisKKyAgICAv
LyBNb3ZlIHRoZSBzZWxlY3RvciBjb21wb25lbnRzIGluIGV4cGxvZGVkU2VsZWN0b3JzIGludG8g
dGhlIGZpbmFsIG91dHB1dCBzZWxlY3RvckFycmF5LgorICAgIHNpemVfdCBpbmRleCA9IDA7Cisg
ICAgZm9yIChzaXplX3QgZXhwbG9kZWRJbmRleCA9IDA7IGV4cGxvZGVkSW5kZXggPCBleHBsb2Rl
ZFJlc3VsdHNTaXplOyArK2V4cGxvZGVkSW5kZXgpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2Vs
ZWN0b3JJbmRleCA9IDA7IHNlbGVjdG9ySW5kZXggPCBleHBsb2RlZFNlbGVjdG9yc1tleHBsb2Rl
ZEluZGV4XS5zaXplKCk7ICsrc2VsZWN0b3JJbmRleCkgeworICAgICAgICAgICAgbW92ZShleHBs
b2RlZFNlbGVjdG9yc1tleHBsb2RlZEluZGV4XVtzZWxlY3RvckluZGV4XS5yZWxlYXNlKCksICZt
X3NlbGVjdG9yQXJyYXlbaW5kZXhdKTsKKyAgICAgICAgICAgIGlmIChzZWxlY3RvckluZGV4IDwg
ZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9kZWRJbmRleF0uc2l6ZSgpIC0gMSkKKyAgICAgICAgICAg
ICAgICBtX3NlbGVjdG9yQXJyYXlbaW5kZXhdLnNldE5vdExhc3RJblRhZ0hpc3RvcnkoKTsKKyAg
ICAgICAgICAgICsraW5kZXg7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1fc2VsZWN0b3JB
cnJheVthcnJheUluZGV4IC0gMV0uaXNMYXN0SW5UYWdIaXN0b3J5KCkpOworICAgICAgICBleHBs
b2RlZFNlbGVjdG9yc1tleHBsb2RlZEluZGV4XS5zaHJpbmsoMCk7CisgICAgfQorICAgIEFTU0VS
VChpbmRleCA9PSBmaW5hbFNpemUpOworICAgIG1fc2VsZWN0b3JBcnJheVtpbmRleCAtIDFdLnNl
dExhc3RJblNlbGVjdG9yTGlzdCgpOworfQorCit1bnNpZ25lZCBDU1NTZWxlY3Rvckxpc3Q6Om1v
dmVUb0V4cGxvZGVkVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3I+ID4qIHZlY3Rvciwg
Q1NTUGFyc2VyU2VsZWN0b3IqIGN1cnJlbnQsIGJvb2wgdXNlQ29weSwgdW5zaWduZWQgaW5zZXJ0
SW5kZXgpCit7CisgICAgaW50IGluaXRpYWxJbnNlcnRJbmRleCA9IGluc2VydEluZGV4OworICAg
IHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgIHZlY3Rvci0+aW5zZXJ0KGluc2VydEluZGV4LCB1
c2VDb3B5ID8gY3VycmVudC0+ZHVwbGljYXRlU2VsZWN0b3IoKSA6IGN1cnJlbnQtPnJlbGVhc2VT
ZWxlY3RvcigpKTsKKyAgICAgICAgaW5zZXJ0SW5kZXggKz0gMTsKKyAgICAgICAgY3VycmVudCA9
IGN1cnJlbnQtPnRhZ0hpc3RvcnkoKTsKICAgICB9Ci0gICAgQVNTRVJUKGZsYXR0ZW5lZFNpemUg
PT0gYXJyYXlJbmRleCk7Ci0gICAgbV9zZWxlY3RvckFycmF5W2FycmF5SW5kZXggLSAxXS5zZXRM
YXN0SW5TZWxlY3Rvckxpc3QoKTsKLSAgICBzZWxlY3RvclZlY3Rvci5zaHJpbmsoMCk7CisKKyAg
ICByZXR1cm4gaW5zZXJ0SW5kZXggLSBpbml0aWFsSW5zZXJ0SW5kZXg7CiB9CiAKIHVuc2lnbmVk
IENTU1NlbGVjdG9yTGlzdDo6bGVuZ3RoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ckxpc3QuaAppbmRleCA4OTg2MGVlMDkwOTBkNmExOWEyY2I4YzJlN2I0NGI4MjA1MzdlODBlLi5m
MGY4YTNmMTRiYjVmMDZjZmRjYmNhY2Y2MmQwY2EyZGQ5OGZkMDEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yTGlzdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENTU1NlbGVjdG9y
TGlzdF9oCiAjZGVmaW5lIENTU1NlbGVjdG9yTGlzdF9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJW
YWx1ZXMuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00Miw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB+Q1NTU2VsZWN0b3JMaXN0KCk7CiAKICAg
ICB2b2lkIGFkb3B0KENTU1NlbGVjdG9yTGlzdCYgbGlzdCk7Ci0gICAgdm9pZCBhZG9wdFNlbGVj
dG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVj
dG9yKTsKKyAgICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3ImLCBD
U1NTZWxlY3RvclZlY3Rvckxpc3QmKTsKIAogICAgIENTU1NlbGVjdG9yKiBmaXJzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0b3JBcnJheSA/IG1fc2VsZWN0b3JBcnJheSA6IDA7IH0KICAgICBz
dGF0aWMgQ1NTU2VsZWN0b3IqIG5leHQoQ1NTU2VsZWN0b3IqKTsKQEAgLTU4LDYgKzU5LDggQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICB2b2lk
IGRlbGV0ZVNlbGVjdG9ycygpOworICAgIHVuc2lnbmVkIG1vdmVUb0V4cGxvZGVkVmVjdG9yKFZl
Y3RvcjxPd25QdHI8Q1NTU2VsZWN0b3I+ID4qLCBDU1NQYXJzZXJTZWxlY3RvciosIGJvb2wgdXNl
Q29weSwgdW5zaWduZWQgaW5zZXJ0SW5kZXgpOworCiAKICAgICAvLyBFbmQgb2YgYSBtdWx0aXBh
cnQgc2VsZWN0b3IgaXMgaW5kaWNhdGVkIGJ5IG1faXNMYXN0SW5UYWdIaXN0b3J5IGJpdCBpbiB0
aGUgbGFzdCBpdGVtLgogICAgIC8vIEVuZCBvZiB0aGUgYXJyYXkgaXMgaW5kaWNhdGVkIGJ5IG1f
aXNMYXN0SW5TZWxlY3Rvckxpc3QgYml0IGluIHRoZSBsYXN0IGl0ZW0uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NQYXJzZXIuY3BwCmluZGV4IGQwNmJiMjAzYmE3NjUzNjNkZTUwZmVmMDc4MDMwYzFhYzY5
NmE4YmIuLmM3ZWM2ZDlmOTQxNDMxOTFmYTZjMWFlMjQ1ZDhmZDY2YmFlNjM4ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQog
ICAgICAgICAgICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcygxKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFBy
b3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFy
c2VkUHJvcGVydGllcy0+bGFzdCgpLnZhbHVlKCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5TWFya2VyTWlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlNYXJrZXJFbmQsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBtX2ltcGxp
Y2l0U2hvcnRoYW5kID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4IDg1NTRh
ZjY5YzE3NTQ2N2MzZDRjOGRiMjExN2RhM2RlNTQ2ODZjODUuLjkzN2ZkOWFiNTNiYTRjNTk4NDIy
OTg2M2M3YTA2ZmEzZDUxYWY3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBAIC0zNTks
MTAgKzM1OSwxMCBAQCB2b2lkIFN0eWxlUnVsZU1lZGlhOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SQogICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkTWVtYmVyKG1fbWVkaWFRdWVyaWVzKTsKIH0KIAotU3R5bGVSdWxlUmVnaW9uOjpTdHls
ZVJ1bGVSZWdpb24oVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3Jz
LCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4mIGFkb3B0UnVsZXMpCitTdHlsZVJ1bGVS
ZWdpb246OlN0eWxlUnVsZVJlZ2lvbihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+
KiBzZWxlY3RvcnMsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc3RhY2tlZFNlbGVjdG9ycywgVmVj
dG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGVzKQogICAgIDogU3R5bGVSdWxl
QmxvY2soUmVnaW9uLCBhZG9wdFJ1bGVzKQogewotICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2Vs
ZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7CisgICAgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3Rv
clZlY3Rvcigqc2VsZWN0b3JzLCBzdGFja2VkU2VsZWN0b3JzKTsKIH0KIAogU3R5bGVSdWxlUmVn
aW9uOjpTdHlsZVJ1bGVSZWdpb24oY29uc3QgU3R5bGVSdWxlUmVnaW9uJiBvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZS5oCmluZGV4IDc3YmQyZGM2M2U1NzlhMTZmYTY4NDNkN2UwNWU5Y2Q3OThiNjE5N2Mu
LmExNGZlYzk4N2NiMGYyOTk5NDc3MGZkNWNjMzE0YWYwZTVlZWUzM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlLmgKQEAgLTEwMCw3ICsxMDAsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFN0eWxlUHJv
cGVydHlTZXQqIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXMuZ2V0KCk7
IH0KICAgICBTdHlsZVByb3BlcnR5U2V0KiBtdXRhYmxlUHJvcGVydGllcygpOwogICAgIAotICAg
IHZvaWQgcGFyc2VyQWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3Rv
cihzZWxlY3RvcnMpOyB9CisgICAgdm9pZCBwYXJzZXJBZG9wdFNlbGVjdG9yVmVjdG9yKENTU1Nl
bGVjdG9yVmVjdG9yJiBzZWxlY3RvcnMsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc3RhY2tlZFNl
bGVjdG9ycykKKyAgICB7CisgICAgICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0
b3Ioc2VsZWN0b3JzLCBzdGFja2VkU2VsZWN0b3JzKTsKKyAgICB9CiAgICAgdm9pZCB3cmFwcGVy
QWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rv
ckxpc3QuYWRvcHQoc2VsZWN0b3JzKTsgfQogICAgIHZvaWQgc2V0UHJvcGVydGllcyhQYXNzUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+KTsKIApAQCAtMTQ5LDcgKzE1MiwxMCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvcGVydGllcy5nZXQoKTsgfQogICAgIFN0eWxlUHJvcGVydHlTZXQqIG11dGFibGVQcm9wZXJ0
aWVzKCk7CiAKLSAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0
U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JzKTsgfQorICAgIHZvaWQgcGFyc2VyQWRvcHRTZWxlY3Rv
clZlY3RvcihDU1NTZWxlY3RvclZlY3RvciYgc2VsZWN0b3JzLCBDU1NTZWxlY3RvclZlY3Rvckxp
c3QmIHN0YWNrZWRTZWxlY3RvcnMpCisgICAgeworICAgICAgICBtX3NlbGVjdG9yTGlzdC5hZG9w
dFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9ycywgc3RhY2tlZFNlbGVjdG9ycyk7CisgICAgfQogICAg
IHZvaWQgd3JhcHBlckFkb3B0U2VsZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3Jz
KSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0KHNlbGVjdG9ycyk7IH0KICAgICB2b2lkIHNldFByb3Bl
cnRpZXMoUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0Pik7CiAKQEAgLTIwNCw5ICsyMTAsOSBA
QCBwcml2YXRlOgogCiBjbGFzcyBTdHlsZVJ1bGVSZWdpb24gOiBwdWJsaWMgU3R5bGVSdWxlQmxv
Y2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUnVsZVJlZ2lvbj4gY3Jl
YXRlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycywgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGVzKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0eWxlUnVsZVJlZ2lvbj4gY3JlYXRlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHNlbGVjdG9ycywgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0JiBzdGFja2VkU2VsZWN0b3Jz
LCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4mIGFkb3B0UnVsZXMpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVsZVJlZ2lvbihzZWxlY3RvcnMsIGFkb3B0
UnVsZXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVJ1bGVSZWdpb24oc2Vs
ZWN0b3JzLCBzdGFja2VkU2VsZWN0b3JzLCBhZG9wdFJ1bGVzKSk7CiAgICAgfQogCiAgICAgY29u
c3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX3NlbGVj
dG9yTGlzdDsgfQpAQCAtMjE2LDcgKzIyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgU3R5bGVSdWxlUmVnaW9uKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4q
LCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4mIGFkb3B0UnVsZXMpOworICAgIFN0eWxl
UnVsZVJlZ2lvbihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiwgQ1NTU2VsZWN0
b3JWZWN0b3JMaXN0JiwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGVz
KTsKICAgICBTdHlsZVJ1bGVSZWdpb24oY29uc3QgU3R5bGVSdWxlUmVnaW9uJik7CiAgICAgCiAg
ICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU3NzY4NTA0ZWI2ZThi
ZDE4YjdjZTAzOGU2ZjNlZDM5MjRkOGFiOWUuLmEwNzdhNzliMWY1OGYxMTUxNzE5YTA4OTZkY2Q1
YTA4NmUyNTkwMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wOC0wOCAgU2hhbmUgU3Rl
cGhlbnMgIDxzaGFuZXN0ZXBoZW5zQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1dJUF0gSW1wbGVt
ZW50IENTUyBIaWVyYXJjaGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzk5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRtbDogQWRkZWQuCisKIDIwMTIt
MDgtMDYgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1Mg
U2hhZGVyc10gUGFyc2UgbWl4IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3Mz
L3NpbXBsZS1oaWVyYXJjaGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3NpbXBs
ZS1oaWVyYXJjaGllcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODAwMmUwMjUxOGNmNDVkMGZk
MWQwYWU4ZTVkNzA1YjI2NTdkZjAwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nz
czMvc2ltcGxlLWhpZXJhcmNoaWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUaGlz
IGRpdiBzaG91bGQgY29udGFpbiByZWQgdGV4dDogUEFTUworVGhpcyBkaXYgc2hvdWxkIGNvbnRh
aW4gYmx1ZSB0ZXh0OiBQQVNTCitUaGlzIGRpdiBzaG91bGQgbm90OiBQQVNTCitUaGlzIGRpdiBz
aG91bGQgY29udGFpbiBncmVlbiB0ZXh0OiBQQVNTOiBQQVNTCitUaGlzIGRpdiBzaG91bGQgY29u
dGFpbiBncmVlbiB0ZXh0OiBQQVNTCitUaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0
OiBQQVNTCitUaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0OiBQQVNTCitUaGlzIGRp
diBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0OiBQQVNTCitUaGlzIGRpdiBzaG91bGQgbm90IGNv
bnRhaW4gZ3JlZW4gdGV4dDogUEFTUworVGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVu
IHRleHQ6IFBBU1MKK1RoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVlbiB0ZXh0OiBQQVNT
CitUaGlzIGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dDogUEFTUworVGhpcyB0ZXh0
IHNob3VsZCBiZSBwaW5rOiBQQVNTCitidXQgbm90IHRoaXMgdGV4dDogUEFTUworVGhpcyB0ZXh0
IHNob3VsZCBiZSBwaW5rOiBQQVNTCitUaGlzIHRleHQgc2hvdWxkIGJlIHBpbms6IFBBU1MKK1Ro
aXMgdGV4dCBzaG91bGQgbm90IGJlIHBpbms6IFBBU1MKK1RoaXMgc2hvdWxkIGJlIHJlZCB3aXRo
IGEgcGluayBiYWNrZ3JvdW5kOiBQQVNTCitUaGlzIHNob3VsZCBqdXN0IGhhdmUgdGhlIHBpbmsg
YmFja2dyb3VuZDogUEFTUworVGhpcyB0ZXh0IHNob3VsZCBub3QgYmUgcmVkIGFzIHRoZSBoaWVy
YXJjaHkgbmVzdGluZyBpcyB0b28gZGVlcDogUEFTUworVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
biwgYnV0IGhpZXJhcmNoeSBuZXN0aW5nIHNob3VsZCBnbyBubyBkZWVwZXIgdGhhbiB0aGlzIDog
UEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRt
bCBiL0xheW91dFRlc3RzL2NzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjhiMTQxZjg1MTIzM2U3OTg3OWQyMjRhZGYzMTFjZWQ3NGM0ZTliZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0bWwKQEAgLTAsMCArMSwx
ODAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIFRlc3Qg
YSB0cml2aWFsbHkgbmVzdGVkIHJ1bGUgKi8KKworLmEgeworICAgICYgLmIgeworICAgICAgICBj
b2xvcjogcmVkOworICAgIH0KK30KKworLyogVGVzdCBpbnRhcmNhbGF0aW9uIG9mIG5lc3RlZCBy
dWxlcyBhbmQgcHJvcGVydGllcy4gKi8KKy8qIFRlc3QgZGVzY2VuZGFudCBzZWxlY3RvciBhbmQg
bm8gc2VsZWN0b3IuICovCisKKy5jIHsKKyAgICBoZWlnaHQ6IDQwcHg7CisgICAgJiAuZCB7Cisg
ICAgICAgIGNvbG9yOiBibHVlOworICAgIH0KKyAgICB3aWR0aDogNDAwcHg7CisgICAgJi5lIHsK
KyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRk
ZGRkOworfQorCisvKiBUZXN0IG5vbi1zcGFjZS1iYXNlZCBjb21iaW5hdG9yIHdpdGggYWxsIHBv
c3NpYmxlIHNwYWNpbmdzLiAqLworLmYgeworICAgICY+LmcgeworICAgICAgICBjb2xvcjogZ3Jl
ZW47CisgICAgfQorICAgICY+IC5oIHsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKyAg
ICAmID4uaSB7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9CisgICAgJiA+IC5qIHsKKyAg
ICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KK30KKworLyogVGVzdCBtdWx0aXBsZSBuZXN0ZWQg
c2VsZWN0b3JzIGluIHNhbWUgbGlzdC4gKi8KKy5rIHsgCisgICAgJiAubCwgJi5tLCAmICsgLm4g
eworICAgICAgICBjb2xvcjogcGluazsKKyAgICB9Cit9CisKKy8qIFRlc3QgZGVlcCBuZXN0aW5n
IG9mIHNlbGVjdG9ycy4gKi8KKy5vIHsKKyAgICAmIC5wIHsKKyAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogI2ZmZGRkZDsKKyAgICAgICAgJiAucSB7CisgICAgICAgICAgICBjb2xvcjogcmVkOwor
ICAgICAgICAgICAgJjo6YWZ0ZXIgeworICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICIgKEhlcmUn
cyBzb21lIGluc2VydGVkIGNvbnRlbnQpIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKworLnIsIC5zIHsKKyAgICAmIC5yLCAmIC5zIHsKKyAgICAmIC5yLCAmIC5zIHsKKyAg
ICAmIC5yLCAmIC5zIHsKKyAgICAmIC5yLCAmIC5zIHsKKyAgICAmIC5yLCAmIC5zIHsKKyAgICAm
IC5yLCAmIC5zIHsKKyAgICAmIC5yLCAmIC5zIHsKKyAgICAmIC5yLCAmIC5zIHsKKyAgICAmIC5y
LCAmIC5zIHsKKyAgICAmIC5yLCAmIC5zIHsKKyAgICAmIC5yLCAmIC5zIHsKKyAgICAmIC5yLCAm
IC5zIHsKKyAgICAmIC5yLCAmIC5zIHsKKyAgICAmIC5yLCAmIC5zIHsKKyAgICAmIC5yLCAmIC5z
IHsKKyAgICAgICAgY29sb3I6ICBncmVlbjsKKyAgICAgICAgJiAuciwgJiAucyB7CisgICAgICAg
ICAgICBjb2xvcjogcmVkOworICAgICAgICB9IAorICAgIH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9
IH0gfSB9Cit9CisKKy5mYWlsIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgICBj
b2xvcjogcmVkOworICAgIGZvbnQtd2VpZ2h0OiBoZWF2eTsKK30KKworLnBhc3MgeworICAgIGJh
Y2tncm91bmQtY29sb3I6IHdoaXRlOworICAgIGNvbG9yOiBncmVlbjsKKyAgICBmb250LXdlaWdo
dDogaGVhdnk7Cit9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgY2xhc3M9ImEi
PjxkaXYgY2xhc3M9ImIiPlRoaXMgZGl2IHNob3VsZCBjb250YWluIHJlZCB0ZXh0PC9kaXY+PC9k
aXY+CisKKzxkaXYgY2xhc3M9ImMiPjxkaXYgY2xhc3M9ImQiPlRoaXMgZGl2IHNob3VsZCBjb250
YWluIGJsdWUgdGV4dDwvZGl2PlRoaXMgZGl2IHNob3VsZCBub3Q8L2Rpdj4KKworPGRpdiBjbGFz
cz0iYyBlIj5UaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisKKzxkaXYg
Y2xhc3M9ImYiPgorICA8ZGl2IGNsYXNzPSJnIj5UaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVl
biB0ZXh0PC9kaXY+CisgIDxkaXYgY2xhc3M9ImgiPlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdy
ZWVuIHRleHQ8L2Rpdj4KKyAgPGRpdiBjbGFzcz0iaSI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4g
Z3JlZW4gdGV4dDwvZGl2PgorICA8ZGl2IGNsYXNzPSJqIj5UaGlzIGRpdiBzaG91bGQgY29udGFp
biBncmVlbiB0ZXh0PC9kaXY+CisgIDxkaXY+CisgICAgPGRpdiBjbGFzcz0iZyI+VGhpcyBkaXYg
c2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJoIj5U
aGlzIGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICAgIDxkaXYgY2xh
c3M9ImkiPlRoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisgICAg
PGRpdiBjbGFzcz0iaiI+VGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQ8L2Rp
dj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzxkaXY+CisgICAgPGRpdiBjbGFzcz0iayI+CisgICAgICAg
IDxkaXYgY2xhc3M9ImwiPlRoaXMgdGV4dCBzaG91bGQgYmUgcGluazwvZGl2PiBidXQgbm90IHRo
aXMgdGV4dDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImsgbSI+VGhpcyB0ZXh0IHNob3VsZCBiZSBw
aW5rPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ibiI+VGhpcyB0ZXh0IHNob3VsZCBiZSBwaW5rPC9k
aXY+CisgICAgPGRpdiBjbGFzcz0ibiI+VGhpcyB0ZXh0IHNob3VsZCBub3QgYmUgcGluazwvZGl2
PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJvIj48ZGl2IGNsYXNzPSJwIj48ZGl2IGNsYXNzPSJxIj5U
aGlzIHNob3VsZCBiZSByZWQgd2l0aCBhIHBpbmsgYmFja2dyb3VuZDwvZGl2PiBUaGlzIHNob3Vs
ZCBqdXN0IGhhdmUgdGhlIHBpbmsgYmFja2dyb3VuZDwvZGl2PjwvZGl2PgorPGRpdiBjbGFzcz0i
ciI+PGRpdiBjbGFzcz0iciI+PGRpdiBjbGFzcz0iciI+PGRpdiBjbGFzcz0iciI+PGRpdiBjbGFz
cz0iciI+PGRpdiBjbGFzcz0iciI+PGRpdiBjbGFzcz0iciI+PGRpdiBjbGFzcz0iciI+Cis8ZGl2
IGNsYXNzPSJyIj48ZGl2IGNsYXNzPSJyIj48ZGl2IGNsYXNzPSJyIj48ZGl2IGNsYXNzPSJyIj48
ZGl2IGNsYXNzPSJyIj48ZGl2IGNsYXNzPSJyIj48ZGl2IGNsYXNzPSJyIj48ZGl2IGNsYXNzPSJy
Ij4KKzxkaXYgY2xhc3M9InIiPiBUaGlzIHRleHQgc2hvdWxkIG5vdCBiZSByZWQgYXMgdGhlIGhp
ZXJhcmNoeSBuZXN0aW5nIGlzIHRvbyBkZWVwPC9kaXY+CitUaGlzIHRleHQgc2hvdWxkIGJlIGdy
ZWVuLCBidXQgaGllcmFyY2h5IG5lc3Rpbmcgc2hvdWxkIGdvIG5vIGRlZXBlciB0aGFuIHRoaXMK
KzwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PgorPC9kaXY+
PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Cis8L2JvZHk+Cis8c2Ny
aXB0PgorCitmdW5jdGlvbiBleHBlY3Qoc2VsZWN0b3IsIHJlc3VsdHMpIHsKKyAgICB2YXIgZWx0
cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOworICAgIFtdLmZvckVhY2gu
Y2FsbChlbHRzLCBmdW5jdGlvbihlbHQpIHsKKyAgICAgICAgdmFyIHN0eWxlID0gd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZWx0KTsKKyAgICAgICAgZmFpbGVkID0gZmFsc2U7CisgICAgICAgIGZv
ciAocHJvcGVydHkgaW4gcmVzdWx0cykgeworICAgICAgICAgICAgaWYgKHN0eWxlW3Byb3BlcnR5
XSAhPSByZXN1bHRzW3Byb3BlcnR5XSkgeworICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgdmFyIGZhaWxlZFJlYXNvbiA9ICJmb3IgIiArIHByb3BlcnR5ICsg
IiBleHBlY3RlZCAiICsgcmVzdWx0c1twcm9wZXJ0eV0gKyAiIGJ1dCBvYnNlcnZlZCAiICsgc3R5
bGVbcHJvcGVydHldOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGlmIChmYWlsZWQpIHsKKyAgICAgICAgICAgIGVsdC5pbm5lckhUTUwg
Kz0gIjogPHNwYW4gY2xhc3M9J2ZhaWwnPkZBSUwgKCIgKyBmYWlsZWRSZWFzb24gKyAiKTwvc3Bh
bj4iOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZWx0LmlubmVySFRNTCArPSAiOiA8
c3BhbiBjbGFzcz0ncGFzcyc+UEFTUzwvc3Bhbj4iOworICAgICAgICB9CisgICAgfSk7Cit9CisK
K2V4cGVjdCgiLmEgLmIiLCB7ImNvbG9yIjogInJnYigyNTUsIDAsIDApIn0pOworZXhwZWN0KCIu
YyIsIHsiaGVpZ2h0IjogIjQwcHgiLCAid2lkdGgiOiAiNDAwcHgiLCAiYmFja2dyb3VuZC1jb2xv
ciI6ICJyZ2IoMjIxLCAyMjEsIDIyMSkifSk7CitleHBlY3QoIi5jIC5kIiwgeyJjb2xvciI6ICJy
Z2IoMCwgMCwgMjU1KSJ9KTsKK2V4cGVjdCgiLmMuZSIsIHsiY29sb3IiOiAicmdiKDAsIDEyOCwg
MCkifSk7CitleHBlY3QoIi5mPi5nIiwgeyJjb2xvciI6ICJyZ2IoMCwgMTI4LCAwKSJ9KTsKK2V4
cGVjdCgiLmY+IC5oIiwgeyJjb2xvciI6ICJyZ2IoMCwgMTI4LCAwKSJ9KTsKK2V4cGVjdCgiLmYg
Pi5pIiwgeyJjb2xvciI6ICJyZ2IoMCwgMTI4LCAwKSJ9KTsKK2V4cGVjdCgiLmYgPiAuaiIsIHsi
Y29sb3IiOiAicmdiKDAsIDEyOCwgMCkifSk7CitleHBlY3QoIi5mIGRpdiBkaXYiLCB7ImNvbG9y
IjogInJnYigwLCAwLCAwKSJ9KTsKK2V4cGVjdCgiLmsgLmwiLCB7ImNvbG9yIjogInJnYigyNTUs
IDE5MiwgMjAzKSJ9KTsKK2V4cGVjdCgiLmsubSIsIHsiY29sb3IiOiAicmdiKDI1NSwgMTkyLCAy
MDMpIn0pOworZXhwZWN0KCIuayArIC5uIiwgeyJjb2xvciI6ICJyZ2IoMjU1LCAxOTIsIDIwMyki
fSk7CitleHBlY3QoIi5rOm5vdCgubSkiLCB7ImNvbG9yIjogInJnYigwLCAwLCAwKSJ9KTsKK2V4
cGVjdCgiLmsgKyAubiArIC5uIiwgeyJjb2xvciI6ICJyZ2IoMCwgMCwgMCkifSk7CitleHBlY3Qo
Ii5vIC5wIiwgeyJiYWNrZ3JvdW5kLWNvbG9yIjogInJnYigyNTUsIDIyMSwgMjIxKSJ9KTsKK2V4
cGVjdCgiLm8gLnAgLnEiLCB7ImNvbG9yIjogInJnYigyNTUsIDAsIDApIn0pOworZXhwZWN0KCIu
ciAuciAuciAuciAuciAuciAuciAuciAuciAuciAuciAuciAuciAuciAuciAuciIsIHsiY29sb3Ii
OiAicmdiKDAsIDEyOCwgMCkifSk7CitleHBlY3QoIi5yIC5yIC5yIC5yIC5yIC5yIC5yIC5yIC5y
IC5yIC5yIC5yIC5yIC5yIC5yIC5yIC5yIiwgeyJjb2xvciI6ICJyZ2IoMCwgMTI4LCAwKSJ9KTsK
KworaWYgKHRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKzwv
c2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggZTM1ZjcxNmQ1MzIyNDFkYzNjYzI2NDk0ZGZlMzY5MmU5NmIzYzQw
Yi4uZDI3MDRhMGNhNTkwYjZmYmNkMjE2NjBhMmI1MjU4ZWZhMmFkYjY4MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNTcsNiArMTU3
LDEwIEBAIEJVR1dLODgxNzIgU0tJUCA6IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYnVmZmVyZWQu
aHRtbCA9IFBBU1MKIEJVR1dLOTI5NDIgU0tJUCA6IGZhc3QvZG9tL1Byb3hpbWl0eSA9IFBBU1MK
IEJVR1dLOTI5NDIgU0tJUCA6IGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9kZXZpY2UtcHJveGlt
aXR5LWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwgPSBQQVNTCiAKKy8vIENTUyBIaWVyYXJjaGllcyBh
cmUgbm90IHlldCBlbmFibGVkLgorQlVHV0s3OTkzOSBTS0lQIDogY3NzMy9zaW1wbGUtaGllcmFy
Y2hpZXMuaHRtbCA9IFBBU1MKKworCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gV09OVEZJWCBURVNUUwogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ODBmOTc5YTZiZmNmZjdlNGYzZTcwOGQ1MzYwYjZmMjc2ZTU2OTMxNi4uMGM4NDA3YjQ3YWU3NzRl
MDNmMDE5MTJmOTNhYWYwMjBiNmY1YmIzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTM5OCw2ICszOTgsOSBAQCBCVUdXSzg0NjM1IFNLSVAgOiBmYXN0
L2RvbS9IVE1MRGlhbG9nRWxlbWVudCA9IFRFWFQKIEJVR1dLOTI5NDIgU0tJUCA6IGZhc3QvZG9t
L1Byb3hpbWl0eSA9IFBBU1MKIEJVR1dLOTI5NDIgU0tJUCA6IGZhc3QvZXZlbnRzL2NvbnN0cnVj
dG9ycy9kZXZpY2UtcHJveGltaXR5LWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwgPSBQQVNTCiAKKy8v
IENTUyBIaWVyYXJjaGllcyBhcmUgbm90IHlldCBlbmFibGVkLgorQlVHV0s3OTkzOSBTS0lQIDog
Y3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRtbCA9IFBBU1MKKwogLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCiAvLyBFbmQgb2YgRXhwZWN0ZWQgZmFpbHVyZXMKIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA5MjMwNTU5ODBmMjM1OGM2ZmM1YjUwMjRmZWE1MzliM2JjNWFhODk4Li5j
OGI0Nzc2NTZhZDgzZmMyOWUwMzI4NDgxNTUwOWFjYWY3Y2JmNGY0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjIsNiArMjIsOSBAQCBCVUdXSzg1MjYy
IFNLSVAgOiBmYXN0L2Nzcy9pbWFnZS1yZXNvbHV0aW9uID0gUEFTUwogLy8gQ1NTIGltYWdlLW9y
aWVudGF0aW9uIGlzIG5vdCB5ZXQgZW5hYmxlZC4KIEJVR1dLODkwNTIgU0tJUCA6IGZhc3QvY3Nz
L2ltYWdlLW9yaWVudGF0aW9uID0gUEFTUwogCisvLyBDU1MgSGllcmFyY2hpZXMgYXJlIG5vdCB5
ZXQgZW5hYmxlZC4KK0JVR1dLNzk5MzkgU0tJUCA6IGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0
bWwgPSBQQVNTCisKIC8vIE91ciBzbG93IHRlc3RzLCBpbiBhbHBoYWJldGljYWwgb3JkZXIuCiBC
VUdXSzU3NjcyIDogaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQt
ZmlsZS5odG1sID0gVEVYVCBQQVNTCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IGNjMjIwY2E1NTFiZTQ5YmMzNmVjNTY3ZmY4Mjg3OTVlNzMzYzkxYzEuLmM0
NTkzNjE0NWYzNjJiYjYzODU0NWVlODlhNDcyYjYxM2I4NWJkN2QgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODMsNiArODMsOSBAQCBCVUdXSzg1MjYyIFNL
SVAgOiBmYXN0L2Nzcy9pbWFnZS1yZXNvbHV0aW9uID0gUEFTUwogLy8gQ1NTIGltYWdlLW9yaWVu
dGF0aW9uIGlzIG5vdCB5ZXQgZW5hYmxlZC4KIEJVR1dLODkwNTIgU0tJUCA6IGZhc3QvY3NzL2lt
YWdlLW9yaWVudGF0aW9uID0gUEFTUwogCisvLyBDU1MgSGllcmFyY2hpZXMgYXJlIG5vdCB5ZXQg
ZW5hYmxlZC4KK0JVR1dLNzk5MzkgU0tJUCA6IGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0bWwg
PSBQQVNTCisKIC8vIE5lZWRzIHJlYmFzZWxpbmUgYWZ0ZXIgYnVnIDg2NDQxCiAvLyBmYWlsaW5n
IG5ldyB0ZXN0cwogQlVHV0s4NjQ0MSBTS0lQIDogZmFzdC9ib3JkZXJzL2JvcmRlci1hbnRpYWxp
YXNpbmcuaHRtbCA9IElNQUdFCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157048</attachid>
            <date>2012-08-07 17:05:32 -0700</date>
            <delta_ts>2012-08-09 17:26:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79939-20120808100505.patch</filename>
            <type>text/plain</type>
            <size>67754</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgzZDVmMjc4MzM1ZGQ1
ZTY2OWIwOTVjMmQzOGVhYWIzZjdmOTkwNC4uMzA0ZjcyY2Y1MTRiODI3NTA1MjY3ZDkxMWZmMzdm
MTk5NTY4MGE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTA4LTA4ICBTaGFu
ZSBTdGVwaGVucyAgPHNoYW5lc3RlcGhlbnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQXSBJ
bXBsZW1lbnQgQ1NTIEhpZXJhcmNoaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03OTkzOQorCisgICAgICAgIFRoaXMgQ1NTIGZlYXR1cmUgaXMgcHJv
cG9zZWQgaW4gdGhlIGZvbGxvd2luZyBFZGl0b3IncyBEcmFmdDoKKyAgICAgICAgaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3NzMy1oaWVyYXJjaGllcy8uCisKKyAgICAgICAgQXMgZWFjaCBzdHls
ZSBydWxlIGlzIHBhcnNlZCwgdGhlIHNlbGVjdG9yIGZvciB0aGUgc3R5bGUKKyAgICAgICAgcnVs
ZSBpcyBib3RoIGNvbnZlcnRlZCBpbnRvIGEgQ1NTU2VsZWN0b3JMaXN0IGFuZCBwdXNoZWQKKyAg
ICAgICAgb250byBhIFNlbGVjdG9yVmVjdG9yIHRvIG1haW50YWluIHRoZSBjdXJyZW50IHNlbGVj
dG9yCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgV2hlbiBhIG5lc3RlZCBzdHlsZSBydWxl
IGlzIGVuY291bnRlcmVkLCBib3RoIHRoZSBuZXcgc2VsZWN0b3IKKyAgICAgICAgYW5kIHRoZSBj
dXJyZW50IFNlbGVjdG9yVmVjdG9yIGNvbnRleHQgYXJlIHByb3ZpZGVkIHRvIHRoZQorICAgICAg
ICBuZXcgQ1NTU2VsZWN0b3JMaXN0IHRoYXQgcmVwcmVzZW50cyB0aGUgc2VsZWN0b3IgZm9yIHRo
ZSBuZXN0ZWQKKyAgICAgICAgcnVsZS4gQXQgdGhpcyBwb2ludCB0aGUgY29udGV4dCBhbmQgbmV3
IHNlbGVjdG9yIGFyZSBjb21iaW5lZCAtIAorICAgICAgICB0aGlzIGlzIGEgbGl0dGxlIGNvbXBs
ZXggYmVjYXVzZToKKyAgICAgICAgICAxKSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUg
Y29tbWEtc2VwYXJhdGVkIHNlbGVjdG9yCisgICAgICAgICAgICAgY29tcG9uZW50cyBpbiBlYWNo
IHBhcnQgb2YgdGhlIFNlbGVjdG9yVmVjdG9yLCBhbmQgdGhlc2UKKyAgICAgICAgICAgICBuZWVk
IHRvIGJlIGNvbWJpbmVkCisgICAgICAgICAgMikgdGhlIG91dHB1dCBsaXN0IG9yZGVyIChpbiBv
cmRlciBvZiBtYXRjaGluZykgZG9lc24ndCBtYXRjaAorICAgICAgICAgICAgIHRoZSBpbmNvbWlu
ZyB2ZWN0b3Igb3JkZXIgKGluIG9yZGVyIG9mIHBhcnNpbmcpIGFuZCB0aGlzCisgICAgICAgICAg
ICAgbmVlZHMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LCBlc3BlY2lhbGx5IGF0IHRoZSBib3Vu
ZGFyaWVzCisgICAgICAgICAgICAgYmV0d2VlbiBTZWxlY3RvclZlY3RvciBlbnRyaWVzLgorCisg
ICAgICAgIFBhc3QgdGhlIHBvaW50IG9mIHRoZSBDU1NTZWxlY3Rvckxpc3QsIG5vIGRlZXBlciBt
b2RpZmljYXRpb25zIGFyZQorICAgICAgICByZXF1aXJlZC4KKworICAgICAgICBOb3RlIHRoYXQg
dGhpcyBwYXRjaCBkb2Vzbid0IGltcGxlbWVudCBzdXBwb3J0IGZvciB0aGUgQ1NTT00gLSAKKyAg
ICAgICAgdGhhdCB3aWxsIGNvbWUgaW4gZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3NzMy9zaW1wbGUtaGllcmFy
Y2hpZXMuaHRtbAorCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gYWxsb3cgbmVzdGluZyBvZiBz
ZWxlY3RvcnMgdG8gYmUgcGFyc2VkLgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1BhZ2VSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6
YWRvcHRTZWxlY3RvclZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVh
dGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUpOgorCisg
ICAgICAgIEFkZCBhIHNlbGVjdG9yVmVjdG9yIHRvIHRyYWNrIGN1cnJlbnQgc2VsZWN0b3Igc3Rh
Y2sKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnJldXNhYmxlU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cHVzaFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cG9wU2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoU3RhY2tlZFBh
cnNlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpTdGFja2VkUGFy
c2VkUHJvcGVydGllczo6U3RhY2tlZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpkdXBsaWNhdGVTZWxlY3Rvcik6
CisgICAgICAgIChDU1NQYXJzZXJTZWxlY3Rvcik6CisKKyAgICAgICAgVHJhY2sgcHJpb3IgcmVs
YXRpb24gdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBzdGl0Y2gKKyAgICAgICAgc2VsZWN0b3JWZWN0
b3IgKyBjdXJyZW50IHNlbGVjdG9yIGludG8gYSBjb2hlcmVudCBzZWxlY3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpzZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpnZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OkNT
U1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnNldFNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxp
c3RXcmFwcGVyOjp+Q1NTU2VsZWN0b3JMaXN0V3JhcHBlcik6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmg6CisgICAgICAgIChDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpz
ZXRQcmlvclJlbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpnZXRQcmlv
clJlbGF0aW9uKToKKyAgICAgICAgKFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZXRWYWx1ZSk6CisKKyAgICAgICAgSW1wbGVtZW50IGFsZ29yaXRobSB0byBjb21i
aW5lIHNlbGVjdG9yVmVjdG9yIHdpdGgKKyAgICAgICAgY3VycmVudCBzZWxlY3RvciB3aGVuIGdl
bmVyYXRpbmcgdGhlIENTU1NlbGVjdG9yIGFycmF5LgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rv
ckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVj
dG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3JMaXN0Ojptb3ZlVG9FeHBsb2RlZFZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1NlbGVj
dG9yTGlzdC5oOgorICAgICAgICAoQ1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvU3R5
bGVSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmFkb3B0U2VsZWN0b3JWZWN0
b3IpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1JlZ2lvblJ1bGUpOgorICAgICAg
ICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmg6CisKIDIwMTItMDgtMDcgIFNoYW5lIFN0ZXBo
ZW5zICA8c2hhbmVzdGVwaGVuc0Bnb29nbGUuY29tPgogCiAgICAgICAgIENvbXBpbGUgZmxhZyBm
b3IgQ1NTIEhpZXJhcmNoaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA5OTY4ZTc2NjAw
N2VlZjE3YWExNjk2ZmIwMmU0ZmY3NGQzNDJmMTAyLi4xZGI0NjY1YjM0OTlhYzc4M2ExY2UxMzdm
NjI2MDQzMTI1YzEwMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1h
ci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTcwLDcgKzcwLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlOwog
ICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiogcnVsZUxpc3Q7CiAgICAgQ1NTUGFy
c2VyU2VsZWN0b3IqIHNlbGVjdG9yOwotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHNlbGVjdG9yTGlzdDsKKyAgICBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JMaXN0
OwogICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIG1hcmdpbkJveDsKICAgICBDU1NTZWxl
Y3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CiAgICAgTWVkaWFRdWVyeVNldCogbWVkaWFMaXN0OwpA
QCAtMjEzLDYgKzIxMyw3IEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBD
U1NQYXJzZXIqIHBhcnNlcikKICV0eXBlIDxydWxlPiBjaGFyc2V0CiAldHlwZSA8cnVsZT4gaWdu
b3JlZF9jaGFyc2V0CiAldHlwZSA8cnVsZT4gcnVsZXNldAorJXR5cGUgPHJ1bGU+IG5lc3RlZF9y
dWxlc2V0X2NvbnRlbnRzCiAldHlwZSA8cnVsZT4gbWVkaWEKICV0eXBlIDxydWxlPiBpbXBvcnQK
ICV0eXBlIDxydWxlPiBuYW1lc3BhY2UKQEAgLTI2Miw2ICsyNjMsNyBAQCBzdGF0aWMgaW50IGNz
c3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgQ1NTUGFyc2VyKiBwYXJzZXIpCiAldHlwZSA8c2VsZWN0
b3I+IHNpbXBsZV9zZWxlY3RvcgogJXR5cGUgPHNlbGVjdG9yPiBzZWxlY3RvcgogJXR5cGUgPHNl
bGVjdG9yTGlzdD4gc2VsZWN0b3JfbGlzdAorJXR5cGUgPHNlbGVjdG9yTGlzdD4gbmVzdGVkX3Nl
bGVjdG9yX2xpc3QKICV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNpbXBsZV9zZWxlY3Rvcl9saXN0CiAl
dHlwZSA8c2VsZWN0b3JMaXN0PiByZWdpb25fc2VsZWN0b3IKICV0eXBlIDxzZWxlY3Rvcj4gc2Vs
ZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCkBAIC0yNzMsOSArMjc1LDEzIEBAIHN0YXRp
YyBpbnQgY3NzeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBDU1NQYXJzZXIqIHBhcnNlcikKIAogJXR5
cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uX2xpc3QKICV0eXBlIDxib29sZWFuPiBkZWNsX2xpc3QK
LSV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbgorJXR5cGUgPGJvb2xlYW4+IG5lc3RlZF9ydWxl
c2V0CisldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25fc2VwCisldHlwZSA8Ym9vbGVhbj4gcmF3
X2RlY2xhcmF0aW9uCiAldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zCiAK
KyV0eXBlIDxib29sZWFuPiBtYXliZV9zcGFjZQorCiAldHlwZSA8Ym9vbGVhbj4gcHJpbwogCiAl
dHlwZSA8aW50ZWdlcj4gbWF0Y2gKQEAgLTMzMyw5ICszMzksOSBAQCB3ZWJraXRfdmFsdWU6CiAg
ICAgV0VCS0lUX1ZBTFVFX1NZTSAneycgbWF5YmVfc3BhY2UgZXhwciAnfScgewogICAgICAgICBp
ZiAoJDQpIHsKICAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtG
bG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGll
cyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgICAgIGludCBv
bGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsK
ICAgICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKHBhcnNlci0+bV9pZCwgcGFyc2Vy
LT5tX2ltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcGFyc2VyLT5yb2xsYmFja0xhc3RQcm9w
ZXJ0aWVzKHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIG9sZFBhcnNlZFByb3Bl
cnRpZXMpOworICAgICAgICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhw
YXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7
CiAgICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKICAgICAgICAgfQog
ICAgIH0KQEAgLTM0OSwxNiArMzU1LDE0IEBAIHdlYmtpdF9tZWRpYXF1ZXJ5OgogCiB3ZWJraXRf
c2VsZWN0b3I6CiAgICAgV0VCS0lUX1NFTEVDVE9SX1NZTSAneycgbWF5YmVfc3BhY2Ugc2VsZWN0
b3JfbGlzdCAnfScgewotICAgICAgICBpZiAoJDQpIHsKLSAgICAgICAgICAgIGlmIChwYXJzZXIt
Pm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvcikKLSAgICAgICAgICAgICAgICBwYXJzZXIt
Pm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3Rvci0+YWRvcHRTZWxlY3RvclZlY3RvcigqJDQp
OwotICAgICAgICB9CisgICAgICAgIGlmIChwYXJzZXItPm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VT
ZWxlY3RvcikKKyAgICAgICAgICAgIHBhcnNlci0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVj
dG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCokNCwgcGFyc2VyLT5tX25lc3RlZFNlbGVjdG9yU3Rh
Y2spOwogICAgIH0KIDsKIAogbWF5YmVfc3BhY2U6Ci0gICAgLyogZW1wdHkgKi8gJXByZWMgVU5J
TVBPUlRBTlRfVE9LCi0gIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQorICAgIC8qIGVtcHR5ICov
ICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7ICQkID0gZmFsc2U7IH0KKyAgfCBtYXliZV9zcGFjZSBX
SElURVNQQUNFIHsgJCQgPSB0cnVlOyB9CiAgIDsKIAogbWF5YmVfc2dtbDoKQEAgLTkwOSwxMCAr
OTEzLDE3IEBAIHJ1bGVzZXQ6CiAgICAgfQogICA7CiAKK25lc3RlZF9ydWxlc2V0X2NvbnRlbnRz
OgorICAgIG5lc3RlZF9zZWxlY3Rvcl9saXN0IGF0X3J1bGVfaGVhZGVyX2VuZCAneycgbWF5YmVf
c3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7
CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7
CisgICAgICAgICQkID0gcC0+Y3JlYXRlU3R5bGVSdWxlKCQxKTsKKyAgICB9CisgIDsKKwogc2Vs
ZWN0b3JfbGlzdDoKICAgICBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgewogICAgICAg
ICBpZiAoJDEpIHsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXVzYWJsZVNlbGVjdG9yVmVj
dG9yKCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+c2VsZWN0b3JWZWN0b3IoKTsKICAgICAg
ICAgICAgICQkLT5zaHJpbmsoMCk7CiAgICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKICAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdFNl
bGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CkBAIC05MzEsNiArOTQyLDU4IEBAIHNlbGVjdG9yX2xp
c3Q6CiAgICAgfQogICAgOwogCituZXN0ZWRfc2VsZWN0b3JfbGlzdDoKKyAgICBzZWxlY3RvciAl
cHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAgICAgIENT
U1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAg
ICAkJCA9IHAtPnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOwor
ICAgICAgICAgICAgaWYgKHAtPm1fdHJhaWxpbmdTcGFjZSkKKyAgICAgICAgICAgICAgICAkMS0+
c2V0UHJpb3JSZWxhdGlvbihDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgJDEtPnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OlN1
YlNlbGVjdG9yKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0
b3IoJDEpKTsKKyAgICAgICAgICAgIHAtPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlv
bigpOworICAgICAgICB9CisgICAgfQorICAgIHwgY29tYmluYXRvciBzZWxlY3RvciAlcHJlYyBV
TklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDIpIHsKKyAgICAgICAgICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICAgICAkJCA9
IHAtPnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOworICAgICAg
ICAgICAgJDItPnNldFByaW9yUmVsYXRpb24oJDEpOworICAgICAgICAgICAgJCQtPmFwcGVuZChw
LT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMikpOworICAgICAgICAgICAgcC0+dXBkYXRlTGFzdFNl
bGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBuZXN0ZWRf
c2VsZWN0b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2UgJyYnIG1heWJlX3NwYWNlIHNlbGVjdG9yICVw
cmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAkNikgeworICAgICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAg
ICAgICAgICQkID0gJDE7CisgICAgICAgICAgICBpZiAoJDUpCisgICAgICAgICAgICAgICAgJDYt
PnNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICQ2LT5zZXRQcmlvclJlbGF0aW9uKENTU1NlbGVjdG9yOjpT
dWJTZWxlY3Rvcik7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVj
dG9yKCQ2KSk7CisgICAgICAgICAgICBwLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRp
b24oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IG5l
c3RlZF9zZWxlY3Rvcl9saXN0ICcsJyBtYXliZV9zcGFjZSAnJicgbWF5YmVfc3BhY2UgY29tYmlu
YXRvciBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgIGlmICgkMSAmJiAkNykg
eworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
OworICAgICAgICAkJCA9ICQxOworICAgICAgICAkNy0+c2V0UHJpb3JSZWxhdGlvbigkNik7Cisg
ICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDcpKTsKKyAgICAgICAg
cC0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgfSBlbHNlCisgICAg
ICAgICQkID0gMDsKKyAgfQorICB8IG5lc3RlZF9zZWxlY3Rvcl9saXN0IGVycm9yIHsKKyAgICAg
ICAgJCQgPSAwOworICAgIH0KKyAgIDsKKwogc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNw
YWNlOgogICAgIHNlbGVjdG9yIFdISVRFU1BBQ0UgewogICAgICAgICAkJCA9ICQxOwpAQCAtMTE5
Myw3ICsxMjU2LDcgQEAgcHNldWRvOgogICAgICAgICBpZiAoJDQpIHsKICAgICAgICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgICAgICQkLT5hZG9wdFNl
bGVjdG9yVmVjdG9yKCpwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCQ0KSk7Cisg
ICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcigqcGFyc2VyLT5zaW5rRmxvYXRpbmdT
ZWxlY3RvclZlY3RvcigkNCksIHBhcnNlci0+bV9uZXN0ZWRTZWxlY3RvclN0YWNrKTsKICAgICAg
ICAgICAgICQyLmxvd2VyKCk7CiAgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwogICAgICAg
ICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CkBA
IC0xMjQ4LDkgKzEzMTEsOSBAQCBwc2V1ZG86CiAgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdTZWxlY3RvcigpOwogICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzcyk7CiAKLSAgICAgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CisgICAgICAgICAgICBDU1NTZWxlY3RvclZlY3Rv
ciBzZWxlY3RvclZlY3RvcjsKICAgICAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwYXJz
ZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkJC0+YWRvcHRTZWxl
Y3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisgICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3Rv
clZlY3RvcihzZWxlY3RvclZlY3RvciwgcGFyc2VyLT5tX25lc3RlZFNlbGVjdG9yU3RhY2spOwog
CiAgICAgICAgICAgICAkMi5sb3dlcigpOwogICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsK
QEAgLTEyNTksMTAgKzEzMjIsMTAgQEAgcHNldWRvOgogICA7CiAKIGRlY2xhcmF0aW9uX2xpc3Q6
Ci0gICAgZGVjbGFyYXRpb24geworICAgIHJhd19kZWNsYXJhdGlvbiB7CiAgICAgICAgICQkID0g
JDE7CiAgICAgfQotICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uIHsKKyAgICB8IGRlY2xfbGlz
dCByYXdfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoICQyICkK
ICAgICAgICAgICAgICQkID0gJDI7CkBAIC0xMjg1LDE0ICsxMzQ4LDE0IEBAIGRlY2xhcmF0aW9u
X2xpc3Q6CiAgICAgOwogCiBkZWNsX2xpc3Q6Ci0gICAgZGVjbGFyYXRpb24gJzsnIG1heWJlX3Nw
YWNlIHsKKyAgICBkZWNsYXJhdGlvbl9zZXAgbWF5YmVfc3BhY2UgewogICAgICAgICBwYXJzZXIt
Pm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQotICAgIHwgZGVj
bGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0IG1heWJlX3NwYWNlIHsKKyAgICB8IHJhd19kZWNs
YXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgewogICAgICAgICAkJCA9IGZh
bHNlOwogICAgIH0KLSAgICB8IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAnOycgbWF5
YmVfc3BhY2UgeworICAgIHwgcmF3X2RlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAnOycg
bWF5YmVfc3BhY2UgewogICAgICAgICAkJCA9IGZhbHNlOwogICAgIH0KICAgICB8IGVycm9yICc7
JyBtYXliZV9zcGFjZSB7CkBAIC0xMzAyLDcgKzEzNjUsNyBAQCBkZWNsX2xpc3Q6CiAgICAgfCBl
cnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKICAgICAgICAg
JCQgPSBmYWxzZTsKICAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRpb24gJzsnIG1heWJl
X3NwYWNlIHsKKyAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbl9zZXAgbWF5YmVfc3BhY2Ugewog
ICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAgICQkID0gJDE7CiAg
ICAgICAgIGlmICgkMikKQEAgLTEzMTgsNyArMTM4MSwyOSBAQCBkZWNsX2xpc3Q6CiAgICAgfQog
ICAgIDsKIAotZGVjbGFyYXRpb246CituZXN0ZWRfcnVsZXNldF9zdGFydDogJyYnIG1heWJlX3Nw
YWNlIHsKKyAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
OworICAgIHAtPnB1c2hOZXN0ZWRTZWxlY3RvcigkMik7Cit9CisKK2RlY2xhcmF0aW9uX3NlcDoK
KyAgICBuZXN0ZWRfcnVsZXNldCB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgcmF3
X2RlY2xhcmF0aW9uICc7JyB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorCituZXN0ZWRfcnVs
ZXNldDoKKyAgICBuZXN0ZWRfcnVsZXNldF9zdGFydCBiZWZvcmVfc2VsZWN0b3JfbGlzdCBuZXN0
ZWRfcnVsZXNldF9jb250ZW50cyB7CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgIHAtPnBvcE5lc3RlZFNlbGVjdG9yKCk7Cisg
ICAgICAgIGlmICgkMykKKyAgICAgICAgICAgIHAtPm1fc3R5bGVTaGVldC0+cGFyc2VyQXBwZW5k
UnVsZSgkMyk7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorCityYXdfZGVjbGFyYXRpb246
CiAgICAgVkFSX0RFRklOSVRJT04gJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7CiAjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCiAgICAgICAgIHBhcnNlci0+c3RvcmVWYXJpYWJsZURlY2xhcmF0
aW9uKCQxLCBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCksICQ1KTsKQEAgLTEzMzQs
MTAgKzE0MTksMTAgQEAgZGVjbGFyYXRpb246CiAgICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBhcnNl
ZCA9IGZhbHNlOwogICAgICAgICBpZiAoJDEgJiYgJDQpIHsKICAgICAgICAgICAgIHBhcnNlci0+
bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAg
ICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVz
LnNpemUoKTsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5t
X3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKICAgICAgICAgICAgICQkID0gcGFyc2VyLT5wYXJz
ZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KCQxKSwgJDUpOwogICAgICAgICAgICAg
aWYgKCEkJCkKLSAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7
CisgICAgICAgICAgICAgICAgcGFyc2VyLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHBhcnNlci0+
bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1ZTsKICAg
ICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAppbmRleCA1OTlhYmRmYTM5MDVmZTE0YThjNTNhMmEzYmFjMjFiM2E3ZTY5ZjVlLi4y
NTc4MGQ0Y2U4NmNmZDEzZGM5NzJiOTRmYjIyNzZjYTlkYjA5ZmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcApAQCAtMjQ0LDYgKzI0NCw3IEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX2ltcG9ydGFudChmYWxzZSkKICAg
ICAsIG1faWQoQ1NTUHJvcGVydHlJbnZhbGlkKQogICAgICwgbV9zdHlsZVNoZWV0KDApCisgICAg
LCBtX3BhcnNlZFByb3BlcnRpZXMoYWRvcHRQdHIobmV3IFBhcnNlZFByb3BlcnR5VmVjdG9yKSkK
ICAgICAsIG1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvcigwKQogICAgICwgbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVT
KQogICAgICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCkBAIC0yNTUsNiArMjU2LDcgQEAgQ1NTUGFy
c2VyOjpDU1NQYXJzZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1f
cGFyc2VkVGV4dFByZWZpeExlbmd0aCgwKQogICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFY
LCBVSU5UX01BWCkKICAgICAsIG1fcnVsZVNvdXJjZURhdGFSZXN1bHQoMCkKKyAgICAsIG1fdHJh
aWxpbmdTcGFjZSh0cnVlKQogICAgICwgbV9wYXJzaW5nTW9kZShOb3JtYWxNb2RlKQogICAgICwg
bV9jdXJyZW50Q2hhcmFjdGVyKDApCiAgICAgLCBtX3Rva2VuU3RhcnQoMCkKQEAgLTI2Myw2ICsy
NjUsNyBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0KQogICAgICwgbV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKDApCiAgICAgLCBtX2FsbG93SW1w
b3J0UnVsZXModHJ1ZSkKICAgICAsIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnModHJ1ZSkK
KyAgICAsIG1fc2VsZWN0b3JWZWN0b3IoYWRvcHRQdHIobmV3IENTU1NlbGVjdG9yVmVjdG9yKSkK
IHsKICNpZiBZWURFQlVHID4gMAogICAgIGNzc3l5ZGVidWcgPSAxOwpAQCAtMTE1Miw5ICsxMTU1
LDkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFy
YXRpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHkKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAg
aWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQogICAgICAgICBkZWxldGVGb250RmFjZU9ubHlW
YWx1ZXMoKTsKLSAgICBpZiAoIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKKyAgICBp
ZiAoIW1fcGFyc2VkUHJvcGVydGllcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsK
LSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0
aWVzKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMoKm1fcGFyc2Vk
UHJvcGVydGllcy5nZXQoKSk7CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApA
QCAtMTE3NSw3ICsxMTc4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBj
b2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlmICghcGFyc2Vy
LnBhcnNlQ29sb3Ioc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1NTVmFs
dWUqIHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy5maXJzdCgpLnZhbHVlKCk7Cisg
ICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy0+Zmlyc3QoKS52
YWx1ZSgpOwogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xMTkzLDcgKzExOTYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VD
b2xvcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBjc3N5eXBhcnNlKHRoaXMpOwogICAgIG1f
cnVsZSA9IDA7CiAKLSAgICByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCkgJiYg
bV9wYXJzZWRQcm9wZXJ0aWVzLmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eUNvbG9yOworICAg
IHJldHVybiAhbV9wYXJzZWRQcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYgbV9wYXJzZWRQcm9wZXJ0
aWVzLT5maXJzdCgpLmlkKCkgPT0gQ1NTUHJvcGVydHlDb2xvcjsKIH0KIAogYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcs
IERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEyNDMsOSArMTI0Niw5IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZURlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBjb25zdCBT
dHJpbmcmIHN0CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIGlmIChtX2hhc0ZvbnRGYWNlT25s
eVZhbHVlcykKICAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKCFt
X3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFtX3BhcnNlZFByb3BlcnRp
ZXMtPmlzRW1wdHkoKSkgewogICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9u
LT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgIGRlY2xh
cmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKCptX3BhcnNlZFByb3BlcnRpZXMuZ2V0KCkpOwog
ICAgICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTEyODIsMTQgKzEyODUsMTQg
QEAgUGFzc093blB0cjxNZWRpYVF1ZXJ5PiBDU1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeShjb25z
dCBTdHJpbmcmIHN0cmluZykKIH0KIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotc3RhdGlj
IGlubGluZSB2b2lkIGZpbHRlclByb3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1Bh
cnNlcjo6UGFyc2VkUHJvcGVydHlWZWN0b3ImIGlucHV0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1
Nj4mIG91dHB1dCwgc2l6ZV90JiB1bnVzZWRFbnRyaWVzLCBCaXRBcnJheTxudW1DU1NQcm9wZXJ0
aWVzPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblZhcmlhYmxl
cykKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1wb3J0YW50LCBj
b25zdCBDU1NQYXJzZXI6OlBhcnNlZFByb3BlcnR5VmVjdG9yKiBpbnB1dCwgVmVjdG9yPENTU1By
b3BlcnR5LCAyNTY+JiBvdXRwdXQsIHNpemVfdCYgdW51c2VkRW50cmllcywgQml0QXJyYXk8bnVt
Q1NTUHJvcGVydGllcz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNl
ZW5WYXJpYWJsZXMpCiAjZWxzZQotc3RhdGljIGlubGluZSB2b2lkIGZpbHRlclByb3BlcnRpZXMo
Ym9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJvcGVydHlWZWN0b3ImIGlu
cHV0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mIG91dHB1dCwgc2l6ZV90JiB1bnVzZWRFbnRy
aWVzLCBCaXRBcnJheTxudW1DU1NQcm9wZXJ0aWVzPiYgc2VlblByb3BlcnRpZXMpCitzdGF0aWMg
aW5saW5lIHZvaWQgZmlsdGVyUHJvcGVydGllcyhib29sIGltcG9ydGFudCwgY29uc3QgQ1NTUGFy
c2VyOjpQYXJzZWRQcm9wZXJ0eVZlY3RvciogaW5wdXQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2
PiYgb3V0cHV0LCBzaXplX3QmIHVudXNlZEVudHJpZXMsIEJpdEFycmF5PG51bUNTU1Byb3BlcnRp
ZXM+JiBzZWVuUHJvcGVydGllcykKICNlbmRpZgogewogICAgIC8vIEFkZCBwcm9wZXJ0aWVzIGlu
IHJldmVyc2Ugb3JkZXIgc28gdGhhdCBoaWdoZXN0IHByaW9yaXR5IGRlZmluaXRpb25zIGFyZSBy
ZWFjaGVkIGZpcnN0LiBEdXBsaWNhdGUgZGVmaW5pdGlvbnMgY2FuIHRoZW4gYmUgaWdub3JlZCB3
aGVuIGZvdW5kLgotICAgIGZvciAoaW50IGkgPSBpbnB1dC5zaXplKCkgLSAxOyBpID49IDA7IC0t
aSkgewotICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBpbnB1dFtpXTsKKyAg
ICBmb3IgKGludCBpID0gaW5wdXQtPnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAg
IGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IGlucHV0LT5hdChpKTsKICAgICAgICAgaWYg
KHByb3BlcnR5LmlzSW1wb3J0YW50KCkgIT0gaW1wb3J0YW50KQogICAgICAgICAgICAgY29udGlu
dWU7CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCkBAIC0xMzEzLDE3ICsxMzE2LDE3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1wb3J0YW50LCBjb25zdCBD
U1NQYXJzZXI6OlBhcnNlZFByb3BlCiBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IENTU1Bh
cnNlcjo6Y3JlYXRlU3R5bGVQcm9wZXJ0eVNldCgpCiB7CiAgICAgQml0QXJyYXk8bnVtQ1NTUHJv
cGVydGllcz4gc2VlblByb3BlcnRpZXM7Ci0gICAgc2l6ZV90IHVudXNlZEVudHJpZXMgPSBtX3Bh
cnNlZFByb3BlcnRpZXMuc2l6ZSgpOworICAgIHNpemVfdCB1bnVzZWRFbnRyaWVzID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzLT5zaXplKCk7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+IHJlc3Vs
dHModW51c2VkRW50cmllcyk7CiAKICAgICAvLyBJbXBvcnRhbnQgcHJvcGVydGllcyBoYXZlIGhp
Z2hlciBwcmlvcml0eSwgc28gYWRkIHRoZW0gZmlyc3QuIER1cGxpY2F0ZSBkZWZpbml0aW9ucyBj
YW4gdGhlbiBiZSBpZ25vcmVkIHdoZW4gZm91bmQuCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNlZW5WYXJpYWJsZXM7Ci0gICAgZmlsdGVyUHJv
cGVydGllcyh0cnVlLCBtX3BhcnNlZFByb3BlcnRpZXMsIHJlc3VsdHMsIHVudXNlZEVudHJpZXMs
IHNlZW5Qcm9wZXJ0aWVzLCBzZWVuVmFyaWFibGVzKTsKLSAgICBmaWx0ZXJQcm9wZXJ0aWVzKGZh
bHNlLCBtX3BhcnNlZFByb3BlcnRpZXMsIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9w
ZXJ0aWVzLCBzZWVuVmFyaWFibGVzKTsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUsIG1fcGFy
c2VkUHJvcGVydGllcy5nZXQoKSwgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRp
ZXMsIHNlZW5WYXJpYWJsZXMpOworICAgIGZpbHRlclByb3BlcnRpZXMoZmFsc2UsIG1fcGFyc2Vk
UHJvcGVydGllcy5nZXQoKSwgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMs
IHNlZW5WYXJpYWJsZXMpOwogI2Vsc2UKLSAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUsIG1fcGFy
c2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMpOwot
ICAgIGZpbHRlclByb3BlcnRpZXMoZmFsc2UsIG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywg
dW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMpOworICAgIGZpbHRlclByb3BlcnRpZXModHJ1
ZSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmdldCgpLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVu
UHJvcGVydGllcyk7CisgICAgZmlsdGVyUHJvcGVydGllcyhmYWxzZSwgbV9wYXJzZWRQcm9wZXJ0
aWVzLmdldCgpLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcyk7CiAjZW5k
aWYKICAgICBpZiAodW51c2VkRW50cmllcykKICAgICAgICAgcmVzdWx0cy5yZW1vdmUoMCwgdW51
c2VkRW50cmllcyk7CkBAIC0xMzMzLDE5ICsxMzM2LDE5IEBAIFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVByb3BlcnR5U2V0KCkKIAogdm9pZCBDU1NQ
YXJzZXI6OmFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQpCiB7Ci0gICAgbV9wYXJz
ZWRQcm9wZXJ0aWVzLmFwcGVuZChDU1NQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQs
IG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBsaWNpdFNob3J0aGFuZCB8fCBpbXBsaWNpdCkpOwor
ICAgIG1fcGFyc2VkUHJvcGVydGllcy0+YXBwZW5kKENTU1Byb3BlcnR5KHByb3BJZCwgdmFsdWUs
IGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5kIHx8IGlt
cGxpY2l0KSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpyb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGlu
dCBudW0pCiB7CiAgICAgQVNTRVJUKG51bSA+PSAwKTsKLSAgICBBU1NFUlQobV9wYXJzZWRQcm9w
ZXJ0aWVzLnNpemUoKSA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtKSk7Ci0gICAgbV9wYXJz
ZWRQcm9wZXJ0aWVzLnNocmluayhtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpIC0gbnVtKTsKKyAg
ICBBU1NFUlQobV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgPj0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG51bSkpOworICAgIG1fcGFyc2VkUHJvcGVydGllcy0+c2hyaW5rKG1fcGFyc2VkUHJvcGVy
dGllcy0+c2l6ZSgpIC0gbnVtKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmNsZWFyUHJvcGVydGll
cygpCiB7Ci0gICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmNsZWFyKCk7CisgICAgbV9wYXJzZWRQcm9w
ZXJ0aWVzLT5jbGVhcigpOwogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJv
eCA9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogICAgIG1faGFzRm9udEZhY2VPbmx5
VmFsdWVzID0gZmFsc2U7CiB9CkBAIC0xNzU3LDcgKzE3NjAsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAg
IFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7CiAgICAgICAgIGlmIChudW0gIT0g
MSB8fCAhcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eU92ZXJmbG93WCwgaW1wb3J0YW50KSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQ
cm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3Bh
cnNlZFByb3BlcnRpZXMtPmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTE3ODAsNyArMTc4Myw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNob3J0
aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZyk7CiAgICAgICAg
ICAgICBpZiAoIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3Bh
Y2luZywgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7
CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmxhc3Qo
KS52YWx1ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJWZXJ0aWNhbFNwYWNpbmcsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KQEAgLTI0MjcsNyArMjQzMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
ICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29s
bGFwc2UpOwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNl
U2hvcnRoYW5kKCkucHJvcGVydGllcygpWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJv
cGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1f
cGFyc2VkUHJvcGVydGllcy0+bGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0
eSh3ZWJraXRNYXJnaW5Db2xsYXBzZVNob3J0aGFuZCgpLnByb3BlcnRpZXMoKVsxXSwgdmFsdWUs
IGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzI2
MCw3ICszMjYzLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhDU1NQcm9wZXJ0eUlE
IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCAqcHJvcGVydGkKICAgICAgICAgY2FzZSAxOiB7
CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CisgICAgICAgICAgICBDU1NW
YWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMtPmxhc3QoKS52YWx1ZSgpOwogICAgICAg
ICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQp
OwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFsdWUsIGltcG9ydGFu
dCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0
YW50KTsKQEAgLTMyNzAsMTcgKzMyNzMsMTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVl
cyhDU1NQcm9wZXJ0eUlEIHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCAqcHJvcGVydGkKICAg
ICAgICAgY2FzZSAyOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1sw
XSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1
ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpIC0gMl0udmFs
dWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy0+
YXQobV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSAyKS52YWx1ZSgpOwogICAgICAgICAgICAg
SW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwogICAg
ICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0g
ICAgICAgICAgICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX3BhcnNlZFByb3BlcnRpZXMu
c2l6ZSgpIC0gMl0udmFsdWUoKTsKKyAgICAgICAgICAgIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0
aWVzLT5hdChtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIDIpLnZhbHVlKCk7CiAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgMzogewogICAgICAgICAgICAg
aWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUo
cHJvcGVydGllc1sxXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzJdLCBp
bXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENT
U1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX3BhcnNlZFByb3BlcnRpZXMuc2l6
ZSgpIC0gMl0udmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2Vk
UHJvcGVydGllcy0+YXQobV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSAyKS52YWx1ZSgpOwog
ICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1w
bGljaXQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUsIGlt
cG9ydGFudCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTc3ODMsNyArNzc4Niw3IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZUZsb3dUaHJlYWQoY29uc3QgU3RyaW5nJiBmbG93TmFtZSkKIAogICAg
IG1fcnVsZSA9IDA7CiAKLSAgICByZXR1cm4gKChtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpID09
IDEpICYmIChtX3BhcnNlZFByb3BlcnRpZXMuZmlyc3QoKS5pZCgpID09IENTU1Byb3BlcnR5V2Vi
a2l0Rmxvd0ludG8pKTsKKyAgICByZXR1cm4gKChtX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSA9
PSAxKSAmJiAobV9wYXJzZWRQcm9wZXJ0aWVzLT5maXJzdCgpLmlkKCkgPT0gQ1NTUHJvcGVydHlX
ZWJraXRGbG93SW50bykpOwogfQogCiAvLyBub25lIHwgPGlkZW50PgpAQCAtOTQ0MiwxNCArOTQ0
NSwxNCBAQCBQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXI6OnNpbmtGbG9h
dGluZ1NlbGVjdG9yKENTU1BhcnNlclNlbGVjdG9yKgogICAgIHJldHVybiBhZG9wdFB0cihzZWxl
Y3Rvcik7CiB9CiAKLVZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIENTU1BhcnNl
cjo6Y3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpCitDU1NTZWxlY3RvclZlY3RvciogQ1NT
UGFyc2VyOjpjcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCkKIHsKLSAgICBWZWN0b3I8T3du
UHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvclZlY3RvciA9IG5ldyBWZWN0b3I8T3du
UHRyPENTU1BhcnNlclNlbGVjdG9yPiA+OworICAgIENTU1NlbGVjdG9yVmVjdG9yKiBzZWxlY3Rv
clZlY3RvciA9IG5ldyBDU1NTZWxlY3RvclZlY3RvcjsKICAgICBtX2Zsb2F0aW5nU2VsZWN0b3JW
ZWN0b3JzLmFkZChzZWxlY3RvclZlY3Rvcik7CiAgICAgcmV0dXJuIHNlbGVjdG9yVmVjdG9yOwog
fQogCi1QYXNzT3duUHRyPFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gPiBDU1NQ
YXJzZXI6OnNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+ID4qIHNlbGVjdG9yVmVjdG9yKQorUGFzc093blB0cjxDU1NTZWxlY3RvclZlY3Rv
ciA+IENTU1BhcnNlcjo6c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0
b3IqIHNlbGVjdG9yVmVjdG9yKQogewogICAgIGlmIChzZWxlY3RvclZlY3RvcikgewogICAgICAg
ICBBU1NFUlQobV9mbG9hdGluZ1NlbGVjdG9yVmVjdG9ycy5jb250YWlucyhzZWxlY3RvclZlY3Rv
cikpOwpAQCAtOTY0MiwxMyArOTY0NSwxMyBAQCBTdHlsZVJ1bGVLZXlmcmFtZXMqIENTU1BhcnNl
cjo6Y3JlYXRlS2V5ZnJhbWVzUnVsZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdAogICAg
IHJldHVybiBydWxlUHRyOwogfQogCi1TdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0
eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcnMpCitT
dHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShDU1NTZWxlY3RvclZlY3Rv
ciogc2VsZWN0b3JzKQogewogICAgIFN0eWxlUnVsZSogcmVzdWx0ID0gMDsKICAgICBpZiAoc2Vs
ZWN0b3JzKSB7CiAgICAgICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VE
ZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICAgICAgUmVmUHRyPFN0eWxlUnVsZT4gcnVsZSA9IFN0
eWxlUnVsZTo6Y3JlYXRlKG1fbGFzdFNlbGVjdG9yTGluZU51bWJlcik7Ci0gICAgICAgIHJ1bGUt
PnBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7CisgICAgICAgIHJ1bGUtPnBh
cnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycywgbV9uZXN0ZWRTZWxlY3RvclN0YWNr
KTsKICAgICAgICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQogICAgICAgICAgICAgZGVs
ZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7CiAgICAgICAgIHJ1bGUtPnNldFByb3BlcnRpZXMoY3Jl
YXRlU3R5bGVQcm9wZXJ0eVNldCgpKTsKQEAgLTk2NjQsOCArOTY2Nyw4IEBAIFN0eWxlUnVsZUJh
c2UqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4qIHNlCiBTdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVs
ZSgpCiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0
aW9ucyA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFByb3Bl
cnRpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gbV9w
YXJzZWRQcm9wZXJ0aWVzW2ldOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhcnNl
ZFByb3BlcnRpZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIENTU1Byb3BlcnR5JiBwcm9wZXJ0
eSA9IG1fcGFyc2VkUHJvcGVydGllcy0+YXQoaSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eS5pZCgp
ID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQgJiYgcHJvcGVydHkudmFsdWUoKS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICAgICAgcHJvcGVydHkud3JhcFZhbHVlSW5Db21tYVNlcGFyYXRl
ZExpc3QoKTsKICAgICAgICAgZWxzZSBpZiAocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0eUZv
bnRGYW1pbHkgJiYgKCFwcm9wZXJ0eS52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpIHx8IHN0YXRpY19j
YXN0PENTU1ZhbHVlTGlzdCo+KHByb3BlcnR5LnZhbHVlKCkpLT5sZW5ndGgoKSAhPSAxKSkgewpA
QCAtOTc1Niw5ICs5NzU5LDkgQEAgU3R5bGVSdWxlQmFzZSogQ1NTUGFyc2VyOjpjcmVhdGVQYWdl
UnVsZShQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBwYWdlU2VsZWMKICAgICBTdHlsZVJ1
bGVQYWdlKiBwYWdlUnVsZSA9IDA7CiAgICAgaWYgKHBhZ2VTZWxlY3RvcikgewogICAgICAgICBS
ZWZQdHI8U3R5bGVSdWxlUGFnZT4gcnVsZSA9IFN0eWxlUnVsZVBhZ2U6OmNyZWF0ZSgpOwotICAg
ICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+IHNlbGVjdG9yVmVjdG9yOwor
ICAgICAgICBDU1NTZWxlY3RvclZlY3RvciBzZWxlY3RvclZlY3RvcjsKICAgICAgICAgc2VsZWN0
b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7Ci0gICAgICAgIHJ1bGUtPnBhcnNlckFkb3B0
U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOworICAgICAgICBydWxlLT5wYXJzZXJBZG9w
dFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yLCBtX25lc3RlZFNlbGVjdG9yU3RhY2spOwog
ICAgICAgICBydWxlLT5zZXRQcm9wZXJ0aWVzKGNyZWF0ZVN0eWxlUHJvcGVydHlTZXQoKSk7CiAg
ICAgICAgIHBhZ2VSdWxlID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRSdWxlcy5hcHBl
bmQocnVsZS5yZWxlYXNlKCkpOwpAQCAtOTc2OCw3ICs5NzcxLDcgQEAgU3R5bGVSdWxlQmFzZSog
Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBw
YWdlU2VsZWMKICAgICByZXR1cm4gcGFnZVJ1bGU7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpzZXRS
ZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHNlbGVjdG9ycykKK3ZvaWQgQ1NTUGFyc2VyOjpzZXRSZXVzYWJsZVJlZ2lvblNlbGVj
dG9yVmVjdG9yKENTU1NlbGVjdG9yVmVjdG9yKiBzZWxlY3RvcnMpCiB7CiAgICAgaWYgKHNlbGVj
dG9ycykKICAgICAgICAgbV9yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yLnN3YXAoKnNlbGVj
dG9ycyk7CkBAIC05NzgxLDcgKzk3ODQsNyBAQCBTdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNy
ZWF0ZVJlZ2lvblJ1bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogcgogCiAg
ICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZh
bHNlOwogCi0gICAgUmVmUHRyPFN0eWxlUnVsZVJlZ2lvbj4gcmVnaW9uUnVsZSA9IFN0eWxlUnVs
ZVJlZ2lvbjo6Y3JlYXRlKHJlZ2lvblNlbGVjdG9yLCAqcnVsZXMpOworICAgIFJlZlB0cjxTdHls
ZVJ1bGVSZWdpb24+IHJlZ2lvblJ1bGUgPSBTdHlsZVJ1bGVSZWdpb246OmNyZWF0ZShyZWdpb25T
ZWxlY3RvciwgbV9uZXN0ZWRTZWxlY3RvclN0YWNrLCAqcnVsZXMpOwogCiAgICAgU3R5bGVSdWxl
UmVnaW9uKiByZXN1bHQgPSByZWdpb25SdWxlLmdldCgpOwogICAgIG1fcGFyc2VkUnVsZXMuYXBw
ZW5kKHJlZ2lvblJ1bGUucmVsZWFzZSgpKTsKQEAgLTk4MDQsMjIgKzk4MDcsMjIgQEAgU3R5bGVS
dWxlQmFzZSogQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6Ok1hcmdp
bkJveFR5cGUgLyogbWFyZ2kKIAogdm9pZCBDU1NQYXJzZXI6OnN0YXJ0RGVjbGFyYXRpb25zRm9y
TWFyZ2luQm94KCkKIHsKLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gg
PSBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOworICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0Jl
Zm9yZU1hcmdpbkJveCA9IG1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpOwogfQogCiB2b2lkIENT
U1BhcnNlcjo6ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkKIHsKLSAgICByb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgLSBtX251bVBhcnNlZFByb3Bl
cnRpZXNCZWZvcmVNYXJnaW5Cb3gpOworICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMobV9wYXJz
ZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5C
b3gpOwogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IElOVkFMSURf
TlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogfQogCiB2b2lkIENTU1BhcnNlcjo6ZGVsZXRlRm9udEZh
Y2VPbmx5VmFsdWVzKCkKIHsKICAgICBBU1NFUlQobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOykg
ewotICAgICAgICBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgp
OykgeworICAgICAgICBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXMt
PmF0KGkpOwogICAgICAgICBpZiAocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50ICYmIHByb3BlcnR5LnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAgIG1f
cGFyc2VkUHJvcGVydGllcy5yZW1vdmUoaSk7CisgICAgICAgICAgICBtX3BhcnNlZFByb3BlcnRp
ZXMtPnJlbW92ZShpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAg
ICsraTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBkZjQyNzFkOTg5YjNhNmZlMDZiMDdjMDM2
OTgyMzRhOGViODU3MmVkLi5mMWJmY2EyMTc0NTQ0NzBjODY3ZDAyNTEwNTA4NDgwOGIyYTRjYzJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJv
b2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0ID0gZmFsc2UpOwogICAgIHZvaWQgcm9sbGJhY2tM
YXN0UHJvcGVydGllcyhpbnQgbnVtKTsKLSAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7
IHJldHVybiAhbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzUHJv
cGVydGllcygpIGNvbnN0IHsgcmV0dXJuICFtX3BhcnNlZFByb3BlcnRpZXMtPmlzRW1wdHkoKTsg
fQogCiAgICAgYm9vbCBwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsK
ICAgICBib29sIHBhcnNlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CkBAIC0yNDksOCArMjQ5LDggQEAgcHVibGlj
OgogICAgIENTU1BhcnNlclNlbGVjdG9yKiBjcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAg
UGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc2lua0Zsb2F0aW5nU2VsZWN0b3IoQ1NTUGFy
c2VyU2VsZWN0b3IqKTsKIAotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4q
IGNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKTsKLSAgICBQYXNzT3duUHRyPFZlY3RvcjxP
d25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gPiBzaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcihW
ZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+Kik7CisgICAgQ1NTU2VsZWN0b3JWZWN0
b3IqIGNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKTsKKyAgICBQYXNzT3duUHRyPENTU1Nl
bGVjdG9yVmVjdG9yPiBzaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3Rv
ciopOwogCiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBjcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgp
OwogICAgIFBhc3NPd25QdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBzaW5rRmxvYXRpbmdWYWx1ZUxp
c3QoQ1NTUGFyc2VyVmFsdWVMaXN0Kik7CkBAIC0yNjgsMTAgKzI2OCwxMCBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4gUnVsZUxpc3Q7CiAgICAg
U3R5bGVSdWxlQmFzZSogY3JlYXRlTWVkaWFSdWxlKE1lZGlhUXVlcnlTZXQqLCBSdWxlTGlzdCop
OwogICAgIFJ1bGVMaXN0KiBjcmVhdGVSdWxlTGlzdCgpOwotICAgIFN0eWxlUnVsZUJhc2UqIGNy
ZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3Rv
cnMpOworICAgIFN0eWxlUnVsZUJhc2UqIGNyZWF0ZVN0eWxlUnVsZShDU1NTZWxlY3RvclZlY3Rv
ciogc2VsZWN0b3JzKTsKICAgICBTdHlsZVJ1bGVCYXNlKiBjcmVhdGVGb250RmFjZVJ1bGUoKTsK
ICAgICBTdHlsZVJ1bGVCYXNlKiBjcmVhdGVQYWdlUnVsZShQYXNzT3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiBwYWdlU2VsZWN0b3IpOwotICAgIFN0eWxlUnVsZUJhc2UqIGNyZWF0ZVJlZ2lvblJ1
bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogcmVnaW9uU2VsZWN0b3IsIFJ1
bGVMaXN0KiBydWxlcyk7CisgICAgU3R5bGVSdWxlQmFzZSogY3JlYXRlUmVnaW9uUnVsZShDU1NT
ZWxlY3RvclZlY3RvciogcmVnaW9uU2VsZWN0b3IsIFJ1bGVMaXN0KiBydWxlcyk7CiAgICAgU3R5
bGVSdWxlQmFzZSogY3JlYXRlTWFyZ2luQXRSdWxlKENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBl
KTsKICAgICB2b2lkIHN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCk7CiAgICAgdm9pZCBl
bmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKQEAgLTI5NCwxMCArMjk0LDMzIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgaW52YWxpZEJsb2NrSGl0KCk7CiAKLSAgICBWZWN0b3I8T3duUHRyPENT
U1BhcnNlclNlbGVjdG9yPiA+KiByZXVzYWJsZVNlbGVjdG9yVmVjdG9yKCkgeyByZXR1cm4gJm1f
cmV1c2FibGVTZWxlY3RvclZlY3RvcjsgfQorICAgIENTU1NlbGVjdG9yVmVjdG9yKiBzZWxlY3Rv
clZlY3RvcigpIHsgcmV0dXJuIG1fc2VsZWN0b3JWZWN0b3IuZ2V0KCk7IH0KIAotICAgIHZvaWQg
c2V0UmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+KiBzZWxlY3RvcnMpOwotICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoKSB7IHJldHVybiAmbV9yZXVzYWJs
ZVJlZ2lvblNlbGVjdG9yVmVjdG9yOyB9CisgICAgdm9pZCBwdXNoTmVzdGVkU2VsZWN0b3IoYm9v
bCB0cmFpbGluZ1NwYWNlKQorICAgIHsKKyAgICAgICAgbV9uZXN0ZWRTZWxlY3RvclN0YWNrLmFw
cGVuZChtX3NlbGVjdG9yVmVjdG9yLnJlbGVhc2UoKSk7CisgICAgICAgIG1fc2VsZWN0b3JWZWN0
b3IgPSBhZG9wdFB0cihuZXcgQ1NTU2VsZWN0b3JWZWN0b3IpOworCisgICAgICAgIG1fc3RhY2tl
ZFBhcnNlZFByb3BlcnRpZXMuYXBwZW5kKG5ldyBTdGFja2VkUGFyc2VkUHJvcGVydGllcyhtX3Bh
cnNlZFByb3BlcnRpZXMucmVsZWFzZSgpLCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJn
aW5Cb3gpKTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzID0gYWRvcHRQdHIobmV3IFBhcnNl
ZFByb3BlcnR5VmVjdG9yKTsKKyAgICAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94ID0gMDsKKyAgICAgICAgbV90cmFpbGluZ1NwYWNlID0gdHJhaWxpbmdTcGFjZTsKKyAg
ICB9CisKKyAgICB2b2lkIHBvcE5lc3RlZFNlbGVjdG9yKCkKKyAgICB7CisgICAgICAgIG1fc2Vs
ZWN0b3JWZWN0b3IgPSBtX25lc3RlZFNlbGVjdG9yU3RhY2subGFzdCgpLnJlbGVhc2UoKTsKKyAg
ICAgICAgbV9uZXN0ZWRTZWxlY3RvclN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgICAgICBTdGFj
a2VkUGFyc2VkUHJvcGVydGllcyogc3RhY2tIZWFkID0gbV9zdGFja2VkUGFyc2VkUHJvcGVydGll
cy5sYXN0KCk7CisgICAgICAgIG1fc3RhY2tlZFBhcnNlZFByb3BlcnRpZXMucmVtb3ZlTGFzdCgp
OworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBzdGFja0hlYWQtPm1fcGFyc2VkUHJvcGVy
dGllcy5yZWxlYXNlKCk7CisgICAgICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveCA9IHN0YWNrSGVhZC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94Owor
ICAgICAgICBtX3RyYWlsaW5nU3BhY2UgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgc2V0UmV1
c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JzKTsK
KyAgICBDU1NTZWxlY3RvclZlY3RvciogcmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcigpIHsg
cmV0dXJuICZtX3JldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7IH0KIAogICAgIHZvaWQgdXBk
YXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CiAgICAgdm9pZCB1cGRhdGVMYXN0TWVk
aWFMaW5lKE1lZGlhUXVlcnlTZXQqKTsKQEAgLTMxNSwxMiArMzM4LDI1IEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8U3R5bGVLZXlmcmFtZT4gbV9rZXlmcmFtZTsKICAgICBPd25QdHI8TWVkaWFRdWVy
eT4gbV9tZWRpYVF1ZXJ5OwogICAgIE93blB0cjxDU1NQYXJzZXJWYWx1ZUxpc3Q+IG1fdmFsdWVM
aXN0OworCiAgICAgdHlwZWRlZiBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gUGFyc2VkUHJvcGVy
dHlWZWN0b3I7Ci0gICAgUGFyc2VkUHJvcGVydHlWZWN0b3IgbV9wYXJzZWRQcm9wZXJ0aWVzOwor
ICAgIE93blB0cjxQYXJzZWRQcm9wZXJ0eVZlY3Rvcj4gbV9wYXJzZWRQcm9wZXJ0aWVzOwogICAg
IENTU1NlbGVjdG9yTGlzdCogbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yOwogCiAgICAg
dW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94OwogCisgICAgc3Ry
dWN0IFN0YWNrZWRQYXJzZWRQcm9wZXJ0aWVzIHsKKyAgICAgICAgT3duUHRyPFBhcnNlZFByb3Bl
cnR5VmVjdG9yPiBtX3BhcnNlZFByb3BlcnRpZXM7CisgICAgICAgIHVuc2lnbmVkIG1fbnVtUGFy
c2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveDsKKworICAgICAgICBTdGFja2VkUGFyc2VkUHJv
cGVydGllcyhQYXNzT3duUHRyPFBhcnNlZFByb3BlcnR5VmVjdG9yID4gcGFyc2VkUHJvcGVydGll
cywgdW5zaWduZWQgbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCkKKyAgICAgICAg
OiBtX3BhcnNlZFByb3BlcnRpZXMocGFyc2VkUHJvcGVydGllcykKKyAgICAgICAgLCBtX251bVBh
cnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gobnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1h
cmdpbkJveCkKKyAgICAgICAgeyB9CisgICAgfTsKKworICAgIFZlY3RvcjxTdGFja2VkUGFyc2Vk
UHJvcGVydGllcyo+IG1fc3RhY2tlZFBhcnNlZFByb3BlcnRpZXM7CisKICAgICBpbnQgbV9pblBh
cnNlU2hvcnRoYW5kOwogICAgIENTU1Byb3BlcnR5SUQgbV9jdXJyZW50U2hvcnRoYW5kOwogICAg
IGJvb2wgbV9pbXBsaWNpdFNob3J0aGFuZDsKQEAgLTM1MSw2ICszODcsMTAgQEAgcHVibGljOgog
ICAgIGludCBsZXgodm9pZCogeXlsdmFsKTsKICAgICBpbnQgdG9rZW4oKSB7IHJldHVybiBtX3Rv
a2VuOyB9CiAKKyAgICBDU1NTZWxlY3RvclZlY3Rvckxpc3QgbV9uZXN0ZWRTZWxlY3RvclN0YWNr
OworCisgICAgYm9vbCBtX3RyYWlsaW5nU3BhY2U7CisKICAgICBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsK
ICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVTdHJpbmdW
YWx1ZShDU1NQYXJzZXJWYWx1ZSopOwogCkBAIC00MzgsNyArNDc4LDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVmUHRyPE1lZGlhUXVlcnlTZXQ+ID4gbV9wYXJzZWRNZWRpYVF1ZXJ5U2V0czsK
ICAgICBWZWN0b3I8T3duUHRyPFJ1bGVMaXN0PiA+IG1fcGFyc2VkUnVsZUxpc3RzOwogICAgIEhh
c2hTZXQ8Q1NTUGFyc2VyU2VsZWN0b3IqPiBtX2Zsb2F0aW5nU2VsZWN0b3JzOwotICAgIEhhc2hT
ZXQ8VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPio+IG1fZmxvYXRpbmdTZWxlY3Rv
clZlY3RvcnM7CisgICAgSGFzaFNldDxDU1NTZWxlY3RvclZlY3Rvcio+IG1fZmxvYXRpbmdTZWxl
Y3RvclZlY3RvcnM7CiAgICAgSGFzaFNldDxDU1NQYXJzZXJWYWx1ZUxpc3QqPiBtX2Zsb2F0aW5n
VmFsdWVMaXN0czsKICAgICBIYXNoU2V0PENTU1BhcnNlckZ1bmN0aW9uKj4gbV9mbG9hdGluZ0Z1
bmN0aW9uczsKIApAQCAtNDQ4LDggKzQ4OCw4IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8VmVj
dG9yPFJlZlB0cjxTdHlsZUtleWZyYW1lPiA+ID4gbV9mbG9hdGluZ0tleWZyYW1lVmVjdG9yOwog
Ci0gICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBtX3JldXNhYmxlU2VsZWN0
b3JWZWN0b3I7Ci0gICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBtX3JldXNh
YmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7CisgICAgT3duUHRyPENTU1NlbGVjdG9yVmVjdG9yPiBt
X3NlbGVjdG9yVmVjdG9yOworICAgIENTU1NlbGVjdG9yVmVjdG9yIG1fcmV1c2FibGVSZWdpb25T
ZWxlY3RvclZlY3RvcjsKIAogICAgIFJlZlB0cjxDU1NDYWxjVmFsdWU+IG1fcGFyc2VkQ2FsY3Vs
YXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKaW5kZXggMzdhMGQ0
NTJjNjVjNDU1ZTVjNDEwNGU1NGU0Nzg5MmZiMjE1NWUwNC4uNjE4YTlhYzljNGVmYjY3ODIzYzg1
MDM4MWMxMWM5MjFiNTAyZTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5j
cHAKQEAgLTExNCwxMCArMTE0LDEwIEBAIENTU1BhcnNlclNlbGVjdG9yOjp+Q1NTUGFyc2VyU2Vs
ZWN0b3IoKQogICAgIH0KIH0KIAotdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3Rv
clZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3Rv
cikKK3ZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0
b3JWZWN0b3ImIHNlbGVjdG9yVmVjdG9yLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmIHN0YWNrZWRT
ZWxlY3RvcnMpCiB7CiAgICAgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QgPSBmYXN0TmV3
PENTU1NlbGVjdG9yTGlzdD4oKTsKLSAgICBzZWxlY3Rvckxpc3QtPmFkb3B0U2VsZWN0b3JWZWN0
b3Ioc2VsZWN0b3JWZWN0b3IpOworICAgIHNlbGVjdG9yTGlzdC0+YWRvcHRTZWxlY3RvclZlY3Rv
cihzZWxlY3RvclZlY3Rvciwgc3RhY2tlZFNlbGVjdG9ycyk7CiAgICAgbV9zZWxlY3Rvci0+c2V0
U2VsZWN0b3JMaXN0KGFkb3B0UHRyKHNlbGVjdG9yTGlzdCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggYzMyYTU3ZGQ2ODc5OThkZWQ2YzI0MDFmNDRkZDMzMTk0
YTJjMjk1NC4uNGEyM2RhMThlYjU5MzM0ODM5NjQ4NjAxNjcxZjA1MmFlMzdlNzAxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTA0LDYgKzEwNCwxMSBAQCBwdWJsaWM6
CiAgICAgT3duUHRyPENTU1BhcnNlclZhbHVlTGlzdD4gYXJnczsKIH07CiAKK2NsYXNzIENTU1Bh
cnNlclNlbGVjdG9yOworCit0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
ID4gQ1NTU2VsZWN0b3JWZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3JW
ZWN0b3I+ID4gQ1NTU2VsZWN0b3JWZWN0b3JMaXN0OworCiBjbGFzcyBDU1NQYXJzZXJTZWxlY3Rv
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMTIsNiArMTE3
LDggQEAgcHVibGljOgogCiAgICAgUGFzc093blB0cjxDU1NTZWxlY3Rvcj4gcmVsZWFzZVNlbGVj
dG9yKCkgeyByZXR1cm4gbV9zZWxlY3Rvci5yZWxlYXNlKCk7IH0KIAorICAgIFBhc3NPd25QdHI8
Q1NTU2VsZWN0b3I+IGR1cGxpY2F0ZVNlbGVjdG9yKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENT
U1NlbGVjdG9yKG1fc2VsZWN0b3IuZ2V0KCkpKTsgfQorCiAgICAgdm9pZCBzZXRUYWcoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0VGFnKHZhbHVlKTsgfQogICAg
IHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5z
ZXRWYWx1ZSh2YWx1ZSk7IH0KICAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRBdHRyaWJ1dGUodmFsdWUpOyB9CkBAIC0xMjAs
NyArMTI3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpS
ZWxhdGlvbiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX3JlbGF0aW9uID0gdmFsdWU7IH0KICAgICB2
b2lkIHNldEZvclBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQogCi0gICAgdm9p
ZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4m
IHNlbGVjdG9yVmVjdG9yKTsKKyAgICB2b2lkIHNldFByaW9yUmVsYXRpb24oQ1NTU2VsZWN0b3I6
OlJlbGF0aW9uIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFByaW9yUmVsYXRpb24odmFsdWUpOyB9
CisgCisgICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIGdldFByaW9yUmVsYXRpb24oKSB7IHJldHVy
biBtX3NlbGVjdG9yLT5nZXRQcmlvclJlbGF0aW9uKCk7IH0KKworICAgIHZvaWQgYWRvcHRTZWxl
Y3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3RvciYsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYpOwog
CiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsgfQogICAgIGJvb2wgaXNVbmtub3duUHNldWRvRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzVW5rbm93blBzZXVkb0VsZW1lbnQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggMTM0NzliNjQwYWI5NjI3YmMx
NWJhY2M5ZWEyZDc3NDM2MDZkOWNjZS4uYjU4ZTE2ODRkZTM1ODA0M2Y4ODBjNWUxYjA5ZWNhNTZj
MzQ5ZGNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0zOCw2ICszOCwzMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK0NT
U1NlbGVjdG9yOjpDU1NTZWxlY3RvcihDU1NTZWxlY3RvciogY29weSkKKyAgICA6IG1fcmVsYXRp
b24oY29weS0+bV9yZWxhdGlvbikKKyAgICAsIG1fbWF0Y2goY29weS0+bV9tYXRjaCkKKyAgICAs
IG1fcHNldWRvVHlwZShjb3B5LT5tX3BzZXVkb1R5cGUpCisgICAgLCBtX3BhcnNlZE50aChjb3B5
LT5tX3BhcnNlZE50aCkKKyAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoY29weS0+bV9pc0xh
c3RJblNlbGVjdG9yTGlzdCkKKyAgICAsIG1faXNMYXN0SW5UYWdIaXN0b3J5KGNvcHktPm1faXNM
YXN0SW5UYWdIaXN0b3J5KQorICAgICwgbV9pc0ZvclBhZ2UoY29weS0+bV9pc0ZvclBhZ2UpCisg
ICAgLCBtX3ByaW9yUmVsYXRpb24oY29weS0+bV9wcmlvclJlbGF0aW9uKQorICAgICwgbV90YWco
Y29weS0+bV90YWcpCit7CisgICAgc2V0VmFsdWUoY29weS0+dmFsdWUoKSk7CisKKyAgICBpZiAo
Y29weS0+bV9oYXNSYXJlRGF0YSkgeworICAgICAgICBjcmVhdGVSYXJlRGF0YSgpOworICAgICAg
ICBtX2RhdGEubV9yYXJlRGF0YS0+bV9hID0gY29weS0+bV9kYXRhLm1fcmFyZURhdGEtPm1fYTsK
KyAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYiA9IGNvcHktPm1fZGF0YS5tX3JhcmVEYXRh
LT5tX2I7CisgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZSA9IGNvcHktPm1f
ZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZTsKKyAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEt
Pm1fYXJndW1lbnQgPSBjb3B5LT5tX2RhdGEubV9yYXJlRGF0YS0+bV9hcmd1bWVudDsKKyAgICAg
ICAgaWYgKGNvcHktPm1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdC5nZXQoKSkKKyAg
ICAgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdCA9IGNvcHktPm1fZGF0
YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdDsKKyAgICB9Cit9CisKIHZvaWQgQ1NTU2VsZWN0
b3I6OmNyZWF0ZVJhcmVEYXRhKCkKIHsKICAgICBpZiAobV9oYXNSYXJlRGF0YSkKQEAgLTY0OCw3
ICs2NzIsNyBAQCB2b2lkIENTU1NlbGVjdG9yOjpzZXRBcmd1bWVudChjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0U2VsZWN0b3JMaXN0KFBhc3NPd25QdHI8
Q1NTU2VsZWN0b3JMaXN0PiBzZWxlY3Rvckxpc3QpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsK
LSAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QgPSBzZWxlY3Rvckxpc3Q7Cisg
ICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0ID0gUmVmY291bnRlZENTU1NlbGVj
dG9yTGlzdDo6Y3JlYXRlKHNlbGVjdG9yTGlzdC5sZWFrUHRyKCkpOwogfQogCiBib29sIENTU1Nl
bGVjdG9yOjpwYXJzZU50aCgpCkBAIC03MDcsNiArNzMxLDEyIEBAIENTU1NlbGVjdG9yOjpSYXJl
RGF0YTo6flJhcmVEYXRhKCkKICAgICAgICAgbV92YWx1ZS0+ZGVyZWYoKTsKIH0KIAorCitSZWZj
b3VudGVkQ1NTU2VsZWN0b3JMaXN0Ojp+UmVmY291bnRlZENTU1NlbGVjdG9yTGlzdCgpCit7Cisg
ICAgZGVsZXRlIG1faW1wbDsKK30KKwogLy8gYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHBhcnNpbmcg
bnRoLWFyZ3VtZW50cwogYm9vbCBDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OnBhcnNlTnRoKCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggMmU5ZTU5MDhmY2QxZWUxMzUyZTkzNjc3MjAy
NWEyODZhZWE2YmI1Yy4uMzE3YWUwM2IxM2E0YzQ0Nzc2YWQ4OThkN2VjNzgzYmQxNzBhMDVjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTMxLDYgKzMxLDI1IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OwogCisgICAgY2xhc3MgUmVmY291
bnRlZENTU1NlbGVjdG9yTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZmNvdW50ZWRDU1NTZWxl
Y3Rvckxpc3Q+IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmVmY291bnRlZENTU1NlbGVjdG9yTGlzdD4gY3JlYXRlKENTU1NlbGVjdG9yTGlzdCogaW1w
bCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJl
ZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3QoaW1wbCkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB+UmVmY291bnRlZENTU1NlbGVjdG9yTGlzdCgpOworCisgICAgICAgICAgICBDU1NTZWxl
Y3Rvckxpc3QqIGdldCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1f
aW1wbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgQ1NT
U2VsZWN0b3JMaXN0KiBtX2ltcGw7CisgICAgICAgICAgICBSZWZjb3VudGVkQ1NTU2VsZWN0b3JM
aXN0KENTU1NlbGVjdG9yTGlzdCogaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9CisgICAgfTsKKwog
ICAgIC8vIHRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNlbGVjdG9yIGZvciBhIFN0eWxlUnVsZQog
ICAgIGNsYXNzIENTU1NlbGVjdG9yIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC0zOSw2ICs1OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ1NTU2VsZWN0
b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICBDU1NTZWxlY3Rvcihjb25zdCBDU1NT
ZWxlY3RvciYpOwogCisgICAgICAgIGV4cGxpY2l0IENTU1NlbGVjdG9yKENTU1NlbGVjdG9yKiBj
b3B5KTsKKwogICAgICAgICB+Q1NTU2VsZWN0b3IoKTsKIAogICAgICAgICAvKioKQEAgLTE5OSwx
NCArMjIwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21p
Y1N0cmluZyo+KG1faGFzUmFyZURhdGEgPyAmbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUgOiAm
bV9kYXRhLm1fdmFsdWUpOyB9CiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZSgpIGNvbnN0OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyZ3VtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX2FyZ3VtZW50IDog
bnVsbEF0b207IH0KLSAgICAgICAgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QoKSBjb25z
dCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JM
aXN0LmdldCgpIDogMDsgfQorICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgJiYgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2Vs
ZWN0b3JMaXN0ID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0LT5nZXQoKSA6IDA7
IH0KIAogICAgICAgICB2b2lkIHNldFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSkgeyBt
X3RhZyA9IHZhbHVlOyB9CisgICAgICAgIHZvaWQgc2V0UHJpb3JSZWxhdGlvbihSZWxhdGlvbiB2
YWx1ZSkgeyBtX3ByaW9yUmVsYXRpb24gPSB2YWx1ZTsgfQogICAgICAgICB2b2lkIHNldFZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZvaWQgc2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3Ry
aW5nJik7CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0b3JMaXN0KFBhc3NPd25QdHI8Q1NTU2VsZWN0
b3JMaXN0Pik7CiAKKyAgICAgICAgUmVsYXRpb24gZ2V0UHJpb3JSZWxhdGlvbigpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFJlbGF0aW9uPihtX3ByaW9yUmVsYXRpb24pOyB9CisKICAgICAgICAgYm9v
bCBwYXJzZU50aCgpOwogICAgICAgICBib29sIG1hdGNoTnRoKGludCBjb3VudCk7CiAKQEAgLTIz
Nyw3ICsyNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pc0xhc3RJ
blRhZ0hpc3RvcnkgICAgIDogMTsKICAgICAgICAgYm9vbCBtX2hhc1JhcmVEYXRhICAgICAgICAg
ICAgOiAxOwogICAgICAgICBib29sIG1faXNGb3JQYWdlICAgICAgICAgICAgICA6IDE7Ci0KKyAg
ICAgICAgdW5zaWduZWQgbV9wcmlvclJlbGF0aW9uICAgICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9u
CiAgICAgICAgIHVuc2lnbmVkIHNwZWNpZmljaXR5Rm9yT25lU2VsZWN0b3IoKSBjb25zdDsKICAg
ICAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHlGb3JQYWdlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdDsKQEAgLTI1Nyw3ICsyODEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICBpbnQgbV9iOyAvLyBVc2VkIGZvciA6bnRoLSoKICAgICAg
ICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8vIHVzZWQgZm9yIGF0dHJpYnV0ZSBz
ZWxlY3RvcgogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJndW1lbnQ7IC8vIFVzZWQgZm9y
IDpjb250YWlucywgOmxhbmcgYW5kIDpudGgtKgotICAgICAgICAgICAgT3duUHRyPENTU1NlbGVj
dG9yTGlzdD4gbV9zZWxlY3Rvckxpc3Q7IC8vIFVzZWQgZm9yIDotd2Via2l0LWFueSBhbmQgOm5v
dAorICAgICAgICAgICAgUmVmUHRyPFJlZmNvdW50ZWRDU1NTZWxlY3Rvckxpc3Q+IG1fc2VsZWN0
b3JMaXN0OyAvLyBVc2VkIGZvciA6LXdlYmtpdC1hbnkgYW5kIDpub3QKICAgICAgICAgCiAgICAg
ICAgIHByaXZhdGU6CiAgICAgICAgICAgICBSYXJlRGF0YShQYXNzUmVmUHRyPEF0b21pY1N0cmlu
Z0ltcGw+IHZhbHVlKTsKQEAgLTMyOCwxMyArMzUyLDE1IEBAIGlubGluZSB2b2lkIENTU1NlbGVj
dG9yOjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogICAgICAgICBpZiAobV9k
YXRhLm1fcmFyZURhdGEtPm1fdmFsdWUpCiAgICAgICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+
bV92YWx1ZS0+ZGVyZWYoKTsKICAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fdmFsdWUgPSB2
YWx1ZS5pbXBsKCk7Ci0gICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlLT5yZWYoKTsK
KyAgICAgICAgaWYgKG1fZGF0YS5tX3JhcmVEYXRhLT5tX3ZhbHVlKQorICAgICAgICAgICAgbV9k
YXRhLm1fcmFyZURhdGEtPm1fdmFsdWUtPnJlZigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGlmIChtX2RhdGEubV92YWx1ZSkKICAgICAgICAgbV9kYXRhLm1fdmFsdWUtPmRlcmVmKCk7
CiAgICAgbV9kYXRhLm1fdmFsdWUgPSB2YWx1ZS5pbXBsKCk7Ci0gICAgbV9kYXRhLm1fdmFsdWUt
PnJlZigpOworICAgIGlmIChtX2RhdGEubV92YWx1ZSkKKyAgICAgICAgbV9kYXRhLm1fdmFsdWUt
PnJlZigpOwogfQogCiBpbmxpbmUgdm9pZCBtb3ZlKFBhc3NPd25QdHI8Q1NTU2VsZWN0b3I+IGZy
b20sIENTU1NlbGVjdG9yKiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAK
aW5kZXggN2Y2YzMyMzU5NGNjYTFmYTJhMDFlYThlNTZlYTA1NjNmMTVjMDdkYS4uMWUyNzQyODcz
ZWZkMjc2NDhkYmZkOWMwNWU5NDc1YjJiNzlkNzk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5jcHAKQEAgLTI5LDEwICsyOSwxMyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
VmFsdWVzLmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8
d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhFeHBsb2Rl
ZFJlc3VsdHMgPSAweDEwMDAwOworCiBDU1NTZWxlY3Rvckxpc3Q6On5DU1NTZWxlY3Rvckxpc3Qo
KQogewogICAgIGRlbGV0ZVNlbGVjdG9ycygpOwpAQCAtNTgsOSArNjEsMTUgQEAgdm9pZCBDU1NT
ZWxlY3Rvckxpc3Q6OmFkb3B0KENTU1NlbGVjdG9yTGlzdCYgbGlzdCkKICAgICBsaXN0Lm1fc2Vs
ZWN0b3JBcnJheSA9IDA7CiB9CiAKLXZvaWQgQ1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVjdG9y
VmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9y
KQordm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0U2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JW
ZWN0b3ImIHNlbGVjdG9yVmVjdG9yLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmIHN0YWNrZWRTZWxl
Y3RvcnMpCiB7CiAgICAgZGVsZXRlU2VsZWN0b3JzKCk7CisKKyNpZiAhRU5BQkxFKENTU19ISUVS
QVJDSElFUykKKyAgICBpZiAoIXN0YWNrZWRTZWxlY3RvcnMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisjZW5kaWYKKwogICAgIGNvbnN0IHNpemVfdCB2ZWN0b3JTaXplID0gc2VsZWN0b3JW
ZWN0b3Iuc2l6ZSgpOwogICAgIHNpemVfdCBmbGF0dGVuZWRTaXplID0gMDsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHZlY3RvclNpemU7ICsraSkgewpAQCAtNjgsMzEgKzc3LDEwMSBAQCB2
b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENT
U1BhcnNlclNlbGVjdG9yPiA+JiBzZQogICAgICAgICAgICAgKytmbGF0dGVuZWRTaXplOwogICAg
IH0KICAgICBBU1NFUlQoZmxhdHRlbmVkU2l6ZSk7Ci0gICAgaWYgKGZsYXR0ZW5lZFNpemUgPT0g
MSkgeworICAgIC8vIElmIHRoZXJlJ3Mgb25seSBhIHNpbmdsZSBmbGF0dGVuZWQgc2VsZWN0b3Ig
Y29tcG9uZW50IGFuZCBubyBzdGFja2VkIHNlbGVjdG9ycyAoaS5lLiB0aGlzIGlzIG5vdAorICAg
IC8vIHBhcnQgb2YgYSBoaWVyYXJjaHkgb2Ygc2VsZWN0b3JzKSB0aGVuIHVzZSB0aGUgZmFzdCBw
YXRoLgorICAgIGlmIChmbGF0dGVuZWRTaXplID09IDEgJiYgc3RhY2tlZFNlbGVjdG9ycy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgbV9zZWxlY3RvckFycmF5ID0gc2VsZWN0b3JWZWN0b3JbMF0tPnJl
bGVhc2VTZWxlY3RvcigpLmxlYWtQdHIoKTsKICAgICAgICAgbV9zZWxlY3RvckFycmF5LT5zZXRM
YXN0SW5TZWxlY3Rvckxpc3QoKTsKICAgICAgICAgQVNTRVJUKG1fc2VsZWN0b3JBcnJheS0+aXNM
YXN0SW5UYWdIaXN0b3J5KCkpOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5zaHJpbmsoMCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9zZWxlY3RvckFycmF5ID0gcmVpbnRlcnByZXRf
Y2FzdDxDU1NTZWxlY3Rvcio+KGZhc3RNYWxsb2Moc2l6ZW9mKENTU1NlbGVjdG9yKSAqIGZsYXR0
ZW5lZFNpemUpKTsKLSAgICBzaXplX3QgYXJyYXlJbmRleCA9IDA7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2ZWN0b3JTaXplOyArK2kpIHsKLSAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3Iq
IGN1cnJlbnQgPSBzZWxlY3RvclZlY3RvcltpXS5nZXQoKTsKLSAgICAgICAgd2hpbGUgKGN1cnJl
bnQpIHsKLSAgICAgICAgICAgIE93blB0cjxDU1NTZWxlY3Rvcj4gc2VsZWN0b3IgPSBjdXJyZW50
LT5yZWxlYXNlU2VsZWN0b3IoKTsKLSAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT50YWdI
aXN0b3J5KCk7Ci0gICAgICAgICAgICBtb3ZlKHNlbGVjdG9yLnJlbGVhc2UoKSwgJm1fc2VsZWN0
b3JBcnJheVthcnJheUluZGV4XSk7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fc2VsZWN0b3JBcnJh
eVthcnJheUluZGV4XS5pc0xhc3RJblNlbGVjdG9yTGlzdCgpKTsKLSAgICAgICAgICAgIGlmIChj
dXJyZW50KQotICAgICAgICAgICAgICAgIG1fc2VsZWN0b3JBcnJheVthcnJheUluZGV4XS5zZXRO
b3RMYXN0SW5UYWdIaXN0b3J5KCk7Ci0gICAgICAgICAgICArK2FycmF5SW5kZXg7CisKKyAgICAv
LyBGbGF0dGVuIHRoZSBzZWxlY3RvciBoaWVyYXJjaHkgaW50byBleHBsb2RlZFNlbGVjdG9ycy4g
RWFjaCBleHBsb2RlZFNlbGVjdG9ycyB2ZWN0b3IgaXMgYSBzaW5nbGUKKyAgICAvLyBlbGVtZW50
IGZyb20gdGhlIGNhcnRlc2lhbiBwcm9kdWN0IG9mIHRoZSBzZXRzIG9mIHNlbGVjdG9ycyBhdCBl
YWNoIGxldmVsIGluIHRoZSBoaWVyYXJjaHkuCisgICAgc2l6ZV90IGV4cGxvZGVkUmVzdWx0c1Np
emUgPSBzZWxlY3RvclZlY3Rvci5zaXplKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0YWNrZWRTZWxlY3RvcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZXhwbG9kZWRSZXN1bHRz
U2l6ZSAqPSBzdGFja2VkU2VsZWN0b3JzW2ldLT5zaXplKCk7CisgICAgICAgIGlmIChleHBsb2Rl
ZFJlc3VsdHNTaXplID4gbWF4RXhwbG9kZWRSZXN1bHRzKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIE93bkFycmF5UHRyPFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3I+ID4gPiBl
eHBsb2RlZFNlbGVjdG9ycyA9IGFkb3B0QXJyYXlQdHIobmV3IFZlY3RvcjxPd25QdHI8Q1NTU2Vs
ZWN0b3I+ID5bZXhwbG9kZWRSZXN1bHRzU2l6ZV0pOworICAgIE93bkFycmF5UHRyPHNpemVfdD4g
aW5zZXJ0TG9jYXRpb25zID0gYWRvcHRBcnJheVB0cihuZXcgc2l6ZV90W2V4cGxvZGVkUmVzdWx0
c1NpemVdKTsKKyAgICBzaXplX3QgZmluYWxTaXplID0gMDsKKworICAgIGZvciAoc2l6ZV90IGV4
cGxvZGVkSW5kZXggPSAwOyBleHBsb2RlZEluZGV4IDwgZXhwbG9kZWRSZXN1bHRzU2l6ZTsgKytl
eHBsb2RlZEluZGV4KSB7CisgICAgICAgIHNpemVfdCBzZWxlY3RvckluZGV4ID0gZXhwbG9kZWRJ
bmRleCAlIHNlbGVjdG9yVmVjdG9yLnNpemUoKTsKKyAgICAgICAgYm9vbCBzdWJzZWxlY3RvciA9
IHNlbGVjdG9yVmVjdG9yW3NlbGVjdG9ySW5kZXhdLT5nZXRQcmlvclJlbGF0aW9uKCkgPT0gQ1NT
U2VsZWN0b3I6OlN1YlNlbGVjdG9yOworICAgICAgICBzaXplX3QgcmVzdWx0ID0gbW92ZVRvRXhw
bG9kZWRWZWN0b3IoJihleHBsb2RlZFNlbGVjdG9yc1tleHBsb2RlZEluZGV4XSksIHNlbGVjdG9y
VmVjdG9yW3NlbGVjdG9ySW5kZXhdLmdldCgpLCB0cnVlLCAwKTsKKyAgICAgICAgZmluYWxTaXpl
ICs9IHJlc3VsdDsKKyAgICAgICAgaW5zZXJ0TG9jYXRpb25zW2V4cGxvZGVkSW5kZXhdID0gc3Vi
c2VsZWN0b3IgPyAwIDogcmVzdWx0OworICAgIH0KKworICAgIHNpemVfdCBjb25zaWRlcmVkID0g
c2VsZWN0b3JWZWN0b3Iuc2l6ZSgpOworCisgICAgLy8gVGhlcmUgYXJlIHR3byBwb3NzaWJpbGl0
aWVzIGhlcmUsIGZvciBlYWNoIHNlbGVjdG9yLgorICAgIC8vICgxKSB0aGUgcHJldmlvdXNseSBp
bnNlcnRlZCBzZWxlY3RvciAod2UncmUgd29ya2luZyBiYWNrd2FyZHMpIGhhcyBhIHByaW9yUmVs
YXRpb24KKyAgICAvLyBvZiBTdWJTZWxlY3Rvci4gSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlbiB3
ZSBpbnNlcnQgYmVmb3JlIGl0IChpLmUuIG5vdCBhdCB0aGUgZW5kIG9mCisgICAgLy8gdGhlIGV4
cGxvZGVkIGxpc3QpLCBhbmQgdXBkYXRlIHRoZSBuZXdseSBpbnNlcnRlZCBzZWxlY3RvcidzIHJl
bGF0aW9uIHRvIGJlIFN1YlNlbGVjdG9yLgorICAgIC8vICgyKSB0aGUgcHJldmlvdXNseSBpbnNl
cnRlZCBzZWxlY3RvciBoYXMgYSBwcmlvclJlbGF0aW9uIG9mIHNvbWV0aGluZyBvdGhlciB0aGFu
CisgICAgLy8gU3ViU2VsZWN0b3IuIElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZW4gd2UgaW5zZXJ0
IGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QsIGFuZCB1cGRhdGUKKyAgICAvLyB0aGUgbmV4dC10by1s
YXN0IHNlbGVjdG9yJ3MgcmVsYXRpb24gdG8gdGhlIGluc2VydGVkIHNlbGVjdG9yJ3MgcHJpb3JS
ZWxhdGlvbi4KKyAgICBmb3IgKGludCBzdGFja2VkSW5kZXggPSBzdGFja2VkU2VsZWN0b3JzLnNp
emUoKSAtIDE7IHN0YWNrZWRJbmRleCA+PSAwOyAtLXN0YWNrZWRJbmRleCkgeworICAgICAgICBD
U1NTZWxlY3RvclZlY3RvciYgY3VycmVudEluU3RhY2sgPSAqKHN0YWNrZWRTZWxlY3RvcnNbc3Rh
Y2tlZEluZGV4XSk7CisgICAgICAgIGZvciAoc2l6ZV90IGV4cGxvZGVkSW5kZXggPSAwOyBleHBs
b2RlZEluZGV4IDwgZXhwbG9kZWRSZXN1bHRzU2l6ZTsgKytleHBsb2RlZEluZGV4KSB7CisgICAg
ICAgICAgICBzaXplX3QgY3VycmVudEluZGV4ID0gKGV4cGxvZGVkSW5kZXggLyBjb25zaWRlcmVk
KSAlIGN1cnJlbnRJblN0YWNrLnNpemUoKTsKKyAgICAgICAgICAgIGJvb2wgc3Vic2VsZWN0b3Ig
PSBjdXJyZW50SW5TdGFja1tjdXJyZW50SW5kZXhdLT5nZXRQcmlvclJlbGF0aW9uKCkgPT0gQ1NT
U2VsZWN0b3I6OlN1YlNlbGVjdG9yOworCisgICAgICAgICAgICAvLyBpZiB3ZSBhcmVuJ3QgaW5z
ZXJ0aW5nIGF0IHRoZSBlbmQgd2UgbmVlZCB0byB1cGRhdGUKKyAgICAgICAgICAgIC8vIHRoaXMg
c2VsZWN0b3IncyByZWxhdGlvbiB0byBpbmRpY2F0ZSB0aGUgbmV4dCBzZWxlY3RvciBpcyBhIHN1
YnNlbGVjdG9yLgorICAgICAgICAgICAgYm9vbCB1cGRhdGVUb1N1YlNlbGVjdG9yID0gaW5zZXJ0
TG9jYXRpb25zW2V4cGxvZGVkSW5kZXhdICE9IGV4cGxvZGVkU2VsZWN0b3JzW2V4cGxvZGVkSW5k
ZXhdLnNpemUoKTsKKyAgICAgICAgICAgIHNpemVfdCBkZWx0YSA9IG1vdmVUb0V4cGxvZGVkVmVj
dG9yKCYoZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9kZWRJbmRleF0pLCBjdXJyZW50SW5TdGFja1tj
dXJyZW50SW5kZXhdLmdldCgpLCB0cnVlLCBpbnNlcnRMb2NhdGlvbnNbZXhwbG9kZWRJbmRleF0p
OworICAgICAgICAgICAgZmluYWxTaXplICs9IGRlbHRhOworICAgICAgICAgICAgaWYgKHVwZGF0
ZVRvU3ViU2VsZWN0b3IpCisgICAgICAgICAgICAgICAgZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9k
ZWRJbmRleF1baW5zZXJ0TG9jYXRpb25zW2V4cGxvZGVkSW5kZXhdICsgZGVsdGEgLSAxXS5nZXQo
KS0+bV9yZWxhdGlvbiA9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICAgICAgICAgIENT
U1NlbGVjdG9yOjpSZWxhdGlvbiByZWxhdGlvbjsKKyAgICAgICAgICAgICAgICBkbworICAgICAg
ICAgICAgICAgICAgICByZWxhdGlvbiA9IGV4cGxvZGVkU2VsZWN0b3JzW2V4cGxvZGVkSW5kZXhd
W2luc2VydExvY2F0aW9uc1tleHBsb2RlZEluZGV4XSAtICgrK29mZnNldCldLT5nZXRQcmlvclJl
bGF0aW9uKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKHJlbGF0aW9uID09IENTU1NlbGVjdG9y
OjpTdWJTZWxlY3Rvcik7CisgICAgICAgICAgICAgICAgZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9k
ZWRJbmRleF1baW5zZXJ0TG9jYXRpb25zW2V4cGxvZGVkSW5kZXhdIC0gMV0uZ2V0KCktPm1fcmVs
YXRpb24gPSByZWxhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc3Vic2Vs
ZWN0b3IpCisgICAgICAgICAgICAgICAgaW5zZXJ0TG9jYXRpb25zW2V4cGxvZGVkSW5kZXhdID0g
ZXhwbG9kZWRTZWxlY3RvcnNbZXhwbG9kZWRJbmRleF0uc2l6ZSgpOworICAgICAgICB9CisgICAg
ICAgIGNvbnNpZGVyZWQgKj0gY3VycmVudEluU3RhY2suc2l6ZSgpOworICAgIH0KKworICAgIG1f
c2VsZWN0b3JBcnJheSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q1NTU2VsZWN0b3IqPihmYXN0TWFsbG9j
KHNpemVvZihDU1NTZWxlY3RvcikgKiBmaW5hbFNpemUpKTsKKworICAgIC8vIE1vdmUgdGhlIHNl
bGVjdG9yIGNvbXBvbmVudHMgaW4gZXhwbG9kZWRTZWxlY3RvcnMgaW50byB0aGUgZmluYWwgb3V0
cHV0IHNlbGVjdG9yQXJyYXkuCisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBmb3IgKHNpemVf
dCBleHBsb2RlZEluZGV4ID0gMDsgZXhwbG9kZWRJbmRleCA8IGV4cGxvZGVkUmVzdWx0c1NpemU7
ICsrZXhwbG9kZWRJbmRleCkgeworICAgICAgICBmb3IgKHNpemVfdCBzZWxlY3RvckluZGV4ID0g
MDsgc2VsZWN0b3JJbmRleCA8IGV4cGxvZGVkU2VsZWN0b3JzW2V4cGxvZGVkSW5kZXhdLnNpemUo
KTsgKytzZWxlY3RvckluZGV4KSB7CisgICAgICAgICAgICBtb3ZlKGV4cGxvZGVkU2VsZWN0b3Jz
W2V4cGxvZGVkSW5kZXhdW3NlbGVjdG9ySW5kZXhdLnJlbGVhc2UoKSwgJm1fc2VsZWN0b3JBcnJh
eVtpbmRleF0pOworICAgICAgICAgICAgaWYgKHNlbGVjdG9ySW5kZXggPCBleHBsb2RlZFNlbGVj
dG9yc1tleHBsb2RlZEluZGV4XS5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgIG1fc2VsZWN0
b3JBcnJheVtpbmRleF0uc2V0Tm90TGFzdEluVGFnSGlzdG9yeSgpOworICAgICAgICAgICAgKytp
bmRleDsKICAgICAgICAgfQotICAgICAgICBBU1NFUlQobV9zZWxlY3RvckFycmF5W2FycmF5SW5k
ZXggLSAxXS5pc0xhc3RJblRhZ0hpc3RvcnkoKSk7CisgICAgICAgIGV4cGxvZGVkU2VsZWN0b3Jz
W2V4cGxvZGVkSW5kZXhdLnNocmluaygwKTsKKyAgICB9CisgICAgQVNTRVJUKGluZGV4ID09IGZp
bmFsU2l6ZSk7CisgICAgbV9zZWxlY3RvckFycmF5W2luZGV4IC0gMV0uc2V0TGFzdEluU2VsZWN0
b3JMaXN0KCk7Cit9CisKK3Vuc2lnbmVkIENTU1NlbGVjdG9yTGlzdDo6bW92ZVRvRXhwbG9kZWRW
ZWN0b3IoVmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvcj4gPiogdmVjdG9yLCBDU1NQYXJzZXJTZWxl
Y3RvciogY3VycmVudCwgYm9vbCB1c2VDb3B5LCB1bnNpZ25lZCBpbnNlcnRJbmRleCkKK3sKKyAg
ICBpbnQgaW5pdGlhbEluc2VydEluZGV4ID0gaW5zZXJ0SW5kZXg7CisgICAgd2hpbGUgKGN1cnJl
bnQpIHsKKyAgICAgICAgdmVjdG9yLT5pbnNlcnQoaW5zZXJ0SW5kZXgsIHVzZUNvcHkgPyBjdXJy
ZW50LT5kdXBsaWNhdGVTZWxlY3RvcigpIDogY3VycmVudC0+cmVsZWFzZVNlbGVjdG9yKCkpOwor
ICAgICAgICBpbnNlcnRJbmRleCArPSAxOworICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+dGFn
SGlzdG9yeSgpOwogICAgIH0KLSAgICBBU1NFUlQoZmxhdHRlbmVkU2l6ZSA9PSBhcnJheUluZGV4
KTsKLSAgICBtX3NlbGVjdG9yQXJyYXlbYXJyYXlJbmRleCAtIDFdLnNldExhc3RJblNlbGVjdG9y
TGlzdCgpOwotICAgIHNlbGVjdG9yVmVjdG9yLnNocmluaygwKTsKKworICAgIHJldHVybiBpbnNl
cnRJbmRleCAtIGluaXRpYWxJbnNlcnRJbmRleDsKIH0KIAogdW5zaWduZWQgQ1NTU2VsZWN0b3JM
aXN0OjpsZW5ndGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4
IDg5ODYwZWUwOTA5MGQ2YTE5YTJjYjhjMmU3YjQ0YjgyMDUzN2U4MGUuLmYwZjhhM2YxNGJiNWYw
NmNmZGNiY2FjZjYyZDBjYTJkZDk4ZmQwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ1NTU2VsZWN0b3JMaXN0X2gKICNkZWZp
bmUgQ1NTU2VsZWN0b3JMaXN0X2gKIAorI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDcgKzQz
LDcgQEAgcHVibGljOgogICAgIH5DU1NTZWxlY3Rvckxpc3QoKTsKIAogICAgIHZvaWQgYWRvcHQo
Q1NTU2VsZWN0b3JMaXN0JiBsaXN0KTsKLSAgICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoVmVj
dG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JWZWN0b3IpOworICAgIHZv
aWQgYWRvcHRTZWxlY3RvclZlY3RvcihDU1NTZWxlY3RvclZlY3RvciYsIENTU1NlbGVjdG9yVmVj
dG9yTGlzdCYpOwogCiAgICAgQ1NTU2VsZWN0b3IqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3RvckFycmF5ID8gbV9zZWxlY3RvckFycmF5IDogMDsgfQogICAgIHN0YXRpYyBDU1NTZWxl
Y3RvciogbmV4dChDU1NTZWxlY3RvciopOwpAQCAtNTgsNiArNTksOCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlU2VsZWN0
b3JzKCk7CisgICAgdW5zaWduZWQgbW92ZVRvRXhwbG9kZWRWZWN0b3IoVmVjdG9yPE93blB0cjxD
U1NTZWxlY3Rvcj4gPiosIENTU1BhcnNlclNlbGVjdG9yKiwgYm9vbCB1c2VDb3B5LCB1bnNpZ25l
ZCBpbnNlcnRJbmRleCk7CisKIAogICAgIC8vIEVuZCBvZiBhIG11bHRpcGFydCBzZWxlY3RvciBp
cyBpbmRpY2F0ZWQgYnkgbV9pc0xhc3RJblRhZ0hpc3RvcnkgYml0IGluIHRoZSBsYXN0IGl0ZW0u
CiAgICAgLy8gRW5kIG9mIHRoZSBhcnJheSBpcyBpbmRpY2F0ZWQgYnkgbV9pc0xhc3RJblNlbGVj
dG9yTGlzdCBiaXQgaW4gdGhlIGxhc3QgaXRlbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TVkdDU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5j
cHAKaW5kZXggZDA2YmIyMDNiYTc2NTM2M2RlNTBmZWYwNzgwMzBjMWFjNjk2YThiYi4uYzdlYzZk
OWY5NDE0MzE5MWZhNmMxYWUyNDVkOGZkNjZiYWU2Mzg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NT
U1BhcnNlci5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBy
b2xsYmFja0xhc3RQcm9wZXJ0aWVzKDEpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0
KCkudmFsdWUoKTsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
LT5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJN
aWQsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1h
cmtlckVuZCwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIG1faW1wbGljaXRTaG9ydGhhbmQg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5kZXggODU1NGFmNjljMTc1NDY3YzNk
NGM4ZGIyMTE3ZGEzZGU1NDY4NmM4NS4uOTM3ZmQ5YWI1M2JhNGM1OTg0MjI5ODYzYzdhMDZmYTNk
NTFhZjdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTM1OSwxMCArMzU5LDEwIEBA
IHZvaWQgU3R5bGVSdWxlTWVkaWE6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJCiAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIo
bV9tZWRpYVF1ZXJpZXMpOwogfQogCi1TdHlsZVJ1bGVSZWdpb246OlN0eWxlUnVsZVJlZ2lvbihW
ZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gPiYgYWRvcHRSdWxlcykKK1N0eWxlUnVsZVJlZ2lvbjo6U3R5bGVS
dWxlUmVnaW9uKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycywg
Q1NTU2VsZWN0b3JWZWN0b3JMaXN0JiBzdGFja2VkU2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZUJhc2U+ID4mIGFkb3B0UnVsZXMpCiAgICAgOiBTdHlsZVJ1bGVCbG9jayhSZWdpb24s
IGFkb3B0UnVsZXMpCiB7Ci0gICAgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3Rvcigq
c2VsZWN0b3JzKTsKKyAgICBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxl
Y3RvcnMsIHN0YWNrZWRTZWxlY3RvcnMpOwogfQogCiBTdHlsZVJ1bGVSZWdpb246OlN0eWxlUnVs
ZVJlZ2lvbihjb25zdCBTdHlsZVJ1bGVSZWdpb24mIG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5k
ZXggNzdiZDJkYzYzZTU3OWExNmZhNjg0M2Q3ZTA1ZTljZDc5OGI2MTk3Yy4uYTE0ZmVjOTg3Y2Iw
ZjI5OTk0NzcwZmQ1Y2MzMTRhZjBlNWVlZTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAt
MTAwLDcgKzEwMCwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJv
cGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQoKTsgfQogICAgIFN0eWxl
UHJvcGVydHlTZXQqIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgCi0gICAgdm9pZCBwYXJzZXJB
ZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNl
bGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9ycyk7
IH0KKyAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoQ1NTU2VsZWN0b3JWZWN0b3Im
IHNlbGVjdG9ycywgQ1NTU2VsZWN0b3JWZWN0b3JMaXN0JiBzdGFja2VkU2VsZWN0b3JzKQorICAg
IHsKKyAgICAgICAgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMs
IHN0YWNrZWRTZWxlY3RvcnMpOworICAgIH0KICAgICB2b2lkIHdyYXBwZXJBZG9wdFNlbGVjdG9y
TGlzdChDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdChz
ZWxlY3RvcnMpOyB9CiAgICAgdm9pZCBzZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4pOwogCkBAIC0xNDksNyArMTUyLDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHls
ZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdl
dCgpOyB9CiAgICAgU3R5bGVQcm9wZXJ0eVNldCogbXV0YWJsZVByb3BlcnRpZXMoKTsKIAotICAg
IHZvaWQgcGFyc2VyQWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3Rv
cihzZWxlY3RvcnMpOyB9CisgICAgdm9pZCBwYXJzZXJBZG9wdFNlbGVjdG9yVmVjdG9yKENTU1Nl
bGVjdG9yVmVjdG9yJiBzZWxlY3RvcnMsIENTU1NlbGVjdG9yVmVjdG9yTGlzdCYgc3RhY2tlZFNl
bGVjdG9ycykKKyAgICB7CisgICAgICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0
b3Ioc2VsZWN0b3JzLCBzdGFja2VkU2VsZWN0b3JzKTsKKyAgICB9CiAgICAgdm9pZCB3cmFwcGVy
QWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rv
ckxpc3QuYWRvcHQoc2VsZWN0b3JzKTsgfQogICAgIHZvaWQgc2V0UHJvcGVydGllcyhQYXNzUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+KTsKIApAQCAtMjA0LDkgKzIxMCw5IEBAIHByaXZhdGU6CiAK
IGNsYXNzIFN0eWxlUnVsZVJlZ2lvbiA6IHB1YmxpYyBTdHlsZVJ1bGVCbG9jayB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVSdWxlUmVnaW9uPiBjcmVhdGUoVmVjdG9yPE93
blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxl
UnVsZUJhc2U+ID4mIGFkb3B0UnVsZXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVSdWxl
UmVnaW9uPiBjcmVhdGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0
b3JzLCBDU1NTZWxlY3RvclZlY3Rvckxpc3QmIHN0YWNrZWRTZWxlY3RvcnMsIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gPiYgYWRvcHRSdWxlcykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU3R5bGVSdWxlUmVnaW9uKHNlbGVjdG9ycywgYWRvcHRSdWxlcykpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVsZVJlZ2lvbihzZWxlY3RvcnMsIHN0YWNr
ZWRTZWxlY3RvcnMsIGFkb3B0UnVsZXMpKTsKICAgICB9CiAKICAgICBjb25zdCBDU1NTZWxlY3Rv
ckxpc3QmIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JMaXN0OyB9CkBA
IC0yMTYsNyArMjIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTdHlsZVJ1
bGVSZWdpb24oVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiosIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gPiYgYWRvcHRSdWxlcyk7CisgICAgU3R5bGVSdWxlUmVnaW9uKFZl
Y3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qLCBDU1NTZWxlY3RvclZlY3Rvckxpc3Qm
LCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4mIGFkb3B0UnVsZXMpOwogICAgIFN0eWxl
UnVsZVJlZ2lvbihjb25zdCBTdHlsZVJ1bGVSZWdpb24mKTsKICAgICAKICAgICBDU1NTZWxlY3Rv
ckxpc3QgbV9zZWxlY3Rvckxpc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTc3Njg1MDRlYjZlOGJkMThiN2NlMDM4ZTZm
M2VkMzkyNGQ4YWI5ZS4uYTA3N2E3OWIxZjU4ZjExNTE3MTlhMDg5NmRjZDVhMDg2ZTI1OTAyOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA4LTA4ICBTaGFuZSBTdGVwaGVucyAgPHNoYW5l
c3RlcGhlbnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQXSBJbXBsZW1lbnQgQ1NTIEhpZXJh
cmNoaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
OTkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Y3NzMy9zaW1wbGUtaGllcmFyY2hpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
c3MzL3NpbXBsZS1oaWVyYXJjaGllcy5odG1sOiBBZGRlZC4KKwogMjAxMi0wOC0wNiAgTWF4IFZ1
am92aWMgIDxtdnVqb3ZpY0BhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFkZXJzXSBQYXJz
ZSBtaXggZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2ltcGxlLWhpZXJh
cmNoaWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvc2ltcGxlLWhpZXJhcmNoaWVz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDAyZTAyNTE4Y2Y0NWQwZmQxZDBhZThlNWQ3MDVi
MjY1N2RmMDA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zaW1wbGUtaGll
cmFyY2hpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1RoaXMgZGl2IHNob3VsZCBj
b250YWluIHJlZCB0ZXh0OiBQQVNTCitUaGlzIGRpdiBzaG91bGQgY29udGFpbiBibHVlIHRleHQ6
IFBBU1MKK1RoaXMgZGl2IHNob3VsZCBub3Q6IFBBU1MKK1RoaXMgZGl2IHNob3VsZCBjb250YWlu
IGdyZWVuIHRleHQ6IFBBU1M6IFBBU1MKK1RoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRl
eHQ6IFBBU1MKK1RoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQ6IFBBU1MKK1RoaXMg
ZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQ6IFBBU1MKK1RoaXMgZGl2IHNob3VsZCBjb250
YWluIGdyZWVuIHRleHQ6IFBBU1MKK1RoaXMgZGl2IHNob3VsZCBub3QgY29udGFpbiBncmVlbiB0
ZXh0OiBQQVNTCitUaGlzIGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dDogUEFTUwor
VGhpcyBkaXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQ6IFBBU1MKK1RoaXMgZGl2IHNo
b3VsZCBub3QgY29udGFpbiBncmVlbiB0ZXh0OiBQQVNTCitUaGlzIHRleHQgc2hvdWxkIGJlIHBp
bms6IFBBU1MKK2J1dCBub3QgdGhpcyB0ZXh0OiBQQVNTCitUaGlzIHRleHQgc2hvdWxkIGJlIHBp
bms6IFBBU1MKK1RoaXMgdGV4dCBzaG91bGQgYmUgcGluazogUEFTUworVGhpcyB0ZXh0IHNob3Vs
ZCBub3QgYmUgcGluazogUEFTUworVGhpcyBzaG91bGQgYmUgcmVkIHdpdGggYSBwaW5rIGJhY2tn
cm91bmQ6IFBBU1MKK1RoaXMgc2hvdWxkIGp1c3QgaGF2ZSB0aGUgcGluayBiYWNrZ3JvdW5kOiBQ
QVNTCitUaGlzIHRleHQgc2hvdWxkIG5vdCBiZSByZWQgYXMgdGhlIGhpZXJhcmNoeSBuZXN0aW5n
IGlzIHRvbyBkZWVwOiBQQVNTCitUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLCBidXQgaGllcmFy
Y2h5IG5lc3Rpbmcgc2hvdWxkIGdvIG5vIGRlZXBlciB0aGFuIHRoaXMgOiBQQVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MzL3NpbXBsZS1oaWVyYXJjaGllcy5odG1sIGIvTGF5b3V0VGVz
dHMvY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGIxNDFmODUxMjMz
ZTc5ODc5ZDIyNGFkZjMxMWNlZDc0YzRlOWJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY3NzMy9zaW1wbGUtaGllcmFyY2hpZXMuaHRtbApAQCAtMCwwICsxLDE4MCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogVGVzdCBhIHRyaXZpYWxseSBu
ZXN0ZWQgcnVsZSAqLworCisuYSB7CisgICAgJiAuYiB7CisgICAgICAgIGNvbG9yOiByZWQ7Cisg
ICAgfQorfQorCisvKiBUZXN0IGludGFyY2FsYXRpb24gb2YgbmVzdGVkIHJ1bGVzIGFuZCBwcm9w
ZXJ0aWVzLiAqLworLyogVGVzdCBkZXNjZW5kYW50IHNlbGVjdG9yIGFuZCBubyBzZWxlY3Rvci4g
Ki8KKworLmMgeworICAgIGhlaWdodDogNDBweDsKKyAgICAmIC5kIHsKKyAgICAgICAgY29sb3I6
IGJsdWU7CisgICAgfQorICAgIHdpZHRoOiA0MDBweDsKKyAgICAmLmUgeworICAgICAgICBjb2xv
cjogZ3JlZW47CisgICAgfQorICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGRkZGQ7Cit9CisKKy8q
IFRlc3Qgbm9uLXNwYWNlLWJhc2VkIGNvbWJpbmF0b3Igd2l0aCBhbGwgcG9zc2libGUgc3BhY2lu
Z3MuICovCisuZiB7CisgICAgJj4uZyB7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9Cisg
ICAgJj4gLmggeworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorICAgICYgPi5pIHsKKyAg
ICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKyAgICAmID4gLmogeworICAgICAgICBjb2xvcjog
Z3JlZW47CisgICAgfQorfQorCisvKiBUZXN0IG11bHRpcGxlIG5lc3RlZCBzZWxlY3RvcnMgaW4g
c2FtZSBsaXN0LiAqLworLmsgeyAKKyAgICAmIC5sLCAmLm0sICYgKyAubiB7CisgICAgICAgIGNv
bG9yOiBwaW5rOworICAgIH0KK30KKworLyogVGVzdCBkZWVwIG5lc3Rpbmcgb2Ygc2VsZWN0b3Jz
LiAqLworLm8geworICAgICYgLnAgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkZGRk
OworICAgICAgICAmIC5xIHsKKyAgICAgICAgICAgIGNvbG9yOiByZWQ7CisgICAgICAgICAgICAm
OjphZnRlciB7CisgICAgICAgICAgICAgICAgY29udGVudDogIiAoSGVyZSdzIHNvbWUgaW5zZXJ0
ZWQgY29udGVudCkiOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisuciwg
LnMgeworICAgICYgLnIsICYgLnMgeworICAgICYgLnIsICYgLnMgeworICAgICYgLnIsICYgLnMg
eworICAgICYgLnIsICYgLnMgeworICAgICYgLnIsICYgLnMgeworICAgICYgLnIsICYgLnMgewor
ICAgICYgLnIsICYgLnMgeworICAgICYgLnIsICYgLnMgeworICAgICYgLnIsICYgLnMgeworICAg
ICYgLnIsICYgLnMgeworICAgICYgLnIsICYgLnMgeworICAgICYgLnIsICYgLnMgeworICAgICYg
LnIsICYgLnMgeworICAgICYgLnIsICYgLnMgeworICAgICYgLnIsICYgLnMgeworICAgICAgICBj
b2xvcjogIGdyZWVuOworICAgICAgICAmIC5yLCAmIC5zIHsKKyAgICAgICAgICAgIGNvbG9yOiBy
ZWQ7CisgICAgICAgIH0gCisgICAgfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH0KK30KKwor
LmZhaWwgeworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworICAgIGNvbG9yOiByZWQ7Cisg
ICAgZm9udC13ZWlnaHQ6IGhlYXZ5OworfQorCisucGFzcyB7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogd2hpdGU7CisgICAgY29sb3I6IGdyZWVuOworICAgIGZvbnQtd2VpZ2h0OiBoZWF2eTsKK30K
KworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iYSI+PGRpdiBjbGFzcz0i
YiI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gcmVkIHRleHQ8L2Rpdj48L2Rpdj4KKworPGRpdiBj
bGFzcz0iYyI+PGRpdiBjbGFzcz0iZCI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gYmx1ZSB0ZXh0
PC9kaXY+VGhpcyBkaXYgc2hvdWxkIG5vdDwvZGl2PgorCis8ZGl2IGNsYXNzPSJjIGUiPlRoaXMg
ZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKworPGRpdiBjbGFzcz0iZiI+Cisg
IDxkaXYgY2xhc3M9ImciPlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4K
KyAgPGRpdiBjbGFzcz0iaCI+VGhpcyBkaXYgc2hvdWxkIGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2
PgorICA8ZGl2IGNsYXNzPSJpIj5UaGlzIGRpdiBzaG91bGQgY29udGFpbiBncmVlbiB0ZXh0PC9k
aXY+CisgIDxkaXYgY2xhc3M9ImoiPlRoaXMgZGl2IHNob3VsZCBjb250YWluIGdyZWVuIHRleHQ8
L2Rpdj4KKyAgPGRpdj4KKyAgICA8ZGl2IGNsYXNzPSJnIj5UaGlzIGRpdiBzaG91bGQgbm90IGNv
bnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImgiPlRoaXMgZGl2IHNob3Vs
ZCBub3QgY29udGFpbiBncmVlbiB0ZXh0PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iaSI+VGhpcyBk
aXYgc2hvdWxkIG5vdCBjb250YWluIGdyZWVuIHRleHQ8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJq
Ij5UaGlzIGRpdiBzaG91bGQgbm90IGNvbnRhaW4gZ3JlZW4gdGV4dDwvZGl2PgorICA8L2Rpdj4K
KzwvZGl2PgorPGRpdj4KKyAgICA8ZGl2IGNsYXNzPSJrIj4KKyAgICAgICAgPGRpdiBjbGFzcz0i
bCI+VGhpcyB0ZXh0IHNob3VsZCBiZSBwaW5rPC9kaXY+IGJ1dCBub3QgdGhpcyB0ZXh0PC9kaXY+
CisgICAgPGRpdiBjbGFzcz0iayBtIj5UaGlzIHRleHQgc2hvdWxkIGJlIHBpbms8L2Rpdj4KKyAg
ICA8ZGl2IGNsYXNzPSJuIj5UaGlzIHRleHQgc2hvdWxkIGJlIHBpbms8L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJuIj5UaGlzIHRleHQgc2hvdWxkIG5vdCBiZSBwaW5rPC9kaXY+Cis8L2Rpdj4KKzxk
aXYgY2xhc3M9Im8iPjxkaXYgY2xhc3M9InAiPjxkaXYgY2xhc3M9InEiPlRoaXMgc2hvdWxkIGJl
IHJlZCB3aXRoIGEgcGluayBiYWNrZ3JvdW5kPC9kaXY+IFRoaXMgc2hvdWxkIGp1c3QgaGF2ZSB0
aGUgcGluayBiYWNrZ3JvdW5kPC9kaXY+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyIj48ZGl2IGNsYXNz
PSJyIj48ZGl2IGNsYXNzPSJyIj48ZGl2IGNsYXNzPSJyIj48ZGl2IGNsYXNzPSJyIj48ZGl2IGNs
YXNzPSJyIj48ZGl2IGNsYXNzPSJyIj48ZGl2IGNsYXNzPSJyIj4KKzxkaXYgY2xhc3M9InIiPjxk
aXYgY2xhc3M9InIiPjxkaXYgY2xhc3M9InIiPjxkaXYgY2xhc3M9InIiPjxkaXYgY2xhc3M9InIi
PjxkaXYgY2xhc3M9InIiPjxkaXYgY2xhc3M9InIiPjxkaXYgY2xhc3M9InIiPgorPGRpdiBjbGFz
cz0iciI+IFRoaXMgdGV4dCBzaG91bGQgbm90IGJlIHJlZCBhcyB0aGUgaGllcmFyY2h5IG5lc3Rp
bmcgaXMgdG9vIGRlZXA8L2Rpdj4KK1RoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4sIGJ1dCBoaWVy
YXJjaHkgbmVzdGluZyBzaG91bGQgZ28gbm8gZGVlcGVyIHRoYW4gdGhpcworPC9kaXY+PC9kaXY+
PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Cis8L2Rpdj48L2Rpdj48L2Rpdj48
L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGV4cGVjdChzZWxlY3RvciwgcmVzdWx0cykgeworICAgIHZhciBlbHRzID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CisgICAgW10uZm9yRWFjaC5jYWxsKGVsdHMsIGZ1
bmN0aW9uKGVsdCkgeworICAgICAgICB2YXIgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHls
ZShlbHQpOworICAgICAgICBmYWlsZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChwcm9wZXJ0eSBp
biByZXN1bHRzKSB7CisgICAgICAgICAgICBpZiAoc3R5bGVbcHJvcGVydHldICE9IHJlc3VsdHNb
cHJvcGVydHldKSB7CisgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB2YXIgZmFpbGVkUmVhc29uID0gImZvciAiICsgcHJvcGVydHkgKyAiIGV4cGVjdGVkICIg
KyByZXN1bHRzW3Byb3BlcnR5XSArICIgYnV0IG9ic2VydmVkICIgKyBzdHlsZVtwcm9wZXJ0eV07
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGZhaWxlZCkgeworICAgICAgICAgICAgZWx0LmlubmVySFRNTCArPSAiOiA8c3BhbiBj
bGFzcz0nZmFpbCc+RkFJTCAoIiArIGZhaWxlZFJlYXNvbiArICIpPC9zcGFuPiI7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBlbHQuaW5uZXJIVE1MICs9ICI6IDxzcGFuIGNsYXNzPSdw
YXNzJz5QQVNTPC9zcGFuPiI7CisgICAgICAgIH0KKyAgICB9KTsKK30KKworZXhwZWN0KCIuYSAu
YiIsIHsiY29sb3IiOiAicmdiKDI1NSwgMCwgMCkifSk7CitleHBlY3QoIi5jIiwgeyJoZWlnaHQi
OiAiNDBweCIsICJ3aWR0aCI6ICI0MDBweCIsICJiYWNrZ3JvdW5kLWNvbG9yIjogInJnYigyMjEs
IDIyMSwgMjIxKSJ9KTsKK2V4cGVjdCgiLmMgLmQiLCB7ImNvbG9yIjogInJnYigwLCAwLCAyNTUp
In0pOworZXhwZWN0KCIuYy5lIiwgeyJjb2xvciI6ICJyZ2IoMCwgMTI4LCAwKSJ9KTsKK2V4cGVj
dCgiLmY+LmciLCB7ImNvbG9yIjogInJnYigwLCAxMjgsIDApIn0pOworZXhwZWN0KCIuZj4gLmgi
LCB7ImNvbG9yIjogInJnYigwLCAxMjgsIDApIn0pOworZXhwZWN0KCIuZiA+LmkiLCB7ImNvbG9y
IjogInJnYigwLCAxMjgsIDApIn0pOworZXhwZWN0KCIuZiA+IC5qIiwgeyJjb2xvciI6ICJyZ2Io
MCwgMTI4LCAwKSJ9KTsKK2V4cGVjdCgiLmYgZGl2IGRpdiIsIHsiY29sb3IiOiAicmdiKDAsIDAs
IDApIn0pOworZXhwZWN0KCIuayAubCIsIHsiY29sb3IiOiAicmdiKDI1NSwgMTkyLCAyMDMpIn0p
OworZXhwZWN0KCIuay5tIiwgeyJjb2xvciI6ICJyZ2IoMjU1LCAxOTIsIDIwMykifSk7CitleHBl
Y3QoIi5rICsgLm4iLCB7ImNvbG9yIjogInJnYigyNTUsIDE5MiwgMjAzKSJ9KTsKK2V4cGVjdCgi
Lms6bm90KC5tKSIsIHsiY29sb3IiOiAicmdiKDAsIDAsIDApIn0pOworZXhwZWN0KCIuayArIC5u
ICsgLm4iLCB7ImNvbG9yIjogInJnYigwLCAwLCAwKSJ9KTsKK2V4cGVjdCgiLm8gLnAiLCB7ImJh
Y2tncm91bmQtY29sb3IiOiAicmdiKDI1NSwgMjIxLCAyMjEpIn0pOworZXhwZWN0KCIubyAucCAu
cSIsIHsiY29sb3IiOiAicmdiKDI1NSwgMCwgMCkifSk7CitleHBlY3QoIi5yIC5yIC5yIC5yIC5y
IC5yIC5yIC5yIC5yIC5yIC5yIC5yIC5yIC5yIC5yIC5yIiwgeyJjb2xvciI6ICJyZ2IoMCwgMTI4
LCAwKSJ9KTsKK2V4cGVjdCgiLnIgLnIgLnIgLnIgLnIgLnIgLnIgLnIgLnIgLnIgLnIgLnIgLnIg
LnIgLnIgLnIgLnIiLCB7ImNvbG9yIjogInJnYigwLCAxMjgsIDApIn0pOworCitpZiAodGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorPC9zY3JpcHQ+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBlMzVmNzE2ZDUzMjI0MWRjM2NjMjY0OTRkZmUzNjkyZTk2YjNjNDBiLi5kMjcwNGEwY2E1
OTBiNmZiY2QyMTY2MGEyYjUyNThlZmEyYWRiNjgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1Nyw2ICsxNTcsMTAgQEAgQlVHV0s4
ODE3MiBTS0lQIDogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1idWZmZXJlZC5odG1sID0gUEFTUwog
QlVHV0s5Mjk0MiBTS0lQIDogZmFzdC9kb20vUHJveGltaXR5ID0gUEFTUwogQlVHV0s5Mjk0MiBT
S0lQIDogZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL2RldmljZS1wcm94aW1pdHktZXZlbnQtY29u
c3RydWN0b3IuaHRtbCA9IFBBU1MKIAorLy8gQ1NTIEhpZXJhcmNoaWVzIGFyZSBub3QgeWV0IGVu
YWJsZWQuCitCVUdXSzc5OTM5IFNLSVAgOiBjc3MzL3NpbXBsZS1oaWVyYXJjaGllcy5odG1sID0g
UEFTUworCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBXT05URklYIFRFU1RTCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwNWY5NGUxYjE0NWU5
YTkzYTU3MTlmYTc1MjVkOWMxMTI0MjNkOWM4Li4xNGRjYTkwMmJiNmJmNjI3MWEwOGEzNTk1MWFm
OTFmMWYwNmEzMGQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMTU2LDYgKzE1Niw5IEBAIEJVR1dLODU1MzIgU0tJUCA6IGZhc3Qvc3ViLXBpeGVsID0g
TUlTU0lORwogLy8gRGV2aWNlT3JpZW50YXRpb24gc3VwcG9ydCBpcyBub3QgZW5hYmxlZCBieSBk
ZWZhdWx0LgogQlVHV0tFRkwgU0tJUCA6IGluc3BlY3Rvci9kZXZpY2Utb3JpZW50YXRpb24tc3Vj
Y2Vzcy5odG1sID0gVEVYVAogCisvLyBDU1MgSGllcmFyY2hpZXMgYXJlIG5vdCB5ZXQgZW5hYmxl
ZC4KK0JVR1dLNzk5MzkgU0tJUCA6IGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0bWwgPSBQQVNT
CisKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gQ1JBU0hFUwogLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDgwZjk3OWE2YmZjZmY3ZTRmM2U3MDhkNTM2MGI2ZjI3NmU1Njkz
MTYuLjBjODQwN2I0N2FlNzc0ZTAzZjAxOTEyZjkzYWFmMDIwYjZmNWJiM2UgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0zOTgsNiArMzk4LDkgQEAgQlVH
V0s4NDYzNSBTS0lQIDogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQgPSBURVhUCiBCVUdXSzky
OTQyIFNLSVAgOiBmYXN0L2RvbS9Qcm94aW1pdHkgPSBQQVNTCiBCVUdXSzkyOTQyIFNLSVAgOiBm
YXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvZGV2aWNlLXByb3hpbWl0eS1ldmVudC1jb25zdHJ1Y3Rv
ci5odG1sID0gUEFTUwogCisvLyBDU1MgSGllcmFyY2hpZXMgYXJlIG5vdCB5ZXQgZW5hYmxlZC4K
K0JVR1dLNzk5MzkgU0tJUCA6IGNzczMvc2ltcGxlLWhpZXJhcmNoaWVzLmh0bWwgPSBQQVNTCisK
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gRW5kIG9mIEV4cGVjdGVkIGZh
aWx1cmVzCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTIzMDU1OTgwZjIzNThjNmZjNWI1MDI0
ZmVhNTM5YjNiYzVhYTg5OC4uYzhiNDc3NjU2YWQ4M2ZjMjllMDMyODQ4MTU1MDlhY2FmN2NiZjRm
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIyLDYg
KzIyLDkgQEAgQlVHV0s4NTI2MiBTS0lQIDogZmFzdC9jc3MvaW1hZ2UtcmVzb2x1dGlvbiA9IFBB
U1MKIC8vIENTUyBpbWFnZS1vcmllbnRhdGlvbiBpcyBub3QgeWV0IGVuYWJsZWQuCiBCVUdXSzg5
MDUyIFNLSVAgOiBmYXN0L2Nzcy9pbWFnZS1vcmllbnRhdGlvbiA9IFBBU1MKIAorLy8gQ1NTIEhp
ZXJhcmNoaWVzIGFyZSBub3QgeWV0IGVuYWJsZWQuCitCVUdXSzc5OTM5IFNLSVAgOiBjc3MzL3Np
bXBsZS1oaWVyYXJjaGllcy5odG1sID0gUEFTUworCiAvLyBPdXIgc2xvdyB0ZXN0cywgaW4gYWxw
aGFiZXRpY2FsIG9yZGVyLgogQlVHV0s1NzY3MiA6IGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9z
ZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuaHRtbCA9IFRFWFQgUEFTUwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjYzIyMGNhNTUxYmU0OWJjMzZlYzU2N2Zm
ODI4Nzk1ZTczM2M5MWMxLi5jNDU5MzYxNDVmMzYyYmI2Mzg1NDVlZTg5YTQ3MmI2MTNiODViZDdk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgzLDYgKzgz
LDkgQEAgQlVHV0s4NTI2MiBTS0lQIDogZmFzdC9jc3MvaW1hZ2UtcmVzb2x1dGlvbiA9IFBBU1MK
IC8vIENTUyBpbWFnZS1vcmllbnRhdGlvbiBpcyBub3QgeWV0IGVuYWJsZWQuCiBCVUdXSzg5MDUy
IFNLSVAgOiBmYXN0L2Nzcy9pbWFnZS1vcmllbnRhdGlvbiA9IFBBU1MKIAorLy8gQ1NTIEhpZXJh
cmNoaWVzIGFyZSBub3QgeWV0IGVuYWJsZWQuCitCVUdXSzc5OTM5IFNLSVAgOiBjc3MzL3NpbXBs
ZS1oaWVyYXJjaGllcy5odG1sID0gUEFTUworCiAvLyBOZWVkcyByZWJhc2VsaW5lIGFmdGVyIGJ1
ZyA4NjQ0MQogLy8gZmFpbGluZyBuZXcgdGVzdHMKIEJVR1dLODY0NDEgU0tJUCA6IGZhc3QvYm9y
ZGVycy9ib3JkZXItYW50aWFsaWFzaW5nLmh0bWwgPSBJTUFHRQo=
</data>
<flag name="commit-queue"
          id="167521"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>