<?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>45872</bug_id>
          
          <creation_ts>2010-09-15 21:51:06 -0700</creation_ts>
          <short_desc>Refactor HTMLInputElement</short_desc>
          <delta_ts>2010-10-06 02:17:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>45903</dependson>
    
    <dependson>46023</dependson>
    
    <dependson>46035</dependson>
    
    <dependson>46238</dependson>
          <blocked>46791</blocked>
    
    <blocked>46965</blocked>
    
    <blocked>47251</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>arv</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>279933</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-15 21:51:06 -0700</bug_when>
    <thetext>Refactor HTMLInputElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279934</commentid>
    <comment_count>1</comment_count>
      <attachid>67768</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-15 22:00:22 -0700</bug_when>
    <thetext>Created attachment 67768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279936</commentid>
    <comment_count>2</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-15 22:26:22 -0700</bug_when>
    <thetext>- We will introduce TypeHandler subclasses for each input types because of HTMLInputElement::formControlName().

- We can move type-specific data members of HTMLInputElement such as m_xPos m_yPos m_maxResults m_imageLoader m_fileList to TypeHandler classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279961</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-16 00:32:13 -0700</bug_when>
    <thetext>I like the approach.  I&apos;d have to look at it when I&apos;m more awake to review it properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280063</commentid>
    <comment_count>4</comment_count>
      <attachid>67768</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-16 07:00:06 -0700</bug_when>
    <thetext>Comment on attachment 67768
Patch

Did you forget to include new files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280065</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-16 07:05:33 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 67768 [details])
&gt; Did you forget to include new files?

Oh, nevermind :) Sorry, need to wake up first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280071</commentid>
    <comment_count>6</comment_count>
      <attachid>67768</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-16 07:18:15 -0700</bug_when>
    <thetext>Comment on attachment 67768
Patch

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

Yay! This is exactly what we need. However, I think you&apos;re not handling a case of changing input type by setting the value of the &quot;input&quot; attribute. Even though the input may be born as a text input, it could change to any other type during its lifecycle.

&gt; WebCore/html/HTMLInputElement.cpp:2957
&gt; +// Type handlers ---------------------------------------------------------------

This should live either in separate files (preferred) or with TypeHandle (InputType).

&gt; WebCore/html/HTMLInputElement.h:41
&gt; +class TypeHandler {

This needs to be moved to its own file. Also, can we name it something more specific, like InputType? Then, the subclasses could be TextInputType, CheckboxInputType, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280084</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-16 07:47:40 -0700</bug_when>
    <thetext>&gt; This needs to be moved to its own file. Also, can we name it something more specific, like InputType? Then, the subclasses could be TextInputType, CheckboxInputType, etc.

Ok, InputType is already taken. How about InputElementType?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280104</commentid>
    <comment_count>8</comment_count>
      <attachid>67768</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-16 08:21:01 -0700</bug_when>
    <thetext>Comment on attachment 67768
Patch

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

The setInputType function will need to create a new instance of one of these objects and destroy the old one.

I agree with Dmitri that the objects should be called InputType even though that conflicts with the existing enum. These objects are going to replace the enum. At first, you could name the base class InputTypeBase, and then later give it the name InputType once we eliminate the enum.

There are two competing design patterns here. In one pattern, each function of the new class takes an HTMLInputElement*. In another, the new class contains an HTMLInputElement*. I suppose having the new class contain an HTMLInputElement* member is OK.

I suggest refactoring clients of HTMLInputElement so they no longer use the inputType() function. Outside of the HTMLInputElement class itself I see only 15 call sites in WebCore and all would be easy to fix and just a few in WebKit that check for password.

Oh, wait, Chromium seems to expose the input type enum as public API!? That should be fixed. The Chromium WebKit code seems to use the inputType() function a lot! Well, regardless, I think we can eliminate all clients except for WebInputElement::inputType quite easily, and maybe we can do something about that one.

&gt; WebCore/html/HTMLInputElement.h:52
&gt; +    HTMLInputElement* input() const { return m_input; }

I would name this function element() rather than input().

&gt; WebCore/html/HTMLInputElement.h:56
&gt; +    HTMLInputElement* m_input;

I would name this data member element() rather than input().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280116</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-16 08:36:30 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 67768 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67768&amp;action=prettypatch
&gt; 
&gt; The setInputType function will need to create a new instance of one of these objects and destroy the old one.
&gt; 
&gt; I agree with Dmitri that the objects should be called InputType even though that conflicts with the existing enum. These objects are going to replace the enum. At first, you could name the base class InputTypeBase, and then later give it the name InputType once we eliminate the enum.
&gt; 
&gt; There are two competing design patterns here. In one pattern, each function of the new class takes an HTMLInputElement*. In another, the new class contains an HTMLInputElement*. I suppose having the new class contain an HTMLInputElement* member is OK.

I&apos;ve been thinking about this and from the ownership/clarity perspective, it might be good to just always pass input (as InputElement*) when we need to query value etc.

&gt; 
&gt; I suggest refactoring clients of HTMLInputElement so they no longer use the inputType() function. Outside of the HTMLInputElement class itself I see only 15 call sites in WebCore and all would be easy to fix and just a few in WebKit that check for password.
&gt; 
&gt; Oh, wait, Chromium seems to expose the input type enum as public API!? That should be fixed. The Chromium WebKit code seems to use the inputType() function a lot! Well, regardless, I think we can eliminate all clients except for WebInputElement::inputType quite easily, and maybe we can do something about that one.

Yes, that&apos;s bad stuff. We need to get rid of that.

&gt; 
&gt; &gt; WebCore/html/HTMLInputElement.h:52
&gt; &gt; +    HTMLInputElement* input() const { return m_input; }
&gt; 
&gt; I would name this function element() rather than input().
&gt; 
&gt; &gt; WebCore/html/HTMLInputElement.h:56
&gt; &gt; +    HTMLInputElement* m_input;
&gt; 
&gt; I would name this data member element() rather than input().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280172</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-16 10:06:13 -0700</bug_when>
    <thetext>I started work on removing callers of inputType. See bug 45903.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280627</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-17 06:17:34 -0700</bug_when>
    <thetext>Thank you for the comments, and thank you for fixing InputType usage, Darin.

TODO summary:

In short term (next patch):
- Move new classes to a separated file
  though introducing a new source file is the most painful task in WebKit development ;-(

- Rename TypeHandler to InputTypeBase

- Should HTMLInputElement* be a data member or a parameter?
-- data member:
  Extra memory is needed to store the member.
-- parameter:
  Extra runtime cost and code size are needed to pass and receive the parameter.
  We can&apos;t use singletons for InputTypeBase objects even in this case because we&apos;ll move m_xPos m_yPos ... m_fileList to InputType.

I like data member because it would be simple.


In long term:
- Remove InputType enum dependency from Chromium port
- Rename InputTypeBase class to InputType</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280710</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-17 10:16:43 -0700</bug_when>
    <thetext>I suggest we rename InputType and inputType() and m_type to DeprecatedInputType, deprecatedInputType() and m_numericType as soon as possible, to free up the InputType class name, type() function name and m_type member name for private use within the HTMLInputElement class.

I think one of the major issues may end up being access from the InputType classes to private things in HTMLInputElement that we would not want to expose to other classes. Because of this, we may need to make some InputType classes be friends of HTMLInputElement.

&gt; - Move new classes to a separated file
&gt;   though introducing a new source file is the most painful task in WebKit development ;-(

I would like to see each InputType class in a separate source file. Since adding source files can be a chore, I suggest we do this work up front.

&gt; - Rename TypeHandler to InputTypeBase

Lets name it InputType.

&gt; - Should HTMLInputElement* be a data member or a parameter?
&gt; -- data member:
&gt;   Extra memory is needed to store the member.
&gt; -- parameter:
&gt;   Extra runtime cost and code size are needed to pass and receive the parameter.
&gt;   We can&apos;t use singletons for InputTypeBase objects even in this case because we&apos;ll move m_xPos m_yPos ... m_fileList to InputType.

I’m not sure it’s OK to move that data to the InputType object. It’s only OK if that data can be destroyed when you change the type of the input element. If the data needs to survive when you change the type and back, then the data needs to be stored outside the InputType object. We should construct some tests and see what our browser and other browsers do in these respects.

&gt; In long term:
&gt; - Remove InputType enum dependency from Chromium port
&gt; - Rename InputTypeBase class to InputType

The first of these can be long term, but the second one I think we should do right at the start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281052</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-17 18:24:48 -0700</bug_when>
    <thetext>Bug 46023 contains a patch that changes the old input type to add a “deprecated” prefix to leave the shorter cleaner names free for use for the refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282326</commentid>
    <comment_count>14</comment_count>
      <attachid>68243</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-21 08:46:22 -0700</bug_when>
    <thetext>Created attachment 68243
Work-in-progress patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282370</commentid>
    <comment_count>15</comment_count>
      <attachid>68243</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-21 09:54:38 -0700</bug_when>
    <thetext>Comment on attachment 68243
Work-in-progress patch

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

&gt; WebCore/html/InputType.cpp:422
&gt; +namespace InputTypeNames {
&gt; +
&gt; +const AtomicString&amp; button()
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(AtomicString, name, (&quot;button&quot;));
&gt; +    return name;
&gt; +}

Is there a reason why these names are wrapped in a function?  Can&apos;t we declare all of them as constant static variables?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282380</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-21 10:01:45 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Is there a reason why these names are wrapped in a function?  Can&apos;t we declare all of them as constant static variables?

We don’t allow global constructors in the WebKit code for multiple reasons. One is the lack of control over order of initialization, and another is that initializing such objects slows down loading the WebKit library on platforms such as Mac OS X.

If we add a global constructor, the Mac build will fail because it contains a build step that checks for such things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282763</commentid>
    <comment_count>17</comment_count>
      <attachid>68337</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-21 21:31:45 -0700</bug_when>
    <thetext>Created attachment 68337
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283034</commentid>
    <comment_count>18</comment_count>
      <attachid>68337</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-22 10:30:59 -0700</bug_when>
    <thetext>Comment on attachment 68337
Patch 2

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

Great start! Please take another crack at it.

&gt; WebCore/html/HTMLInputElement.cpp:165
&gt; +    m_inputType = InputType::create(this, InputTypeNames::text());

Can we use constructor syntax instead?

Also, maybe it’s slightly more elegant to have a InputType::create function that does not take a type name or an InputType::createText, rather than passing the name text explicitly?

&gt; WebCore/html/HTMLInputElement.h:29
&gt; +#include &quot;InputType.h&quot;

This header should just forward-declare the InputType class, not include the whole header.

&gt; WebCore/html/InputType.cpp:46
&gt; +// Textfield-looking types including NUMBER.

I don’t think Textfield-looking is a good way to say this.

&gt; WebCore/html/InputType.cpp:53
&gt; +// Base of email, passoword, search, tel, text, and URL types.

Typo: passoword.

&gt; WebCore/html/InputType.cpp:61
&gt; +    {
&gt; +        const AtomicString&amp; pattern = element()-&gt;getAttribute(patternAttr);

This function body is too long to have inlined in the class definition. I suggest having the function definitions outside the class definitions.

&gt; WebCore/html/InputType.cpp:75
&gt; +class ButtonInputType : public InputType {

I have mixed feelings about having all this in a single file. We should really consider one file per input type.

&gt; WebCore/html/InputType.cpp:365
&gt; +typedef HashMap&lt;AtomicString, PassOwnPtr&lt;InputType&gt; (*)(HTMLInputElement*), CaseFoldingHash&gt; InputTypeFactoryMap;

I’m not sure the key should be AtomicString if it’s CaseFoldingHash. We can just have the key be String.

&gt; WebCore/html/InputType.cpp:400
&gt; +    PassOwnPtr&lt;InputType&gt; (*factory)(HTMLInputElement*);
&gt; +    factory = factoryMap-&gt;get(typeName);

This definition and initialization should be done on a single line, not two.

&gt; WebCore/html/InputType.cpp:414
&gt; +InputType::InputType(HTMLInputElement* inputElement) : m_element(inputElement) {}
&gt; +
&gt; +InputType::~InputType() {}
&gt; +
&gt; +bool InputType::isTextField() const { return false; }
&gt; +
&gt; +bool InputType::isTextType() const { return false; }
&gt; +
&gt; +bool InputType::patternMismatch(const String&amp;) const { return false; }

We don’t format functions on single lines like this except inside class definitions.

Also, we put spaces in between the braces when it’s like this { }.

&gt; WebCore/html/InputType.h:34
&gt; +#include &lt;wtf/PassOwnPtr.h&gt;

I think you can just include Forward.h instead of including PassOwnPtr.h.

&gt; WebCore/html/InputType.h:36
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Not need to include WTFString if you’re already including AtomicString.

But I think you don’t need to include AtomicString.h. You can just forward-declare AtomicString for what’s needed here.

&gt; WebCore/html/InputType.h:42
&gt; +class InputType {

This should inherit from Noncopyable.

&gt; WebCore/html/InputType.h:50
&gt; +    virtual bool isTextField() const;
&gt; +    virtual bool isTextType() const;
&gt; +    virtual const AtomicString&amp; typeName() const = 0;
&gt; +    virtual bool patternMismatch(const String&amp;) const;

What’s the ordering here? I’d like to see a more logical grouping and ordering if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284235</commentid>
    <comment_count>19</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-23 23:14:53 -0700</bug_when>
    <thetext>Thank you for the comments!

(In reply to comment #18)
&gt; &gt; WebCore/html/InputType.cpp:75
&gt; &gt; +class ButtonInputType : public InputType {
&gt; 
&gt; I have mixed feelings about having all this in a single file. We should really consider one file per input type.

I think it&apos;s good to have one file per one input type.

Do you think we should have separated files for common base classes, TextFieldInputType and BaseTextInputType? I think we need to introduce more common classes; radio/checkbox, date/time, button/reset/submit.


-------------------------------------------------------
&gt; &gt; WebCore/html/HTMLInputElement.cpp:165
&gt; &gt; +    m_inputType = InputType::create(this, InputTypeNames::text());
&gt; 
&gt; Can we use constructor syntax instead?

done.

&gt; Also, maybe it’s slightly more elegant to have a InputType::create function that does not take a type name or an InputType::createText, rather than passing the name text explicitly?

done.  I made InputType::createText().

&gt; &gt; WebCore/html/HTMLInputElement.h:29
&gt; &gt; +#include &quot;InputType.h&quot;
&gt; 
&gt; This header should just forward-declare the InputType class, not include the whole header.

done.

&gt; &gt; WebCore/html/InputType.cpp:46
&gt; &gt; +// Textfield-looking types including NUMBER.
&gt; 
&gt; I don’t think Textfield-looking is a good way to say this.

I update the comment:
// The class represents types of which UI contain text fields.
// It supports not only the types for BaseTextInputType but also type=number.


&gt; &gt; WebCore/html/InputType.cpp:53
&gt; &gt; +// Base of email, passoword, search, tel, text, and URL types.
&gt; 
&gt; Typo: passoword.

done.

&gt; &gt; WebCore/html/InputType.cpp:61
&gt; &gt; +    {
&gt; &gt; +        const AtomicString&amp; pattern = element()-&gt;getAttribute(patternAttr);
&gt; 
&gt; This function body is too long to have inlined in the class definition. I suggest having the function definitions outside the class definitions.

done.

&gt; &gt; WebCore/html/InputType.cpp:365
&gt; &gt; +typedef HashMap&lt;AtomicString, PassOwnPtr&lt;InputType&gt; (*)(HTMLInputElement*), CaseFoldingHash&gt; InputTypeFactoryMap;
&gt; 
&gt; I’m not sure the key should be AtomicString if it’s CaseFoldingHash. We can just have the key be String.

done. Changed it to String.

&gt; &gt; WebCore/html/InputType.cpp:400
&gt; &gt; +    PassOwnPtr&lt;InputType&gt; (*factory)(HTMLInputElement*);
&gt; &gt; +    factory = factoryMap-&gt;get(typeName);
&gt; 
&gt; This definition and initialization should be done on a single line, not two.

done.

&gt; &gt; WebCore/html/InputType.cpp:414
&gt; &gt; +InputType::InputType(HTMLInputElement* inputElement) : m_element(inputElement) {}
&gt; &gt; +
&gt; &gt; +InputType::~InputType() {}
&gt; &gt; +
&gt; &gt; +bool InputType::isTextField() const { return false; }
&gt; &gt; +
&gt; &gt; +bool InputType::isTextType() const { return false; }
&gt; &gt; +
&gt; &gt; +bool InputType::patternMismatch(const String&amp;) const { return false; }
&gt; 
&gt; We don’t format functions on single lines like this except inside class definitions.

done.  I haven&apos;t known this rule.

&gt; &gt; WebCore/html/InputType.h:34
&gt; &gt; +#include &lt;wtf/PassOwnPtr.h&gt;
&gt; 
&gt; I think you can just include Forward.h instead of including PassOwnPtr.h.

done.  I haven&apos;t known about Forward.h.  Oops.

&gt; &gt; WebCore/html/InputType.h:36
&gt; &gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; Not need to include WTFString if you’re already including AtomicString.
&gt; But I think you don’t need to include AtomicString.h. You can just forward-declare AtomicString for what’s needed here.

We don&apos;t need this line anymore because of Forward.h.

&gt; &gt; WebCore/html/InputType.h:42
&gt; &gt; +class InputType {
&gt; 
&gt; This should inherit from Noncopyable.

done.

&gt; &gt; WebCore/html/InputType.h:50
&gt; &gt; +    virtual bool isTextField() const;
&gt; &gt; +    virtual bool isTextType() const;
&gt; &gt; +    virtual const AtomicString&amp; typeName() const = 0;
&gt; &gt; +    virtual bool patternMismatch(const String&amp;) const;
&gt; 
&gt; What’s the ordering here? I’d like to see a more logical grouping and ordering if possible.

The order is:
 - type checking functions, and
 - others :-)
I inserted a blank line before patternMismatch().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284239</commentid>
    <comment_count>20</comment_count>
      <attachid>68651</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-23 23:20:22 -0700</bug_when>
    <thetext>Created attachment 68651
Patch 3 (not separated yet)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285646</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-27 11:51:28 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Do you think we should have separated files for common base classes, TextFieldInputType and BaseTextInputType? I think we need to introduce more common classes; radio/checkbox, date/time, button/reset/submit.

Sure, I’d suggest a file per class, even if the classes are pretty small. We might regret it, but we’ve done it elsewhere and I think the results are usually good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286153</commentid>
    <comment_count>22</comment_count>
      <attachid>69035</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-28 03:33:32 -0700</bug_when>
    <thetext>Created attachment 69035
Patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286333</commentid>
    <comment_count>23</comment_count>
      <attachid>69035</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-28 10:18:01 -0700</bug_when>
    <thetext>Comment on attachment 69035
Patch 4

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

Good work. I like where this is going.

&gt; WebCore/html/BaseTextInputType.cpp:8
&gt; + * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
&gt; + *           (C) 1999 Antti Koivisto (koivisto@kde.org)
&gt; + *           (C) 2001 Dirk Mueller (mueller@kde.org)
&gt; + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
&gt; + *           (C) 2006 Alexey Proskuryakov (ap@nypop.com)
&gt; + * Copyright (C) 2007 Samuel Weinig (sam@webkit.org)
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

While it’s good to not remove copyrights, I think that putting this entire list on every file is probably not right; the code here doesn’t necessarily have contributions from all these people and dates. You should consider if you can be more precise.

&gt; WebCore/html/BaseTextInputType.cpp:39
&gt; +BaseTextInputType::BaseTextInputType(HTMLInputElement* inputElement)
&gt; +    : TextFieldInputType(inputElement)

I’d just name this element rather than inputElement.

&gt; WebCore/html/BaseTextInputType.cpp:50
&gt; +    const AtomicString&amp; pattern = element()-&gt;getAttribute(patternAttr);

Just a side note: Could use fastGetAttribute here.

&gt; WebCore/html/BaseTextInputType.cpp:54
&gt; +    RegularExpression patternRegExp(pattern, TextCaseSensitive);

If it was me, I wouldn’t put this into a local variable. I’d just write:

    int matchOffset = RegularExpression(pattern, TextCaseSensitive).match(value, 0, &amp;matchLength);

&gt; WebCore/html/BaseTextInputType.cpp:56
&gt; +    int valueLength = value.length();

I don’t see any reason to put value.length() into a local variable? Is it to avoid a typecast?

&gt; WebCore/html/BaseTextInputType.h:42
&gt; +    BaseTextInputType(HTMLInputElement*);

This should be protected, not public.

&gt; WebCore/html/BaseTextInputType.h:44
&gt; +    virtual bool isTextType() const;
&gt; +    virtual bool patternMismatch(const String&amp;) const;

These should be private, not public.

&gt; WebCore/html/ButtonInputType.cpp:34
&gt; +PassOwnPtr&lt;InputType&gt; ButtonInputType::create(HTMLInputElement* inputElement)

Again, element instead of inputElement would be cleaner. I won’t repeat this every time!

&gt; WebCore/html/ButtonInputType.cpp:42
&gt; +ButtonInputType::ButtonInputType(HTMLInputElement* inputElement)
&gt; +    : InputType(inputElement)
&gt; +{
&gt; +}

I suggest marking this inline and defining it before the create function. We’d like it to be inlined into its single caller.

&gt; WebCore/html/ImageInputType.h:44
&gt; +    virtual const AtomicString&amp; formControlType() const { return InputTypeNames::image(); }

I’m not sure it’s good to define these functions in the header files. They are virtual functions so they won’t get called inline. Probably better to use a function definition in the .cpp file instead for these.

&gt; WebCore/html/InputType.cpp:95
&gt; +    PassOwnPtr&lt;InputType&gt; (*factory)(HTMLInputElement*) = factoryMap-&gt;get(typeName);

Are we guaranteed that the type name is not the null string? I believe we’ll get a crash at runtime if we call get with a null string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286748</commentid>
    <comment_count>24</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-28 23:40:24 -0700</bug_when>
    <thetext>Thank you for reviewing.  I landed it with the following changes as http://trac.webkit.org/changeset/68629


(In reply to comment #23)
&gt; &gt; WebCore/html/BaseTextInputType.cpp:8
&gt; &gt; + * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
&gt; &gt; + *           (C) 1999 Antti Koivisto (koivisto@kde.org)
&gt; &gt; + *           (C) 2001 Dirk Mueller (mueller@kde.org)
&gt; &gt; + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
&gt; &gt; + *           (C) 2006 Alexey Proskuryakov (ap@nypop.com)
&gt; &gt; + * Copyright (C) 2007 Samuel Weinig (sam@webkit.org)
&gt; &gt; + * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; 
&gt; While it’s good to not remove copyrights, I think that putting this entire list on every file is probably not right; the code here doesn’t necessarily have contributions from all these people and dates. You should consider if you can be more precise.

Ok, all code except BaseTextInputType::patternMismatch() was written by me.  So I added Michelangelo&apos;s copyright header to BaseTextInputType.cpp, and Google header to others.

&gt; &gt; WebCore/html/BaseTextInputType.cpp:39
&gt; &gt; +BaseTextInputType::BaseTextInputType(HTMLInputElement* inputElement)
&gt; &gt; +    : TextFieldInputType(inputElement)
&gt; 
&gt; I’d just name this element rather than inputElement.

Changed all of  &quot;inputElement&quot; in this change to &quot;element&quot;.

&gt; &gt; WebCore/html/BaseTextInputType.cpp:50
&gt; &gt; +    const AtomicString&amp; pattern = element()-&gt;getAttribute(patternAttr);
&gt; 
&gt; Just a side note: Could use fastGetAttribute here.

Done.

&gt; &gt; WebCore/html/BaseTextInputType.cpp:54
&gt; &gt; +    RegularExpression patternRegExp(pattern, TextCaseSensitive);
&gt; 
&gt; If it was me, I wouldn’t put this into a local variable. I’d just write:
&gt; 
&gt;     int matchOffset = RegularExpression(pattern, TextCaseSensitive).match(value, 0, &amp;matchLength);

Done.

&gt; &gt; WebCore/html/BaseTextInputType.cpp:56
&gt; &gt; +    int valueLength = value.length();
&gt; 
&gt; I don’t see any reason to put value.length() into a local variable? Is it to avoid a typecast?

This is not my code.
valueLength is used twice.  So it would be better than calling value.length() twice.

&gt; &gt; WebCore/html/BaseTextInputType.h:42
&gt; &gt; +    BaseTextInputType(HTMLInputElement*);
&gt; 
&gt; This should be protected, not public.

Done.

&gt; &gt; WebCore/html/BaseTextInputType.h:44
&gt; &gt; +    virtual bool isTextType() const;
&gt; &gt; +    virtual bool patternMismatch(const String&amp;) const;
&gt; 
&gt; These should be private, not public.

Done.

&gt; &gt; WebCore/html/ButtonInputType.cpp:42
&gt; &gt; +ButtonInputType::ButtonInputType(HTMLInputElement* inputElement)
&gt; &gt; +    : InputType(inputElement)
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; I suggest marking this inline and defining it before the create function. We’d like it to be inlined into its single caller.

Ok, I made all constructors inline definitions, and move all virtual function definitions to .cpp.

&gt; &gt; WebCore/html/InputType.cpp:95
&gt; &gt; +    PassOwnPtr&lt;InputType&gt; (*factory)(HTMLInputElement*) = factoryMap-&gt;get(typeName);
&gt; 
&gt; Are we guaranteed that the type name is not the null string? I believe we’ll get a crash at runtime if we call get with a null string.

I added null checking.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67768</attachid>
            <date>2010-09-15 22:00:22 -0700</date>
            <delta_ts>2010-09-21 08:46:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45872-20100916140020.patch</filename>
            <type>text/plain</type>
            <size>8933</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDJiNGYwYjE3ZTk0ODM2MDNjMjUxYzg4MjM2ZDRkZTViNTczNjU2NS4uOWMwN2NkZmI3ZTVhYjcw
ZjRmMTM3MzhkZjU4ODVjNjQwNzUwOThlMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0wOS0xNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgSFRNTElucHV0RWxlbWVudDogSW50cm9k
dWNpbmcgVHlwZUhhbmRsZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1ODcyCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhp
cyBkb2Vzbid0IGNoYW5nZSBhbnkgYmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6SFRNTElu
cHV0RWxlbWVudCk6CisgICAgICAgICAgQ3JlYXRlcyBhIFR5cGVIYW5kbGVyIG9iamVjdC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhdHRlcm5NaXNtYXRjaCk6CisgICAg
ICAgICAgTW92ZSB0aGUgY29kZSB0byBUeXBlSGFuZGxlcjo6cGF0dGVybk1pc21hdGNoKCkuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRJbnB1dFR5cGUpOgorICAgICAg
ICAgIFJlc2V0IGEgVHlwZUhhbmRsZXIgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6aXNUZXh0RmllbGQpOgorICAgICAgICAgIE1vdmUgdGhlIGNvZGUgdG8gVHlw
ZUhhbmRsZXI6OmlzVGV4dEZpZWxkKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50Ojppc1RleHRUeXBlKToKKyAgICAgICAgICBNb3ZlIHRoZSBjb2RlIHRvIFR5cGVIYW5kbGVy
Ojppc1RleHRUeXBlKCkuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRUeXBlSGFuZGxlcjo6
VGV4dEZpZWxkVHlwZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkVHlwZUhh
bmRsZXI6OmlzVGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VUZXh0VHlwZUhhbmRs
ZXI6OkJhc2VUZXh0VHlwZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVRleHRUeXBl
SGFuZGxlcjo6aXNUZXh0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlVGV4dFR5cGVIYW5k
bGVyOjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUhhbmRsZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUeXBlSGFuZGxlcjo6VHlwZUhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VHlwZUhhbmRsZXI6On5UeXBlSGFuZGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpUeXBlSGFuZGxlcjo6aXNUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUhh
bmRsZXI6OmlzVGV4dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUhhbmRsZXI6OnBhdHRl
cm5NaXNtYXRjaCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAg
ICAgRGVmaW5lIFR5cGVIYW5kbGVyIGNsYXNzLCBhbmQgYWRkIG1fdHlwZUhhbmRsZXIgdG8gSFRN
TElucHV0RWxlbWVudCBjbGFzcy4KKwogMjAxMC0wOS0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY2hyb21pdW0gYnVpbGQuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKaW5kZXggM2M5NGU4MTFhNmJhM2Q2MGZmYTZkN2RmOWIwOWI5Y2Fj
MTI4OWNkZi4uOGI3NjllYjM0YmI2YWFhZDAxNmE5N2U4ZTE5NTljODQwYjZiMzQyNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTYyLDYgKzE2Miw3IEBAIEhUTUxJbnB1dEVsZW1l
bnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtCiAgICAgLCBtX2F1dG9maWxsZWQoZmFsc2UpCiAgICAgLCBtX2luaXRlZChmYWxz
ZSkKIHsKKyAgICBtX3R5cGVIYW5kbGVyID0gVHlwZUhhbmRsZXI6OmNyZWF0ZSh0aGlzKTsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShpbnB1dFRhZykgfHwgaGFzVGFnTmFtZShpc2luZGV4VGFnKSk7
CiB9CiAKQEAgLTM0NSwxNyArMzQ2LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1p
c3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50
OjpwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICBpZiAo
IWlzVGV4dFR5cGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgcGF0dGVybiA9IGdldEF0dHJpYnV0ZShwYXR0ZXJuQXR0cik7Ci0gICAgLy8gRW1wdHkg
dmFsdWVzIGNhbid0IGJlIG1pc21hdGNoZWQKLSAgICBpZiAocGF0dGVybi5pc0VtcHR5KCkgfHwg
dmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmVndWxhckV4cHJl
c3Npb24gcGF0dGVyblJlZ0V4cChwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7Ci0gICAgaW50
IG1hdGNoTGVuZ3RoID0gMDsKLSAgICBpbnQgdmFsdWVMZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsK
LSAgICBpbnQgbWF0Y2hPZmZzZXQgPSBwYXR0ZXJuUmVnRXhwLm1hdGNoKHZhbHVlLCAwLCAmbWF0
Y2hMZW5ndGgpOwotICAgIHJldHVybiBtYXRjaE9mZnNldCB8fCBtYXRjaExlbmd0aCAhPSB2YWx1
ZUxlbmd0aDsKKyAgICByZXR1cm4gbV90eXBlSGFuZGxlci0+cGF0dGVybk1pc21hdGNoKHZhbHVl
KTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKGNvbnN0IFN0cmluZyYgdmFs
dWUsIE5lZWRzVG9DaGVja0RpcnR5RmxhZyBjaGVjaykgY29uc3QKQEAgLTkwNiw2ICs4OTcsNyBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldElucHV0VHlwZShjb25zdCBTdHJpbmcmIHQpCiAg
ICAgICAgICAgICBib29sIHdhc1Bhc3N3b3JkRmllbGQgPSBpbnB1dFR5cGUoKSA9PSBQQVNTV09S
RDsKICAgICAgICAgICAgIGJvb2wgZGlkUmVzcGVjdEhlaWdodEFuZFdpZHRoID0gcmVzcGVjdEhl
aWdodEFuZFdpZHRoQXR0cnMoKTsKICAgICAgICAgICAgIG1fdHlwZSA9IG5ld1R5cGU7CisgICAg
ICAgICAgICBtX3R5cGVIYW5kbGVyID0gVHlwZUhhbmRsZXI6OmNyZWF0ZSh0aGlzKTsKICAgICAg
ICAgICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKICAgICAgICAgICAgIGJvb2wgd2ls
bFN0b3JlVmFsdWUgPSBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpOwogICAgICAg
ICAgICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQgPSBpbnB1dFR5cGUoKSA9PSBQQVNTV09SRDsKQEAg
LTE0NzYsNzAgKzE0NjgsMTIgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNldCgpCiAKIGJv
b2wgSFRNTElucHV0RWxlbWVudDo6aXNUZXh0RmllbGQoKSBjb25zdAogewotICAgIHN3aXRjaCAo
aW5wdXRUeXBlKCkpIHsKLSAgICBjYXNlIENPTE9SOgotICAgIGNhc2UgREFURToKLSAgICBjYXNl
IERBVEVUSU1FOgotICAgIGNhc2UgREFURVRJTUVMT0NBTDoKLSAgICBjYXNlIEVNQUlMOgotICAg
IGNhc2UgSVNJTkRFWDoKLSAgICBjYXNlIE1PTlRIOgotICAgIGNhc2UgTlVNQkVSOgotICAgIGNh
c2UgUEFTU1dPUkQ6Ci0gICAgY2FzZSBTRUFSQ0g6Ci0gICAgY2FzZSBURUxFUEhPTkU6Ci0gICAg
Y2FzZSBURVhUOgotICAgIGNhc2UgVElNRToKLSAgICBjYXNlIFVSTDoKLSAgICBjYXNlIFdFRUs6
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQlVUVE9OOgotICAgIGNhc2UgQ0hFQ0tC
T1g6Ci0gICAgY2FzZSBGSUxFOgotICAgIGNhc2UgSElEREVOOgotICAgIGNhc2UgSU1BR0U6Ci0g
ICAgY2FzZSBSQURJTzoKLSAgICBjYXNlIFJBTkdFOgotICAgIGNhc2UgUkVTRVQ6Ci0gICAgY2Fz
ZSBTVUJNSVQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3R5cGVIYW5kbGVyLT5p
c1RleHRGaWVsZCgpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzVGV4dFR5cGUoKSBj
b25zdAogewotICAgIHN3aXRjaCAoaW5wdXRUeXBlKCkpIHsKLSAgICBjYXNlIEVNQUlMOgotICAg
IGNhc2UgUEFTU1dPUkQ6Ci0gICAgY2FzZSBTRUFSQ0g6Ci0gICAgY2FzZSBURUxFUEhPTkU6Ci0g
ICAgY2FzZSBURVhUOgotICAgIGNhc2UgVVJMOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBj
YXNlIEJVVFRPTjoKLSAgICBjYXNlIENIRUNLQk9YOgotICAgIGNhc2UgQ09MT1I6Ci0gICAgY2Fz
ZSBEQVRFOgotICAgIGNhc2UgREFURVRJTUU6Ci0gICAgY2FzZSBEQVRFVElNRUxPQ0FMOgotICAg
IGNhc2UgRklMRToKLSAgICBjYXNlIEhJRERFTjoKLSAgICBjYXNlIElNQUdFOgotICAgIGNhc2Ug
SVNJTkRFWDoKLSAgICBjYXNlIE1PTlRIOgotICAgIGNhc2UgTlVNQkVSOgotICAgIGNhc2UgUkFE
SU86Ci0gICAgY2FzZSBSQU5HRToKLSAgICBjYXNlIFJFU0VUOgotICAgIGNhc2UgU1VCTUlUOgot
ICAgIGNhc2UgVElNRToKLSAgICBjYXNlIFdFRUs6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBtX3R5cGVIYW5kbGVyLT5pc1RleHRUeXBlKCk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6c2V0Q2hlY2tlZChib29sIG5vd0NoZWNrZWQsIGJvb2wgc2VuZENoYW5nZUV2ZW50KQpA
QCAtMzAyMCw0ICsyOTU0LDc4IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNTcGVlY2hFbmFi
bGVkKCkgY29uc3QKIH0KICNlbmRpZgogCisvLyBUeXBlIGhhbmRsZXJzIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBU
ZXh0ZmllbGQtbG9va2luZyB0eXBlcyBpbmNsdWRpbmcgTlVNQkVSLgorY2xhc3MgVGV4dEZpZWxk
VHlwZUhhbmRsZXIgOiBwdWJsaWMgVHlwZUhhbmRsZXIgeworcHVibGljOgorICAgIFRleHRGaWVs
ZFR5cGVIYW5kbGVyKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KSA6IFR5cGVIYW5kbGVyKGlucHV0
KSB7fQorICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KK307CisKKy8vIEJhc2Ugb2YgdGV4dCB0eXBlcywgd2hpY2ggc3VwcG9ydCBtYXhsZW5ndGgs
IHNlbGVjdGlvbiBmdW5jdGlvbnMsIGFuZCBzbyBvbi4KK2NsYXNzIEJhc2VUZXh0VHlwZUhhbmRs
ZXIgOiBwdWJsaWMgVGV4dEZpZWxkVHlwZUhhbmRsZXIgeworcHVibGljOgorICAgIEJhc2VUZXh0
VHlwZUhhbmRsZXIoSFRNTElucHV0RWxlbWVudCogaW5wdXQpIDogVGV4dEZpZWxkVHlwZUhhbmRs
ZXIoaW5wdXQpIHt9CisgICAgdmlydHVhbCBib29sIGlzVGV4dFR5cGUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcm
IHZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwYXR0ZXJu
ID0gaW5wdXQoKS0+Z2V0QXR0cmlidXRlKHBhdHRlcm5BdHRyKTsKKyAgICAgICAgLy8gRW1wdHkg
dmFsdWVzIGNhbid0IGJlIG1pc21hdGNoZWQKKyAgICAgICAgaWYgKHBhdHRlcm4uaXNFbXB0eSgp
IHx8IHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
UmVndWxhckV4cHJlc3Npb24gcGF0dGVyblJlZ0V4cChwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2
ZSk7CisgICAgICAgIGludCBtYXRjaExlbmd0aCA9IDA7CisgICAgICAgIGludCB2YWx1ZUxlbmd0
aCA9IHZhbHVlLmxlbmd0aCgpOworICAgICAgICBpbnQgbWF0Y2hPZmZzZXQgPSBwYXR0ZXJuUmVn
RXhwLm1hdGNoKHZhbHVlLCAwLCAmbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gbWF0Y2hP
ZmZzZXQgfHwgbWF0Y2hMZW5ndGggIT0gdmFsdWVMZW5ndGg7CisgICAgfQorfTsKKworUGFzc093
blB0cjxUeXBlSGFuZGxlcj4gVHlwZUhhbmRsZXI6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dCkKK3sKKyAgICAvLyBGSVhNRTogRGVmaW5lIG1vcmUgVHlwZUhhbmRsZXIgY2xhc3NlcyBh
bmQgdXNlIHRoZW0uCisgICAgc3dpdGNoIChpbnB1dC0+aW5wdXRUeXBlKCkpIHsKKyAgICBjYXNl
IEhUTUxJbnB1dEVsZW1lbnQ6OkVNQUlMOgorICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6UEFT
U1dPUkQ6CisgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpTRUFSQ0g6CisgICAgY2FzZSBIVE1M
SW5wdXRFbGVtZW50OjpURUxFUEhPTkU6CisgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpURVhU
OgorICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6VVJMOgorICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEJhc2VUZXh0VHlwZUhhbmRsZXIoaW5wdXQpKTsKKyAgICBjYXNlIEhUTUxJbnB1dEVs
ZW1lbnQ6OkNPTE9SOgorICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6REFURToKKyAgICBjYXNl
IEhUTUxJbnB1dEVsZW1lbnQ6OkRBVEVUSU1FOgorICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6
REFURVRJTUVMT0NBTDoKKyAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OklTSU5ERVg6CisgICAg
Y2FzZSBIVE1MSW5wdXRFbGVtZW50OjpNT05USDoKKyAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6
Ok5VTUJFUjoKKyAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlRJTUU6CisgICAgY2FzZSBIVE1M
SW5wdXRFbGVtZW50OjpXRUVLOgorICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHRGaWVs
ZFR5cGVIYW5kbGVyKGlucHV0KSk7CisgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpCVVRUT046
CisgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpDSEVDS0JPWDoKKyAgICBjYXNlIEhUTUxJbnB1
dEVsZW1lbnQ6OkZJTEU6CisgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpISURERU46CisgICAg
Y2FzZSBIVE1MSW5wdXRFbGVtZW50OjpJTUFHRToKKyAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6
OlJBRElPOgorICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6UkFOR0U6CisgICAgY2FzZSBIVE1M
SW5wdXRFbGVtZW50OjpSRVNFVDoKKyAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlNVQk1JVDoK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUeXBlSGFuZGxlcihpbnB1dCkpOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworVHlwZUhhbmRs
ZXI6OlR5cGVIYW5kbGVyKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KSA6IG1faW5wdXQoaW5wdXQp
IHt9CisKK1R5cGVIYW5kbGVyOjp+VHlwZUhhbmRsZXIoKSB7fQorCitib29sIFR5cGVIYW5kbGVy
Ojppc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK2Jvb2wgVHlwZUhhbmRs
ZXI6OmlzVGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitib29sIFR5cGVIYW5k
bGVyOjpwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGUwMjM3OTZi
N2RhMDUzMzc2YmZhNGNiZjE4ZGIxOTY4OTg1N2VmZTQuLmE2NzAzODJiNmExNDlmNTVmMWY0MWE4
NDA1NWY2MzNjZWQwZjNmNWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMzgsNiArMzgs
MjQgQEAgY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiBjbGFzcyBLVVJMOwogY2xhc3MgVmlzaWJs
ZVNlbGVjdGlvbjsKIAorY2xhc3MgVHlwZUhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFR5cGVIYW5kbGVyPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOworICAgIHZp
cnR1YWwgflR5cGVIYW5kbGVyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CisKK3Byb3RlY3RlZDoK
KyAgICBUeXBlSGFuZGxlcihIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXQoKSBjb25zdCB7IHJldHVybiBtX2lucHV0OyB9CisKK3ByaXZhdGU6CisgICAgLy8g
UmF3IHBvaW50ZXIgYmVjYXVzZSB0aGUgSFRNTElucHV0RWxlbWVudCBvYmplY3Qgb3ducyB0aGlz
IFR5cGVIYW5kbGVyIG9iamVjdC4KKyAgICBIVE1MSW5wdXRFbGVtZW50KiBtX2lucHV0OworfTsK
KwogY2xhc3MgSFRNTElucHV0RWxlbWVudCA6IHB1YmxpYyBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudCwgcHVibGljIElucHV0RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgZW51bSBJbnB1dFR5cGUg
ewpAQCAtMzYxLDYgKzM3OSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERBVEFMSVNUKQogICAg
IGJvb2wgbV9oYXNOb25FbXB0eUxpc3QgOiAxOwogI2VuZGlmCisgICAgT3duUHRyPFR5cGVIYW5k
bGVyPiBtX3R5cGVIYW5kbGVyOwogfTsKIAogfSAvL25hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68243</attachid>
            <date>2010-09-21 08:46:22 -0700</date>
            <delta_ts>2010-09-21 21:31:40 -0700</delta_ts>
            <desc>Work-in-progress patch</desc>
            <filename>bug-45872-20100922004620.patch</filename>
            <type>text/plain</type>
            <size>38770</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2FjY2I5ZjJiZTg3OTI0NGFjNDc3OTNlYmIyNzcxMWQyYTNlMDZhOC4uMzg4Yzk5MjMwMDNlODcz
OTNmNDU3ZTdkOWJiN2ZmNjZmYjJjMjVkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzQgQEAKKzIwMTAtMDktMjEgIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxJbnB1dEVsZW1lbnQ6IEludHJv
ZHVjaW5nIElucHV0VHlwZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDU4NzIKKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlz
IGRvZXNuJ3QgY2hhbmdlIGFueSBiZWhhdmlvci4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OnVwZGF0ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Zm9y
bUNvbnRyb2xUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVGV4
dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVGV4dFR5cGUp
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW5w
dXRUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6
OlRleHRGaWVsZElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5
cGU6OmlzVGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VUZXh0SW5wdXRUeXBlOjpC
YXNlVGV4dElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlVGV4dElucHV0VHlwZTo6
aXNUZXh0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlVGV4dElucHV0VHlwZTo6cGF0dGVy
bk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkJ1dHRvbklucHV0VHlwZTo6QnV0dG9uSW5wdXRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJ1dHRvbklucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hlY2tib3hJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGVj
a2JveElucHV0VHlwZTo6Q2hlY2tib3hJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hl
Y2tib3hJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRU
eXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OkNvbG9ySW5w
dXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjp0eXBlTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0ZUlucHV0VHlwZTo6RGF0ZUlucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRl
SW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUlucHV0VHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lSW5wdXRUeXBlOjpEYXRlVGlt
ZUlucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUlucHV0VHlwZTo6dHlwZU5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWxJ
bnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6dHlw
ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RW1haWxJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbWFpbElucHV0VHlwZTo6RW1haWxJbnB1dFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6RW1haWxJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpG
aWxlSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnR5cGVOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpZGRlbklucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhpZGRlbklucHV0VHlwZTo6SGlkZGVuSW5wdXRUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhpZGRlbklucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6
SW1hZ2VJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJbnB1dFR5cGU6OnR5cGVO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklzSW5kZXhJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJc0luZGV4SW5wdXRUeXBlOjpJc0luZGV4SW5wdXRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklzSW5kZXhJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vbnRoSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9udGhJbnB1
dFR5cGU6Ok1vbnRoSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRUeXBl
Ojp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6Ok51bWJlcklucHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3N3b3JkSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
c3dvcmRJbnB1dFR5cGU6OlBhc3N3b3JkSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3N3b3JkSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0lucHV0
VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvSW5wdXRUeXBlOjpSYWRpb0lu
cHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0lucHV0VHlwZTo6dHlwZU5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZUlucHV0VHlwZTo6UmFuZ2VJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2VJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc2V0SW5wdXRU
eXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzZXRJbnB1dFR5cGU6OlJlc2V0SW5w
dXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc2V0SW5wdXRUeXBlOjp0eXBlTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWFyY2hJbnB1dFR5cGU6OlNlYXJjaElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWFyY2hJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Ym1pdElu
cHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Ym1pdElucHV0VHlwZTo6U3Vi
bWl0SW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Ym1pdElucHV0VHlwZTo6dHlwZU5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6VGVsZXBob25lSW5wdXRUeXBlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVsZXBob25lSW5wdXRUeXBlOjpUZWxlcGhvbmVJbnB1dFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVsZXBob25lSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dElucHV0VHlwZTo6VGV4dElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5wdXRU
eXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lSW5wdXRUeXBlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6VGltZUlucHV0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUaW1lSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpVUkxJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpVUkxJbnB1dFR5cGU6
OlVSTElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpVUkxJbnB1dFR5cGU6OnR5cGVOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlZWtJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWVrSW5wdXRUeXBlOjpXZWVrSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlZWtJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlucHV0
VHlwZUZhY3RvcnlNYXApOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlOjp+SW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6
aXNUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjppc1RleHRUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpidXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OmNoZWNrYm94KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVz
Ojpjb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OmRhdGV0aW1lbG9jYWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OmVtYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpm
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpoaWRkZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZU5hbWVzOjppc2luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVz
Ojptb250aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6bnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpwYXNzd29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGVOYW1lczo6cmFkaW8pOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBl
TmFtZXM6OnJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6c2VhcmNoKToKKyAgICAgICAgKFdl
YkNvcmU6OklucHV0VHlwZU5hbWVzOjpzdWJtaXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRU
eXBlTmFtZXM6OnRlbGVwaG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dGltZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp3ZWVrKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6ZWxlbWVudCk6CisKIDIwMTAtMDktMjEgIEpvY2hl
biBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
SmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA1MjhkYzNjMjI2NzhjNDJlYjIwZDc2ZWVmYTc3ZjhjMDY2NWQw
MzUyLi41YWQ5YThiNzc5YjE2MGUzOWVjZDRlOTU5ZDdiNDVjMDk0YzVhMDI1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTcw
Miw2ICsxNzAyLDggQEAKICAgICAgICAgICAgICdodG1sL0ltYWdlRG9jdW1lbnQuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwJywKICAgICAgICAgICAgICdodG1s
L0ltYWdlUmVzaXplclRocmVhZC5oJywKKyAgICAgICAgICAgICdodG1sL0lucHV0VHlwZS5jcHAn
LAorICAgICAgICAgICAgJ2h0bWwvSW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvTGFi
ZWxzTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmgnLAog
ICAgICAgICAgICAgJ2h0bWwvTWVkaWFEb2N1bWVudC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MzVlOWQ1MjBlYTVjMmIxYTQyZGMyN2VhMjBh
YTI0MjNkZWEwMDExLi43M2M4OGE2NWQ2OWUxNjViMDI1MDdlNDY0NzE5MmMwMWM0NzBmMDJhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODIyLDYgKzgy
Miw4IEBACiAJCTM3QzIzODIyMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xs
ZXJDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0MyMzgyMDEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyQ29y
ZVRleHQuY3BwICovOyB9OwogCQkzN0MyOEE2ODEwRjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNldHRp
bmdGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdDMjhBNjcxMEY2NTlDQzAwOEM3ODEzIC8qIFR5cGVzZXR0aW5nRmVhdHVyZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0M2MUYwMTEy
MDk1Qzg3MDA3QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNjFGMDAxMjA5NUM4NzAwN0Ez
QzY3IC8qIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaCAqLzsgfTsKKwkJMzdFMzUyNEIxMjQ1
MEM1MjAwQkFGNUQ5IC8qIElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzN0UzNTI0QTEyNDUwQzUyMDBCQUY1RDkgLyogSW5wdXRUeXBl
LmNwcCAqLzsgfTsKKwkJMzdFMzUyNEQxMjQ1MEM2NjAwQkFGNUQ5IC8qIElucHV0VHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdFMzUyNEMxMjQ1
MEM2NjAwQkFGNUQ5IC8qIElucHV0VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTM3RjgxOEZEMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3Jl
VVJMUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3RjgxOEZCMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0Y4MThGRTBE
NjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8q
IFdlYkNvcmVVUkxSZXNwb25zZS5tbSAqLzsgfTsKIAkJMzdGRDQyOTgxMTgzNjg0NjAwOTNDMDI5
IC8qIFRyZWVEZXB0aExpbWl0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzN0ZENDI5NzExODM2ODQ2MDA5M0MwMjkgLyogVHJlZURlcHRoTGltaXQuaCAq
LzsgfTsKQEAgLTY3MTAsNiArNjcxMiw4IEBACiAJCTM3QzIzODIwMTA5OEM4NDIwMEVGOUY3MiAv
KiBDb21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QzI4QTY3MTBGNjU5Q0MwMDhDNzgxMyAvKiBUeXBl
c2V0dGluZ0ZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVz
ZXR0aW5nRmVhdHVyZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdDNjFGMDAx
MjA5NUM4NzAwN0EzQzY3IC8qIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzN0UzNTI0QTEyNDUwQzUyMDBCQUY1RDkgLyogSW5w
dXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElucHV0VHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3RTM1MjRDMTI0NTBDNjYwMEJB
RjVEOSAvKiBJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5w
dXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RjgxOEZCMEQ2NTc2MDYw
MDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3RjgxOEZDMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlVVJMUmVzcG9uc2Uu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkM5NkRBMTEwNEVENzEwMDNFMUZB
RCAvKiBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNDQwMSw2ICsxNDQwNSw4IEBACiAJCQkJOTcyMDVBQjIxMjM5Mjkx
MDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCAqLywKIAkJCQlCMDE0OUU3QjExQTRCMjE1MDAx
OTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCAqLywKIAkJCQlCMDE0OUU3QzExQTRCMjE1
MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi8sCisJCQkJMzdFMzUyNEExMjQ1MEM1
MjAwQkFGNUQ5IC8qIElucHV0VHlwZS5jcHAgKi8sCisJCQkJMzdFMzUyNEMxMjQ1MEM2NjAwQkFG
NUQ5IC8qIElucHV0VHlwZS5oICovLAogCQkJCUE0NTZGQTI0MTFBRDRBODMwMDIwQjQyMCAvKiBM
YWJlbHNOb2RlTGlzdC5jcHAgKi8sCiAJCQkJQTQ1NkZBMjUxMUFENEE4MzAwMjBCNDIwIC8qIExh
YmVsc05vZGVMaXN0LmggKi8sCiAJCQkJOTcyMDVBQjMxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlh
RG9jdW1lbnQuY3BwICovLApAQCAtMTkxODMsNiArMTkxODksNyBAQAogCQkJCUJDRTc4OTE2MTEy
MEQ2MDgwMDYwRUNFNSAvKiBJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
QTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4NTkxQUE1MEYwODVDNEUwMDlCQUNCMSAvKiBJbnB1dEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5REVBMDk5RTY0OTIwMDU2RTU4MSAvKiBJbnNlcnRJbnRvVGV4dE5v
ZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFQzA5OUU2NDkyMDA1NkU1ODEg
LyogSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDA3REVBQkEw
QTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmggaW4gSGVhZGVycyAqLywKQEAg
LTIxNjg0LDYgKzIxNjkxLDcgQEAKIAkJCQlBOENGRjVFNDBBMTU1QTA1MDAwQTQyMzQgLyogSW5s
aW5lRmxvd0JveC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg1OTA5N0Q5MzAyMDA5NEM5
RTQgLyogSW5saW5lVGV4dEJveC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODcwMEJFNzBGMDg2
QzUzMDA5MTk0MTkgLyogSW5wdXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3RTM1
MjRCMTI0NTBDNTIwMEJBRjVEOSAvKiBJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMzMDlERTkwOTlFNjQ5MjAwNTZFNTgxIC8qIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERUIwOTlFNjQ5MjAwNTZFNTgxIC8qIEluc2VydExp
bmVCcmVha0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDA3REVBQjkwQTM2NTU0QTAw
Q0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCmluZGV4IGJhZmY2YzRmMWY5YTA2MzgxZWZkYzU3ZmYyNzljMGU1ZDZj
N2ZjMjIuLmIxYTAwMDZhNDliODhhOTNjNjAyZDIxMTc4OTg4M2U3ZjYwZmVjOTUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE2Miw2ICsxNjIsNyBAQCBIVE1MSW5wdXRFbGVtZW50
OjpIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bQogICAgICwgbV9hdXRvZmlsbGVkKGZhbHNlKQogICAgICwgbV9pbml0ZWQoZmFsc2Up
CiB7CisgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZSh0aGlzLCBJbnB1dFR5cGVO
YW1lczo6dGV4dCgpKTsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShpbnB1dFRhZykgfHwgaGFzVGFn
TmFtZShpc2luZGV4VGFnKSk7CiB9CiAKQEAgLTM0NSwxNyArMzQ2LDcgQEAgYm9vbCBIVE1MSW5w
dXRFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIAogYm9v
bCBIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkg
Y29uc3QKIHsKLSAgICBpZiAoIWlzVGV4dFR5cGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGF0dGVybiA9IGdldEF0dHJpYnV0ZShwYXR0ZXJuQXR0
cik7Ci0gICAgLy8gRW1wdHkgdmFsdWVzIGNhbid0IGJlIG1pc21hdGNoZWQKLSAgICBpZiAocGF0
dGVybi5pc0VtcHR5KCkgfHwgdmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgUmVndWxhckV4cHJlc3Npb24gcGF0dGVyblJlZ0V4cChwYXR0ZXJuLCBUZXh0Q2FzZVNl
bnNpdGl2ZSk7Ci0gICAgaW50IG1hdGNoTGVuZ3RoID0gMDsKLSAgICBpbnQgdmFsdWVMZW5ndGgg
PSB2YWx1ZS5sZW5ndGgoKTsKLSAgICBpbnQgbWF0Y2hPZmZzZXQgPSBwYXR0ZXJuUmVnRXhwLm1h
dGNoKHZhbHVlLCAwLCAmbWF0Y2hMZW5ndGgpOwotICAgIHJldHVybiBtYXRjaE9mZnNldCB8fCBt
YXRjaExlbmd0aCAhPSB2YWx1ZUxlbmd0aDsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnBhdHRl
cm5NaXNtYXRjaCh2YWx1ZSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6dG9vTG9uZyhj
b25zdCBTdHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2spIGNvbnN0CkBA
IC05MTEsNiArOTAyLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAg
ICAgICAgICAgIGJvb2wgd2FzUGFzc3dvcmRGaWVsZCA9IGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSA9
PSBQQVNTV09SRDsKICAgICAgICAgICAgIGJvb2wgZGlkUmVzcGVjdEhlaWdodEFuZFdpZHRoID0g
cmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cnMoKTsKICAgICAgICAgICAgIG1fZGVwcmVjYXRlZFR5
cGVOdW1iZXIgPSBuZXdUeXBlOworICAgICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6
OmNyZWF0ZSh0aGlzLCB0eXBlU3RyaW5nKTsKICAgICAgICAgICAgIHNldE5lZWRzV2lsbFZhbGlk
YXRlQ2hlY2soKTsKICAgICAgICAgICAgIGJvb2wgd2lsbFN0b3JlVmFsdWUgPSBzdG9yZXNWYWx1
ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpOwogICAgICAgICAgICAgYm9vbCBpc1Bhc3N3b3JkRmll
bGQgPSBkZXByZWNhdGVkSW5wdXRUeXBlKCkgPT0gUEFTU1dPUkQ7CkBAIC05NTksNDIgKzk1MSw5
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSgpCiAgICAgICAgIG1faW1hZ2VM
b2FkZXIuY2xlYXIoKTsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogY3JlYXRlRm9y
bUNvbnRyb2xUeXBlcygpCi17Ci0gICAgQXRvbWljU3RyaW5nKiB0eXBlcyA9IG5ldyBBdG9taWNT
dHJpbmdbSFRNTElucHV0RWxlbWVudDo6ZGVwcmVjYXRlZE51bWJlck9mVHlwZXNdOwotICAgIC8v
IFRoZSB2YWx1ZXMgbXVzdCBiZSBsb3dlcmNhc2VkIGJlY2F1c2UgdGhleSB3aWxsIGJlIHRoZSBy
ZXR1cm4gdmFsdWVzIG9mCi0gICAgLy8gIGlucHV0LnR5cGUgYW5kIGl0IG11c3QgYmUgbG93ZXJj
YXNlIGFjY29yZGluZyB0byBET00gTGV2ZWwgMi4KLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50
OjpCVVRUT05dID0gImJ1dHRvbiI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6Q0hFQ0tC
T1hdID0gImNoZWNrYm94IjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpDT0xPUl0gPSAi
Y29sb3IiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkRBVEVdID0gImRhdGUiOwotICAg
IHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkRBVEVUSU1FXSA9ICJkYXRldGltZSI7Ci0gICAgdHlw
ZXNbSFRNTElucHV0RWxlbWVudDo6REFURVRJTUVMT0NBTF0gPSAiZGF0ZXRpbWUtbG9jYWwiOwot
ICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkVNQUlMXSA9ICJlbWFpbCI7Ci0gICAgdHlwZXNb
SFRNTElucHV0RWxlbWVudDo6RklMRV0gPSAiZmlsZSI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxl
bWVudDo6SElEREVOXSA9ICJoaWRkZW4iOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OklN
QUdFXSA9ICJpbWFnZSI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6SVNJTkRFWF0gPSBl
bXB0eUF0b207Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6TU9OVEhdID0gIm1vbnRoIjsK
LSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpOVU1CRVJdID0gIm51bWJlciI7Ci0gICAgdHlw
ZXNbSFRNTElucHV0RWxlbWVudDo6UEFTU1dPUkRdID0gInBhc3N3b3JkIjsKLSAgICB0eXBlc1tI
VE1MSW5wdXRFbGVtZW50OjpSQURJT10gPSAicmFkaW8iOwotICAgIHR5cGVzW0hUTUxJbnB1dEVs
ZW1lbnQ6OlJBTkdFXSA9ICJyYW5nZSI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6UkVT
RVRdID0gInJlc2V0IjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpTRUFSQ0hdID0gInNl
YXJjaCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6U1VCTUlUXSA9ICJzdWJtaXQiOwot
ICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlRFTEVQSE9ORV0gPSAidGVsIjsKLSAgICB0eXBl
c1tIVE1MSW5wdXRFbGVtZW50OjpURVhUXSA9ICJ0ZXh0IjsKLSAgICB0eXBlc1tIVE1MSW5wdXRF
bGVtZW50OjpUSU1FXSA9ICJ0aW1lIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpVUkxd
ID0gInVybCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6V0VFS10gPSAid2VlayI7Ci0g
ICAgcmV0dXJuIHR5cGVzOwotfQotCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbnB1dEVsZW1l
bnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyogZm9ybUNvbnRyb2xUeXBlcyA9IGNyZWF0ZUZvcm1Db250cm9sVHlwZXMoKTsKLSAgICBy
ZXR1cm4gZm9ybUNvbnRyb2xUeXBlc1tkZXByZWNhdGVkSW5wdXRUeXBlKCldOworICAgIHJldHVy
biBtX2lucHV0VHlwZS0+dHlwZU5hbWUoKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojpz
YXZlRm9ybUNvbnRyb2xTdGF0ZShTdHJpbmcmIHJlc3VsdCkgY29uc3QKQEAgLTE0ODEsNzAgKzE0
NDAsMTIgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNldCgpCiAKIGJvb2wgSFRNTElucHV0
RWxlbWVudDo6aXNUZXh0RmllbGQoKSBjb25zdAogewotICAgIHN3aXRjaCAoZGVwcmVjYXRlZElu
cHV0VHlwZSgpKSB7Ci0gICAgY2FzZSBDT0xPUjoKLSAgICBjYXNlIERBVEU6Ci0gICAgY2FzZSBE
QVRFVElNRToKLSAgICBjYXNlIERBVEVUSU1FTE9DQUw6Ci0gICAgY2FzZSBFTUFJTDoKLSAgICBj
YXNlIElTSU5ERVg6Ci0gICAgY2FzZSBNT05USDoKLSAgICBjYXNlIE5VTUJFUjoKLSAgICBjYXNl
IFBBU1NXT1JEOgotICAgIGNhc2UgU0VBUkNIOgotICAgIGNhc2UgVEVMRVBIT05FOgotICAgIGNh
c2UgVEVYVDoKLSAgICBjYXNlIFRJTUU6Ci0gICAgY2FzZSBVUkw6Ci0gICAgY2FzZSBXRUVLOgot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEJVVFRPTjoKLSAgICBjYXNlIENIRUNLQk9Y
OgotICAgIGNhc2UgRklMRToKLSAgICBjYXNlIEhJRERFTjoKLSAgICBjYXNlIElNQUdFOgotICAg
IGNhc2UgUkFESU86Ci0gICAgY2FzZSBSQU5HRToKLSAgICBjYXNlIFJFU0VUOgotICAgIGNhc2Ug
U1VCTUlUOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlzVGV4
dEZpZWxkKCk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNUZXh0VHlwZSgpIGNvbnN0
CiB7Ci0gICAgc3dpdGNoIChkZXByZWNhdGVkSW5wdXRUeXBlKCkpIHsKLSAgICBjYXNlIEVNQUlM
OgotICAgIGNhc2UgUEFTU1dPUkQ6Ci0gICAgY2FzZSBTRUFSQ0g6Ci0gICAgY2FzZSBURUxFUEhP
TkU6Ci0gICAgY2FzZSBURVhUOgotICAgIGNhc2UgVVJMOgotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBjYXNlIEJVVFRPTjoKLSAgICBjYXNlIENIRUNLQk9YOgotICAgIGNhc2UgQ09MT1I6Ci0g
ICAgY2FzZSBEQVRFOgotICAgIGNhc2UgREFURVRJTUU6Ci0gICAgY2FzZSBEQVRFVElNRUxPQ0FM
OgotICAgIGNhc2UgRklMRToKLSAgICBjYXNlIEhJRERFTjoKLSAgICBjYXNlIElNQUdFOgotICAg
IGNhc2UgSVNJTkRFWDoKLSAgICBjYXNlIE1PTlRIOgotICAgIGNhc2UgTlVNQkVSOgotICAgIGNh
c2UgUkFESU86Ci0gICAgY2FzZSBSQU5HRToKLSAgICBjYXNlIFJFU0VUOgotICAgIGNhc2UgU1VC
TUlUOgotICAgIGNhc2UgVElNRToKLSAgICBjYXNlIFdFRUs6Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBtX2lucHV0VHlwZS0+aXNUZXh0VHlwZSgpOwogfQogCiB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnNldENoZWNrZWQoYm9vbCBub3dDaGVja2VkLCBib29sIHNlbmRDaGFuZ2VFdmVu
dCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDdlNjAxY2FjYmNmZWIxMjBjZDM5ZTYyY2Vh
YjQ0MTlhZGYyMmIwYzYuLjk2ZGUzM2E2MDEwY2NiNDViMjE3YWQwNTYzNTc5NmM4ZTZjNGNiOWUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAi
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIklucHV0RWxlbWVudC5oIgorI2lu
Y2x1ZGUgIklucHV0VHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzc0LDYgKzM3NSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERBVEFM
SVNUKQogICAgIGJvb2wgbV9oYXNOb25FbXB0eUxpc3QgOiAxOwogI2VuZGlmCisgICAgT3duUHRy
PElucHV0VHlwZT4gbV9pbnB1dFR5cGU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI3ZDJhYmI2NTliZDJjMjE5MDBhOWVmNmQzZmMzYWQ5ZGJkYWIyYjMKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMCwwICsxLDU2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnB1dFR5cGUuaCIKKworI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJSZWd1bGFyRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKKy8vIEJhc2UgdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLy8gVGV4dGZpZWxkLWxvb2tpbmcgdHlwZXMgaW5jbHVkaW5nIE5V
TUJFUi4KK2NsYXNzIFRleHRGaWVsZElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHVi
bGljOgorICAgIFRleHRGaWVsZElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQpIDogSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0
RmllbGQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cit9OworCisvLyBCYXNlIG9mIGVtYWlsLCBw
YXNzb3dvcmQsIHNlYXJjaCwgdGVsLCB0ZXh0LCBhbmQgVVJMIHR5cGVzLgorLy8gVGhleSBzdXBw
b3J0IG1heGxlbmd0aCwgc2VsZWN0aW9uIGZ1bmN0aW9ucywgYW5kIHNvIG9uLgorY2xhc3MgQmFz
ZVRleHRJbnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZpZWxkSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAg
ICBCYXNlVGV4dElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogVGV4
dEZpZWxkSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGF0dGVybk1p
c21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHBhdHRlcm4gPSBlbGVtZW50KCktPmdldEF0dHJpYnV0ZShwYXR0ZXJuQXR0
cik7CisgICAgICAgIC8vIEVtcHR5IHZhbHVlcyBjYW4ndCBiZSBtaXNtYXRjaGVkCisgICAgICAg
IGlmIChwYXR0ZXJuLmlzRW1wdHkoKSB8fCB2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIFJlZ3VsYXJFeHByZXNzaW9uIHBhdHRlcm5SZWdFeHAocGF0
dGVybiwgVGV4dENhc2VTZW5zaXRpdmUpOworICAgICAgICBpbnQgbWF0Y2hMZW5ndGggPSAwOwor
ICAgICAgICBpbnQgdmFsdWVMZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICAgICAgaW50IG1h
dGNoT2Zmc2V0ID0gcGF0dGVyblJlZ0V4cC5tYXRjaCh2YWx1ZSwgMCwgJm1hdGNoTGVuZ3RoKTsK
KyAgICAgICAgcmV0dXJuIG1hdGNoT2Zmc2V0IHx8IG1hdGNoTGVuZ3RoICE9IHZhbHVlTGVuZ3Ro
OworICAgIH0KK307CisKKy8vIENvbmNyZXRlIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK2NsYXNzIEJ1dHRvbklucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQnV0dG9uSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBCdXR0b25JbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IElucHV0
VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpidXR0b24oKTsgfQorfTsKKworY2xhc3Mg
Q2hlY2tib3hJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVs
ZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENoZWNrYm94SW5wdXRU
eXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDaGVja2JveElucHV0
VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogSW5wdXRUeXBlKGlucHV0RWxl
bWVudCkge30KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1
cm4gSW5wdXRUeXBlTmFtZXM6OmNoZWNrYm94KCk7IH0KK307CisKK2NsYXNzIENvbG9ySW5wdXRU
eXBlIDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb2xvcklucHV0VHlwZShpbnB1dEVsZW1lbnQp
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ29sb3JJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVu
dCogaW5wdXRFbGVtZW50KSA6IElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpj
b2xvcigpOyB9Cit9OworCitjbGFzcyBEYXRlSW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElu
cHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVh
dGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBEYXRlSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBEYXRlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkg
OiBUZXh0RmllbGRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6ZGF0ZSgpOyB9
Cit9OworCitjbGFzcyBEYXRlVGltZUlucHV0VHlwZSA6IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5
cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgRGF0ZVRpbWVJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIERhdGVUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCkgOiBUZXh0RmllbGRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6ZGF0ZXRp
bWUoKTsgfQorfTsKKworY2xhc3MgRGF0ZVRpbWVMb2NhbElucHV0VHlwZSA6IHB1YmxpYyBUZXh0
RmllbGRJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlw
ZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgRGF0ZVRpbWVMb2NhbElucHV0VHlwZShpbnB1dEVsZW1lbnQp
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGF0ZVRpbWVMb2NhbElucHV0VHlwZShIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGlucHV0RWxlbWVu
dCkge30KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4g
SW5wdXRUeXBlTmFtZXM6OmRhdGV0aW1lbG9jYWwoKTsgfQorfTsKKworY2xhc3MgRW1haWxJbnB1
dFR5cGUgOiBwdWJsaWMgQmFzZVRleHRJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRW1haWxJbnB1dFR5cGUoaW5w
dXRFbGVtZW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEVtYWlsSW5wdXRUeXBlKEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBCYXNlVGV4dElucHV0VHlwZShpbnB1dEVsZW1l
bnQpIHt9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IElucHV0VHlwZU5hbWVzOjplbWFpbCgpOyB9Cit9OworCitjbGFzcyBGaWxlSW5wdXRUeXBlIDog
cHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRU
eXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxlSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBGaWxlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCkgOiBJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6ZmlsZSgpOyB9
Cit9OworCitjbGFzcyBIaWRkZW5JbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEhp
ZGRlbklucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSGlk
ZGVuSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBJbnB1dFR5cGUo
aW5wdXRFbGVtZW50KSB7fQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25z
dCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6aGlkZGVuKCk7IH0KK307CisKK2NsYXNzIEltYWdl
SW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbWFnZUlucHV0VHlwZShpbnB1dEVs
ZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSW1hZ2VJbnB1dFR5cGUoSFRNTElucHV0
RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5h
bWVzOjppbWFnZSgpOyB9Cit9OworCitjbGFzcyBJc0luZGV4SW5wdXRUeXBlIDogcHVibGljIFRl
eHRGaWVsZElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRU
eXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJc0luZGV4SW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBJc0luZGV4SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCkgOiBUZXh0RmllbGRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207
IH0KK307CisKK2NsYXNzIE1vbnRoSW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElucHV0VHlw
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRN
TElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBNb250aElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgTW9udGhJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IFRl
eHRGaWVsZElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjptb250aCgpOyB9Cit9
OworCitjbGFzcyBOdW1iZXJJbnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZpZWxkSW5wdXRUeXBlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IE51bWJlcklucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgTnVtYmVySW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBUZXh0
RmllbGRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6bnVtYmVyKCk7IH0KK307
CisKK2NsYXNzIFBhc3N3b3JkSW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFBhc3N3b3JkSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBQYXNzd29yZElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDog
QmFzZVRleHRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6cGFzc3dvcmQoKTsg
fQorfTsKKworY2xhc3MgUmFkaW9JbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJh
ZGlvSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSYWRp
b0lucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogSW5wdXRUeXBlKGlu
cHV0RWxlbWVudCkge30KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3Qg
eyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnJhZGlvKCk7IH0KK307CisKK2NsYXNzIFJhbmdlSW5w
dXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSYW5nZUlucHV0VHlwZShpbnB1dEVsZW1l
bnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmFuZ2VJbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50KSA6IElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVz
OjpyYW5nZSgpOyB9Cit9OworCitjbGFzcyBSZXNldElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5
cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgUmVzZXRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIFJlc2V0SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBJ
bnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5h
bWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6cmVzZXQoKTsgfQorfTsKKworY2xh
c3MgU2VhcmNoSW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNlYXJj
aElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2VhcmNo
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBCYXNlVGV4dElucHV0
VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpzZWFyY2goKTsgfQorfTsKKworY2xhc3Mg
U3VibWl0SW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTdWJtaXRJbnB1dFR5cGUo
aW5wdXRFbGVtZW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFN1Ym1pdElucHV0VHlwZShI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogSW5wdXRUeXBlKGlucHV0RWxlbWVudCkg
e30KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gSW5w
dXRUeXBlTmFtZXM6OnN1Ym1pdCgpOyB9Cit9OworCitjbGFzcyBUZWxlcGhvbmVJbnB1dFR5cGUg
OiBwdWJsaWMgQmFzZVRleHRJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGVsZXBob25lSW5wdXRUeXBlKGlucHV0
RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUZWxlcGhvbmVJbnB1dFR5cGUoSFRN
TElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IEJhc2VUZXh0SW5wdXRUeXBlKGlucHV0RWxl
bWVudCkge30KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1
cm4gSW5wdXRUeXBlTmFtZXM6OnRlbGVwaG9uZSgpOyB9Cit9OworCitjbGFzcyBUZXh0SW5wdXRU
eXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHRJbnB1dFR5cGUoaW5wdXRF
bGVtZW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFRleHRJbnB1dFR5cGUoSFRNTElucHV0
RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IEJhc2VUZXh0SW5wdXRUeXBlKGlucHV0RWxlbWVudCkg
e30KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gSW5w
dXRUeXBlTmFtZXM6OnRleHQoKTsgfQorfTsKKworY2xhc3MgVGltZUlucHV0VHlwZSA6IHB1Ymxp
YyBUZXh0RmllbGRJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
cHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGltZUlucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgVGltZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFt
ZXM6OnRpbWUoKTsgfQorfTsKKworY2xhc3MgVVJMSW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0
SW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNy
ZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFVSTElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgVVJMSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkg
OiBCYXNlVGV4dElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjp1cmwoKTsgfQor
fTsKKworY2xhc3MgV2Vla0lucHV0VHlwZSA6IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5cGUgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgV2Vla0lucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
V2Vla0lucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogVGV4dEZpZWxk
SW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OndlZWsoKTsgfQorfTsKKworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordHlwZWRlZiBIYXNoTWFwPEF0b21p
Y1N0cmluZywgUGFzc093blB0cjxJbnB1dFR5cGU+ICgqKShIVE1MSW5wdXRFbGVtZW50KiksIENh
c2VGb2xkaW5nSGFzaD4gSW5wdXRUeXBlRmFjdG9yeU1hcDsKK3N0YXRpYyBQYXNzT3duUHRyPElu
cHV0VHlwZUZhY3RvcnlNYXA+IGNyZWF0ZUlucHV0VHlwZUZhY3RvcnlNYXAoKQoreworICAgIE93
blB0cjxJbnB1dFR5cGVGYWN0b3J5TWFwPiBtYXAgPSBhZG9wdFB0cihuZXcgSW5wdXRUeXBlRmFj
dG9yeU1hcCk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmJ1dHRvbigpLCBCdXR0b25J
bnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmNoZWNrYm94
KCksIENoZWNrYm94SW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5h
bWVzOjpjb2xvcigpLCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1
dFR5cGVOYW1lczo6ZGF0ZSgpLCBEYXRlSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRk
KElucHV0VHlwZU5hbWVzOjpkYXRldGltZSgpLCBEYXRlVGltZUlucHV0VHlwZTo6Y3JlYXRlKTsK
KyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCgpLCBEYXRlVGltZUxv
Y2FsSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjplbWFp
bCgpLCBFbWFpbElucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1l
czo6ZmlsZSgpLCBGaWxlSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlw
ZU5hbWVzOjpoaWRkZW4oKSwgSGlkZGVuSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRk
KElucHV0VHlwZU5hbWVzOjppbWFnZSgpLCBJbWFnZUlucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBt
YXAtPmFkZChJbnB1dFR5cGVOYW1lczo6aXNpbmRleCgpLCBJc0luZGV4SW5wdXRUeXBlOjpjcmVh
dGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjptb250aCgpLCBNb250aElucHV0VHlw
ZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6bnVtYmVyKCksIE51bWJl
cklucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6cGFzc3dv
cmQoKSwgUGFzc3dvcmRJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBl
TmFtZXM6OnJhZGlvKCksIFJhZGlvSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElu
cHV0VHlwZU5hbWVzOjpyYW5nZSgpLCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAt
PmFkZChJbnB1dFR5cGVOYW1lczo6cmVzZXQoKSwgUmVzZXRJbnB1dFR5cGU6OmNyZWF0ZSk7Cisg
ICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnNlYXJjaCgpLCBTZWFyY2hJbnB1dFR5cGU6OmNy
ZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCgpLCBTdWJtaXRJbnB1
dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnRlbGVwaG9uZSgp
LCBUZWxlcGhvbmVJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFt
ZXM6OnRpbWUoKSwgVGltZUlucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5
cGVOYW1lczo6dXJsKCksIFVSTElucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1
dFR5cGVOYW1lczo6d2VlaygpLCBXZWVrSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIC8vIE5vIG5l
ZWQgdG8gcmVnaXN0ZXIgInRleHQiIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQgdHlwZS4KKyAg
ICByZXR1cm4gbWFwLnJlbGVhc2UoKTsKK30KKworUGFzc093blB0cjxJbnB1dFR5cGU+IElucHV0
VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlTmFtZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgSW5wdXRUeXBlRmFjdG9yeU1h
cCogZmFjdG9yeU1hcCA9IGNyZWF0ZUlucHV0VHlwZUZhY3RvcnlNYXAoKS5sZWFrUHRyKCk7Cisg
ICAgUGFzc093blB0cjxJbnB1dFR5cGU+ICgqZmFjdG9yeSkoSFRNTElucHV0RWxlbWVudCopOwor
ICAgIGZhY3RvcnkgPSBmYWN0b3J5TWFwLT5nZXQodHlwZU5hbWUpOworICAgIGlmICghZmFjdG9y
eSkKKyAgICAgICAgZmFjdG9yeSA9IFRleHRJbnB1dFR5cGU6OmNyZWF0ZTsKKyAgICByZXR1cm4g
ZmFjdG9yeShpbnB1dEVsZW1lbnQpOworfQorCitJbnB1dFR5cGU6OklucHV0VHlwZShIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogbV9lbGVtZW50KGlucHV0RWxlbWVudCkge30KKwor
SW5wdXRUeXBlOjp+SW5wdXRUeXBlKCkge30KKworYm9vbCBJbnB1dFR5cGU6OmlzVGV4dEZpZWxk
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworYm9vbCBJbnB1dFR5cGU6OmlzVGV4dFR5cGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitib29sIElucHV0VHlwZTo6cGF0dGVybk1pc21h
dGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK25hbWVzcGFjZSBJ
bnB1dFR5cGVOYW1lcyB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgYnV0dG9uKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJidXR0b24iKSk7CisgICAg
cmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgY2hlY2tib3goKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNoZWNrYm94IikpOwor
ICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIGNvbG9yKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJjb2xvciIpKTsKKyAg
ICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBkYXRlKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRlIikpOworICAgIHJl
dHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRldGltZSIpKTsKKyAg
ICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBkYXRldGltZWxvY2FsKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRldGlt
ZS1sb2NhbCIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBl
bWFpbCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgi
ZW1haWwiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgZmls
ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiZmls
ZSIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBoaWRkZW4o
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImhpZGRl
biIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZSgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiaW1hZ2Ui
KSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgaXNpbmRleCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgia2h0bWxf
aXNpbmRleCIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBt
b250aCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgi
bW9udGgiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgbnVt
YmVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJu
dW1iZXIiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgcGFz
c3dvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAo
InBhc3N3b3JkIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IHJhZGlvKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwg
KCJyYWRpbyIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBy
YW5nZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgi
cmFuZ2UiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgcmVz
ZXQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInJl
c2V0IikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIHNlYXJj
aCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgic2Vh
cmNoIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIHN1Ym1p
dCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgic3Vi
bWl0IikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIHRlbGVw
aG9uZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgi
dGVsIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIHRleHQo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInRleHQi
KSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgdGltZSgpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgidGltZSIpKTsK
KyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiB1cmwoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInVybCIpKTsKKyAgICBy
ZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiB3ZWVrKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ3ZWVrIikpOworICAgIHJldHVy
biBuYW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpJbnB1VHlwZU5hbWVzCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwZmE3YjM5MjUxOTFl
ZDJjMzhhYzNkYTg5MmVkYmQ3YjBiMTQ1MDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5wdXRUeXBlX2gKKyNkZWZp
bmUgSW5wdXRUeXBlX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTElucHV0RWxlbWVudDsKKworY2xh
c3MgSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+
IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgdmly
dHVhbCB+SW5wdXRUeXBlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGQoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
cGF0dGVybk1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAg
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBlbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CisKK3ByaXZhdGU6CisgICAgLy8gUmF3
IHBvaW50ZXIgYmVjYXVzZSB0aGUgSFRNTElucHV0RWxlbWVudCBvYmplY3Qgb3ducyB0aGlzIElu
cHV0VHlwZSBvYmplY3QuCisgICAgSFRNTElucHV0RWxlbWVudCogbV9lbGVtZW50OworfTsKKwor
bmFtZXNwYWNlIElucHV0VHlwZU5hbWVzIHsKK2NvbnN0IEF0b21pY1N0cmluZyYgYnV0dG9uKCk7
Citjb25zdCBBdG9taWNTdHJpbmcmIGNoZWNrYm94KCk7Citjb25zdCBBdG9taWNTdHJpbmcmIGNv
bG9yKCk7Citjb25zdCBBdG9taWNTdHJpbmcmIGRhdGUoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYg
ZGF0ZXRpbWUoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWVsb2NhbCgpOworY29uc3Qg
QXRvbWljU3RyaW5nJiBlbWFpbCgpOworY29uc3QgQXRvbWljU3RyaW5nJiBmaWxlKCk7Citjb25z
dCBBdG9taWNTdHJpbmcmIGhpZGRlbigpOworY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZSgpOwor
Y29uc3QgQXRvbWljU3RyaW5nJiBpc2luZGV4KCk7Citjb25zdCBBdG9taWNTdHJpbmcmIG1vbnRo
KCk7Citjb25zdCBBdG9taWNTdHJpbmcmIG51bWJlcigpOworY29uc3QgQXRvbWljU3RyaW5nJiBw
YXNzd29yZCgpOworY29uc3QgQXRvbWljU3RyaW5nJiByYWRpbygpOworY29uc3QgQXRvbWljU3Ry
aW5nJiByYW5nZSgpOworY29uc3QgQXRvbWljU3RyaW5nJiByZXNldCgpOworY29uc3QgQXRvbWlj
U3RyaW5nJiBzZWFyY2goKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgc3VibWl0KCk7Citjb25zdCBB
dG9taWNTdHJpbmcmIHRlbGVwaG9uZSgpOworY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0KCk7Citj
b25zdCBBdG9taWNTdHJpbmcmIHRpbWUoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgdXJsKCk7Citj
b25zdCBBdG9taWNTdHJpbmcmIHdlZWsoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68337</attachid>
            <date>2010-09-21 21:31:45 -0700</date>
            <delta_ts>2010-09-23 23:20:17 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-45872-20100922133143.patch</filename>
            <type>text/plain</type>
            <size>42439</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAwZDYwYWI2ZTgxZDJmOGMwMGE5OTVmM2M3YzhkOTM4OTU3YzJlZWI5Li5jMzBhNTAzODU1MGE4
YmUzNDBlNjAwNjJiMTRjNWU0ODhhMWZlNmFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNzksOCArMjc5LDkgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MVmlld1NvdXJjZURvY3Vt
ZW50LmNwcCBcCiAJaHRtbC9JbWFnZURhdGEuY3BwIFwKIAlodG1sL0ltYWdlRG9jdW1lbnQuY3Bw
IFwKLSAgaHRtbC9NZWRpYURvY3VtZW50LmNwcCBcCiAJaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwIFwKKwlodG1sL0lucHV0VHlwZS5jcHAgXAorCWh0bWwvTWVkaWFEb2N1bWVudC5jcHAgXAog
CWh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwIFwKIAlodG1sL1RleHREb2N1bWVudC5jcHAgXAogCWh0
bWwvVGltZVJhbmdlcy5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWViODhiMTdhZGQ4MDM3ZjBjYmE4OWY2NzBh
MGQ5YzQ0OGVmZDlmYS4uYzkzMGY5ZjYxMGEyMjFkNWJkZTkyZTExYWM2ZWMyYjQxNTU3Y2YwYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xMDMxLDYgKzEwMzEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRt
bC9JbWFnZURhdGEuY3BwCiAgICAgaHRtbC9JbWFnZURvY3VtZW50LmNwcAogICAgIGh0bWwvSW1h
Z2VSZXNpemVyVGhyZWFkLmNwcAorICAgIGh0bWwvSW5wdXRUeXBlLmNwcAogICAgIGh0bWwvTGFi
ZWxzTm9kZUxpc3QuY3BwCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmNwcAogICAgIGh0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDFmNGY5MTNmN2UwZGZjNTM4OTNmYjk0ZTIyMzQzNDEyMzk4ZjY2M2Eu
LmY3N2Q5MDk2OGNlZDEzNWE4YjkxZTUzYWM1YmJhZmJiNGZjNTUzNjIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQwIEBA
CisyMDEwLTA5LTIxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBIVE1MSW5w
dXRFbGVtZW50OiBJbnRyb2R1Y2luZyBJbnB1dFR5cGUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1ODcyCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIGJlY2F1c2UgdGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgYmVoYXZpb3IuCisKKyAgICAgICAg
KiBBbmRyb2lkLm1rOiBBZGQgSW5wdXRUeXBlLmNwcCBhbmQvb3IgSW5wdXRUeXBlLmguCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6IGRpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBk
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IGRpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
cHJvOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogZGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBkaXR0by4K
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudCk6CisgICAgICAgICAgSW5pdGlhbGl6
ZSBtX2lucHV0VHlwZSB3aXRoIHRoZSBkZWZhdWx0ICJ0ZXh0IiB0eXBlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogRGVsZWdhdGUgdG8gSW5w
dXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6
IFVwZGF0ZSBtX2lucHV0VHlwZSB3aXRoIG5ldyB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKTogRGVsZWdhdGUgdG8gSW5wdXRUeXBlLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aXNUZXh0RmllbGQpOiBkaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVGV4dFR5cGUpOiBkaXR0by4K
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0lucHV0
VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpU
ZXh0RmllbGRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
Ojppc1RleHRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlVGV4dElucHV0VHlwZTo6QmFz
ZVRleHRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVRleHRJbnB1dFR5cGU6Omlz
VGV4dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVRleHRJbnB1dFR5cGU6OnBhdHRlcm5N
aXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCdXR0b25JbnB1dFR5cGU6OkJ1dHRvbklucHV0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCdXR0b25JbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNoZWNrYm94SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2ti
b3hJbnB1dFR5cGU6OkNoZWNrYm94SW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoZWNr
Ym94SW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpDb2xvcklucHV0
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6dHlwZU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGVJbnB1dFR5cGU6OkRhdGVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUlu
cHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVJbnB1dFR5cGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUlucHV0VHlwZTo6RGF0ZVRpbWVJ
bnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVJbnB1dFR5cGU6OnR5cGVOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsSW5w
dXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnR5cGVO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkVtYWlsSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RW1haWxJbnB1dFR5cGU6OkVtYWlsSW5wdXRUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkVtYWlsSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Rmls
ZUlucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjp0eXBlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5JbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIaWRkZW5JbnB1dFR5cGU6OkhpZGRlbklucHV0VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpIaWRkZW5JbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJbnB1dFR5cGU6Oklt
YWdlSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjp0eXBlTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJc0luZGV4SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SXNJbmRleElucHV0VHlwZTo6SXNJbmRleElucHV0VHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpJc0luZGV4SW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb250aElucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRU
eXBlOjpNb250aElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb250aElucHV0VHlwZTo6
dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpOdW1iZXJJbnB1dFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXNzd29yZElucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3N3
b3JkSW5wdXRUeXBlOjpQYXNzd29yZElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXNz
d29yZElucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9JbnB1dFR5
cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0lucHV0VHlwZTo6UmFkaW9JbnB1
dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9JbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFuZ2VJbnB1dFR5cGU6OlJhbmdlSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNldElucHV0VHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc2V0SW5wdXRUeXBlOjpSZXNldElucHV0
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNldElucHV0VHlwZTo6dHlwZU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VhcmNoSW5wdXRUeXBlOjpTZWFyY2hJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJtaXRJbnB1
dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJtaXRJbnB1dFR5cGU6OlN1Ym1p
dElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJtaXRJbnB1dFR5cGU6OnR5cGVOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlbGVwaG9uZUlucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlbGVwaG9uZUlucHV0VHlwZTo6VGVsZXBob25lSW5wdXRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlbGVwaG9uZUlucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dElucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJ
bnB1dFR5cGU6OlRleHRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dElucHV0VHlw
ZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVJbnB1dFR5cGU6OlRpbWVJbnB1dFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VVJMSW5wdXRUeXBlOjpV
UkxJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VVJMSW5wdXRUeXBlOjp0eXBlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWVrSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2Vla0lucHV0VHlwZTo6V2Vla0lucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWVrSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbnB1dFR5
cGVGYWN0b3J5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6SW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0VHlwZTo6fklucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omlz
VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aXNUZXh0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnBhdHRlcm5NaXNtYXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6YnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjpjaGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6
Y29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmRhdGV0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0VHlwZU5hbWVzOjpkYXRldGltZWxvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjplbWFpbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6Zmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6aGlkZGVuKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dFR5cGVOYW1lczo6aXNpbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6
bW9udGgpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Om51bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cGFzc3dvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OnJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjpyYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cmVzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnNlYXJjaCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGVOYW1lczo6c3VibWl0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlw
ZU5hbWVzOjp0ZWxlcGhvbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGVOYW1lczo6d2Vlayk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmVsZW1lbnQpOgorCiAyMDEwLTA5LTIxICBBbmRyZXcg
V2lsc29uICA8YXR3aWxzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHI2Nzk4Mi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDI4MjA0ZDA4YTczODc2Zjk4NzBlN2MzYjIwMDI3
N2MyNjU5ZDAzMjYuLjM1ZDc5NTQwM2Y5ZGU0MTNiNGVmMzU3MWJiOGY4ZGM0MTQzYWE3ZjEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQpAQCAtMTYzMCw2ICsxNjMwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5oIFwKIAlXZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFk
LmNwcCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5oIFwKKwlXZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcCBcCisJV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIFwKIAlXZWJDb3Jl
L2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKIAlXZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3Qu
aCBcCiAJV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTdiMDkzYjNhYjQ1
M2U0MmI3NWM1MTZmMjAwNTRlODU4Mjk0ZDA2MC4uNzgwZGI4YmM0Y2Y0Yjk3NGVjN2Y0OTM0Mjlk
M2RiNmQ1MGJlNjU0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTE3MDIsNiArMTcwMiw4IEBACiAgICAgICAgICAgICAnaHRt
bC9JbWFnZURvY3VtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFk
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCcsCisgICAgICAg
ICAgICAnaHRtbC9JbnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAgICdodG1sL0lucHV0VHlwZS5o
JywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmNwcCcsCiAgICAgICAgICAgICAn
aHRtbC9MYWJlbHNOb2RlTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1lbnQu
Y3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUu
cHJvCmluZGV4IDlhOWEzZTVhMmJhMzFjODIwYzFiMzVkZmNjMjY4Y2FmMDcwMzNlZjUuLjZkYmI1
MTM1YmViNDZlYjc4MjkzNjliNGVmYjBhNTIzNGIxNzdmNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtOTI3LDYgKzkyNyw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIGh0bWwvSW1hZ2VEYXRhLmNwcCBcCiAgICAgaHRtbC9JbWFnZURv
Y3VtZW50LmNwcCBcCiAgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIFwKKyAgICBodG1s
L0lucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKICAgICBodG1s
L01lZGlhRG9jdW1lbnQuY3BwIFwKICAgICBodG1sL1BsdWdpbkRvY3VtZW50LmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwNDIxNjA1MjQ2Y2NlZmUzOTc0ZTFj
NGUwYmMzYTQ2YTZmNDFmMjdkLi44MDk2ZWU5ODdmZmQ2NWQ2ZmU4MTY0ZWIyZTAxNDYyNTQzNDNj
MWY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQxOTY5LDYgKzQx
OTY5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGh0bWxcSW5wdXRUeXBlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXExhYmVsc05vZGVM
aXN0LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDczNWU5ZDUyMGVhNWMyYjFhNDJkYzI3ZWEyMGFhMjQyM2Rl
YTAwMTEuLjczYzg4YTY1ZDY5ZTE2NWIwMjUwN2U0NjQ3MTkyYzAxYzQ3MGYwMmEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MjIsNiArODIyLDggQEAK
IAkJMzdDMjM4MjIxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVU
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
QzIzODIwMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5j
cHAgKi87IH07CiAJCTM3QzI4QTY4MTBGNjU5Q0MwMDhDNzgxMyAvKiBUeXBlc2V0dGluZ0ZlYXR1
cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0My
OEE2NzEwRjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3QzYxRjAxMTIwOTVDODcw
MDdBM0M2NyAvKiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M2MUYwMDEyMDk1Qzg3MDA3QTNDNjcgLyog
QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oICovOyB9OworCQkzN0UzNTI0QjEyNDUwQzUyMDBC
QUY1RDkgLyogSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3RTM1MjRBMTI0NTBDNTIwMEJBRjVEOSAvKiBJbnB1dFR5cGUuY3BwICov
OyB9OworCQkzN0UzNTI0RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0UzNTI0QzEyNDUwQzY2MDBC
QUY1RDkgLyogSW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMzdGODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNw
b25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdG
ODE4RkIwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3RjgxOEZFMEQ2NTc2MDYw
MDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Y4MThGQzBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlLm1tICovOyB9OwogCQkzN0ZENDI5ODExODM2ODQ2MDA5M0MwMjkgLyogVHJl
ZURlcHRoTGltaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3RkQ0Mjk3MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oICovOyB9OwpA
QCAtNjcxMCw2ICs2NzEyLDggQEAKIAkJMzdDMjM4MjAxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzdDMjhBNjcxMEY2NTlDQzAwOEM3ODEzIC8qIFR5cGVzZXR0aW5n
RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZXNldHRpbmdG
ZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0M2MUYwMDEyMDk1Qzg3
MDA3QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTM3RTM1MjRBMTI0NTBDNTIwMEJBRjVEOSAvKiBJbnB1dFR5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5wdXRUeXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdFMzUyNEMxMjQ1MEM2NjAwQkFGNUQ5IC8q
IElucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnB1dFR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGODE4RkIwRDY1NzYwNjAwNUUxRjA1
IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlVVJMUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdG
ODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVVUkxSZXNwb25zZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGQzk2REExMTA0RUQ3MTAwM0UxRkFEIC8qIFRy
YWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0NDAxLDYgKzE0NDA1LDggQEAKIAkJCQk5NzIwNUFCMjEyMzkyOTEwMDBCMTcz
ODAgLyogSW1hZ2VEb2N1bWVudC5oICovLAogCQkJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAv
KiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovLAogCQkJCUIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3
QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLywKKwkJCQkzN0UzNTI0QTEyNDUwQzUyMDBCQUY1
RDkgLyogSW5wdXRUeXBlLmNwcCAqLywKKwkJCQkzN0UzNTI0QzEyNDUwQzY2MDBCQUY1RDkgLyog
SW5wdXRUeXBlLmggKi8sCiAJCQkJQTQ1NkZBMjQxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05v
ZGVMaXN0LmNwcCAqLywKIAkJCQlBNDU2RkEyNTExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9k
ZUxpc3QuaCAqLywKIAkJCQk5NzIwNUFCMzEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVu
dC5jcHAgKi8sCkBAIC0xOTE4Myw2ICsxOTE4OSw3IEBACiAJCQkJQkNFNzg5MTYxMTIwRDYwODAw
NjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg1QTA5
N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg1
OTFBQTUwRjA4NUM0RTAwOUJBQ0IxIC8qIElucHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMzdFMzUyNEQxMjQ1MEM2NjAwQkFGNUQ5IC8qIElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTMzMDlERUEwOTlFNjQ5MjAwNTZFNTgxIC8qIEluc2VydEludG9UZXh0Tm9kZUNvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REVDMDk5RTY0OTIwMDU2RTU4MSAvKiBJbnNl
cnRMaW5lQnJlYWtDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDdERUFCQTBBMzY1NTRB
MDBDQTMwRjggLyogSW5zZXJ0TGlzdENvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjE2ODQs
NiArMjE2OTEsNyBAQAogCQkJCUE4Q0ZGNUU0MEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVGbG93
Qm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODU5MDk3RDkzMDIwMDk0QzlFNCAvKiBJ
bmxpbmVUZXh0Qm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NzAwQkU3MEYwODZDNTMwMDkx
OTQxOSAvKiBJbnB1dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzdFMzUyNEIxMjQ1
MEM1MjAwQkFGNUQ5IC8qIElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOURF
OTA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MzMwOURFQjA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0TGluZUJyZWFr
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMDdERUFCOTBBMzY1NTRBMDBDQTMwRjgg
LyogSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKaW5kZXggYmFmZjZjNGYxZjlhMDYzODFlZmRjNTdmZjI3OWMwZTVkNmM3ZmMyMi4u
YjFhMDAwNmE0OWI4OGE5M2M2MDJkMjExNzg5ODgzZTdmNjBmZWM5NSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcApAQCAtMTYyLDYgKzE2Miw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJ
bnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
CiAgICAgLCBtX2F1dG9maWxsZWQoZmFsc2UpCiAgICAgLCBtX2luaXRlZChmYWxzZSkKIHsKKyAg
ICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlKHRoaXMsIElucHV0VHlwZU5hbWVzOjp0
ZXh0KCkpOwogICAgIEFTU0VSVChoYXNUYWdOYW1lKGlucHV0VGFnKSB8fCBoYXNUYWdOYW1lKGlz
aW5kZXhUYWcpKTsKIH0KIApAQCAtMzQ1LDE3ICszNDYsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OnZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogCiBib29sIEhUTUxJ
bnB1dEVsZW1lbnQ6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAog
ewotICAgIGlmICghaXNUZXh0VHlwZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBwYXR0ZXJuID0gZ2V0QXR0cmlidXRlKHBhdHRlcm5BdHRyKTsKLSAg
ICAvLyBFbXB0eSB2YWx1ZXMgY2FuJ3QgYmUgbWlzbWF0Y2hlZAotICAgIGlmIChwYXR0ZXJuLmlz
RW1wdHkoKSB8fCB2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBS
ZWd1bGFyRXhwcmVzc2lvbiBwYXR0ZXJuUmVnRXhwKHBhdHRlcm4sIFRleHRDYXNlU2Vuc2l0aXZl
KTsKLSAgICBpbnQgbWF0Y2hMZW5ndGggPSAwOwotICAgIGludCB2YWx1ZUxlbmd0aCA9IHZhbHVl
Lmxlbmd0aCgpOwotICAgIGludCBtYXRjaE9mZnNldCA9IHBhdHRlcm5SZWdFeHAubWF0Y2godmFs
dWUsIDAsICZtYXRjaExlbmd0aCk7Ci0gICAgcmV0dXJuIG1hdGNoT2Zmc2V0IHx8IG1hdGNoTGVu
Z3RoICE9IHZhbHVlTGVuZ3RoOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+cGF0dGVybk1pc21h
dGNoKHZhbHVlKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKGNvbnN0IFN0
cmluZyYgdmFsdWUsIE5lZWRzVG9DaGVja0RpcnR5RmxhZyBjaGVjaykgY29uc3QKQEAgLTkxMSw2
ICs5MDIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAgICAgICAg
ICAgYm9vbCB3YXNQYXNzd29yZEZpZWxkID0gZGVwcmVjYXRlZElucHV0VHlwZSgpID09IFBBU1NX
T1JEOwogICAgICAgICAgICAgYm9vbCBkaWRSZXNwZWN0SGVpZ2h0QW5kV2lkdGggPSByZXNwZWN0
SGVpZ2h0QW5kV2lkdGhBdHRycygpOwogICAgICAgICAgICAgbV9kZXByZWNhdGVkVHlwZU51bWJl
ciA9IG5ld1R5cGU7CisgICAgICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRl
KHRoaXMsIHR5cGVTdHJpbmcpOwogICAgICAgICAgICAgc2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVj
aygpOwogICAgICAgICAgICAgYm9vbCB3aWxsU3RvcmVWYWx1ZSA9IHN0b3Jlc1ZhbHVlU2VwYXJh
dGVGcm9tQXR0cmlidXRlKCk7CiAgICAgICAgICAgICBib29sIGlzUGFzc3dvcmRGaWVsZCA9IGRl
cHJlY2F0ZWRJbnB1dFR5cGUoKSA9PSBQQVNTV09SRDsKQEAgLTk1OSw0MiArOTUxLDkgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICAgICAgbV9pbWFnZUxvYWRlci5j
bGVhcigpOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBjcmVhdGVGb3JtQ29udHJv
bFR5cGVzKCkKLXsKLSAgICBBdG9taWNTdHJpbmcqIHR5cGVzID0gbmV3IEF0b21pY1N0cmluZ1tI
VE1MSW5wdXRFbGVtZW50OjpkZXByZWNhdGVkTnVtYmVyT2ZUeXBlc107Ci0gICAgLy8gVGhlIHZh
bHVlcyBtdXN0IGJlIGxvd2VyY2FzZWQgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdGhlIHJldHVybiB2
YWx1ZXMgb2YKLSAgICAvLyAgaW5wdXQudHlwZSBhbmQgaXQgbXVzdCBiZSBsb3dlcmNhc2UgYWNj
b3JkaW5nIHRvIERPTSBMZXZlbCAyLgotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkJVVFRP
Tl0gPSAiYnV0dG9uIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpDSEVDS0JPWF0gPSAi
Y2hlY2tib3giOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkNPTE9SXSA9ICJjb2xvciI7
Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6REFURV0gPSAiZGF0ZSI7Ci0gICAgdHlwZXNb
SFRNTElucHV0RWxlbWVudDo6REFURVRJTUVdID0gImRhdGV0aW1lIjsKLSAgICB0eXBlc1tIVE1M
SW5wdXRFbGVtZW50OjpEQVRFVElNRUxPQ0FMXSA9ICJkYXRldGltZS1sb2NhbCI7Ci0gICAgdHlw
ZXNbSFRNTElucHV0RWxlbWVudDo6RU1BSUxdID0gImVtYWlsIjsKLSAgICB0eXBlc1tIVE1MSW5w
dXRFbGVtZW50OjpGSUxFXSA9ICJmaWxlIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpI
SURERU5dID0gImhpZGRlbiI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6SU1BR0VdID0g
ImltYWdlIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpJU0lOREVYXSA9IGVtcHR5QXRv
bTsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpNT05USF0gPSAibW9udGgiOwotICAgIHR5
cGVzW0hUTUxJbnB1dEVsZW1lbnQ6Ok5VTUJFUl0gPSAibnVtYmVyIjsKLSAgICB0eXBlc1tIVE1M
SW5wdXRFbGVtZW50OjpQQVNTV09SRF0gPSAicGFzc3dvcmQiOwotICAgIHR5cGVzW0hUTUxJbnB1
dEVsZW1lbnQ6OlJBRElPXSA9ICJyYWRpbyI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6
UkFOR0VdID0gInJhbmdlIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpSRVNFVF0gPSAi
cmVzZXQiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlNFQVJDSF0gPSAic2VhcmNoIjsK
LSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpTVUJNSVRdID0gInN1Ym1pdCI7Ci0gICAgdHlw
ZXNbSFRNTElucHV0RWxlbWVudDo6VEVMRVBIT05FXSA9ICJ0ZWwiOwotICAgIHR5cGVzW0hUTUxJ
bnB1dEVsZW1lbnQ6OlRFWFRdID0gInRleHQiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6
OlRJTUVdID0gInRpbWUiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlVSTF0gPSAidXJs
IjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpXRUVLXSA9ICJ3ZWVrIjsKLSAgICByZXR1
cm4gdHlwZXM7Ci19Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTElucHV0RWxlbWVudDo6Zm9y
bUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBm
b3JtQ29udHJvbFR5cGVzID0gY3JlYXRlRm9ybUNvbnRyb2xUeXBlcygpOwotICAgIHJldHVybiBm
b3JtQ29udHJvbFR5cGVzW2RlcHJlY2F0ZWRJbnB1dFR5cGUoKV07CisgICAgcmV0dXJuIG1faW5w
dXRUeXBlLT50eXBlTmFtZSgpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNhdmVGb3Jt
Q29udHJvbFN0YXRlKFN0cmluZyYgcmVzdWx0KSBjb25zdApAQCAtMTQ4MSw3MCArMTQ0MCwxMiBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0KCkKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50
Ojppc1RleHRGaWVsZCgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChkZXByZWNhdGVkSW5wdXRUeXBl
KCkpIHsKLSAgICBjYXNlIENPTE9SOgotICAgIGNhc2UgREFURToKLSAgICBjYXNlIERBVEVUSU1F
OgotICAgIGNhc2UgREFURVRJTUVMT0NBTDoKLSAgICBjYXNlIEVNQUlMOgotICAgIGNhc2UgSVNJ
TkRFWDoKLSAgICBjYXNlIE1PTlRIOgotICAgIGNhc2UgTlVNQkVSOgotICAgIGNhc2UgUEFTU1dP
UkQ6Ci0gICAgY2FzZSBTRUFSQ0g6Ci0gICAgY2FzZSBURUxFUEhPTkU6Ci0gICAgY2FzZSBURVhU
OgotICAgIGNhc2UgVElNRToKLSAgICBjYXNlIFVSTDoKLSAgICBjYXNlIFdFRUs6Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGNhc2UgQlVUVE9OOgotICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAg
Y2FzZSBGSUxFOgotICAgIGNhc2UgSElEREVOOgotICAgIGNhc2UgSU1BR0U6Ci0gICAgY2FzZSBS
QURJTzoKLSAgICBjYXNlIFJBTkdFOgotICAgIGNhc2UgUkVTRVQ6Ci0gICAgY2FzZSBTVUJNSVQ6
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+aXNUZXh0RmllbGQo
KTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1RleHRUeXBlKCkgY29uc3QKIHsKLSAg
ICBzd2l0Y2ggKGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSkgewotICAgIGNhc2UgRU1BSUw6Ci0gICAg
Y2FzZSBQQVNTV09SRDoKLSAgICBjYXNlIFNFQVJDSDoKLSAgICBjYXNlIFRFTEVQSE9ORToKLSAg
ICBjYXNlIFRFWFQ6Ci0gICAgY2FzZSBVUkw6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNh
c2UgQlVUVE9OOgotICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAgY2FzZSBDT0xPUjoKLSAgICBjYXNl
IERBVEU6Ci0gICAgY2FzZSBEQVRFVElNRToKLSAgICBjYXNlIERBVEVUSU1FTE9DQUw6Ci0gICAg
Y2FzZSBGSUxFOgotICAgIGNhc2UgSElEREVOOgotICAgIGNhc2UgSU1BR0U6Ci0gICAgY2FzZSBJ
U0lOREVYOgotICAgIGNhc2UgTU9OVEg6Ci0gICAgY2FzZSBOVU1CRVI6Ci0gICAgY2FzZSBSQURJ
TzoKLSAgICBjYXNlIFJBTkdFOgotICAgIGNhc2UgUkVTRVQ6Ci0gICAgY2FzZSBTVUJNSVQ6Ci0g
ICAgY2FzZSBUSU1FOgotICAgIGNhc2UgV0VFSzoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIG1faW5wdXRUeXBlLT5pc1RleHRUeXBlKCk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6c2V0Q2hlY2tlZChib29sIG5vd0NoZWNrZWQsIGJvb2wgc2VuZENoYW5nZUV2ZW50KQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKaW5kZXggN2U2MDFjYWNiY2ZlYjEyMGNkMzllNjJjZWFiNDQxOWFk
ZjIyYjBjNi4uZDNmZDA3OWYwNWU5NWYwMmYyZTkwMzk2ZmI3OTIyNmUyMDc0MTZmYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJIVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAi
SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02NSw5ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgTU9OVEgsCiAgICAgICAgIFRJ
TUUsCiAgICAgICAgIFdFRUssCi0gICAgICAgIC8vIElmIHlvdSBhZGQgbmV3IHR5cGVzIG9yIGNo
YW5nZSB0aGUgb3JkZXIgb2YgZW51bSB2YWx1ZXMsIHVwZGF0ZSBkZXByZWNhdGVkTnVtYmVyT2ZU
eXBlcyBiZWxvdy4KICAgICB9OwotICAgIHN0YXRpYyBjb25zdCBpbnQgZGVwcmVjYXRlZE51bWJl
ck9mVHlwZXMgPSBXRUVLICsgMTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxJbnB1dEVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVs
ZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MSW5wdXRFbGVtZW50KCk7CkBAIC0zNzQsNiArMzcz
LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoREFUQUxJU1QpCiAgICAgYm9vbCBtX2hhc05vbkVt
cHR5TGlzdCA6IDE7CiAjZW5kaWYKKyAgICBPd25QdHI8SW5wdXRUeXBlPiBtX2lucHV0VHlwZTsK
IH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzljYTRjZjc0Y2E1
MzFlNmI3MzY2MzU2YmZmNGViYjcxZTBmMjIxZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0wLDAgKzEsNTY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIklucHV0VHlwZS5oIgorCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwor
Ly8gQmFzZSB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBUZXh0
ZmllbGQtbG9va2luZyB0eXBlcyBpbmNsdWRpbmcgTlVNQkVSLgorY2xhc3MgVGV4dEZpZWxkSW5w
dXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgVGV4dEZpZWxkSW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBJbnB1dFR5cGUoaW5wdXRFbGVt
ZW50KSB7fQorICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KK307CisKKy8vIEJhc2Ugb2YgZW1haWwsIHBhc3Nvd29yZCwgc2VhcmNoLCB0ZWwsIHRl
eHQsIGFuZCBVUkwgdHlwZXMuCisvLyBUaGV5IHN1cHBvcnQgbWF4bGVuZ3RoLCBzZWxlY3Rpb24g
ZnVuY3Rpb25zLCBhbmQgc28gb24uCitjbGFzcyBCYXNlVGV4dElucHV0VHlwZSA6IHB1YmxpYyBU
ZXh0RmllbGRJbnB1dFR5cGUgeworcHVibGljOgorICAgIEJhc2VUZXh0SW5wdXRUeXBlKEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBUZXh0RmllbGRJbnB1dFR5cGUoaW5wdXRFbGVt
ZW50KSB7fQorICAgIHZpcnR1YWwgYm9vbCBpc1RleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1
ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGF0dGVybiA9IGVs
ZW1lbnQoKS0+Z2V0QXR0cmlidXRlKHBhdHRlcm5BdHRyKTsKKyAgICAgICAgLy8gRW1wdHkgdmFs
dWVzIGNhbid0IGJlIG1pc21hdGNoZWQKKyAgICAgICAgaWYgKHBhdHRlcm4uaXNFbXB0eSgpIHx8
IHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgUmVn
dWxhckV4cHJlc3Npb24gcGF0dGVyblJlZ0V4cChwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7
CisgICAgICAgIGludCBtYXRjaExlbmd0aCA9IDA7CisgICAgICAgIGludCB2YWx1ZUxlbmd0aCA9
IHZhbHVlLmxlbmd0aCgpOworICAgICAgICBpbnQgbWF0Y2hPZmZzZXQgPSBwYXR0ZXJuUmVnRXhw
Lm1hdGNoKHZhbHVlLCAwLCAmbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gbWF0Y2hPZmZz
ZXQgfHwgbWF0Y2hMZW5ndGggIT0gdmFsdWVMZW5ndGg7CisgICAgfQorfTsKKworLy8gQ29uY3Jl
dGUgdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgQnV0dG9u
SW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCdXR0b25JbnB1dFR5cGUoaW5wdXRF
bGVtZW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ1dHRvbklucHV0VHlwZShIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJ
bnB1dFR5cGVOYW1lczo6YnV0dG9uKCk7IH0KK307CisKK2NsYXNzIENoZWNrYm94SW5wdXRUeXBl
IDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5w
dXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDaGVja2JveElucHV0VHlwZShpbnB1dEVsZW1lbnQp
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2hlY2tib3hJbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50KSA6IElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRU
eXBlTmFtZXM6OmNoZWNrYm94KCk7IH0KK307CisKK2NsYXNzIENvbG9ySW5wdXRUeXBlIDogcHVi
bGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBl
PiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDb2xvcklucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQ29sb3JJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRF
bGVtZW50KSA6IElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmNv
bG9yKCk7IH0KK307CisKK2NsYXNzIERhdGVJbnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZpZWxkSW5w
dXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0
ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IERhdGVJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIERhdGVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6
IFRleHRGaWVsZElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmRh
dGUoKTsgfQorfTsKKworY2xhc3MgRGF0ZVRpbWVJbnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZpZWxk
SW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNy
ZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IERhdGVUaW1lSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBEYXRlVGltZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5
cGVOYW1lczo6ZGF0ZXRpbWUoKTsgfQorfTsKKworY2xhc3MgRGF0ZVRpbWVMb2NhbElucHV0VHlw
ZSA6IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
T3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGF0ZVRpbWVMb2NhbElucHV0VHlw
ZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGF0ZVRpbWVMb2NhbElu
cHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRU
eXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCgpOyB9
Cit9OworCitjbGFzcyBFbWFpbElucHV0VHlwZSA6IHB1YmxpYyBCYXNlVGV4dElucHV0VHlwZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElu
cHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBFbWFpbElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgRW1haWxJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IEJhc2VU
ZXh0SW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6ZW1haWwoKTsg
fQorfTsKKworY2xhc3MgRmlsZUlucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmls
ZUlucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRmlsZUlu
cHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogSW5wdXRUeXBlKGlucHV0
RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBj
b25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6ZmlsZSgpOyB9Cit9OworCitjbGFzcyBIaWRk
ZW5JbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEhpZGRlbklucHV0VHlwZShpbnB1
dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSGlkZGVuSW5wdXRUeXBlKEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IElucHV0VHlwZU5hbWVzOjpoaWRkZW4oKTsgfQorfTsKKworY2xhc3MgSW1hZ2VJbnB1dFR5cGUg
OiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1
dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEltYWdlSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBJbWFnZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQpIDogSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1l
czo6aW1hZ2UoKTsgfQorfTsKKworY2xhc3MgSXNJbmRleElucHV0VHlwZSA6IHB1YmxpYyBUZXh0
RmllbGRJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlw
ZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgSXNJbmRleElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgSXNJbmRleElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBlbXB0
eUF0b207IH0KK307CisKK2NsYXNzIE1vbnRoSW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElu
cHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVh
dGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBNb250aElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgTW9udGhJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50
KSA6IFRleHRGaWVsZElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6
Om1vbnRoKCk7IH0KK307CisKK2NsYXNzIE51bWJlcklucHV0VHlwZSA6IHB1YmxpYyBUZXh0Rmll
bGRJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4g
Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgTnVtYmVySW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBOdW1iZXJJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRF
bGVtZW50KSA6IFRleHRGaWVsZElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBl
TmFtZXM6Om51bWJlcigpOyB9Cit9OworCitjbGFzcyBQYXNzd29yZElucHV0VHlwZSA6IHB1Ymxp
YyBCYXNlVGV4dElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5w
dXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYXNzd29yZElucHV0VHlwZShpbnB1dEVsZW1lbnQp
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUGFzc3dvcmRJbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50KSA6IEJhc2VUZXh0SW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30K
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVy
biBJbnB1dFR5cGVOYW1lczo6cGFzc3dvcmQoKTsgfQorfTsKKworY2xhc3MgUmFkaW9JbnB1dFR5
cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJhZGlvSW5wdXRUeXBlKGlucHV0RWxlbWVudCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBSYWRpb0lucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dEVsZW1lbnQpIDogSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVO
YW1lczo6cmFkaW8oKTsgfQorfTsKKworY2xhc3MgUmFuZ2VJbnB1dFR5cGUgOiBwdWJsaWMgSW5w
dXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0
ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFJhbmdlSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBSYW5nZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQp
IDogSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6cmFuZ2UoKTsg
fQorfTsKKworY2xhc3MgUmVzZXRJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJl
c2V0SW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZXNl
dElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogSW5wdXRUeXBlKGlu
cHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUo
KSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6cmVzZXQoKTsgfQorfTsKKworY2xhc3Mg
U2VhcmNoSW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNlYXJjaElu
cHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2VhcmNoSW5w
dXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBCYXNlVGV4dElucHV0VHlw
ZShpbnB1dEVsZW1lbnQpIHt9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnNlYXJjaCgpOyB9Cit9OworCitj
bGFzcyBTdWJtaXRJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFN1Ym1pdElucHV0
VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3VibWl0SW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBJbnB1dFR5cGUoaW5wdXRFbGVt
ZW50KSB7fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpzdWJtaXQoKTsgfQorfTsKKworY2xhc3MgVGVsZXBo
b25lSW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRlbGVwaG9uZUlu
cHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVGVsZXBob25l
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBCYXNlVGV4dElucHV0
VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnRlbGVwaG9uZSgpOyB9Cit9
OworCitjbGFzcyBUZXh0SW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFRleHRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFRl
eHRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IEJhc2VUZXh0SW5w
dXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6dGV4dCgpOyB9Cit9Owor
CitjbGFzcyBUaW1lSW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElucHV0VHlwZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBU
aW1lSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUaW1l
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBUZXh0RmllbGRJbnB1
dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjp0aW1lKCk7IH0KK307CisK
K2NsYXNzIFVSTElucHV0VHlwZSA6IHB1YmxpYyBCYXNlVGV4dElucHV0VHlwZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVu
dCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVUkxJ
bnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFVSTElucHV0
VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogQmFzZVRleHRJbnB1dFR5cGUo
aW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjp1cmwoKTsgfQorfTsKKworY2xhc3Mg
V2Vla0lucHV0VHlwZSA6IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5cGUgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2Vla0lucHV0
VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2Vla0lucHV0VHlw
ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGlu
cHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUo
KSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6d2VlaygpOyB9Cit9OworCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBQYXNzT3duUHRyPElucHV0VHlwZT4gKCopKEhUTUxJbnB1dEVsZW1lbnQqKSwgQ2FzZUZv
bGRpbmdIYXNoPiBJbnB1dFR5cGVGYWN0b3J5TWFwOworc3RhdGljIFBhc3NPd25QdHI8SW5wdXRU
eXBlRmFjdG9yeU1hcD4gY3JlYXRlSW5wdXRUeXBlRmFjdG9yeU1hcCgpCit7CisgICAgT3duUHRy
PElucHV0VHlwZUZhY3RvcnlNYXA+IG1hcCA9IGFkb3B0UHRyKG5ldyBJbnB1dFR5cGVGYWN0b3J5
TWFwKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6YnV0dG9uKCksIEJ1dHRvbklucHV0
VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6Y2hlY2tib3goKSwg
Q2hlY2tib3hJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6
OmNvbG9yKCksIENvbG9ySW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlw
ZU5hbWVzOjpkYXRlKCksIERhdGVJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5w
dXRUeXBlTmFtZXM6OmRhdGV0aW1lKCksIERhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGUpOworICAg
IG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpkYXRldGltZWxvY2FsKCksIERhdGVUaW1lTG9jYWxJ
bnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmVtYWlsKCks
IEVtYWlsSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpm
aWxlKCksIEZpbGVJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFt
ZXM6OmhpZGRlbigpLCBIaWRkZW5JbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5w
dXRUeXBlTmFtZXM6OmltYWdlKCksIEltYWdlSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+
YWRkKElucHV0VHlwZU5hbWVzOjppc2luZGV4KCksIElzSW5kZXhJbnB1dFR5cGU6OmNyZWF0ZSk7
CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6Om1vbnRoKCksIE1vbnRoSW5wdXRUeXBlOjpj
cmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpudW1iZXIoKSwgTnVtYmVySW5w
dXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpwYXNzd29yZCgp
LCBQYXNzd29yZElucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1l
czo6cmFkaW8oKSwgUmFkaW9JbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRU
eXBlTmFtZXM6OnJhbmdlKCksIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRk
KElucHV0VHlwZU5hbWVzOjpyZXNldCgpLCBSZXNldElucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBt
YXAtPmFkZChJbnB1dFR5cGVOYW1lczo6c2VhcmNoKCksIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRl
KTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6c3VibWl0KCksIFN1Ym1pdElucHV0VHlw
ZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKCksIFRl
bGVwaG9uZUlucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6
dGltZSgpLCBUaW1lSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5h
bWVzOjp1cmwoKSwgVVJMSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlw
ZU5hbWVzOjp3ZWVrKCksIFdlZWtJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgLy8gTm8gbmVlZCB0
byByZWdpc3RlciAidGV4dCIgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdCB0eXBlLgorICAgIHJl
dHVybiBtYXAucmVsZWFzZSgpOworfQorCitQYXNzT3duUHRyPElucHV0VHlwZT4gSW5wdXRUeXBl
OjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGVOYW1lKQoreworICAgIHN0YXRpYyBjb25zdCBJbnB1dFR5cGVGYWN0b3J5TWFwKiBm
YWN0b3J5TWFwID0gY3JlYXRlSW5wdXRUeXBlRmFjdG9yeU1hcCgpLmxlYWtQdHIoKTsKKyAgICBQ
YXNzT3duUHRyPElucHV0VHlwZT4gKCpmYWN0b3J5KShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAg
ZmFjdG9yeSA9IGZhY3RvcnlNYXAtPmdldCh0eXBlTmFtZSk7CisgICAgaWYgKCFmYWN0b3J5KQor
ICAgICAgICBmYWN0b3J5ID0gVGV4dElucHV0VHlwZTo6Y3JlYXRlOworICAgIHJldHVybiBmYWN0
b3J5KGlucHV0RWxlbWVudCk7Cit9CisKK0lucHV0VHlwZTo6SW5wdXRUeXBlKEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCkgOiBtX2VsZW1lbnQoaW5wdXRFbGVtZW50KSB7fQorCitJbnB1
dFR5cGU6On5JbnB1dFR5cGUoKSB7fQorCitib29sIElucHV0VHlwZTo6aXNUZXh0RmllbGQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorCitib29sIElucHV0VHlwZTo6aXNUZXh0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK2Jvb2wgSW5wdXRUeXBlOjpwYXR0ZXJuTWlzbWF0Y2go
Y29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworbmFtZXNwYWNlIElucHV0
VHlwZU5hbWVzIHsKKworLy8gVGhlIHR5cGUgbmFtZXMgbXVzdCBiZSBsb3dlcmNhc2VkIGJlY2F1
c2UgdGhleSB3aWxsIGJlIHRoZSByZXR1cm4gdmFsdWVzIG9mCisvLyBpbnB1dC50eXBlIGFuZCBp
bnB1dC50eXBlIG11c3QgYmUgbG93ZXJjYXNlIGFjY29yZGluZyB0byBET00gTGV2ZWwgMi4KKwor
Y29uc3QgQXRvbWljU3RyaW5nJiBidXR0b24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBuYW1lLCAoImJ1dHRvbiIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwor
Y29uc3QgQXRvbWljU3RyaW5nJiBjaGVja2JveCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIG5hbWUsICgiY2hlY2tib3giKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9
CisKK2NvbnN0IEF0b21pY1N0cmluZyYgY29sb3IoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNvbG9yIikpOworICAgIHJldHVybiBuYW1lOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIGRhdGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGUiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGV0aW1lIikpOworICAgIHJldHVybiBuYW1lOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lbG9jYWwoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGV0aW1lLWxvY2FsIikpOworICAgIHJl
dHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIGVtYWlsKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJlbWFpbCIpKTsKKyAgICByZXR1
cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBmaWxlKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJmaWxlIikpOworICAgIHJldHVybiBu
YW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIGhpZGRlbigpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiaGlkZGVuIikpOworICAgIHJldHVybiBu
YW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJpbWFnZSIpKTsKKyAgICByZXR1cm4gbmFt
ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBpc2luZGV4KCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJraHRtbF9pc2luZGV4IikpOworICAgIHJl
dHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIG1vbnRoKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJtb250aCIpKTsKKyAgICByZXR1
cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoIm51bWJlciIpKTsKKyAgICByZXR1
cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBwYXNzd29yZCgpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgicGFzc3dvcmQiKSk7CisgICAg
cmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgcmFkaW8oKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInJhZGlvIikpOworICAgIHJl
dHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIHJhbmdlKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJyYW5nZSIpKTsKKyAgICByZXR1
cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiByZXNldCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgicmVzZXQiKSk7CisgICAgcmV0dXJu
IG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgc2VhcmNoKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJzZWFyY2giKSk7CisgICAgcmV0dXJu
IG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgc3VibWl0KCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJzdWJtaXQiKSk7CisgICAgcmV0dXJu
IG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgdGVsZXBob25lKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0ZWwiKSk7CisgICAgcmV0dXJu
IG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgdGV4dCgpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgidGV4dCIpKTsKKyAgICByZXR1cm4gbmFt
ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiB0aW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0aW1lIikpOworICAgIHJldHVybiBuYW1lOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIHVybCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIG5hbWUsICgidXJsIikpOworICAgIHJldHVybiBuYW1lOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIHdlZWsoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBuYW1lLCAoIndlZWsiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmU6OklucHVUeXBlTmFtZXMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgwYjA0MDc0OWI0ODBmMmY0ZTIyNWE5NzAyOWY4ZTU1
N2I4ODg5NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAt
MCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJbnB1dFR5cGVfaAorI2RlZmluZSBJbnB1dFR5cGVfaAorCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworCitjbGFzcyBJbnB1dFR5cGUgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVs
ZW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIH5JbnB1dFR5cGUoKTsK
KworICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBpc1RleHRUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGVOYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goY29u
c3QgU3RyaW5nJikgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBJbnB1dFR5cGUoSFRNTElucHV0
RWxlbWVudCopOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2VsZW1lbnQ7IH0KKworcHJpdmF0ZToKKyAgICAvLyBSYXcgcG9pbnRlciBiZWNhdXNlIHRo
ZSBIVE1MSW5wdXRFbGVtZW50IG9iamVjdCBvd25zIHRoaXMgSW5wdXRUeXBlIG9iamVjdC4KKyAg
ICBIVE1MSW5wdXRFbGVtZW50KiBtX2VsZW1lbnQ7Cit9OworCituYW1lc3BhY2UgSW5wdXRUeXBl
TmFtZXMgeworCitjb25zdCBBdG9taWNTdHJpbmcmIGJ1dHRvbigpOworY29uc3QgQXRvbWljU3Ry
aW5nJiBjaGVja2JveCgpOworY29uc3QgQXRvbWljU3RyaW5nJiBjb2xvcigpOworY29uc3QgQXRv
bWljU3RyaW5nJiBkYXRlKCk7Citjb25zdCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lKCk7Citjb25z
dCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lbG9jYWwoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgZW1h
aWwoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgZmlsZSgpOworY29uc3QgQXRvbWljU3RyaW5nJiBo
aWRkZW4oKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2UoKTsKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgaXNpbmRleCgpOworY29uc3QgQXRvbWljU3RyaW5nJiBtb250aCgpOworY29uc3QgQXRvbWlj
U3RyaW5nJiBudW1iZXIoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgcGFzc3dvcmQoKTsKK2NvbnN0
IEF0b21pY1N0cmluZyYgcmFkaW8oKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgcmFuZ2UoKTsKK2Nv
bnN0IEF0b21pY1N0cmluZyYgcmVzZXQoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgc2VhcmNoKCk7
Citjb25zdCBBdG9taWNTdHJpbmcmIHN1Ym1pdCgpOworY29uc3QgQXRvbWljU3RyaW5nJiB0ZWxl
cGhvbmUoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgdGV4dCgpOworY29uc3QgQXRvbWljU3RyaW5n
JiB0aW1lKCk7Citjb25zdCBBdG9taWNTdHJpbmcmIHVybCgpOworY29uc3QgQXRvbWljU3RyaW5n
JiB3ZWVrKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OklucHV0VHlwZU5hbWVzCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68651</attachid>
            <date>2010-09-23 23:20:22 -0700</date>
            <delta_ts>2010-09-28 03:33:26 -0700</delta_ts>
            <desc>Patch 3 (not separated yet)</desc>
            <filename>bug-45872-20100924152020.patch</filename>
            <type>text/plain</type>
            <size>49012</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBjYjMxMWU5ZDg5NjE4NGQ4NTU2NzFlNjM4OTVmNmRlNjBkOWJhNzA4Li41Yzk5ZjZkZmQxMjU2
Yzk3NjQ4MTE0MDFhNWM5ZDIwZDA2MTE1MmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNzksOCArMjc5LDkgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MVmlld1NvdXJjZURvY3Vt
ZW50LmNwcCBcCiAJaHRtbC9JbWFnZURhdGEuY3BwIFwKIAlodG1sL0ltYWdlRG9jdW1lbnQuY3Bw
IFwKLSAgaHRtbC9NZWRpYURvY3VtZW50LmNwcCBcCiAJaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwIFwKKwlodG1sL0lucHV0VHlwZS5jcHAgXAorCWh0bWwvTWVkaWFEb2N1bWVudC5jcHAgXAog
CWh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwIFwKIAlodG1sL1RleHREb2N1bWVudC5jcHAgXAogCWh0
bWwvVGltZVJhbmdlcy5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmFlZDhlZWJjODUwZDg0YzUyM2Q2ZjE1OTQw
MWY4ZTYwMTgwNWMzYy4uY2QzZjI3MGQxMjdkOGI4NWM2N2I2ZDkwYjE1YTYzZjk5OTUyZDg3MCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xMDMxLDYgKzEwMzEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRt
bC9JbWFnZURhdGEuY3BwCiAgICAgaHRtbC9JbWFnZURvY3VtZW50LmNwcAogICAgIGh0bWwvSW1h
Z2VSZXNpemVyVGhyZWFkLmNwcAorICAgIGh0bWwvSW5wdXRUeXBlLmNwcAogICAgIGh0bWwvTGFi
ZWxzTm9kZUxpc3QuY3BwCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmNwcAogICAgIGh0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGNhYTY4YWZjNDkzYTc5MmMyZTFiMDdlMDI1YzQ5MmQ1NzM1Yjk4NTku
LjAxMjJmMjJmZmY2NjFiYWFmZmYyYTQ1YThkNjEzMjUyODZmODIxNGIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc4IEBA
CisyMDEwLTA5LTIzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBIVE1MSW5w
dXRFbGVtZW50OiBJbnRyb2R1Y2luZyBJbnB1dFR5cGUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1ODcyCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIGJlY2F1c2UgdGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgYmVoYXZpb3IuCisKKyAgICAgICAg
KiBBbmRyb2lkLm1rOiBBZGQgSW5wdXRUeXBlLmNwcCBhbmQvb3IgSW5wdXRUeXBlLmguCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6IGRpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBk
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IGRpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
cHJvOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogZGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBkaXR0by4K
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudCk6CisgICAgICAgICAgSW5pdGlhbGl6
ZSBtX2lucHV0VHlwZSB3aXRoIHRoZSBkZWZhdWx0ICJ0ZXh0IiB0eXBlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogRGVsZWdhdGUgdG8gSW5w
dXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6
IFVwZGF0ZSBtX2lucHV0VHlwZSB3aXRoIG5ldyB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKTogRGVsZWdhdGUgdG8gSW5wdXRUeXBlLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aXNUZXh0RmllbGQpOiBkaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVGV4dFR5cGUpOiBkaXR0by4K
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0lucHV0
VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpU
ZXh0RmllbGRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
Ojppc1RleHRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlVGV4dElucHV0VHlwZTo6QmFz
ZVRleHRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVRleHRJbnB1dFR5cGU6Omlz
VGV4dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVRleHRJbnB1dFR5cGU6OnBhdHRlcm5N
aXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCdXR0b25JbnB1dFR5cGU6OkJ1dHRvbklucHV0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCdXR0b25JbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNoZWNrYm94SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2ti
b3hJbnB1dFR5cGU6OkNoZWNrYm94SW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoZWNr
Ym94SW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpDb2xvcklucHV0
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6dHlwZU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGVJbnB1dFR5cGU6OkRhdGVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUlu
cHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVJbnB1dFR5cGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUlucHV0VHlwZTo6RGF0ZVRpbWVJ
bnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVJbnB1dFR5cGU6OnR5cGVOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsSW5w
dXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnR5cGVO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkVtYWlsSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RW1haWxJbnB1dFR5cGU6OkVtYWlsSW5wdXRUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkVtYWlsSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Rmls
ZUlucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjp0eXBlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5JbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIaWRkZW5JbnB1dFR5cGU6OkhpZGRlbklucHV0VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpIaWRkZW5JbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJbnB1dFR5cGU6Oklt
YWdlSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjp0eXBlTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJc0luZGV4SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SXNJbmRleElucHV0VHlwZTo6SXNJbmRleElucHV0VHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpJc0luZGV4SW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb250aElucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRU
eXBlOjpNb250aElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb250aElucHV0VHlwZTo6
dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpOdW1iZXJJbnB1dFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXNzd29yZElucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3N3
b3JkSW5wdXRUeXBlOjpQYXNzd29yZElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXNz
d29yZElucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9JbnB1dFR5
cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0lucHV0VHlwZTo6UmFkaW9JbnB1
dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9JbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFuZ2VJbnB1dFR5cGU6OlJhbmdlSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNldElucHV0VHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc2V0SW5wdXRUeXBlOjpSZXNldElucHV0
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNldElucHV0VHlwZTo6dHlwZU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VhcmNoSW5wdXRUeXBlOjpTZWFyY2hJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJtaXRJbnB1
dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJtaXRJbnB1dFR5cGU6OlN1Ym1p
dElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJtaXRJbnB1dFR5cGU6OnR5cGVOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlbGVwaG9uZUlucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlbGVwaG9uZUlucHV0VHlwZTo6VGVsZXBob25lSW5wdXRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlbGVwaG9uZUlucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dElucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJ
bnB1dFR5cGU6OlRleHRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dElucHV0VHlw
ZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVJbnB1dFR5cGU6OlRpbWVJbnB1dFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VVJMSW5wdXRUeXBlOjpV
UkxJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VVJMSW5wdXRUeXBlOjp0eXBlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWVrSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2Vla0lucHV0VHlwZTo6V2Vla0lucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWVrSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbnB1dFR5
cGVGYWN0b3J5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGU6OklucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6On5J
bnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjppc1RleHRGaWVsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlzVGV4dFR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlOjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRU
eXBlTmFtZXM6OmJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6Y2hl
Y2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmNvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZU5hbWVzOjpkYXRldGltZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1l
czo6ZGF0ZXRpbWVsb2NhbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZW1h
aWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmhpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dFR5cGVOYW1lczo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Omlz
aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Om1vbnRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlTmFtZXM6OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjpyYWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZU5hbWVzOjpzZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBl
TmFtZXM6OnN1Ym1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBo
b25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OndlZWsp
OgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlOjplbGVtZW50KToKKworMjAxMC0wOS0yMSAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVmYWN0b3IgSFRNTElucHV0RWxlbWVudDogSW50cm9kdWNpbmcgSW5wdXRUeXBlIGNs
YXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTg3
MgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgZG9lc24ndCBjaGFuZ2UgYW55
IGJlaGF2aW9yLgorCisgICAgICAgICogQW5kcm9pZC5tazogQWRkIElucHV0VHlwZS5jcHAgYW5k
L29yIElucHV0VHlwZS5oLgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBkaXR0by4KKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBkaXR0
by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6IGRpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogZGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQp
OgorICAgICAgICAgIEluaXRpYWxpemUgbV9pbnB1dFR5cGUgd2l0aCB0aGUgZGVmYXVsdCAidGV4
dCIgdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhdHRlcm5NaXNt
YXRjaCk6IERlbGVnYXRlIHRvIElucHV0VHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OnVwZGF0ZVR5cGUpOiBVcGRhdGUgbV9pbnB1dFR5cGUgd2l0aCBuZXcgdHlwZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6IERl
bGVnYXRlIHRvIElucHV0VHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmlzVGV4dEZpZWxkKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
Ojppc1RleHRUeXBlKTogZGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlRleHRGaWVsZElucHV0VHlwZTo6VGV4dEZpZWxkSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRGaWVsZElucHV0VHlwZTo6aXNUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZVRleHRJbnB1dFR5cGU6OkJhc2VUZXh0SW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2VUZXh0SW5wdXRUeXBlOjppc1RleHRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VU
ZXh0SW5wdXRUeXBlOjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6QnV0dG9u
SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QnV0dG9uSW5wdXRUeXBlOjpC
dXR0b25JbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QnV0dG9uSW5wdXRUeXBlOjp0eXBl
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGVja2JveElucHV0VHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNoZWNrYm94SW5wdXRUeXBlOjpDaGVja2JveElucHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGVja2JveElucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xv
cklucHV0VHlwZTo6Q29sb3JJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1
dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpEYXRlSW5wdXRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRp
bWVJbnB1dFR5cGU6OkRhdGVUaW1lSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVU
aW1lSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2Fs
SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVMb2NhbElucHV0
VHlwZTo6RGF0ZVRpbWVMb2NhbElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGlt
ZUxvY2FsSW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFbWFpbElucHV0
VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtYWlsSW5wdXRUeXBlOjpFbWFpbElu
cHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpFbWFpbElucHV0VHlwZTo6dHlwZU5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGVJbnB1dFR5cGU6OkZpbGVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZUlucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SGlkZGVuSW5wdXRUeXBl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGlkZGVuSW5wdXRUeXBlOjpIaWRkZW5JbnB1
dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SGlkZGVuSW5wdXRUeXBlOjp0eXBlTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlSW5wdXRUeXBlOjpJbWFnZUlucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUlucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SXNJbmRleElucHV0
VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklzSW5kZXhJbnB1dFR5cGU6OklzSW5k
ZXhJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SXNJbmRleElucHV0VHlwZTo6dHlwZU5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb250aElucHV0VHlwZTo6TW9udGhJbnB1dFR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9udGhJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJl
cklucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6
TnVtYmVySW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6dHlw
ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzc3dvcmRJbnB1dFR5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXNzd29yZElucHV0VHlwZTo6UGFzc3dvcmRJbnB1dFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzc3dvcmRJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhZGlvSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFk
aW9JbnB1dFR5cGU6OlJhZGlvSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvSW5w
dXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpSYW5nZUlucHV0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzZXRJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNl
dElucHV0VHlwZTo6UmVzZXRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzZXRJbnB1
dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6U2VhcmNoSW5wdXRUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3VibWl0SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3VibWl0SW5wdXRUeXBlOjpTdWJtaXRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
bWl0SW5wdXRUeXBlOjp0eXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUZWxlcGhvbmVJbnB1
dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZWxlcGhvbmVJbnB1dFR5cGU6OlRl
bGVwaG9uZUlucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpUZWxlcGhvbmVJbnB1dFR5cGU6
OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJbnB1dFR5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0SW5wdXRUeXBlOjpUZXh0SW5wdXRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJbnB1dFR5cGU6OnR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWVJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lSW5wdXRUeXBlOjpU
aW1lSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVJbnB1dFR5cGU6OnR5cGVOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTElucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlVSTElucHV0VHlwZTo6VVJMSW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TElucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlZWtJbnB1dFR5cGU6OldlZWtJbnB1dFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6dHlwZU5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlSW5wdXRUeXBlRmFjdG9yeU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OklucHV0VHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6On5JbnB1dFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRUeXBlOjppc1RleHRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dFR5cGU6OmlzVGV4dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpwYXR0ZXJu
TWlzbWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmJ1dHRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6Y2hlY2tib3gpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlTmFtZXM6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlw
ZU5hbWVzOjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRldGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OmZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFt
ZXM6OmhpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6aW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmlzaW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlTmFtZXM6Om1vbnRoKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlw
ZU5hbWVzOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnBhc3N3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpyYWRpbyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpz
ZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjp0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OndlZWspOgorICAgICAgICAqIGh0bWwvSW5w
dXRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjplbGVtZW50KToK
KwogMjAxMC0wOS0yMyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDQ0YzcxYjUyZmY2ZGVhNzBhZjYyOWMx
Y2Y1NDAzM2VjMjgwYzA0NDYuLjAzNzY1NjkyYTRkOTMxNzcyODU3OWI0NTdlMzE1ZjY5YjllMjc0
OTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtMTYzMCw2ICsxNjMwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oIFwKIAlXZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVy
VGhyZWFkLmNwcCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5oIFwKKwlXZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBcCisJV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIFwKIAlX
ZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKIAlXZWJDb3JlL2h0bWwvTGFiZWxzTm9k
ZUxpc3QuaCBcCiAJV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTc2MmYy
YjNmOGE0OTU3NjI4NjQxMGY0MTI1MDVhNWMwMjgyNTUzZi4uYzIzYTY3OWMzMDc5ZjRkNjk4ZTUx
N2Q4MTdjYTBlOTEwMThlMTNjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE3MDIsNiArMTcwMiw4IEBACiAgICAgICAgICAg
ICAnaHRtbC9JbWFnZURvY3VtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VSZXNpemVy
VGhyZWFkLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCcsCisg
ICAgICAgICAgICAnaHRtbC9JbnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAgICdodG1sL0lucHV0
VHlwZS5oJywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmNwcCcsCiAgICAgICAg
ICAgICAnaHRtbC9MYWJlbHNOb2RlTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9j
dW1lbnQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dl
YkNvcmUucHJvCmluZGV4IGJjMWQzZGI4MGRlZDk0ZDdhMTQxYjU3M2U0NGZiY2EwYTgxMzY1ODYu
LjVkYTcxY2Y4ZDI2N2UzNzNmZGJiOTk5NDExNmYyM2M5YmI5YjU1ZjEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtOTI3LDYgKzky
Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvSW1hZ2VEYXRhLmNwcCBcCiAgICAgaHRtbC9J
bWFnZURvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIFwKKyAg
ICBodG1sL0lucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKICAg
ICBodG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKICAgICBodG1sL1BsdWdpbkRvY3VtZW50LmNwcCBc
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1NWM4ZDcyMDk2NjE1Njc2
ZTU1ZGM0NzkzMDk0NDgzMGRjZTQ2ZGZhLi45OWM0NThjMDk5ZmJkOWNkZmY0MDE0NTVhOTY4ZWJk
ODlhOGUwZDdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQyMjIx
LDYgKzQyMjIxLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxcSW5wdXRUeXBlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSW5wdXRUeXBlLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXExhYmVs
c05vZGVMaXN0LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNhYmUzZDM1ZjliYjc0M2IzZDg1OTI0MDEwMzk3
YzgyZTA5ZGY1NDIuLmFkYmE1OWU3NzZiZTFhOWE2YmYyMjA2NGNhNzQ4YmY2YmQ4ZjE5MzggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MjIsNiArODIy
LDggQEAKIAkJMzdDMjM4MjIxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3QzIzODIwMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5jcHAgKi87IH07CiAJCTM3QzI4QTY4MTBGNjU5Q0MwMDhDNzgxMyAvKiBUeXBlc2V0dGlu
Z0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzN0MyOEE2NzEwRjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3QzYxRjAxMTIw
OTVDODcwMDdBM0M2NyAvKiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M2MUYwMDEyMDk1Qzg3MDA3QTND
NjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oICovOyB9OworCQkzN0UzNTI0QjEyNDUw
QzUyMDBCQUY1RDkgLyogSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM1MjRBMTI0NTBDNTIwMEJBRjVEOSAvKiBJbnB1dFR5cGUu
Y3BwICovOyB9OworCQkzN0UzNTI0RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0UzNTI0QzEyNDUw
QzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdGODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVV
UkxSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdGODE4RkIwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3RjgxOEZFMEQ2
NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Y4MThGQzBENjU3NjA2MDA1RTFGMDUgLyog
V2ViQ29yZVVSTFJlc3BvbnNlLm1tICovOyB9OwogCQkzN0ZENDI5ODExODM2ODQ2MDA5M0MwMjkg
LyogVHJlZURlcHRoTGltaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3RkQ0Mjk3MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oICov
OyB9OwpAQCAtNjcxMCw2ICs2NzEyLDggQEAKIAkJMzdDMjM4MjAxMDk4Qzg0MjAwRUY5RjcyIC8q
IENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdDMjhBNjcxMEY2NTlDQzAwOEM3ODEzIC8qIFR5cGVz
ZXR0aW5nRmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZXNl
dHRpbmdGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0M2MUYwMDEy
MDk1Qzg3MDA3QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3RTM1MjRBMTI0NTBDNTIwMEJBRjVEOSAvKiBJbnB1
dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5wdXRUeXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdFMzUyNEMxMjQ1MEM2NjAwQkFG
NUQ5IC8qIElucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnB1
dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGODE4RkIwRDY1NzYwNjAw
NUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb3JlVVJMUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVVUkxSZXNwb25zZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGQzk2REExMTA0RUQ3MTAwM0UxRkFE
IC8qIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0NDAxLDYgKzE0NDA1LDggQEAKIAkJCQk5NzIwNUFCMjEyMzkyOTEw
MDBCMTczODAgLyogSW1hZ2VEb2N1bWVudC5oICovLAogCQkJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5
NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovLAogCQkJCUIwMTQ5RTdDMTFBNEIyMTUw
MDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLywKKwkJCQkzN0UzNTI0QTEyNDUwQzUy
MDBCQUY1RDkgLyogSW5wdXRUeXBlLmNwcCAqLywKKwkJCQkzN0UzNTI0QzEyNDUwQzY2MDBCQUY1
RDkgLyogSW5wdXRUeXBlLmggKi8sCiAJCQkJQTQ1NkZBMjQxMUFENEE4MzAwMjBCNDIwIC8qIExh
YmVsc05vZGVMaXN0LmNwcCAqLywKIAkJCQlBNDU2RkEyNTExQUQ0QTgzMDAyMEI0MjAgLyogTGFi
ZWxzTm9kZUxpc3QuaCAqLywKIAkJCQk5NzIwNUFCMzEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFE
b2N1bWVudC5jcHAgKi8sCkBAIC0xOTE4Myw2ICsxOTE4OSw3IEBACiAJCQkJQkNFNzg5MTYxMTIw
RDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VB
NDg1QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDg1OTFBQTUwRjA4NUM0RTAwOUJBQ0IxIC8qIElucHV0RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMzdFMzUyNEQxMjQ1MEM2NjAwQkFGNUQ5IC8qIElucHV0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTMzMDlERUEwOTlFNjQ5MjAwNTZFNTgxIC8qIEluc2VydEludG9UZXh0Tm9k
ZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REVDMDk5RTY0OTIwMDU2RTU4MSAv
KiBJbnNlcnRMaW5lQnJlYWtDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDdERUFCQTBB
MzY1NTRBMDBDQTMwRjggLyogSW5zZXJ0TGlzdENvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAt
MjE2ODQsNiArMjE2OTEsNyBAQAogCQkJCUE4Q0ZGNUU0MEExNTVBMDUwMDBBNDIzNCAvKiBJbmxp
bmVGbG93Qm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODU5MDk3RDkzMDIwMDk0QzlF
NCAvKiBJbmxpbmVUZXh0Qm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NzAwQkU3MEYwODZD
NTMwMDkxOTQxOSAvKiBJbnB1dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzdFMzUy
NEIxMjQ1MEM1MjAwQkFGNUQ5IC8qIElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzMwOURFOTA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MzMwOURFQjA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0TGlu
ZUJyZWFrQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMDdERUFCOTBBMzY1NTRBMDBD
QTMwRjggLyogSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKaW5kZXggYjA2YWEzNWI3ZGEwMmFjOTAzNDlhMmJlM2VmMzM3MTUxNjg4
M2E1OS4uYWIzZGNlNGM5ODJhMWMwYTUzNzBiYTFjZDM3OGUzZWEyYmNmNzI3ZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNl
cklkaW9tcy5oIgorI2luY2x1ZGUgIklucHV0VHlwZS5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZl
bnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgpAQCAtMTYxLDYgKzE2Miw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBt
X2F1dG9jb21wbGV0ZShVbmluaXRpYWxpemVkKQogICAgICwgbV9hdXRvZmlsbGVkKGZhbHNlKQog
ICAgICwgbV9pbml0ZWQoZmFsc2UpCisgICAgLCBtX2lucHV0VHlwZShJbnB1dFR5cGU6OmNyZWF0
ZVRleHQodGhpcykpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaW5wdXRUYWcpIHx8IGhhc1Rh
Z05hbWUoaXNpbmRleFRhZykpOwogfQpAQCAtMzQ1LDE3ICszNDcsNyBAQCBib29sIEhUTUxJbnB1
dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogCiBib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAogewotICAgIGlmICghaXNUZXh0VHlwZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBwYXR0ZXJuID0gZ2V0QXR0cmlidXRlKHBhdHRlcm5BdHRy
KTsKLSAgICAvLyBFbXB0eSB2YWx1ZXMgY2FuJ3QgYmUgbWlzbWF0Y2hlZAotICAgIGlmIChwYXR0
ZXJuLmlzRW1wdHkoKSB8fCB2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBSZWd1bGFyRXhwcmVzc2lvbiBwYXR0ZXJuUmVnRXhwKHBhdHRlcm4sIFRleHRDYXNlU2Vu
c2l0aXZlKTsKLSAgICBpbnQgbWF0Y2hMZW5ndGggPSAwOwotICAgIGludCB2YWx1ZUxlbmd0aCA9
IHZhbHVlLmxlbmd0aCgpOwotICAgIGludCBtYXRjaE9mZnNldCA9IHBhdHRlcm5SZWdFeHAubWF0
Y2godmFsdWUsIDAsICZtYXRjaExlbmd0aCk7Ci0gICAgcmV0dXJuIG1hdGNoT2Zmc2V0IHx8IG1h
dGNoTGVuZ3RoICE9IHZhbHVlTGVuZ3RoOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+cGF0dGVy
bk1pc21hdGNoKHZhbHVlKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKGNv
bnN0IFN0cmluZyYgdmFsdWUsIE5lZWRzVG9DaGVja0RpcnR5RmxhZyBjaGVjaykgY29uc3QKQEAg
LTkxMSw2ICs5MDMsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAg
ICAgICAgICAgYm9vbCB3YXNQYXNzd29yZEZpZWxkID0gZGVwcmVjYXRlZElucHV0VHlwZSgpID09
IFBBU1NXT1JEOwogICAgICAgICAgICAgYm9vbCBkaWRSZXNwZWN0SGVpZ2h0QW5kV2lkdGggPSBy
ZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRycygpOwogICAgICAgICAgICAgbV9kZXByZWNhdGVkVHlw
ZU51bWJlciA9IG5ld1R5cGU7CisgICAgICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6
Y3JlYXRlKHRoaXMsIHR5cGVTdHJpbmcpOwogICAgICAgICAgICAgc2V0TmVlZHNXaWxsVmFsaWRh
dGVDaGVjaygpOwogICAgICAgICAgICAgYm9vbCB3aWxsU3RvcmVWYWx1ZSA9IHN0b3Jlc1ZhbHVl
U2VwYXJhdGVGcm9tQXR0cmlidXRlKCk7CiAgICAgICAgICAgICBib29sIGlzUGFzc3dvcmRGaWVs
ZCA9IGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSA9PSBQQVNTV09SRDsKQEAgLTk1OSw0MiArOTUyLDkg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICAgICAgbV9pbWFnZUxv
YWRlci5jbGVhcigpOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBjcmVhdGVGb3Jt
Q29udHJvbFR5cGVzKCkKLXsKLSAgICBBdG9taWNTdHJpbmcqIHR5cGVzID0gbmV3IEF0b21pY1N0
cmluZ1tIVE1MSW5wdXRFbGVtZW50OjpkZXByZWNhdGVkTnVtYmVyT2ZUeXBlc107Ci0gICAgLy8g
VGhlIHZhbHVlcyBtdXN0IGJlIGxvd2VyY2FzZWQgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdGhlIHJl
dHVybiB2YWx1ZXMgb2YKLSAgICAvLyAgaW5wdXQudHlwZSBhbmQgaXQgbXVzdCBiZSBsb3dlcmNh
c2UgYWNjb3JkaW5nIHRvIERPTSBMZXZlbCAyLgotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6
OkJVVFRPTl0gPSAiYnV0dG9uIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpDSEVDS0JP
WF0gPSAiY2hlY2tib3giOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkNPTE9SXSA9ICJj
b2xvciI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6REFURV0gPSAiZGF0ZSI7Ci0gICAg
dHlwZXNbSFRNTElucHV0RWxlbWVudDo6REFURVRJTUVdID0gImRhdGV0aW1lIjsKLSAgICB0eXBl
c1tIVE1MSW5wdXRFbGVtZW50OjpEQVRFVElNRUxPQ0FMXSA9ICJkYXRldGltZS1sb2NhbCI7Ci0g
ICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6RU1BSUxdID0gImVtYWlsIjsKLSAgICB0eXBlc1tI
VE1MSW5wdXRFbGVtZW50OjpGSUxFXSA9ICJmaWxlIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVt
ZW50OjpISURERU5dID0gImhpZGRlbiI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6SU1B
R0VdID0gImltYWdlIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpJU0lOREVYXSA9IGVt
cHR5QXRvbTsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpNT05USF0gPSAibW9udGgiOwot
ICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6Ok5VTUJFUl0gPSAibnVtYmVyIjsKLSAgICB0eXBl
c1tIVE1MSW5wdXRFbGVtZW50OjpQQVNTV09SRF0gPSAicGFzc3dvcmQiOwotICAgIHR5cGVzW0hU
TUxJbnB1dEVsZW1lbnQ6OlJBRElPXSA9ICJyYWRpbyI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxl
bWVudDo6UkFOR0VdID0gInJhbmdlIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpSRVNF
VF0gPSAicmVzZXQiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlNFQVJDSF0gPSAic2Vh
cmNoIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpTVUJNSVRdID0gInN1Ym1pdCI7Ci0g
ICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6VEVMRVBIT05FXSA9ICJ0ZWwiOwotICAgIHR5cGVz
W0hUTUxJbnB1dEVsZW1lbnQ6OlRFWFRdID0gInRleHQiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVs
ZW1lbnQ6OlRJTUVdID0gInRpbWUiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlVSTF0g
PSAidXJsIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpXRUVLXSA9ICJ3ZWVrIjsKLSAg
ICByZXR1cm4gdHlwZXM7Ci19Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTElucHV0RWxlbWVu
dDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nKiBmb3JtQ29udHJvbFR5cGVzID0gY3JlYXRlRm9ybUNvbnRyb2xUeXBlcygpOwotICAgIHJl
dHVybiBmb3JtQ29udHJvbFR5cGVzW2RlcHJlY2F0ZWRJbnB1dFR5cGUoKV07CisgICAgcmV0dXJu
IG1faW5wdXRUeXBlLT50eXBlTmFtZSgpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNh
dmVGb3JtQ29udHJvbFN0YXRlKFN0cmluZyYgcmVzdWx0KSBjb25zdApAQCAtMTQ4MSw3MCArMTQ0
MSwxMiBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0KCkKIAogYm9vbCBIVE1MSW5wdXRF
bGVtZW50Ojppc1RleHRGaWVsZCgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChkZXByZWNhdGVkSW5w
dXRUeXBlKCkpIHsKLSAgICBjYXNlIENPTE9SOgotICAgIGNhc2UgREFURToKLSAgICBjYXNlIERB
VEVUSU1FOgotICAgIGNhc2UgREFURVRJTUVMT0NBTDoKLSAgICBjYXNlIEVNQUlMOgotICAgIGNh
c2UgSVNJTkRFWDoKLSAgICBjYXNlIE1PTlRIOgotICAgIGNhc2UgTlVNQkVSOgotICAgIGNhc2Ug
UEFTU1dPUkQ6Ci0gICAgY2FzZSBTRUFSQ0g6Ci0gICAgY2FzZSBURUxFUEhPTkU6Ci0gICAgY2Fz
ZSBURVhUOgotICAgIGNhc2UgVElNRToKLSAgICBjYXNlIFVSTDoKLSAgICBjYXNlIFdFRUs6Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQlVUVE9OOgotICAgIGNhc2UgQ0hFQ0tCT1g6
Ci0gICAgY2FzZSBGSUxFOgotICAgIGNhc2UgSElEREVOOgotICAgIGNhc2UgSU1BR0U6Ci0gICAg
Y2FzZSBSQURJTzoKLSAgICBjYXNlIFJBTkdFOgotICAgIGNhc2UgUkVTRVQ6Ci0gICAgY2FzZSBT
VUJNSVQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+aXNUZXh0
RmllbGQoKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1RleHRUeXBlKCkgY29uc3QK
IHsKLSAgICBzd2l0Y2ggKGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSkgewotICAgIGNhc2UgRU1BSUw6
Ci0gICAgY2FzZSBQQVNTV09SRDoKLSAgICBjYXNlIFNFQVJDSDoKLSAgICBjYXNlIFRFTEVQSE9O
RToKLSAgICBjYXNlIFRFWFQ6Ci0gICAgY2FzZSBVUkw6Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGNhc2UgQlVUVE9OOgotICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAgY2FzZSBDT0xPUjoKLSAg
ICBjYXNlIERBVEU6Ci0gICAgY2FzZSBEQVRFVElNRToKLSAgICBjYXNlIERBVEVUSU1FTE9DQUw6
Ci0gICAgY2FzZSBGSUxFOgotICAgIGNhc2UgSElEREVOOgotICAgIGNhc2UgSU1BR0U6Ci0gICAg
Y2FzZSBJU0lOREVYOgotICAgIGNhc2UgTU9OVEg6Ci0gICAgY2FzZSBOVU1CRVI6Ci0gICAgY2Fz
ZSBSQURJTzoKLSAgICBjYXNlIFJBTkdFOgotICAgIGNhc2UgUkVTRVQ6Ci0gICAgY2FzZSBTVUJN
SVQ6Ci0gICAgY2FzZSBUSU1FOgotICAgIGNhc2UgV0VFSzoKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pc1RleHRUeXBlKCk7CiB9CiAKIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6c2V0Q2hlY2tlZChib29sIG5vd0NoZWNrZWQsIGJvb2wgc2VuZENoYW5nZUV2ZW50
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZTA2OGM4Y2I2NzZmNGY0NjMyY2YxNjc2Yjhi
ODA3ZGUyMGNhNDU5Yi4uODhlMmJmNzc0MmI4ZjhkOWIxYThkOTJkMTU0MTFjYWRhMjc2OTJjMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIEZpbGVMaXN0
OwogY2xhc3MgSFRNTERhdGFMaXN0RWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIGNs
YXNzIEhUTUxPcHRpb25FbGVtZW50OworY2xhc3MgSW5wdXRUeXBlOwogY2xhc3MgS1VSTDsKIGNs
YXNzIFZpc2libGVTZWxlY3Rpb247CiAKQEAgLTY1LDkgKzY2LDcgQEAgcHVibGljOgogICAgICAg
ICBNT05USCwKICAgICAgICAgVElNRSwKICAgICAgICAgV0VFSywKLSAgICAgICAgLy8gSWYgeW91
IGFkZCBuZXcgdHlwZXMgb3IgY2hhbmdlIHRoZSBvcmRlciBvZiBlbnVtIHZhbHVlcywgdXBkYXRl
IGRlcHJlY2F0ZWROdW1iZXJPZlR5cGVzIGJlbG93LgogICAgIH07Ci0gICAgc3RhdGljIGNvbnN0
IGludCBkZXByZWNhdGVkTnVtYmVyT2ZUeXBlcyA9IFdFRUsgKyAxOwogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxJbnB1dEVsZW1l
bnQoKTsKQEAgLTM3NSw2ICszNzQsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShEQVRBTElTVCkK
ICAgICBib29sIG1faGFzTm9uRW1wdHlMaXN0IDogMTsKICNlbmRpZgorICAgIE93blB0cjxJbnB1
dFR5cGU+IG1faW5wdXRUeXBlOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NTUwMWRlOWUzNTA1ZThhYjUxZmM2OTRiZmE1MmU4MWZjOGZkNjRjCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTAsMCArMSw1ODQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAq
ICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5
IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVl
bCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW5wdXRUeXBlLmgiCisKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCisvLyBCYXNl
IHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFRoZSBjbGFzcyBy
ZXByZXNlbnRzIHR5cGVzIG9mIHdoaWNoIFVJIGNvbnRhaW4gdGV4dCBmaWVsZHMuCisvLyBJdCBz
dXBwb3J0cyBub3Qgb25seSB0aGUgdHlwZXMgZm9yIEJhc2VUZXh0SW5wdXRUeXBlIGJ1dCBhbHNv
IHR5cGU9bnVtYmVyLgorY2xhc3MgVGV4dEZpZWxkSW5wdXRUeXBlIDogcHVibGljIElucHV0VHlw
ZSB7CitwdWJsaWM6CisgICAgVGV4dEZpZWxkSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0RWxlbWVudCkgOiBJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwgYm9v
bCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KK307CisKKy8vIEJhc2Ugb2Yg
ZW1haWwsIHBhc3N3b3JkLCBzZWFyY2gsIHRlbCwgdGV4dCwgYW5kIFVSTCB0eXBlcy4KKy8vIFRo
ZXkgc3VwcG9ydCBtYXhsZW5ndGgsIHNlbGVjdGlvbiBmdW5jdGlvbnMsIGFuZCBzbyBvbi4KK2Ns
YXNzIEJhc2VUZXh0SW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElucHV0VHlwZSB7CitwdWJs
aWM6CisgICAgQmFzZVRleHRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50
KSA6IFRleHRGaWVsZElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgdmlydHVhbCBib29s
IGlzVGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHBh
dHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKK307CisKK2Jvb2wgQmFz
ZVRleHRJbnB1dFR5cGU6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25z
dAoreworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGF0dGVybiA9IGVsZW1lbnQoKS0+Z2V0QXR0
cmlidXRlKHBhdHRlcm5BdHRyKTsKKyAgICAvLyBFbXB0eSB2YWx1ZXMgY2FuJ3QgYmUgbWlzbWF0
Y2hlZAorICAgIGlmIChwYXR0ZXJuLmlzRW1wdHkoKSB8fCB2YWx1ZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBSZWd1bGFyRXhwcmVzc2lvbiBwYXR0ZXJuUmVnRXhwKHBh
dHRlcm4sIFRleHRDYXNlU2Vuc2l0aXZlKTsKKyAgICBpbnQgbWF0Y2hMZW5ndGggPSAwOworICAg
IGludCB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOworICAgIGludCBtYXRjaE9mZnNldCA9
IHBhdHRlcm5SZWdFeHAubWF0Y2godmFsdWUsIDAsICZtYXRjaExlbmd0aCk7CisgICAgcmV0dXJu
IG1hdGNoT2Zmc2V0IHx8IG1hdGNoTGVuZ3RoICE9IHZhbHVlTGVuZ3RoOworfQorCisvLyBDb25j
cmV0ZSB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBCdXR0
b25JbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEJ1dHRvbklucHV0VHlwZShpbnB1
dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnV0dG9uSW5wdXRUeXBlKEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IElucHV0VHlwZU5hbWVzOjpidXR0b24oKTsgfQorfTsKKworY2xhc3MgQ2hlY2tib3hJbnB1dFR5
cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENoZWNrYm94SW5wdXRUeXBlKGlucHV0RWxlbWVu
dCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDaGVja2JveElucHV0VHlwZShIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dEVsZW1lbnQpIDogSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1
dFR5cGVOYW1lczo6Y2hlY2tib3goKTsgfQorfTsKKworY2xhc3MgQ29sb3JJbnB1dFR5cGUgOiBw
dWJsaWMgSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5
cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENvbG9ySW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBDb2xvcklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnQpIDogSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6
Y29sb3IoKTsgfQorfTsKKworY2xhc3MgRGF0ZUlucHV0VHlwZSA6IHB1YmxpYyBUZXh0RmllbGRJ
bnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3Jl
YXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgRGF0ZUlucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgRGF0ZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQp
IDogVGV4dEZpZWxkSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6
ZGF0ZSgpOyB9Cit9OworCitjbGFzcyBEYXRlVGltZUlucHV0VHlwZSA6IHB1YmxpYyBUZXh0Rmll
bGRJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4g
Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgRGF0ZVRpbWVJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIERhdGVUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0RWxlbWVudCkgOiBUZXh0RmllbGRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0
VHlwZU5hbWVzOjpkYXRldGltZSgpOyB9Cit9OworCitjbGFzcyBEYXRlVGltZUxvY2FsSW5wdXRU
eXBlIDogcHVibGljIFRleHRGaWVsZElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRlVGltZUxvY2FsSW5wdXRU
eXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEYXRlVGltZUxvY2Fs
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBUZXh0RmllbGRJbnB1
dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpkYXRldGltZWxvY2FsKCk7
IH0KK307CisKK2NsYXNzIEVtYWlsSW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1M
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEVtYWlsSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBFbWFpbElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogQmFz
ZVRleHRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjplbWFpbCgp
OyB9Cit9OworCitjbGFzcyBGaWxlSW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBG
aWxlSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGaWxl
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBJbnB1dFR5cGUoaW5w
dXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpmaWxlKCk7IH0KK307CisKK2NsYXNzIEhp
ZGRlbklucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSGlkZGVuSW5wdXRUeXBlKGlu
cHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBIaWRkZW5JbnB1dFR5cGUoSFRN
TElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IElucHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1
cm4gSW5wdXRUeXBlTmFtZXM6OmhpZGRlbigpOyB9Cit9OworCitjbGFzcyBJbWFnZUlucHV0VHlw
ZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
cHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW1hZ2VJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIEltYWdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCkgOiBJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5h
bWVzOjppbWFnZSgpOyB9Cit9OworCitjbGFzcyBJc0luZGV4SW5wdXRUeXBlIDogcHVibGljIFRl
eHRGaWVsZElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRU
eXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJc0luZGV4SW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBJc0luZGV4SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCkgOiBUZXh0RmllbGRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGVt
cHR5QXRvbTsgfQorfTsKKworY2xhc3MgTW9udGhJbnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZpZWxk
SW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNy
ZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IE1vbnRoSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBNb250aElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1l
czo6bW9udGgoKTsgfQorfTsKKworY2xhc3MgTnVtYmVySW5wdXRUeXBlIDogcHVibGljIFRleHRG
aWVsZElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBl
PiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBOdW1iZXJJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIE51bWJlcklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5
cGVOYW1lczo6bnVtYmVyKCk7IH0KK307CisKK2NsYXNzIFBhc3N3b3JkSW5wdXRUeXBlIDogcHVi
bGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhc3N3b3JkSW5wdXRUeXBlKGlucHV0RWxlbWVu
dCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBQYXNzd29yZElucHV0VHlwZShIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dEVsZW1lbnQpIDogQmFzZVRleHRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7
fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIElucHV0VHlwZU5hbWVzOjpwYXNzd29yZCgpOyB9Cit9OworCitjbGFzcyBSYWRpb0lucHV0
VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmFkaW9JbnB1dFR5cGUoaW5wdXRFbGVtZW50
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJhZGlvSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudCkgOiBJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlw
ZU5hbWVzOjpyYWRpbygpOyB9Cit9OworCitjbGFzcyBSYW5nZUlucHV0VHlwZSA6IHB1YmxpYyBJ
bnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3Jl
YXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgUmFuZ2VJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIFJhbmdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCkgOiBJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpyYW5nZSgp
OyB9Cit9OworCitjbGFzcyBSZXNldElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
UmVzZXRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJl
c2V0SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBJbnB1dFR5cGUo
aW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpyZXNldCgpOyB9Cit9OworCitjbGFz
cyBTZWFyY2hJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZVRleHRJbnB1dFR5cGUgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2VhcmNo
SW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTZWFyY2hJ
bnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IEJhc2VUZXh0SW5wdXRU
eXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6c2VhcmNoKCk7IH0KK307CisK
K2NsYXNzIFN1Ym1pdElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU3VibWl0SW5w
dXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdWJtaXRJbnB1
dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IElucHV0VHlwZShpbnB1dEVs
ZW1lbnQpIHt9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVOYW1lKCkgY29u
c3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCgpOyB9Cit9OworCitjbGFzcyBUZWxl
cGhvbmVJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZVRleHRJbnB1dFR5cGUgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGVsZXBob25l
SW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUZWxlcGhv
bmVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IEJhc2VUZXh0SW5w
dXRUeXBlKGlucHV0RWxlbWVudCkge30KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKCk7IH0K
K307CisKK2NsYXNzIFRleHRJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZVRleHRJbnB1dFR5cGUgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgVGV4dElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
VGV4dElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIDogQmFzZVRleHRJ
bnB1dFR5cGUoaW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjp0ZXh0KCk7IH0KK307
CisKK2NsYXNzIFRpbWVJbnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZpZWxkSW5wdXRUeXBlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFRpbWVJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFRp
bWVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IFRleHRGaWVsZElu
cHV0VHlwZShpbnB1dEVsZW1lbnQpIHt9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnRpbWUoKTsgfQorfTsK
KworY2xhc3MgVVJMSW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dEVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVS
TElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVVJMSW5w
dXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBCYXNlVGV4dElucHV0VHlw
ZShpbnB1dEVsZW1lbnQpIHt9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnVybCgpOyB9Cit9OworCitjbGFz
cyBXZWVrSW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElucHV0VHlwZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWVrSW5w
dXRUeXBlKGlucHV0RWxlbWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWVrSW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkgOiBUZXh0RmllbGRJbnB1dFR5cGUo
aW5wdXRFbGVtZW50KSB7fQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjp3ZWVrKCk7IH0KK307CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFBhc3NPd25QdHI8SW5wdXRUeXBlPiAoKikoSFRNTElucHV0RWxlbWVudCopLCBDYXNlRm9sZGlu
Z0hhc2g+IElucHV0VHlwZUZhY3RvcnlNYXA7CitzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGVG
YWN0b3J5TWFwPiBjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFwKCkKK3sKKyAgICBPd25QdHI8SW5w
dXRUeXBlRmFjdG9yeU1hcD4gbWFwID0gYWRvcHRQdHIobmV3IElucHV0VHlwZUZhY3RvcnlNYXAp
OworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpidXR0b24oKSwgQnV0dG9uSW5wdXRUeXBl
OjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpjaGVja2JveCgpLCBDaGVj
a2JveElucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6Y29s
b3IoKSwgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFt
ZXM6OmRhdGUoKSwgRGF0ZUlucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5
cGVOYW1lczo6ZGF0ZXRpbWUoKSwgRGF0ZVRpbWVJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFw
LT5hZGQoSW5wdXRUeXBlTmFtZXM6OmRhdGV0aW1lbG9jYWwoKSwgRGF0ZVRpbWVMb2NhbElucHV0
VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZW1haWwoKSwgRW1h
aWxJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmZpbGUo
KSwgRmlsZUlucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6
aGlkZGVuKCksIEhpZGRlbklucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5
cGVOYW1lczo6aW1hZ2UoKSwgSW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQo
SW5wdXRUeXBlTmFtZXM6OmlzaW5kZXgoKSwgSXNJbmRleElucHV0VHlwZTo6Y3JlYXRlKTsKKyAg
ICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6bW9udGgoKSwgTW9udGhJbnB1dFR5cGU6OmNyZWF0
ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6Om51bWJlcigpLCBOdW1iZXJJbnB1dFR5
cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnBhc3N3b3JkKCksIFBh
c3N3b3JkSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpy
YWRpbygpLCBSYWRpb0lucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVO
YW1lczo6cmFuZ2UoKSwgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5w
dXRUeXBlTmFtZXM6OnJlc2V0KCksIFJlc2V0SW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+
YWRkKElucHV0VHlwZU5hbWVzOjpzZWFyY2goKSwgU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGUpOwor
ICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpzdWJtaXQoKSwgU3VibWl0SW5wdXRUeXBlOjpj
cmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjp0ZWxlcGhvbmUoKSwgVGVsZXBo
b25lSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjp0aW1l
KCksIFRpbWVJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6
OnVybCgpLCBVUkxJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFt
ZXM6OndlZWsoKSwgV2Vla0lucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICAvLyBObyBuZWVkIHRvIHJl
Z2lzdGVyICJ0ZXh0IiBiZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0IHR5cGUuCisgICAgcmV0dXJu
IG1hcC5yZWxlYXNlKCk7Cit9CisKK1Bhc3NPd25QdHI8SW5wdXRUeXBlPiBJbnB1dFR5cGU6OmNy
ZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZU5hbWUpCit7CisgICAgc3RhdGljIGNvbnN0IElucHV0VHlwZUZhY3RvcnlNYXAqIGZhY3Rv
cnlNYXAgPSBjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFwKCkubGVha1B0cigpOworICAgIFBhc3NP
d25QdHI8SW5wdXRUeXBlPiAoKmZhY3RvcnkpKEhUTUxJbnB1dEVsZW1lbnQqKSA9IGZhY3RvcnlN
YXAtPmdldCh0eXBlTmFtZSk7CisgICAgaWYgKCFmYWN0b3J5KQorICAgICAgICBmYWN0b3J5ID0g
VGV4dElucHV0VHlwZTo6Y3JlYXRlOworICAgIHJldHVybiBmYWN0b3J5KGlucHV0RWxlbWVudCk7
Cit9CisKK1Bhc3NPd25QdHI8SW5wdXRUeXBlPiBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoSFRNTElu
cHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQoreworICAgIHJldHVybiBUZXh0SW5wdXRUeXBlOjpj
cmVhdGUoaW5wdXRFbGVtZW50KTsKK30KKworSW5wdXRUeXBlOjpJbnB1dFR5cGUoSFRNTElucHV0
RWxlbWVudCogaW5wdXRFbGVtZW50KSA6IG1fZWxlbWVudChpbnB1dEVsZW1lbnQpCit7Cit9CisK
K0lucHV0VHlwZTo6fklucHV0VHlwZSgpCit7Cit9CisKK2Jvb2wgSW5wdXRUeXBlOjppc1RleHRG
aWVsZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElucHV0VHlwZTo6
aXNUZXh0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElucHV0
VHlwZTo6cGF0dGVybk1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCituYW1lc3BhY2UgSW5wdXRUeXBlTmFtZXMgeworCisvLyBUaGUgdHlwZSBu
YW1lcyBtdXN0IGJlIGxvd2VyY2FzZWQgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdGhlIHJldHVybiB2
YWx1ZXMgb2YKKy8vIGlucHV0LnR5cGUgYW5kIGlucHV0LnR5cGUgbXVzdCBiZSBsb3dlcmNhc2Ug
YWNjb3JkaW5nIHRvIERPTSBMZXZlbCAyLgorCitjb25zdCBBdG9taWNTdHJpbmcmIGJ1dHRvbigp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiYnV0dG9u
IikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIGNoZWNrYm94
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJjaGVj
a2JveCIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBjb2xv
cigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiY29s
b3IiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgZGF0ZSgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiZGF0ZSIp
KTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBkYXRldGltZSgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiZGF0ZXRp
bWUiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRp
bWVsb2NhbCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUs
ICgiZGF0ZXRpbWUtbG9jYWwiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgZW1haWwoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBuYW1lLCAoImVtYWlsIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIGZpbGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBu
YW1lLCAoImZpbGUiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgaGlkZGVuKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJoaWRkZW4iKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgaW1hZ2UoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1l
LCAoImltYWdlIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IGlzaW5kZXgoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1l
LCAoImtodG1sX2lzaW5kZXgiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgbW9udGgoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBuYW1lLCAoIm1vbnRoIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIG51bWJlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IG5hbWUsICgibnVtYmVyIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIHBhc3N3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJwYXNzd29yZCIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRv
bWljU3RyaW5nJiByYWRpbygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIG5hbWUsICgicmFkaW8iKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgcmFuZ2UoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBuYW1lLCAoInJhbmdlIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIHJlc2V0KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmFtZSwgKCJyZXNldCIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBzZWFyY2goKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBu
YW1lLCAoInNlYXJjaCIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBzdWJtaXQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBu
YW1lLCAoInN1Ym1pdCIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiB0ZWxlcGhvbmUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBuYW1lLCAoInRlbCIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiB0ZXh0KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJ0ZXh0IikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IHRpbWUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAo
InRpbWUiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgdXJs
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ1cmwi
KSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgd2VlaygpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgid2VlayIpKTsK
KyAgICByZXR1cm4gbmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6SW5wdVR5cGVO
YW1lcworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDFm
NzNjOTAzMjk3YTJkMmM4MDM2Y2FjNjM4MTZhZjNlMmM4MTBiCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElucHV0VHlw
ZV9oCisjZGVmaW5lIElucHV0VHlwZV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEhUTUxJbnB1dEVsZW1lbnQ7CisKK2NsYXNzIElucHV0VHlwZSA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRN
TElucHV0RWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHN0YXRpYyBQYXNzT3du
UHRyPElucHV0VHlwZT4gY3JlYXRlVGV4dChIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgdmlydHVh
bCB+SW5wdXRUeXBlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlTmFtZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBw
YXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBJ
bnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCopOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KKworcHJpdmF0ZToKKyAgICAvLyBSYXcg
cG9pbnRlciBiZWNhdXNlIHRoZSBIVE1MSW5wdXRFbGVtZW50IG9iamVjdCBvd25zIHRoaXMgSW5w
dXRUeXBlIG9iamVjdC4KKyAgICBIVE1MSW5wdXRFbGVtZW50KiBtX2VsZW1lbnQ7Cit9OworCitu
YW1lc3BhY2UgSW5wdXRUeXBlTmFtZXMgeworCitjb25zdCBBdG9taWNTdHJpbmcmIGJ1dHRvbigp
OworY29uc3QgQXRvbWljU3RyaW5nJiBjaGVja2JveCgpOworY29uc3QgQXRvbWljU3RyaW5nJiBj
b2xvcigpOworY29uc3QgQXRvbWljU3RyaW5nJiBkYXRlKCk7Citjb25zdCBBdG9taWNTdHJpbmcm
IGRhdGV0aW1lKCk7Citjb25zdCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lbG9jYWwoKTsKK2NvbnN0
IEF0b21pY1N0cmluZyYgZW1haWwoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgZmlsZSgpOworY29u
c3QgQXRvbWljU3RyaW5nJiBoaWRkZW4oKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2UoKTsK
K2NvbnN0IEF0b21pY1N0cmluZyYgaXNpbmRleCgpOworY29uc3QgQXRvbWljU3RyaW5nJiBtb250
aCgpOworY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYg
cGFzc3dvcmQoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgcmFkaW8oKTsKK2NvbnN0IEF0b21pY1N0
cmluZyYgcmFuZ2UoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgcmVzZXQoKTsKK2NvbnN0IEF0b21p
Y1N0cmluZyYgc2VhcmNoKCk7Citjb25zdCBBdG9taWNTdHJpbmcmIHN1Ym1pdCgpOworY29uc3Qg
QXRvbWljU3RyaW5nJiB0ZWxlcGhvbmUoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgdGV4dCgpOwor
Y29uc3QgQXRvbWljU3RyaW5nJiB0aW1lKCk7Citjb25zdCBBdG9taWNTdHJpbmcmIHVybCgpOwor
Y29uc3QgQXRvbWljU3RyaW5nJiB3ZWVrKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6Oklu
cHV0VHlwZU5hbWVzCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69035</attachid>
            <date>2010-09-28 03:33:32 -0700</date>
            <delta_ts>2010-09-28 10:18:01 -0700</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-45872-20100928193330.patch</filename>
            <type>text/plain</type>
            <size>209429</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBjYjMxMWU5ZDg5NjE4NGQ4NTU2NzFlNjM4OTVmNmRlNjBkOWJhNzA4Li43MDQ3ZTdlODdiY2Nl
ZTZlZTU4NzJiYzgxMThiMWFlOTM0YjgzOGQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNjEsOSArMjYxLDE4IEBAIExPQ0FMX1NS
Q19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5
SXRlbUFuZHJvaWQuY3BwIFwKIAlcCiAJaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAorCWh0
bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwIFwKKwlodG1sL0J1dHRvbklucHV0VHlwZS5jcHAgXAor
CWh0bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwIFwKIAlodG1sL0NvbGxlY3Rpb25DYWNoZS5jcHAg
XAogCWh0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcCBcCisJaHRtbC9Db2xvcklucHV0
VHlwZS5jcHAgXAogCWh0bWwvRE9NRm9ybURhdGEuY3BwIFwKKwlodG1sL0RhdGVJbnB1dFR5cGUu
Y3BwIFwKKwlodG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcCBcCisJaHRtbC9EYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmNwcCBcCisJaHRtbC9FbWFpbElucHV0VHlwZS5jcHAgXAorCWh0bWwvRmlsZUlu
cHV0VHlwZS5jcHAgXAogCWh0bWwvRm9ybURhdGFMaXN0LmNwcCBcCiAJaHRtbC9IVE1MQWxsQ29s
bGVjdGlvbi5jcHAgXAogCWh0bWwvSFRNTENvbGxlY3Rpb24uY3BwIFwKQEAgLTI3NywxNCArMjg2
LDMyIEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWh0bWwvSFRN
TFBhcnNlckVycm9yQ29kZXMuY3BwIFwKIAlodG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNw
cCBcCiAJaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBcCisJaHRtbC9IaWRkZW5JbnB1
dFR5cGUuY3BwIFwKIAlodG1sL0ltYWdlRGF0YS5jcHAgXAogCWh0bWwvSW1hZ2VEb2N1bWVudC5j
cHAgXAotICBodG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKKwlodG1sL0ltYWdlSW5wdXRUeXBlLmNw
cCBcCiAJaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIFwKKwlodG1sL0lucHV0VHlwZS5jcHAg
XAorCWh0bWwvSXNJbmRleElucHV0VHlwZS5jcHAgXAorCWh0bWwvTWVkaWFEb2N1bWVudC5jcHAg
XAorCWh0bWwvTW9udGhJbnB1dFR5cGUuY3BwIFwKKwlodG1sL051bWJlcklucHV0VHlwZS5jcHAg
XAorCWh0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwIFwKIAlodG1sL1BsdWdpbkRvY3VtZW50LmNw
cCBcCisJaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAgXAorCWh0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
IFwKKwlodG1sL1Jlc2V0SW5wdXRUeXBlLmNwcCBcCisJaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3Bw
IFwKKwlodG1sL1N1Ym1pdElucHV0VHlwZS5jcHAgXAorCWh0bWwvVGVsZXBob25lSW5wdXRUeXBl
LmNwcCBcCiAJaHRtbC9UZXh0RG9jdW1lbnQuY3BwIFwKKwlodG1sL1RleHRGaWVsZElucHV0VHlw
ZS5jcHAgXAorCWh0bWwvVGV4dElucHV0VHlwZS5jcHAgXAorCWh0bWwvVGltZUlucHV0VHlwZS5j
cHAgXAogCWh0bWwvVGltZVJhbmdlcy5jcHAgXAorCWh0bWwvVVJMSW5wdXRUeXBlLmNwcCBcCiAJ
aHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCisJaHRtbC9XZWVrSW5wdXRUeXBlLmNwcCBcCiAJXAog
CWh0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcCBcCiAJaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDUwZjY0Y2Y1OTMwMGVhYTBmYzk1MDlkZjY2NTYwNzFjMzdmY2I0
ZmMuLmI4OTAxNWJhNDBkODYwYjE3NGM4ZjdlNmViMWNkMWJjNDcwNjc5MzYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
OTQwLDE0ICs5NDAsMjMgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGhpc3RvcnkvUGFnZUNh
Y2hlLmNwcAogCiAgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAKKyAgICBodG1sL0Jhc2VU
ZXh0SW5wdXRUeXBlLmNwcAorICAgIGh0bWwvQnV0dG9uSW5wdXRUeXBlLmNwcAorICAgIGh0bWwv
Q2hlY2tib3hJbnB1dFR5cGUuY3BwCiAgICAgaHRtbC9Db2xsZWN0aW9uQ2FjaGUuY3BwCisgICAg
aHRtbC9Db2xvcklucHV0VHlwZS5jcHAKICAgICBodG1sL0RPTURhdGFHcmlkRGF0YVNvdXJjZS5j
cHAKICAgICBodG1sL0RPTUZvcm1EYXRhLmNwcAogICAgIGh0bWwvRE9NVG9rZW5MaXN0LmNwcAog
ICAgIGh0bWwvRGF0YUdyaWRDb2x1bW4uY3BwCiAgICAgaHRtbC9EYXRhR3JpZENvbHVtbkxpc3Qu
Y3BwCiAgICAgaHRtbC9EYXRlQ29tcG9uZW50cy5jcHAKKyAgICBodG1sL0RhdGVJbnB1dFR5cGUu
Y3BwCisgICAgaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKKyAgICBodG1sL0RhdGVUaW1lTG9j
YWxJbnB1dFR5cGUuY3BwCisgICAgaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKICAgICBodG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcAorICAgIGh0bWwvRmlsZUlucHV0VHlwZS5jcHAKICAgICBo
dG1sL0Zvcm1EYXRhTGlzdC5jcHAKICAgICBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAogICAg
IGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0xMDMwLDE1ICsxMDM5LDMzIEBAIFNFVChX
ZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCiAgICAgaHRtbC9I
VE1MVUxpc3RFbGVtZW50LmNwcAogICAgIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAK
KyAgICBodG1sL0hpZGRlbklucHV0VHlwZS5jcHAKICAgICBodG1sL0ltYWdlRGF0YS5jcHAKICAg
ICBodG1sL0ltYWdlRG9jdW1lbnQuY3BwCisgICAgaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKICAg
ICBodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAKKyAgICBodG1sL0lucHV0VHlwZS5jcHAKKyAg
ICBodG1sL0lzSW5kZXhJbnB1dFR5cGUuY3BwCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAK
ICAgICBodG1sL01lZGlhRG9jdW1lbnQuY3BwCisgICAgaHRtbC9Nb250aElucHV0VHlwZS5jcHAK
KyAgICBodG1sL051bWJlcklucHV0VHlwZS5jcHAKKyAgICBodG1sL1Bhc3N3b3JkSW5wdXRUeXBl
LmNwcAogICAgIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCisgICAgaHRtbC9SYWRpb0lucHV0VHlw
ZS5jcHAKKyAgICBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorICAgIGh0bWwvUmVzZXRJbnB1dFR5
cGUuY3BwCisgICAgaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCiAgICAgaHRtbC9TdGVwUmFuZ2Uu
Y3BwCisgICAgaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwCisgICAgaHRtbC9UZWxlcGhvbmVJbnB1
dFR5cGUuY3BwCiAgICAgaHRtbC9UZXh0RG9jdW1lbnQuY3BwCisgICAgaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuY3BwCisgICAgaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAorICAgIGh0bWwvVGltZUlu
cHV0VHlwZS5jcHAKKyAgICBodG1sL1VSTElucHV0VHlwZS5jcHAKICAgICBodG1sL1ZhbGlkaXR5
U3RhdGUuY3BwCisgICAgaHRtbC9XZWVrSW5wdXRUeXBlLmNwcAogICAgIGh0bWwvY2FudmFzL0Nh
bnZhc0dyYWRpZW50LmNwcAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCiAgICAg
aHRtbC9jYW52YXMvQ2FudmFzUGl4ZWxBcnJheS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdkMTE4MDUyOTIyZTNkYTljOGU1ZGQ3
OTQwNTE3OTRiODQyNmNkYi4uZDQ5ZWM3NWUxNjEwMTlkYTBkZTMzZTM4YTAwZjNmMmVlNDU5NjI1
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOTMgQEAKKzIwMTAtMDktMjkgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZmFjdG9yIEhUTUxJbnB1dEVsZW1lbnQ6IEludHJvZHVjaW5nIElucHV0VHlwZSBjbGFzcyBh
bmQgY2xhc3NlcworICAgICAgICBmb3IgZWFjaCBpbnB1dCBlbGVtZW50IHR5cGVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU4NzIKKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGRvZXNuJ3QgY2hhbmdlIGFueSBiZWhhdmlvci4K
KworICAgICAgICAqIEFuZHJvaWQubWs6IEFkZCBuZXcgZmlsZXMuCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6IGRpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBkaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6IGRpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBkaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogZGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBkaXR0by4KKyAgICAgICAgKiBo
dG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpCYXNl
VGV4dElucHV0VHlwZTo6QmFzZVRleHRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFz
ZVRleHRJbnB1dFR5cGU6OmlzVGV4dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVRleHRJ
bnB1dFR5cGU6OnBhdHRlcm5NaXNtYXRjaCk6CisgICAgICAgICogaHRtbC9CYXNlVGV4dElucHV0
VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0J1dHRvbklucHV0VHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6QnV0dG9uSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6QnV0dG9uSW5wdXRUeXBlOjpCdXR0b25JbnB1dFR5cGUpOgorICAgICAgICAqIGh0
bWwvQnV0dG9uSW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QnV0dG9uSW5w
dXRUeXBlOjpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvQ2hlY2tib3hJbnB1dFR5
cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrYm94SW5wdXRUeXBlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tib3hJbnB1dFR5cGU6OkNoZWNrYm94SW5wdXRU
eXBlKToKKyAgICAgICAgKiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2hlY2tib3hJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAg
ICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3JJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6
Q29sb3JJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKToKKyAg
ICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRhdGVJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBl
OjpEYXRlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUpOgorICAg
ICAgICAqIGh0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRp
bWVJbnB1dFR5cGU6OkRhdGVUaW1lSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1l
SW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVJbnB1dFR5cGU6
OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6RGF0ZVRp
bWVMb2NhbElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6Zm9y
bUNvbnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL0VtYWlsSW5wdXRUeXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpFbWFpbElucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkVtYWlsSW5wdXRUeXBlOjpFbWFpbElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9F
bWFpbElucHV0VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVtYWlsSW5wdXRUeXBl
Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OkZpbGVJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwv
RmlsZUlucHV0VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6
OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOiBJ
bml0aWFsaXplIG1faW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6cGF0dGVybk1pc21hdGNoKTogRGVsZWdhdGUgdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6IFVwZGF0ZSBtX2lucHV0VHlwZSB3
aXRoIG5ldyB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Zm9ybUNv
bnRyb2xUeXBlKTogRGVsZWdhdGUgdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6aXNUZXh0RmllbGQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OmlzVGV4dFR5cGUpOiBkaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hpZGRlbklucHV0VHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SGlkZGVuSW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SGlkZGVuSW5wdXRUeXBlOjpIaWRkZW5JbnB1dFR5cGUpOgorICAgICAgICAqIGh0
bWwvSGlkZGVuSW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SGlkZGVuSW5w
dXRUeXBlOjpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSW1hZ2VJbnB1dFR5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJbnB1dFR5cGU6OkltYWdlSW5wdXRUeXBlKToKKyAgICAg
ICAgKiBodG1sL0ltYWdlSW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlucHV0VHlwZUZhY3RvcnlNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlOjpjcmVhdGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6
SW5wdXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6fklucHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlzVGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6aXNUZXh0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6
OnBhdHRlcm5NaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6YnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpjaGVja2JveCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6Y29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlTmFtZXM6OmRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6
OmRhdGV0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRldGltZWxv
Y2FsKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjplbWFpbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dFR5cGVOYW1lczo6aGlkZGVuKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpp
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6aXNpbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6bW9udGgpOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlTmFtZXM6Om51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1l
czo6cGFzc3dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnJhZGlvKToK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpyYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGVOYW1lczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBl
TmFtZXM6OnNlYXJjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6c3VibWl0
KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0ZWxlcGhvbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OnRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnVy
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6d2Vlayk6CisgICAgICAgICog
aHRtbC9JbnB1dFR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSXNJbmRleElucHV0VHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SXNJbmRleElucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklzSW5kZXhJbnB1dFR5cGU6OklzSW5kZXhJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwv
SXNJbmRleElucHV0VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklzSW5kZXhJbnB1
dFR5cGU6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb250aElucHV0VHlwZTo6TW9udGhJbnB1dFR5cGUpOgorICAgICAg
ICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb250
aElucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL051bWJlcklucHV0
VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpOdW1iZXJJbnB1dFR5cGUp
OgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TnVtYmVySW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwv
UGFzc3dvcmRJbnB1dFR5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3N3b3Jk
SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzc3dvcmRJbnB1dFR5cGU6
OlBhc3N3b3JkSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFzc3dvcmRJbnB1dFR5cGU6OmZvcm1Db250cm9s
VHlwZSk6CisgICAgICAgICogaHRtbC9SYWRpb0lucHV0VHlwZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmFkaW9JbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
YWRpb0lucHV0VHlwZTo6UmFkaW9JbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvUmFkaW9JbnB1
dFR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb0lucHV0VHlwZTo6Zm9ybUNv
bnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlSW5wdXRUeXBlOjpSYW5nZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9SYW5n
ZUlucHV0VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpm
b3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvUmVzZXRJbnB1dFR5cGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc2V0SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzZXRJbnB1dFR5cGU6OlJlc2V0SW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1s
L1Jlc2V0SW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzZXRJbnB1dFR5
cGU6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6U2VhcmNoSW5wdXRUeXBlKToKKyAgICAg
ICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
YXJjaElucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL1N1Ym1pdElu
cHV0VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0SW5wdXRUeXBlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0SW5wdXRUeXBlOjpTdWJtaXRJbnB1dFR5
cGUpOgorICAgICAgICAqIGh0bWwvU3VibWl0SW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3VibWl0SW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0
bWwvVGVsZXBob25lSW5wdXRUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZWxl
cGhvbmVJbnB1dFR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZWxlcGhvbmVJbnB1
dFR5cGU6OlRlbGVwaG9uZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9UZWxlcGhvbmVJbnB1
dFR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZWxlcGhvbmVJbnB1dFR5cGU6OmZv
cm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6VGV4dEZpZWxkSW5w
dXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aXNUZXh0Rmll
bGQpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAg
ICAqIGh0bWwvVGV4dElucHV0VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4
dElucHV0VHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJbnB1dFR5cGU6OlRl
eHRJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvVGV4dElucHV0VHlwZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAg
ICogaHRtbC9UaW1lSW5wdXRUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUaW1l
SW5wdXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6VGlt
ZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9UaW1lSW5wdXRUeXBlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAg
KiBodG1sL1VSTElucHV0VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMSW5w
dXRUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VVJMSW5wdXRUeXBlOjpVUkxJbnB1
dFR5cGUpOgorICAgICAgICAqIGh0bWwvVVJMSW5wdXRUeXBlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6VVJMSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwv
V2Vla0lucHV0VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlZWtJbnB1dFR5cGU6OldlZWtJbnB1dFR5
cGUpOgorICAgICAgICAqIGh0bWwvV2Vla0lucHV0VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlZWtJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSk6CisKIDIwMTAtMDktMjggIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJ1
biBzb3J0LVhjb2RlLXByb2plY3QtZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggODgyY2E3Y2MyZDUzYWJmY2YyZDkx
M2M2NTA2ZTBhYWY0NzYwNTU5My4uMWNmZjVkOTc2OTRlYTIzMTMyOWUwYjJjY2E3NDljNDFmZWEy
MzgzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC0xNDIyLDYgKzE0MjIsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmggXAogCVdlYkNvcmUvaHRtbC9Bc3luY0ltYWdl
UmVzaXplci5jcHAgXAogCVdlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIFwKKwlXZWJD
b3JlL2h0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwvQmFzZVRleHRJ
bnB1dFR5cGUuaCBcCisJV2ViQ29yZS9odG1sL0J1dHRvbklucHV0VHlwZS5jcHAgXAorCVdlYkNv
cmUvaHRtbC9CdXR0b25JbnB1dFR5cGUuaCBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXND
b250ZXh0QXR0cmlidXRlcy5oIFwKIAlXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50
LmNwcCBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oIFwKQEAgLTE0Mzcs
OSArMTQ0MSwxMyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuaCBcCiAJV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAgXAogCVdlYkNv
cmUvaHRtbC9ET01Ub2tlbkxpc3QuaCBcCisJV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBl
LmNwcCBcCisJV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmggXAogCVdlYkNvcmUvaHRt
bC9Db2xsZWN0aW9uQ2FjaGUuY3BwIFwKIAlXZWJDb3JlL2h0bWwvQ29sbGVjdGlvbkNhY2hlLmgg
XAogCVdlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oIFwKKwlXZWJDb3JlL2h0bWwvQ29sb3JJ
bnB1dFR5cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaCBcCiAJV2ViQ29y
ZS9odG1sL0RhdGFHcmlkQ29sdW1uLmNwcCBcCiAJV2ViQ29yZS9odG1sL0RhdGFHcmlkQ29sdW1u
LmggXAogCVdlYkNvcmUvaHRtbC9EYXRhR3JpZENvbHVtbkxpc3QuY3BwIFwKQEAgLTE0NDcsMTAg
KzE0NTUsMjAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvRGF0YUdyaWRE
YXRhU291cmNlLmggXAogCVdlYkNvcmUvaHRtbC9EYXRlQ29tcG9uZW50cy5jcHAgXAogCVdlYkNv
cmUvaHRtbC9EYXRlQ29tcG9uZW50cy5oIFwKKwlXZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5j
cHAgXAorCVdlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmggXAorCVdlYkNvcmUvaHRtbC9EYXRl
VGltZUlucHV0VHlwZS5jcHAgXAorCVdlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oIFwK
KwlXZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAgXAorCVdlYkNvcmUvaHRt
bC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmggXAogCVdlYkNvcmUvaHRtbC9ET01EYXRhR3JpZERh
dGFTb3VyY2UuY3BwIFwKIAlXZWJDb3JlL2h0bWwvRE9NRGF0YUdyaWREYXRhU291cmNlLmggXAog
CVdlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAgXAogCVdlYkNvcmUvaHRtbC9ET01Gb3JtRGF0
YS5oIFwKKwlXZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwv
RW1haWxJbnB1dFR5cGUuaCBcCisJV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIFwKKwlX
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIFwKIAlXZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0
LmNwcCBcCiAJV2ViQ29yZS9odG1sL0Zvcm1EYXRhTGlzdC5oIFwKIAlXZWJDb3JlL2h0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwIFwKQEAgLTE2MjgsMTcgKzE2NDYsMjkgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIFwKIAlXZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgXAogCVdlYkNvcmUvaHRtbC9IVE1MVmll
d1NvdXJjZURvY3VtZW50LmggXAorCVdlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwIFwK
KwlXZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmggXAogCVdlYkNvcmUvaHRtbC9JbWFnZURh
dGEuY3BwIFwKIAlXZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmggXAogCVdlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaCBcCisJV2ViQ29y
ZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBcCisJV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBl
LmggXAogCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIFwKIAlXZWJDb3JlL2h0
bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggXAorCVdlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIFwK
KwlXZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggXAorCVdlYkNvcmUvaHRtbC9Jc0luZGV4SW5wdXRU
eXBlLmNwcCBcCisJV2ViQ29yZS9odG1sL0lzSW5kZXhJbnB1dFR5cGUuaCBcCiAJV2ViQ29yZS9o
dG1sL0xhYmVsc05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0Lmgg
XAogCVdlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcCBcCiAJV2ViQ29yZS9odG1sL01lZGlh
RG9jdW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaCBcCisJV2ViQ29yZS9odG1s
L01vbnRoSW5wdXRUeXBlLmNwcCBcCisJV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmggXAor
CVdlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwvTnVtYmVy
SW5wdXRUeXBlLmggXAogCVdlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3Bw
IFwKIAlXZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmggXAogCVdlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIFwKQEAgLTE2NzYsMTggKzE3MDYs
NDIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1
bWVudFBhcnNlci5oIFwKIAlXZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2Vy
LmNwcCBcCiAJV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5oIFwKKwlX
ZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwvUGFzc3dv
cmRJbnB1dFR5cGUuaCBcCiAJV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBcCiAJV2Vi
Q29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmggXAorCVdlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlw
ZS5jcHAgXAorCVdlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5oIFwKKwlXZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCBcCisJ
V2ViQ29yZS9odG1sL1Jlc2V0SW5wdXRUeXBlLmNwcCBcCisJV2ViQ29yZS9odG1sL1Jlc2V0SW5w
dXRUeXBlLmggXAorCVdlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIFwKKwlXZWJDb3Jl
L2h0bWwvU2VhcmNoSW5wdXRUeXBlLmggXAogCVdlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwIFwK
IAlXZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmggXAorCVdlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5
cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmggXAorCVdlYkNvcmUvaHRt
bC9UZWxlcGhvbmVJbnB1dFR5cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwvVGVsZXBob25lSW5wdXRU
eXBlLmggXAogCVdlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuY3BwIFwKIAlXZWJDb3JlL2h0bWwv
VGV4dERvY3VtZW50LmggXAorCVdlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIFwK
KwlXZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggXAorCVdlYkNvcmUvaHRtbC9UZXh0
SW5wdXRUeXBlLmNwcCBcCisJV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuaCBcCiAJV2ViQ29y
ZS9odG1sL1RleHRNZXRyaWNzLmggXAorCVdlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcCBc
CisJV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaCBcCiAJV2ViQ29yZS9odG1sL1RpbWVSYW5n
ZXMuY3BwIFwKIAlXZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwKKwlXZWJDb3JlL2h0bWwvVVJM
SW5wdXRUeXBlLmNwcCBcCisJV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5oIFwKIAlXZWJDb3Jl
L2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAgXAogCVdlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgg
XAogCVdlYkNvcmUvaHRtbC9Wb2lkQ2FsbGJhY2suaCBcCisJV2ViQ29yZS9odG1sL1dlZWtJbnB1
dFR5cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oIFwKIAlXZWJDb3JlL2lj
dS91bmljb2RlL3BhcnNlZXJyLmggXAogCVdlYkNvcmUvaWN1L3VuaWNvZGUvcGxhdGZvcm0uaCBc
CiAJV2ViQ29yZS9pY3UvdW5pY29kZS9wdXRpbC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZWU2NWY0N2YxY2RjMTA4M2Q0
NmQ2MjA2ZGNkYmQxMjAzNzBkN2FhZi4uNjUxYTE3OGNkMmMxZWY1MDUwZGNiYWYzMjkxYWUzOTY0
MDFlYjA0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTE1MTIsOSArMTUxMiwxNyBAQAogICAgICAgICAgICAgJ2hpc3Rvcnkv
UGFnZUNhY2hlLmgnLAogICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwJywK
ICAgICAgICAgICAgICdodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgnLAorICAgICAgICAgICAgJ2h0
bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAgICdodG1sL0Jhc2VUZXh0SW5w
dXRUeXBlLmgnLAorICAgICAgICAgICAgJ2h0bWwvQnV0dG9uSW5wdXRUeXBlLmNwcCcsCisgICAg
ICAgICAgICAnaHRtbC9CdXR0b25JbnB1dFR5cGUuaCcsCisgICAgICAgICAgICAnaHRtbC9DaGVj
a2JveElucHV0VHlwZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUu
aCcsCiAgICAgICAgICAgICAnaHRtbC9Db2xsZWN0aW9uQ2FjaGUuY3BwJywKICAgICAgICAgICAg
ICdodG1sL0NvbGxlY3Rpb25DYWNoZS5oJywKICAgICAgICAgICAgICdodG1sL0NvbGxlY3Rpb25U
eXBlLmgnLAorICAgICAgICAgICAgJ2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL0NvbG9ySW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvRE9NRGF0YUdy
aWREYXRhU291cmNlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9ET01EYXRhR3JpZERhdGFTb3Vy
Y2UuaCcsCiAgICAgICAgICAgICAnaHRtbC9ET01Gb3JtRGF0YS5jcHAnLApAQCAtMTUyNyw4ICsx
NTM1LDE4IEBACiAgICAgICAgICAgICAnaHRtbC9EYXRhR3JpZENvbHVtbkxpc3QuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9EYXRlQ29tcG9uZW50cy5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvRGF0
ZUNvbXBvbmVudHMuaCcsCisgICAgICAgICAgICAnaHRtbC9EYXRlSW5wdXRUeXBlLmNwcCcsCisg
ICAgICAgICAgICAnaHRtbC9EYXRlSW5wdXRUeXBlLmgnLAorICAgICAgICAgICAgJ2h0bWwvRGF0
ZVRpbWVJbnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAgICdodG1sL0RhdGVUaW1lSW5wdXRUeXBl
LmgnLAorICAgICAgICAgICAgJ2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAnLAorICAg
ICAgICAgICAgJ2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oJywKKyAgICAgICAgICAgICdo
dG1sL0VtYWlsSW5wdXRUeXBlLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9FbWFpbElucHV0VHlw
ZS5oJywKICAgICAgICAgICAgICdodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oJywKKyAgICAgICAgICAgICdodG1s
L0ZpbGVJbnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAgICdodG1sL0ZpbGVJbnB1dFR5cGUuaCcs
CiAgICAgICAgICAgICAnaHRtbC9Gb3JtRGF0YUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1s
L0Zvcm1EYXRhTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNw
cCcsCkBAIC0xNzAxLDI5ICsxNzE5LDY1IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAn
LAogICAgICAgICAgICAgJ2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oJywKKyAgICAgICAg
ICAgICdodG1sL0hpZGRlbklucHV0VHlwZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvSGlkZGVu
SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmNwcCcsCiAgICAgICAg
ICAgICAnaHRtbC9JbWFnZURhdGEuaCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZURvY3VtZW50
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZURvY3VtZW50LmgnLAorICAgICAgICAgICAg
J2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAgICdodG1sL0ltYWdlSW5wdXRU
eXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCcsCisgICAgICAgICAgICAnaHRtbC9J
bnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAgICdodG1sL0lucHV0VHlwZS5oJywKKyAgICAgICAg
ICAgICdodG1sL0lzSW5kZXhJbnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAgICdodG1sL0lzSW5k
ZXhJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAnLAog
ICAgICAgICAgICAgJ2h0bWwvTGFiZWxzTm9kZUxpc3QuaCcsCiAgICAgICAgICAgICAnaHRtbC9N
ZWRpYURvY3VtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50LmgnLAog
ICAgICAgICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywKKyAgICAgICAgICAgICdodG1sL01vbnRo
SW5wdXRUeXBlLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9Nb250aElucHV0VHlwZS5oJywKKyAg
ICAgICAgICAgICdodG1sL051bWJlcklucHV0VHlwZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwv
TnVtYmVySW5wdXRUeXBlLmgnLAorICAgICAgICAgICAgJ2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUu
Y3BwJywKKyAgICAgICAgICAgICdodG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL1BsdWdpbkRv
Y3VtZW50LmgnLAorICAgICAgICAgICAgJ2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwJywKKyAgICAg
ICAgICAgICdodG1sL1JhZGlvSW5wdXRUeXBlLmgnLAorICAgICAgICAgICAgJ2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAgICdodG1sL1JhbmdlSW5wdXRUeXBlLmgnLAorICAg
ICAgICAgICAgJ2h0bWwvUmVzZXRJbnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAgICdodG1sL1Jl
c2V0SW5wdXRUeXBlLmgnLAorICAgICAgICAgICAgJ2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcCcs
CisgICAgICAgICAgICAnaHRtbC9TZWFyY2hJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAnaHRt
bC9TdGVwUmFuZ2UuY3BwJywKICAgICAgICAgICAgICdodG1sL1N0ZXBSYW5nZS5oJywKKyAgICAg
ICAgICAgICdodG1sL1N1Ym1pdElucHV0VHlwZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvU3Vi
bWl0SW5wdXRUeXBlLmgnLAorICAgICAgICAgICAgJ2h0bWwvVGVsZXBob25lSW5wdXRUeXBlLmNw
cCcsCisgICAgICAgICAgICAnaHRtbC9UZWxlcGhvbmVJbnB1dFR5cGUuaCcsCiAgICAgICAgICAg
ICAnaHRtbC9UZXh0RG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL1RleHREb2N1bWVu
dC5oJywKKyAgICAgICAgICAgICdodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAnLAorICAgICAg
ICAgICAgJ2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgnLAorICAgICAgICAgICAgJ2h0bWwvVGV4
dElucHV0VHlwZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvVGV4dElucHV0VHlwZS5oJywKICAg
ICAgICAgICAgICdodG1sL1RleHRNZXRyaWNzLmgnLAorICAgICAgICAgICAgJ2h0bWwvVGltZUlu
cHV0VHlwZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvVGltZUlucHV0VHlwZS5oJywKICAgICAg
ICAgICAgICdodG1sL1RpbWVSYW5nZXMuY3BwJywKICAgICAgICAgICAgICdodG1sL1RpbWVSYW5n
ZXMuaCcsCisgICAgICAgICAgICAnaHRtbC9VUkxJbnB1dFR5cGUuY3BwJywKKyAgICAgICAgICAg
ICdodG1sL1VSTElucHV0VHlwZS5oJywKICAgICAgICAgICAgICdodG1sL1ZhbGlkaXR5U3RhdGUu
Y3BwJywKICAgICAgICAgICAgICdodG1sL1ZhbGlkaXR5U3RhdGUuaCcsCiAgICAgICAgICAgICAn
aHRtbC9Wb2lkQ2FsbGJhY2suaCcsCisgICAgICAgICAgICAnaHRtbC9XZWVrSW5wdXRUeXBlLmNw
cCcsCisgICAgICAgICAgICAnaHRtbC9XZWVrSW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL0FycmF5QnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvQXJy
YXlCdWZmZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmNw
cCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCAzMzdkMjI3Yzg5ZTg1YzIxYzhmOThhZmVlM2M1MjZhZDcyYWE5ODVmLi42NzhjZWY0
YjA0YzA5MWFkNmFhYThmMTk5NmUwZTFiYTNmNWEzZWU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTgzNiwxNCArODM2LDIzIEBA
IFNPVVJDRVMgKz0gXAogICAgIGhpc3RvcnkvcXQvSGlzdG9yeUl0ZW1RdC5jcHAgXAogICAgIGhp
c3RvcnkvUGFnZUNhY2hlLmNwcCBcCiAgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAor
ICAgIGh0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwIFwKKyAgICBodG1sL0J1dHRvbklucHV0VHlw
ZS5jcHAgXAorICAgIGh0bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwIFwKICAgICBodG1sL0NvbGxl
Y3Rpb25DYWNoZS5jcHAgXAorICAgIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIFwKICAgICBodG1s
L0RPTURhdGFHcmlkRGF0YVNvdXJjZS5jcHAgXAogICAgIGh0bWwvRE9NRm9ybURhdGEuY3BwIFwK
ICAgICBodG1sL0RPTVRva2VuTGlzdC5jcHAgXAogICAgIGh0bWwvRGF0YUdyaWRDb2x1bW4uY3Bw
IFwKICAgICBodG1sL0RhdGFHcmlkQ29sdW1uTGlzdC5jcHAgXAogICAgIGh0bWwvRGF0ZUNvbXBv
bmVudHMuY3BwIFwKKyAgICBodG1sL0RhdGVJbnB1dFR5cGUuY3BwIFwKKyAgICBodG1sL0RhdGVU
aW1lSW5wdXRUeXBlLmNwcCBcCisgICAgaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBc
CisgICAgaHRtbC9FbWFpbElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwIFwKKyAgICBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwIFwKICAgICBodG1sL0Zvcm1E
YXRhTGlzdC5jcHAgXAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwKICAgICBodG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcCBcCkBAIC05MjYsMTUgKzkzNSwzMyBAQCBTT1VSQ0VTICs9
IFwKICAgICBodG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxVTGlzdEVs
ZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIFwKKyAgICBo
dG1sL0hpZGRlbklucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvSW1hZ2VEYXRhLmNwcCBcCiAgICAg
aHRtbC9JbWFnZURvY3VtZW50LmNwcCBcCisgICAgaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgXAog
ICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBcCisgICAgaHRtbC9JbnB1dFR5cGUuY3Bw
IFwKKyAgICBodG1sL0lzSW5kZXhJbnB1dFR5cGUuY3BwIFwKICAgICBodG1sL0xhYmVsc05vZGVM
aXN0LmNwcCBcCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmNwcCBcCisgICAgaHRtbC9Nb250aElu
cHV0VHlwZS5jcHAgXAorICAgIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBcCisgICAgaHRtbC9Q
YXNzd29yZElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwIFwKKyAg
ICBodG1sL1JhZGlvSW5wdXRUeXBlLmNwcCBcCisgICAgaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAg
XAorICAgIGh0bWwvUmVzZXRJbnB1dFR5cGUuY3BwIFwKKyAgICBodG1sL1NlYXJjaElucHV0VHlw
ZS5jcHAgXAogICAgIGh0bWwvU3RlcFJhbmdlLmNwcCBcCisgICAgaHRtbC9TdWJtaXRJbnB1dFR5
cGUuY3BwIFwKKyAgICBodG1sL1RlbGVwaG9uZUlucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvVGV4
dERvY3VtZW50LmNwcCBcCisgICAgaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIFwKKyAgICBo
dG1sL1RleHRJbnB1dFR5cGUuY3BwIFwKKyAgICBodG1sL1RpbWVJbnB1dFR5cGUuY3BwIFwKKyAg
ICBodG1sL1VSTElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHAgXAor
ICAgIGh0bWwvV2Vla0lucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc0dyYWRp
ZW50LmNwcCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgXAogICAgIGh0bWwv
Y2FudmFzL0NhbnZhc1BpeGVsQXJyYXkuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCmluZGV4IDgzY2E5NTdkYWU0ODU0ZmZhNWU2ODMyN2E3OTg4NGI1ZDRjZTIyMDEuLjQz
YjUyY2YxYmNlZDUyOWUzZGMxYWI1YTZkZTFkYjIwMjY0MTA3MDQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzc1NDEsNiArMzc1NDEsMTQgQEAKIAkJCQk+DQogCQkJ
PC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxCYXNlVGV4dElu
cHV0VHlwZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXEJhc2VUZXh0SW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEJsb2IuY3BwIg0KIAkJ
CQk+DQogCQkJPC9GaWxlPg0KQEAgLTM3NTY1LDYgKzM3NTczLDE0IEBACiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQnV0dG9uSW5wdXRU
eXBlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGh0bWxcQnV0dG9uSW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXGNhbnZhc1xDYW52YXNHcmFkaWVudC5j
cHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMzc2MTMsNiArMzc2MjksMTQgQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxDaGVj
a2JveElucHV0VHlwZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXENoZWNrYm94SW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXENvbGxlY3Rpb25D
YWNoZS5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMzc2MzMsNiAr
Mzc2NTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxDb2xvcklucHV0VHlwZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXENvbG9ySW5wdXRUeXBlLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XERhdGFHcmlkQ29sdW1uLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0zNzY2MSw2ICsz
NzY5MywzMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXERhdGVJbnB1dFR5cGUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxEYXRlSW5wdXRUeXBlLmgiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXERh
dGVUaW1lSW5wdXRUeXBlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRGF0ZVRpbWVJbnB1dFR5cGUuaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRGF0ZVRpbWVM
b2NhbElucHV0VHlwZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXERhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRGly
ZWN0b3J5RW50cnkuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTM3NzA5LDYgKzM3NzY1
LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcRW1haWxJbnB1dFR5cGUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxFbWFpbElucHV0VHlwZS5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxF
bnRyaWVzQ2FsbGJhY2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0zNzc2OSw2ICszNzgz
MywxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxodG1sXEZpbGVJbnB1dFR5cGUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGaWxlSW5wdXRUeXBlLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEZp
bGVMaXN0LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC00MjIxNyw2ICs0MjI4OSwxNCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXEhpZGRlbklucHV0VHlwZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhpZGRlbklucHV0VHlwZS5oIg0KKwkJCQk+DQor
CQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZURh
dGEuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTQyMjMzLDYgKzQyMzEzLDE0IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
SW1hZ2VJbnB1dFR5cGUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZUlucHV0VHlwZS5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTQyMjQxLDYgKzQyMzI5LDIyIEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0
bWxcSW5wdXRUeXBlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXElzSW5kZXhJbnB1dFR5cGUuY3Bw
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxJc0luZGV4SW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXExhYmVsc05vZGVMaXN0LmNwcCINCiAJCQkJPg0K
IAkJCTwvRmlsZT4NCkBAIC00MjI3Nyw2ICs0MjM4MSwzMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+
DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXE1vbnRoSW5wdXRUeXBlLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcTW9udGhJbnB1dFR5cGUuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTnVtYmVySW5wdXRUeXBlLmNwcCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTnVtYmVy
SW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXFBhc3N3b3JkSW5wdXRUeXBlLmNwcCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcUGFzc3dvcmRJbnB1dFR5
cGUuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcUGx1Z2luRG9jdW1lbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTQy
Mjg1LDYgKzQyNDEzLDM4IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcUmFkaW9JbnB1dFR5cGUuY3BwIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxSYWRpb0lucHV0VHlw
ZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5caHRtbFxSYW5nZUlucHV0VHlwZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFJhbmdlSW5wdXRUeXBlLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFJlc2V0
SW5wdXRUeXBlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxcUmVzZXRJbnB1dFR5cGUuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcU2VhcmNoSW5wdXRUeXBlLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcU2VhcmNoSW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFN0ZXBSYW5nZS5jcHAiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQpAQCAtNDIyOTMsMTAgKzQyNDUzLDQyIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcU3VibWl0SW5wdXRUeXBlLmNwcCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0
bWxcU3VibWl0SW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFRlbGVwaG9uZUlucHV0VHlwZS5jcHAiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFRlbGVw
aG9uZUlucHV0VHlwZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5caHRtbFxUZXh0RG9jdW1lbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxUZXh0RmllbGRJbnB1dFR5
cGUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxUZXh0RmllbGRJbnB1dFR5cGUuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcVGV4dElucHV0VHlwZS5jcHAiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XFRleHRJbnB1dFR5cGUuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQpAQCAtNDIzMTMsNiArNDI1MDUsMTQgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxVUkxJbnB1dFR5cGUu
Y3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5caHRtbFxVUkxJbnB1dFR5cGUuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcVmFsaWRpdHlTdGF0ZS5jcHAiDQogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQpAQCAtNDIzMjQsNiArNDI1MjQsMTQgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcVm9pZENhbGxiYWNrLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFdlZWtJbnB1dFR5cGUuY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxXZWVrSW5wdXRU
eXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJwYXJz
ZXIiDQogCQkJCT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGMzMTJmNDkxNGU0MTJhMzA5Y2Q5ZmQxYjdiZDA2NWVlZWI2ZmU3ZDEuLjE1ZjNkZDZjOTQ4
ZGQ2MDRjNjQzZmIxZGM1MWM1ZjNiNTgzNzVjNzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MjIsNiArODIyLDggQEAKIAkJMzdDMjM4MjIxMDk4Qzg0
MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzIzODIwMTA5OEM4NDIwMEVG
OUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHAgKi87IH07CiAJCTM3QzI4
QTY4MTBGNjU5Q0MwMDhDNzgxMyAvKiBUeXBlc2V0dGluZ0ZlYXR1cmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0MyOEE2NzEwRjY1OUNDMDA4Qzc4
MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTM3QzYxRjAxMTIwOTVDODcwMDdBM0M2NyAvKiBBdG9taWNT
dHJpbmdLZXllZE1SVUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzN0M2MUYwMDEyMDk1Qzg3MDA3QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRN
UlVDYWNoZS5oICovOyB9OworCQkzN0UzNTI0QjEyNDUwQzUyMDBCQUY1RDkgLyogSW5wdXRUeXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM1
MjRBMTI0NTBDNTIwMEJBRjVEOSAvKiBJbnB1dFR5cGUuY3BwICovOyB9OworCQkzN0UzNTI0RDEy
NDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzN0UzNTI0QzEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdG
ODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGODE4RkIwRDY1NzYwNjAwNUUx
RjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTM3RjgxOEZFMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3Jl
VVJMUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0Y4MThGQzBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLm1tICov
OyB9OwogCQkzN0ZENDI5ODExODM2ODQ2MDA5M0MwMjkgLyogVHJlZURlcHRoTGltaXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RkQ0Mjk3MTE4MzY4
NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oICovOyB9OwpAQCAtNTM3MSw2ICs1MzczLDU4
IEBACiAJCUYzRDQ2MTQ5MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhh
bmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYz
RDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaCAq
LzsgfTsKIAkJRjRFQUY0QUUxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RUFGNEFD
MTBDNzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgKi87IH07CiAJCUY0RUFG
NEFGMTBDNzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFQUY0QUQxMEM3NDJCMTAwOTEwMEQz
IC8qIE9wZW5UeXBlU2FuaXRpemVyLmggKi87IH07CisJCUY1NUIzREFEMTI1MUYxMkQwMDNFRjI2
OSAvKiBCYXNlVGV4dElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q3OTEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1
dFR5cGUuY3BwICovOyB9OworCQlGNTVCM0RBRTEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJ
bnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1NUIzRDdBMTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5oICovOyB9Owor
CQlGNTVCM0RBRjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDdCMTI1MUYxMkQw
MDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3BwICovOyB9OworCQlGNTVCM0RCMDEyNTFGMTJE
MDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q3QzEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5w
dXRUeXBlLmggKi87IH07CisJCUY1NUIzREIxMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElu
cHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNTVCM0Q3RDEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuY3BwICovOyB9
OworCQlGNTVCM0RCMjEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDdFMTI1MUYx
MkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oICovOyB9OworCQlGNTVCM0RCMzEyNTFG
MTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEN0YxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9y
SW5wdXRUeXBlLmNwcCAqLzsgfTsKKwkJRjU1QjNEQjQxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9y
SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNTVCM0Q4MDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCAqLzsgfTsKKwkJ
RjU1QjNEQjUxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEODExMjUxRjEyRDAwM0VG
MjY5IC8qIERhdGVJbnB1dFR5cGUuY3BwICovOyB9OworCQlGNTVCM0RCNjEyNTFGMTJEMDAzRUYy
NjkgLyogRGF0ZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjU1QjNEODIxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuaCAq
LzsgfTsKKwkJRjU1QjNEQjcxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lSW5wdXRUeXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDgz
MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUlucHV0VHlwZS5jcHAgKi87IH07CisJCUY1NUIz
REI4MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEODQxMjUxRjEyRDAwM0VGMjY5
IC8qIERhdGVUaW1lSW5wdXRUeXBlLmggKi87IH07CisJCUY1NUIzREI5MTI1MUYxMkQwMDNFRjI2
OSAvKiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDg1MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGlt
ZUxvY2FsSW5wdXRUeXBlLmNwcCAqLzsgfTsKKwkJRjU1QjNEQkExMjUxRjEyRDAwM0VGMjY5IC8q
IERhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY1NUIzRDg2MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmggKi87IH07CisJCUY1NUIzREJCMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElu
cHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNTVCM0Q4NzEyNTFGMTJEMDAzRUYyNjkgLyogRW1haWxJbnB1dFR5cGUuY3BwICovOyB9Owor
CQlGNTVCM0RCQzEyNTFGMTJEMDAzRUYyNjkgLyogRW1haWxJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDg4MTI1MUYxMkQwMDNF
RjI2OSAvKiBFbWFpbElucHV0VHlwZS5oICovOyB9OworCQlGNTVCM0RCRDEyNTFGMTJEMDAzRUYy
NjkgLyogRmlsZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTVCM0Q4OTEyNTFGMTJEMDAzRUYyNjkgLyogRmlsZUlucHV0VHlwZS5j
cHAgKi87IH07CisJCUY1NUIzREJFMTI1MUYxMkQwMDNFRjI2OSAvKiBGaWxlSW5wdXRUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q4QTEy
NTFGMTJEMDAzRUYyNjkgLyogRmlsZUlucHV0VHlwZS5oICovOyB9OworCQlGNTVCM0RCRjEyNTFG
MTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDhCMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRk
ZW5JbnB1dFR5cGUuY3BwICovOyB9OworCQlGNTVCM0RDMDEyNTFGMTJEMDAzRUYyNjkgLyogSGlk
ZGVuSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNTVCM0Q4QzEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmggKi87IH07
CisJCUY1NUIzREMxMTI1MUYxMkQwMDNFRjI2OSAvKiBJbWFnZUlucHV0VHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q4RDEyNTFGMTJE
MDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5cGUuY3BwICovOyB9OworCQlGNTVCM0RDMjEyNTFGMTJE
MDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDhFMTI1MUYxMkQwMDNFRjI2OSAvKiBJbWFnZUlucHV0
VHlwZS5oICovOyB9OworCQlGNTVCM0RDMzEyNTFGMTJEMDAzRUYyNjkgLyogSXNJbmRleElucHV0
VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NTVCM0Q4RjEyNTFGMTJEMDAzRUYyNjkgLyogSXNJbmRleElucHV0VHlwZS5jcHAgKi87IH07CisJ
CUY1NUIzREM0MTI1MUYxMkQwMDNFRjI2OSAvKiBJc0luZGV4SW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q5MDEyNTFGMTJEMDAz
RUYyNjkgLyogSXNJbmRleElucHV0VHlwZS5oICovOyB9OworCQlGNTVCM0RDNTEyNTFGMTJEMDAz
RUYyNjkgLyogTW9udGhJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEOTExMjUxRjEyRDAwM0VGMjY5IC8qIE1vbnRoSW5wdXRU
eXBlLmNwcCAqLzsgfTsKKwkJRjU1QjNEQzYxMjUxRjEyRDAwM0VGMjY5IC8qIE1vbnRoSW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVC
M0Q5MjEyNTFGMTJEMDAzRUYyNjkgLyogTW9udGhJbnB1dFR5cGUuaCAqLzsgfTsKKwkJRjU1QjNE
QzcxMjUxRjEyRDAwM0VGMjY5IC8qIE51bWJlcklucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q5MzEyNTFGMTJEMDAzRUYyNjkg
LyogTnVtYmVySW5wdXRUeXBlLmNwcCAqLzsgfTsKKwkJRjU1QjNEQzgxMjUxRjEyRDAwM0VGMjY5
IC8qIE51bWJlcklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjU1QjNEOTQxMjUxRjEyRDAwM0VGMjY5IC8qIE51bWJlcklucHV0VHlwZS5o
ICovOyB9OworCQlGNTVCM0RDOTEyNTFGMTJEMDAzRUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNE
OTUxMjUxRjEyRDAwM0VGMjY5IC8qIFBhc3N3b3JkSW5wdXRUeXBlLmNwcCAqLzsgfTsKKwkJRjU1
QjNEQ0ExMjUxRjEyRDAwM0VGMjY5IC8qIFBhc3N3b3JkSW5wdXRUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q5NjEyNTFGMTJEMDAzRUYy
NjkgLyogUGFzc3dvcmRJbnB1dFR5cGUuaCAqLzsgfTsKKwkJRjU1QjNEQ0IxMjUxRjEyRDAwM0VG
MjY5IC8qIFJhZGlvSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY1NUIzRDk3MTI1MUYxMkQwMDNFRjI2OSAvKiBSYWRpb0lucHV0VHlw
ZS5jcHAgKi87IH07CisJCUY1NUIzRENDMTI1MUYxMkQwMDNFRjI2OSAvKiBSYWRpb0lucHV0VHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNE
OTgxMjUxRjEyRDAwM0VGMjY5IC8qIFJhZGlvSW5wdXRUeXBlLmggKi87IH07CisJCUY1NUIzRENE
MTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q5OTEyNTFGMTJEMDAzRUYyNjkgLyog
UmFuZ2VJbnB1dFR5cGUuY3BwICovOyB9OworCQlGNTVCM0RDRTEyNTFGMTJEMDAzRUYyNjkgLyog
UmFuZ2VJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY1NUIzRDlBMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0VHlwZS5oICovOyB9
OworCQlGNTVCM0RDRjEyNTFGMTJEMDAzRUYyNjkgLyogUmVzZXRJbnB1dFR5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEOUIxMjUxRjEy
RDAwM0VGMjY5IC8qIFJlc2V0SW5wdXRUeXBlLmNwcCAqLzsgfTsKKwkJRjU1QjNERDAxMjUxRjEy
RDAwM0VGMjY5IC8qIFJlc2V0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q5QzEyNTFGMTJEMDAzRUYyNjkgLyogUmVzZXRJbnB1
dFR5cGUuaCAqLzsgfTsKKwkJRjU1QjNERDExMjUxRjEyRDAwM0VGMjY5IC8qIFNlYXJjaElucHV0
VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NTVCM0Q5RDEyNTFGMTJEMDAzRUYyNjkgLyogU2VhcmNoSW5wdXRUeXBlLmNwcCAqLzsgfTsKKwkJ
RjU1QjNERDIxMjUxRjEyRDAwM0VGMjY5IC8qIFNlYXJjaElucHV0VHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEOUUxMjUxRjEyRDAwM0VG
MjY5IC8qIFNlYXJjaElucHV0VHlwZS5oICovOyB9OworCQlGNTVCM0REMzEyNTFGMTJEMDAzRUYy
NjkgLyogU3VibWl0SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY1NUIzRDlGMTI1MUYxMkQwMDNFRjI2OSAvKiBTdWJtaXRJbnB1dFR5
cGUuY3BwICovOyB9OworCQlGNTVCM0RENDEyNTFGMTJEMDAzRUYyNjkgLyogU3VibWl0SW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVC
M0RBMDEyNTFGMTJEMDAzRUYyNjkgLyogU3VibWl0SW5wdXRUeXBlLmggKi87IH07CisJCUY1NUIz
REQ1MTI1MUYxMkQwMDNFRjI2OSAvKiBUZWxlcGhvbmVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEQTExMjUxRjEyRDAwM0VG
MjY5IC8qIFRlbGVwaG9uZUlucHV0VHlwZS5jcHAgKi87IH07CisJCUY1NUIzREQ2MTI1MUYxMkQw
MDNFRjI2OSAvKiBUZWxlcGhvbmVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzREEyMTI1MUYxMkQwMDNFRjI2OSAvKiBUZWxlcGhv
bmVJbnB1dFR5cGUuaCAqLzsgfTsKKwkJRjU1QjNERDcxMjUxRjEyRDAwM0VGMjY5IC8qIFRleHRG
aWVsZElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNTVCM0RBMzEyNTFGMTJEMDAzRUYyNjkgLyogVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cCAqLzsgfTsKKwkJRjU1QjNERDgxMjUxRjEyRDAwM0VGMjY5IC8qIFRleHRGaWVsZElucHV0VHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNE
QTQxMjUxRjEyRDAwM0VGMjY5IC8qIFRleHRGaWVsZElucHV0VHlwZS5oICovOyB9OworCQlGNTVC
M0REOTEyNTFGMTJEMDAzRUYyNjkgLyogVGV4dElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0RBNTEyNTFGMTJEMDAzRUYyNjkg
LyogVGV4dElucHV0VHlwZS5jcHAgKi87IH07CisJCUY1NUIzRERBMTI1MUYxMkQwMDNFRjI2OSAv
KiBUZXh0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNTVCM0RBNjEyNTFGMTJEMDAzRUYyNjkgLyogVGV4dElucHV0VHlwZS5oICovOyB9
OworCQlGNTVCM0REQjEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0RBNzEyNTFGMTJE
MDAzRUYyNjkgLyogVGltZUlucHV0VHlwZS5jcHAgKi87IH07CisJCUY1NUIzRERDMTI1MUYxMkQw
MDNFRjI2OSAvKiBUaW1lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0RBODEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlw
ZS5oICovOyB9OworCQlGNTVCM0RERDEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzREE5
MTI1MUYxMkQwMDNFRjI2OSAvKiBVUkxJbnB1dFR5cGUuY3BwICovOyB9OworCQlGNTVCM0RERTEy
NTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0RBQTEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5w
dXRUeXBlLmggKi87IH07CisJCUY1NUIzRERGMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRU
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
NUIzREFCMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmNwcCAqLzsgfTsKKwkJRjU1
QjNERTAxMjUxRjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzREFDMTI1MUYxMkQwMDNFRjI2OSAv
KiBXZWVrSW5wdXRUeXBlLmggKi87IH07CiAJCUY1QzA0MURBMEZGQ0E3Q0UwMDgzOUQ0QSAvKiBI
VE1MRGF0YUxpc3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1QzA0MUQ3MEZGQ0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxpc3RFbGVt
ZW50LmNwcCAqLzsgfTsKIAkJRjVDMDQxREIwRkZDQTdDRTAwODM5RDRBIC8qIEhUTUxEYXRhTGlz
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1QzA0MUQ4MEZGQ0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxpc3RFbGVtZW50LmggKi87IH07
CiAJCUY1QzA0MUUzMEZGQ0E5NkQwMDgzOUQ0QSAvKiBET01IVE1MRGF0YUxpc3RFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUMwNDFERTBG
RkNBOTZEMDA4MzlENEEgLyogRE9NSFRNTERhdGFMaXN0RWxlbWVudC5oICovOyB9OwpAQCAtNjcx
Niw2ICs2NzcwLDggQEAKIAkJMzdDMjM4MjAxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzdDMjhBNjcxMEY2NTlDQzAwOEM3ODEzIC8qIFR5cGVzZXR0aW5nRmVhdHVy
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZXNldHRpbmdGZWF0dXJl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0M2MUYwMDEyMDk1Qzg3MDA3QTND
NjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTM3RTM1MjRBMTI0NTBDNTIwMEJBRjVEOSAvKiBJbnB1dFR5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5wdXRUeXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdFMzUyNEMxMjQ1MEM2NjAwQkFGNUQ5IC8qIElucHV0
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnB1dFR5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGODE4RkIwRDY1NzYwNjAwNUUxRjA1IC8qIFdl
YkNvcmVVUkxSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b3JlVVJMUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGODE4RkMw
RDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVVUkxSZXNwb25zZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGQzk2REExMTA0RUQ3MTAwM0UxRkFEIC8qIFRyYWlsaW5n
RmxvYXRzUm9vdElubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
cmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTExMjY1LDYgKzExMzIxLDU4IEBACiAJCUY1MjNEMzA0MDJERTQ0NzYwMTg2MzVDQSAvKiBS
YW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJRjUyM0QzMDkwMkRFNDQ3NjAxODYzNUNBIC8qIFhNTERvY3VtZW50UGFyc2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFhNTERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MjNEMzBBMDJERTQ0NzYwMTg2MzVDQSAvKiBY
TUxEb2N1bWVudFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBYTUxEb2N1bWVudFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJRjU1QjNENzkxMjUxRjEyRDAwM0VG
MjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJhc2VUZXh0SW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VUZXh0SW5wdXRUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDdCMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0
b25JbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnV0
dG9uSW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEN0Mx
MjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCdXR0b25JbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjU1QjNEN0QxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5wdXRUeXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoZWNrYm94SW5wdXRUeXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEN0UxMjUxRjEyRDAwM0VGMjY5
IC8qIENoZWNrYm94SW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENoZWNrYm94SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIz
RDdGMTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvcklucHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY1NUIzRDgwMTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklucHV0VHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTVCM0Q4MTEyNTFGMTJEMDAzRUYyNjkgLyog
RGF0ZUlucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
YXRlSW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEODIx
MjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGF0ZUlucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGNTVCM0Q4MzEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZVRpbWVJbnB1dFR5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZVRpbWVJbnB1dFR5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTVCM0Q4NDEyNTFGMTJEMDAzRUYyNjkgLyog
RGF0ZVRpbWVJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0
ZVRpbWVJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEODUx
MjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDg2MTI1MUYxMkQwMDNFRjI2OSAvKiBE
YXRlVGltZUxvY2FsSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjU1QjNEODcxMjUxRjEyRDAwM0VGMjY5IC8qIEVtYWlsSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVtYWlsSW5wdXRUeXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEODgxMjUxRjEyRDAwM0VGMjY5IC8qIEVtYWlsSW5w
dXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVtYWlsSW5wdXRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDg5MTI1MUYxMkQwMDNFRjI2
OSAvKiBGaWxlSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZpbGVJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTVC
M0Q4QTEyNTFGMTJEMDAzRUYyNjkgLyogRmlsZUlucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGaWxlSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY1NUIzRDhCMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlkZGVuSW5wdXRUeXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEOEMxMjUxRjEyRDAwM0VGMjY5IC8q
IEhpZGRlbklucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIaWRk
ZW5JbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEOEQxMjUx
RjEyRDAwM0VGMjY5IC8qIEltYWdlSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEltYWdlSW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjU1QjNEOEUxMjUxRjEyRDAwM0VGMjY5IC8qIEltYWdlSW5wdXRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlSW5wdXRUeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDhGMTI1MUYxMkQwMDNFRjI2OSAvKiBJc0luZGV4
SW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElzSW5k
ZXhJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTVCM0Q5MDEy
NTFGMTJEMDAzRUYyNjkgLyogSXNJbmRleElucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJc0luZGV4SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY1NUIzRDkxMTI1MUYxMkQwMDNFRjI2OSAvKiBNb250aElucHV0VHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb250aElucHV0VHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDkyMTI1MUYxMkQwMDNFRjI2OSAvKiBN
b250aElucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb250aElu
cHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTVCM0Q5MzEyNTFGMTJE
MDAzRUYyNjkgLyogTnVtYmVySW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE51bWJlcklucHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY1NUIzRDk0MTI1MUYxMkQwMDNFRjI2OSAvKiBOdW1iZXJJbnB1dFR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVtYmVySW5wdXRUeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDk1MTI1MUYxMkQwMDNFRjI2OSAvKiBQYXNzd29y
ZElucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXNz
d29yZElucHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDk2
MTI1MUYxMkQwMDNFRjI2OSAvKiBQYXNzd29yZElucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYXNzd29yZElucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGNTVCM0Q5NzEyNTFGMTJEMDAzRUYyNjkgLyogUmFkaW9JbnB1dFR5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFkaW9JbnB1dFR5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTVCM0Q5ODEyNTFGMTJEMDAzRUYyNjkg
LyogUmFkaW9JbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFk
aW9JbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEOTkxMjUx
RjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJhbmdlSW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjU1QjNEOUExMjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmdlSW5wdXRUeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDlCMTI1MUYxMkQwMDNFRjI2OSAvKiBSZXNldElu
cHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNldElu
cHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDlDMTI1MUYx
MkQwMDNFRjI2OSAvKiBSZXNldElucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZXNldElucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NTVCM0Q5RDEyNTFGMTJEMDAzRUYyNjkgLyogU2VhcmNoSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlYXJjaElucHV0VHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDlFMTI1MUYxMkQwMDNFRjI2OSAvKiBTZWFyY2hJ
bnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VhcmNoSW5wdXRU
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzRDlGMTI1MUYxMkQwMDNF
RjI2OSAvKiBTdWJtaXRJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3VibWl0SW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjU1QjNEQTAxMjUxRjEyRDAwM0VGMjY5IC8qIFN1Ym1pdElucHV0VHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJtaXRJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEQTExMjUxRjEyRDAwM0VGMjY5IC8qIFRlbGVwaG9uZUlu
cHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZWxlcGhv
bmVJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTVCM0RBMjEy
NTFGMTJEMDAzRUYyNjkgLyogVGVsZXBob25lSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlbGVwaG9uZUlucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGNTVCM0RBMzEyNTFGMTJEMDAzRUYyNjkgLyogVGV4dEZpZWxkSW5wdXRUeXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRGaWVsZElucHV0
VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzREE0MTI1MUYxMkQw
MDNFRjI2OSAvKiBUZXh0RmllbGRJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGV4dEZpZWxkSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY1NUIzREE1MTI1MUYxMkQwMDNFRjI2OSAvKiBUZXh0SW5wdXRUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRJbnB1dFR5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNTVCM0RBNjEyNTFGMTJEMDAzRUYyNjkgLyogVGV4dElu
cHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5wdXRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIzREE3MTI1MUYxMkQwMDNFRjI2
OSAvKiBUaW1lSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRpbWVJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTVC
M0RBODEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUaW1lSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY1NUIzREE5MTI1MUYxMkQwMDNFRjI2OSAvKiBVUkxJbnB1dFR5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMSW5wdXRUeXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEQUExMjUxRjEyRDAwM0VGMjY5IC8qIFVSTElu
cHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxJbnB1dFR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU1QjNEQUIxMjUxRjEyRDAwM0VGMjY5
IC8qIFdlZWtJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2Vla0lucHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NUIz
REFDMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlZWtJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjU4Nzg0RjAwMkRFMzc1OTAxRUE0MTIyIC8qIEN1cnNvck1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEN1cnNvck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCUY1ODc4NTE1MDJERTM3NTkwMUVBNDEyMiAvKiBEZXByZWNhdGVkUHRyTGlzdEltcGwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVw
cmVjYXRlZFB0ckxpc3RJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODUxNjAyREUzNzU5MDFFQTQxMjIgLyogRGVwcmVj
YXRlZFB0ckxpc3RJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlcHJlY2F0ZWRQdHJMaXN0SW1wbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTQxNDEsOSAr
MTQyNDksMTcgQEAKIAkJCQk5N0MxRjU1MTEyMjg1NTg4MDBFREU2MTYgLyogcGFyc2VyICovLAog
CQkJCUIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi8s
CiAJCQkJQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8s
CisJCQkJRjU1QjNENzkxMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmNwcCAq
LywKKwkJCQlGNTVCM0Q3QTEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5cGUuaCAq
LywKKwkJCQlGNTVCM0Q3QjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCAq
LywKKwkJCQlGNTVCM0Q3QzEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmggKi8s
CisJCQkJRjU1QjNEN0QxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5wdXRUeXBlLmNwcCAq
LywKKwkJCQlGNTVCM0Q3RTEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuaCAq
LywKIAkJCQk5M0M0NDFFRDBGODEzQTFBMDBDMUE2MzQgLyogQ29sbGVjdGlvbkNhY2hlLmNwcCAq
LywKIAkJCQk5M0M0NDFFRTBGODEzQTFBMDBDMUE2MzQgLyogQ29sbGVjdGlvbkNhY2hlLmggKi8s
CiAJCQkJOTNDNDQxRkYwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8sCisJ
CQkJRjU1QjNEN0YxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLywKKwkJ
CQlGNTVCM0Q4MDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCAqLywKIAkJCQlC
Qzc3RDIzODBGRjI5ODA4MDA3MDg4N0IgLyogRGF0YUdyaWRDb2x1bW4uY3BwICovLAogCQkJCUJD
NzdDRkMxMEZGMTc1NTUwMDcwODg3QiAvKiBEYXRhR3JpZENvbHVtbi5oICovLAogCQkJCUJDNzdD
RjlFMEZGMTcyQjMwMDcwODg3QiAvKiBEYXRhR3JpZENvbHVtbi5pZGwgKi8sCkBAIC0xNDE1Myw2
ICsxNDI2OSwxMiBAQAogCQkJCUJDQkNBRTM2MEZGMTkzODUwMDA3NjJBRSAvKiBEYXRhR3JpZERh
dGFTb3VyY2UuaCAqLywKIAkJCQlGNUQzQTU3QTEwNkI4M0IzMDA1NDUyOTcgLyogRGF0ZUNvbXBv
bmVudHMuY3BwICovLAogCQkJCUY1RDNBNTdCMTA2QjgzQjMwMDU0NTI5NyAvKiBEYXRlQ29tcG9u
ZW50cy5oICovLAorCQkJCUY1NUIzRDgxMTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBl
LmNwcCAqLywKKwkJCQlGNTVCM0Q4MjEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZUlucHV0VHlwZS5o
ICovLAorCQkJCUY1NUIzRDgzMTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUlucHV0VHlwZS5j
cHAgKi8sCisJCQkJRjU1QjNEODQxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lSW5wdXRUeXBl
LmggKi8sCisJCQkJRjU1QjNEODUxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lTG9jYWxJbnB1
dFR5cGUuY3BwICovLAorCQkJCUY1NUIzRDg2MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUxv
Y2FsSW5wdXRUeXBlLmggKi8sCiAJCQkJQkM3REFBRUMwRkY5NjE1RDAwQ0UwMTM4IC8qIERPTURh
dGFHcmlkRGF0YVNvdXJjZS5jcHAgKi8sCiAJCQkJQkM3REFBRUQwRkY5NjE1RDAwQ0UwMTM4IC8q
IERPTURhdGFHcmlkRGF0YVNvdXJjZS5oICovLAogCQkJCTJFRDYwOUJBMTE0NUIwNzEwMEM4Njg0
RSAvKiBET01Gb3JtRGF0YS5jcHAgKi8sCkBAIC0xNDE2MSwxMCArMTQyODMsMTYgQEAKIAkJCQk3
NkZDMkIwODEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmNwcCAqLywKIAkJCQk3NkZD
MkIwOTEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmggKi8sCiAJCQkJNzZGQzJCMEEx
MjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5pZGwgKi8sCisJCQkJRjU1QjNEODcxMjUx
RjEyRDAwM0VGMjY5IC8qIEVtYWlsSW5wdXRUeXBlLmNwcCAqLywKKwkJCQlGNTVCM0Q4ODEyNTFG
MTJEMDAzRUYyNjkgLyogRW1haWxJbnB1dFR5cGUuaCAqLywKKwkJCQlGNTVCM0Q4OTEyNTFGMTJE
MDAzRUYyNjkgLyogRmlsZUlucHV0VHlwZS5jcHAgKi8sCisJCQkJRjU1QjNEOEExMjUxRjEyRDAw
M0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCAqLywKIAkJCQlBODEzNkQzNzA5NzNBOEU3MDBENzQ0
NjMgLyogRm9ybURhdGFMaXN0LmNwcCAqLywKIAkJCQlBODEzNkQzNjA5NzNBOEU3MDBENzQ0NjMg
LyogRm9ybURhdGFMaXN0LmggKi8sCiAJCQkJOTcyMDVBQUQxMjM5MjhDQTAwQjE3MzgwIC8qIEZU
UERpcmVjdG9yeURvY3VtZW50LmNwcCAqLywKIAkJCQk5NzIwNUFBRTEyMzkyOENBMDBCMTczODAg
LyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCAqLywKKwkJCQlGNTVCM0Q4QjEyNTFGMTJEMDAzRUYy
NjkgLyogSGlkZGVuSW5wdXRUeXBlLmNwcCAqLywKKwkJCQlGNTVCM0Q4QzEyNTFGMTJEMDAzRUYy
NjkgLyogSGlkZGVuSW5wdXRUeXBlLmggKi8sCiAJCQkJQkM5N0UyMzkxMDkxNDQ5NTAwMTBEMzYx
IC8qIEhUTUxBbGxDb2xsZWN0aW9uLmNwcCAqLywKIAkJCQlCQzk3RTIzODEwOTE0NDk1MDAxMEQz
NjEgLyogSFRNTEFsbENvbGxlY3Rpb24uaCAqLywKIAkJCQlCQzk3RTIzQzEwOTE0NkYxMDAxMEQz
NjEgLyogSFRNTEFsbENvbGxlY3Rpb24uaWRsICovLApAQCAtMTQ0MTcsMzAgKzE0NTQ1LDY0IEBA
CiAJCQkJQTc3OTc5MTUwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5pZGwgKi8sCiAJCQkJ
OTcyMDVBQjExMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuY3BwICovLAogCQkJCTk3
MjA1QUIyMTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3VtZW50LmggKi8sCisJCQkJRjU1QjNE
OEQxMjUxRjEyRDAwM0VGMjY5IC8qIEltYWdlSW5wdXRUeXBlLmNwcCAqLywKKwkJCQlGNTVCM0Q4
RTEyNTFGMTJEMDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5cGUuaCAqLywKIAkJCQlCMDE0OUU3QjEx
QTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCAqLywKIAkJCQlCMDE0OUU3
QzExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi8sCisJCQkJMzdFMzUy
NEExMjQ1MEM1MjAwQkFGNUQ5IC8qIElucHV0VHlwZS5jcHAgKi8sCisJCQkJMzdFMzUyNEMxMjQ1
MEM2NjAwQkFGNUQ5IC8qIElucHV0VHlwZS5oICovLAorCQkJCUY1NUIzRDhGMTI1MUYxMkQwMDNF
RjI2OSAvKiBJc0luZGV4SW5wdXRUeXBlLmNwcCAqLywKKwkJCQlGNTVCM0Q5MDEyNTFGMTJEMDAz
RUYyNjkgLyogSXNJbmRleElucHV0VHlwZS5oICovLAogCQkJCUE0NTZGQTI0MTFBRDRBODMwMDIw
QjQyMCAvKiBMYWJlbHNOb2RlTGlzdC5jcHAgKi8sCiAJCQkJQTQ1NkZBMjUxMUFENEE4MzAwMjBC
NDIwIC8qIExhYmVsc05vZGVMaXN0LmggKi8sCiAJCQkJOTcyMDVBQjMxMjM5MjkxMDAwQjE3Mzgw
IC8qIE1lZGlhRG9jdW1lbnQuY3BwICovLAogCQkJCTk3MjA1QUI0MTIzOTI5MTAwMEIxNzM4MCAv
KiBNZWRpYURvY3VtZW50LmggKi8sCiAJCQkJRTQ0NjEzOUIwQ0Q2MzMxMDAwRkFEQTc1IC8qIE1l
ZGlhRXJyb3IuaCAqLywKIAkJCQlFNDQ2MTM5QzBDRDYzMzEwMDBGQURBNzUgLyogTWVkaWFFcnJv
ci5pZGwgKi8sCisJCQkJRjU1QjNEOTExMjUxRjEyRDAwM0VGMjY5IC8qIE1vbnRoSW5wdXRUeXBl
LmNwcCAqLywKKwkJCQlGNTVCM0Q5MjEyNTFGMTJEMDAzRUYyNjkgLyogTW9udGhJbnB1dFR5cGUu
aCAqLywKKwkJCQlGNTVCM0Q5MzEyNTFGMTJEMDAzRUYyNjkgLyogTnVtYmVySW5wdXRUeXBlLmNw
cCAqLywKKwkJCQlGNTVCM0Q5NDEyNTFGMTJEMDAzRUYyNjkgLyogTnVtYmVySW5wdXRUeXBlLmgg
Ki8sCisJCQkJRjU1QjNEOTUxMjUxRjEyRDAwM0VGMjY5IC8qIFBhc3N3b3JkSW5wdXRUeXBlLmNw
cCAqLywKKwkJCQlGNTVCM0Q5NjEyNTFGMTJEMDAzRUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUu
aCAqLywKIAkJCQk5NzIwNUFCOTEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuY3Bw
ICovLAogCQkJCTk3MjA1QUJBMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5oICov
LAorCQkJCUY1NUIzRDk3MTI1MUYxMkQwMDNFRjI2OSAvKiBSYWRpb0lucHV0VHlwZS5jcHAgKi8s
CisJCQkJRjU1QjNEOTgxMjUxRjEyRDAwM0VGMjY5IC8qIFJhZGlvSW5wdXRUeXBlLmggKi8sCisJ
CQkJRjU1QjNEOTkxMjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmNwcCAqLywKKwkJ
CQlGNTVCM0Q5QTEyNTFGMTJEMDAzRUYyNjkgLyogUmFuZ2VJbnB1dFR5cGUuaCAqLywKKwkJCQlG
NTVCM0Q5QjEyNTFGMTJEMDAzRUYyNjkgLyogUmVzZXRJbnB1dFR5cGUuY3BwICovLAorCQkJCUY1
NUIzRDlDMTI1MUYxMkQwMDNFRjI2OSAvKiBSZXNldElucHV0VHlwZS5oICovLAorCQkJCUY1NUIz
RDlEMTI1MUYxMkQwMDNFRjI2OSAvKiBTZWFyY2hJbnB1dFR5cGUuY3BwICovLAorCQkJCUY1NUIz
RDlFMTI1MUYxMkQwMDNFRjI2OSAvKiBTZWFyY2hJbnB1dFR5cGUuaCAqLywKIAkJCQlBNUFGQjM0
RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLywKIAkJCQlBNUFGQjM0RTExNTE1
MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi8sCisJCQkJRjU1QjNEOUYxMjUxRjEyRDAwM0VG
MjY5IC8qIFN1Ym1pdElucHV0VHlwZS5jcHAgKi8sCisJCQkJRjU1QjNEQTAxMjUxRjEyRDAwM0VG
MjY5IC8qIFN1Ym1pdElucHV0VHlwZS5oICovLAorCQkJCUY1NUIzREExMTI1MUYxMkQwMDNFRjI2
OSAvKiBUZWxlcGhvbmVJbnB1dFR5cGUuY3BwICovLAorCQkJCUY1NUIzREEyMTI1MUYxMkQwMDNF
RjI2OSAvKiBUZWxlcGhvbmVJbnB1dFR5cGUuaCAqLywKIAkJCQk5N0JDODRCMTEyMzcxMTgwMDAw
QzYxNjEgLyogVGV4dERvY3VtZW50LmNwcCAqLywKIAkJCQk5N0JDODRCMjEyMzcxMTgwMDAwQzYx
NjEgLyogVGV4dERvY3VtZW50LmggKi8sCisJCQkJRjU1QjNEQTMxMjUxRjEyRDAwM0VGMjY5IC8q
IFRleHRGaWVsZElucHV0VHlwZS5jcHAgKi8sCisJCQkJRjU1QjNEQTQxMjUxRjEyRDAwM0VGMjY5
IC8qIFRleHRGaWVsZElucHV0VHlwZS5oICovLAorCQkJCUY1NUIzREE1MTI1MUYxMkQwMDNFRjI2
OSAvKiBUZXh0SW5wdXRUeXBlLmNwcCAqLywKKwkJCQlGNTVCM0RBNjEyNTFGMTJEMDAzRUYyNjkg
LyogVGV4dElucHV0VHlwZS5oICovLAogCQkJCUJDRUY0NUU4MEU2ODc3NjcwMDFDMTI4NyAvKiBU
ZXh0TWV0cmljcy5oICovLAogCQkJCUJDRUY0NTNGMEU2NzZBQzEwMDFDMTI4NyAvKiBUZXh0TWV0
cmljcy5pZGwgKi8sCisJCQkJRjU1QjNEQTcxMjUxRjEyRDAwM0VGMjY5IC8qIFRpbWVJbnB1dFR5
cGUuY3BwICovLAorCQkJCUY1NUIzREE4MTI1MUYxMkQwMDNFRjI2OSAvKiBUaW1lSW5wdXRUeXBl
LmggKi8sCiAJCQkJRTQ0NjEzOUQwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuY3BwICov
LAogCQkJCUU0NDYxMzlFMENENjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmggKi8sCiAJCQkJ
RTQ0NjEzOUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuaWRsICovLAorCQkJCUY1NUIz
REE5MTI1MUYxMkQwMDNFRjI2OSAvKiBVUkxJbnB1dFR5cGUuY3BwICovLAorCQkJCUY1NUIzREFB
MTI1MUYxMkQwMDNFRjI2OSAvKiBVUkxJbnB1dFR5cGUuaCAqLywKIAkJCQkxNUM3NzA4QjEwMEQz
QzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5jcHAgKi8sCiAJCQkJMTVDNzcwOEExMDBEM0M2
QTAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCAqLywKIAkJCQkxNUM3NzA4OTEwMEQzQzZBMDA1
QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5pZGwgKi8sCiAJCQkJRTQ0NjEzQjQwQ0Q2MzQ0RTAwRkFE
QTc1IC8qIFZvaWRDYWxsYmFjay5oICovLAogCQkJCUU0NDYxM0EwMENENjMzMTAwMEZBREE3NSAv
KiBWb2lkQ2FsbGJhY2suaWRsICovLAorCQkJCUY1NUIzREFCMTI1MUYxMkQwMDNFRjI2OSAvKiBX
ZWVrSW5wdXRUeXBlLmNwcCAqLywKKwkJCQlGNTVCM0RBQzEyNTFGMTJEMDAzRUYyNjkgLyogV2Vl
a0lucHV0VHlwZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBodG1sOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTE3OTE1LDYgKzE4MDc3LDcgQEAKIAkJCQlCQ0E4Q0E2MDExRTRFNkQx
MDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
MjRFRTgwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
QzNEQTIyMEQwMDZDMUQwMEVGNkYyNiAvKiBCYXNlNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY1
NUIzREFFMTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM5NDYyRDgxMDdBN0I0QzAwODU3MTkzIC8qIEJlZm9yZUxvYWRFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE3MjFGQkIxMUQyNzkwNzAwNjM4QjQyIC8qIEJlZm9yZVByb2Nl
c3NFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIyM0EzMjgwOUJCQTdEMDAwNjdDQzUzIC8q
IEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTE3OTQyLDYgKzE4
MTA1LDcgQEAKIAkJCQk5MzMwOUREQjA5OUU2NDkyMDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3Rl
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTk5RTc1OTAxMTA1NUExRjAwRDkwNEZBIC8q
IEJyaWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTlCNTk3NzUxMTA4NjU3OTAwNzE1OUU4IC8q
IEJyaWRnZUpTQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjU1QjNEQjAxMjUxRjEyRDAwM0VGMjY5
IC8qIEJ1dHRvbklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRjgwRDdFMkI4
MjAwN0MzOTgzIC8qIGNfY2xhc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZBMEQ3RTJC
ODIwMDdDMzk4MyAvKiBjX2luc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUNGQzBE
N0UyQjgyMDA3QzM5ODMgLyogY19ydW50aW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTE3OTc0LDYg
KzE4MTM4LDcgQEAKIAkJCQk2NTUwQjZBMDA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMjYwRDAwNkMxRDAwRUY2RjI2IC8qIENoYXJh
Y3Rlck5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEyQTBEMDA2QzFEMDBFRjZGMjYg
LyogQ2hhcnNldERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUY1NUIzREIyMTI1MUYxMkQwMDNF
RjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTAwQjcyMUEx
MURFNjQyODAwOEFCOUZGIC8qIENoZWNrZWRJbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjky
NTQzMEY3RUY1QjgwMDdFMzdDOSAvKiBDaGVja2VkUmFkaW9CdXR0b25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NzIyMDA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNzk5Miw2ICsxODE1Nyw3IEBACiAJCQkJOTNDNDQyMDAwRjgxM0FFMTAw
QzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU2NzBC
MDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTYzMEQw
MEJGMjIwMDcxQjc4MiAvKiBDb2xvckRpc3RhbmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNTVC
M0RCNDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM4MkRGNTgxMEE4RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5JbmZvLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE4MTAzLDYgKzE4MjY5LDkgQEAKIAkJCQlCQzIyNzQ2RjBFODM2NjQ1MDBF
N0Y5NzUgLyogRGF0YVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0MUMxMUQ3RjQxNjAw
NjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1RDNB
NTdEMTA2QjgzQjMwMDU0NTI5NyAvKiBEYXRlQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRjU1QjNEQjYxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUY1NUIzREI4MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUlucHV0VHlwZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRjU1QjNEQkExMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1l
TG9jYWxJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzIyOEExMTFENTcyMkUwMEQ1
QTdEMyAvKiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtl
clRocmVhZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODkxMCw2ICsxOTA3OSw3IEBACiAJCQkJNjNG
NUQ0RjcwRThDNEI3MTAwQzBCRDA0IC8qIEVsZW1lbnRSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTQxNUYxODQwRDlBMUE4MzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThDRkY2QkUwQTE1NjExODAwMEE0MjM0IC8qIEVsbGlwc2lzQm94
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNTVCM0RCQzEyNTFGMTJEMDAzRUYyNjkgLyogRW1haWxJ
bnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUE1MEQwMEQ4QkEwMEJCODI1QyAv
KiBFbXB0eUNsaWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEQzg3RUYwMTE3MTZERjIwMDFD
MEU2RCAvKiBFbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RUE3RUMyMEExOTQ1RDAwMEE4RUY1RiAvKiBFbnRpdHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTg5
NTMsNiArMTkxMjMsNyBAQAogCQkJCTg5ODc4NTYyMTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlRW50
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2QzgzMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxl
RXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFREYzNjlGMTIyQzk0QzgwMDJGN0Q0RSAvKiBG
aWxlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNTVCM0RCRTEyNTFGMTJEMDAzRUYy
NjkgLyogRmlsZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDODYxMjJCOEEz
RDAwMUZEMUY3IC8qIEZpbGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM4OTEyMkI4
QTNEMDAxRkQxRjcgLyogRmlsZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVERjM2OUQx
MjJDOTRCNDAwMkY3RDRFIC8qIEZpbGVSZWFkZXJTeW5jLmggaW4gSGVhZGVycyAqLywKQEAgLTE5
MDQ0LDYgKzE5MjE1LDcgQEAKIAkJCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBT
ZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzY5M0JBRDIxMDZDMkRDQTAwN0IwODIzIC8q
IEhhbHRhYmxlUGx1Z2luLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDgyQjc0NjExOThDMzU0MDBC
RkIwMDUgLyogSGFzaENoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNTVCM0RDMDEy
NTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Qzk0RDE1NDBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTdEQ0UyMDIxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTc0MUQxMTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCBpbiBI
ZWFkZXJzICovLApAQCAtMTkyMDMsNiArMTkzNzUsNyBAQAogCQkJCUJDQTk3OTE3MTIxNUQwNTUw
MDVDNDg1QyAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFB
MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1
QUI2MTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNTVCM0RDMjEyNTFGMTJEMDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJl
c2l6ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLApAQCAtMTkyMTcsNiArMTkzOTAsNyBAQAogCQkJ
CUJDRTc4OTE2MTEyMEQ2MDgwMDYwRUNFNSAvKiBJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4NTkxQUE1MEYwODVDNEUwMDlCQUNCMSAvKiBJbnB1dEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REVBMDk5RTY0OTIwMDU2RTU4MSAvKiBJbnNl
cnRJbnRvVGV4dE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFQzA5OUU2
NDkyMDA1NkU1ODEgLyogSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDA3REVBQkEwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE5MjUxLDYgKzE5NDI1LDcgQEAKIAkJCQlCMjc1MzU3NDBCMDUzODE0MDAy
Q0U2NEYgLyogSW50UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzUwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFNpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTc2MEIwNTM4MTQw
MDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjU1QjNEQzQxMjUx
RjEyRDAwM0VGMjY5IC8qIElzSW5kZXhJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5
RTU2MEE3MTEwNTMzNjYwMEFBMTI1OCAvKiBKYXZhQ2xhc3NKU0MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU5QTlFN0IyMTEwNDc1OTQwMERGQjRDMSAvKiBKYXZhSW5zdGFuY2VKU0MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxNjk4MjY4MTEzNDY4MDcwMDg5NDExNSAvKiBKYXZhUnVudGltZU9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTc4MCw2ICsxOTk1NSw3IEBACiAJCQkJODk4Nzg1NkEx
MjJDQTA2NDAwM0FBQkRBIC8qIE1ldGFkYXRhQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNzcyQzRGMEM0RUIzMDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlz
dExldmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNTVCM0RDNjEyNTFGMTJEMDAzRUYyNjkgLyog
TW9udGhJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjQ2MEE0NEVGQzcwMEY5
OTJFMCAvKiBNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2MzA5QUM0Q0U2
MDBBNkFBQjQgLyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODUwMzFCNDgwQTQ0RUZDNzAwRjk5MkUwIC8qIE1vdXNlUmVsYXRlZEV2ZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTE5ODE3LDYgKzE5OTkzLDcgQEAKIAkJCQkxQTU2OUQxMDBEN0UyQjgy
MDA3QzM5ODMgLyogbnBydW50aW1lX2ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2
OUQxMTBEN0UyQjgyMDA3QzM5ODMgLyogbnBydW50aW1lX3ByaXYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBMjdDRjk3MTE4QTM1NEMwMDQxRDYzMiAvKiBucHR5cGVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNTVCM0RDODEyNTFGMTJEMDAzRUYyNjkgLyogTnVtYmVySW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTU2OUQxMjBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMTQwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfaGVhZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQxNTBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19p
bnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTg0NCw2ICsyMDAyMSw3IEBACiAJCQkJMDg4
NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Qzc2QUMxMzBERDdBRDVDMDA0MTVGMzQgLyogUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGNTVCM0RDQTEyNTFGMTJEMDAzRUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTRCMjcwOEM3MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJk
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QzQzUyNDBCNTc2QjRCMDAyQ0E0NTAgLyogUGFzdGVi
b2FyZEhlbHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1ODAwQjA1MzgxNDAwMkNFNjRG
IC8qIFBhdGguaCBpbiBIZWFkZXJzICovLApAQCAtMTk4OTYsOSArMjAwNzQsMTEgQEAKIAkJCQlF
NEQ2ODc3OTBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjc5NzIwRDAwQkYyMjAwNzFCNzgyIC8qIFJhZGlhbEdyYWRpZW50
QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjU1QjNEQ0MxMjUxRjEyRDAwM0VGMjY5
IC8qIFJhZGlvSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTkxODA4MjQ1RTU5
MDAxRTlBQkMgLyogUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDlENTNDMERBMjdFMTgw
MDc3MjE2QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQyM0NB
NTZDMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRjU1QjNEQ0UxMjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODREODI3QzExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFy
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZCNUYgLyogUmVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc5RjQzRDQxMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGly
ZWN0U2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIwMDIwLDYgKzIwMjAwLDcgQEAKIAkJ
CQlBODlDQ0M1MzBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTBBMDk5RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMkYwOTc5QzNCRDAw
NDY3NzQxIC8qIFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUY1NUIzREQwMTI1MUYxMkQw
MDNFRjI2OSAvKiBSZXNldElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0RjcxNDIw
RDVBNkY0NDAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
NEY3MTNDMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE0Qzc2NzkwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmggaW4g
SGVhZGVycyAqLywKQEAgLTIwMDgyLDYgKzIwMjYzLDcgQEAKIAkJCQk1RDkyNUI2ODBGNjRENERE
MDBCODQ3RjAgLyogU2Nyb2xsQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzA5Qzg2
MEIwNjU3QUEwMDVBQkQ0RCAvKiBTY3JvbGxUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2
RDZFMjYwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUY1NUIzREQyMTI1MUYxMkQwMDNFRjI2OSAvKiBTZWFyY2hJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFCNzE3MDg5MEIzMTE4MDgwMDE3MTIzRSAvKiBTZWFyY2hQb3B1cE1lbnUuaCBp
biBIZWFkZXJzICovLAogCQkJCUQzOUQwMDlEMTFGOTA3RTYwMDYwNDFGMiAvKiBTZWFyY2hQb3B1
cE1lbnVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzQzBDQ0Q1MTEyQzVFNjIwMENFMDU3RCAv
KiBTZWN1cmVUZXh0SW5wdXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjAxOTIsNiArMjAzNzQsNyBA
QAogCQkJCUJDNUVCODEwMEU4MUYyQ0UwMEIyNTk2NSAvKiBTdHlsZVRyYW5zZm9ybURhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNUVCNjlBMEU4MURBNjMwMEIyNTk2NSAvKiBTdHlsZVZpc3Vh
bERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwMDBFRDI4MTFDMUI5Q0QwMEM0NzcyNiAvKiBT
dWJmcmFtZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjU1QjNERDQxMjUxRjEyRDAwM0VG
MjY5IC8qIFN1Ym1pdElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2RDM3NDgwQURC
QTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTMxNzg5MzBCMjBBODE2MDAzMTY5ODcgLyogU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1OUE3RDEzMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0
YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMDM4Niw2ICsyMDU2OSw3IEBACiAJCQkJOTNFNjJEOUIw
OTg1RjQxNjAwRTFCNUUzIC8qIFN5c3RlbVRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZG
MDUxMEExNTRGMDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFM0JFQzMwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNTVCM0RENjEyNTFGMTJEMDAzRUYyNjkgLyogVGVsZXBob25lSW5wdXRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTUwQjZBNjA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTMzMDlFMTcwOTlFNjQ5MjAwNTZFNTgxIC8qIFRleHRBZmZpbml0eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMzQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3Vu
ZGFyaWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTIwNDA1LDcgKzIwNTg5LDkgQEAKIAkJCQlDMTA1
REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyQzNEQTQ5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0RW5jb2RpbmdSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzQTE0MzAwQjdEMTg4NjAwQTUzRkZEIC8qIFRleHRF
dmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjU1QjNERDgxMjUxRjEyRDAwM0VGMjY5IC8qIFRl
eHRGaWVsZElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMTgwOTlFNjQ5MjAw
NTZFNTgxIC8qIFRleHRHcmFudWxhcml0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjU1QjNEREEx
MjUxRjEyRDAwM0VGMjY5IC8qIFRleHRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
MzA5RTFDMDk5RTY0OTIwMDU2RTU4MSAvKiBUZXh0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRUY0NUU5MEU2ODc3NjcwMDFDMTI4NyAvKiBUZXh0TWV0cmljcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMwRkM2OEExMDcyQjkyODAwNDUyOTNFIC8qIFRleHRSZW5kZXJpbmdNb2RlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTIwNDI0LDYgKzIwNjEwLDcgQEAKIAkJCQk1MURGNkQ3RTBCOTJB
MTZEMDBDMkRDODUgLyogVGhyZWFkQ2hlY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkY1N0Ez
MEYwMTI1NUIwMDg5MUVCQiAvKiBUaHJlYWRHbG9iYWxEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxODVCQ0YyOTBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGNTVCM0REQzEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMwNUIyNEQwOThGMUI2QjAwQzI4ODU1IC8q
IFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNCMDBDRDYzMzEwMDBGQURBNzUgLyog
VGltZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMDQ1MCw2ICsyMDYzNyw3IEBACiAJCQkJ
QjJDM0RBNEQwRDAwNkMxRDAwRUY2RjI2IC8qIFVuaWNvZGVSYW5nZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRBRkNGQTUwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUQwODZGRTk4MDlENTNBQUIwMDVCQzc0RCAvKiBVbmxpbmtDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGNTVCM0RERTEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTY1ODFCMjA5RDE0RUU2MDAwRTYxRDcgLyogVXNlckFn
ZW50U3R5bGVTaGVldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwM0YxRkVBMTFFNkFCNDMwMDgy
NThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FDRjNCRDEw
NzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywK
QEAgLTIwNTEwLDYgKzIwNjk4LDcgQEAKIAkJCQk3NjM3QzU0MzExMkU3QjdFMDAzRDZDREMgLyog
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzY3Rjk5QzAx
MUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkNGMzMyRDBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRjU1QjNERTAxMjUxRjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjUxMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVl
bEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzgwRjQ3NDA5QTExQUI0MDAxRkRCMzQgLyog
V2lkZ2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzlCMDJFRjBFQTJEQkM0MDBDNTQ1NzAgLyog
V2lkdGhJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMDk2Myw2ICsyMTE1Miw3IEBACiAJ
CQkJQkNBOENBNUYxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdEltcGwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkMxMjRFRTcwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBMjEwRDAwNkMxRDAwRUY2RjI2IC8qIEJhc2U2NC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGNTVCM0RBRDEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRl
eHRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3MjIwNEIxMUQyOTYwNTAwNjM4
QjQyIC8qIEJlZm9yZVByb2Nlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQjIzQTMy
NzA5QkJBN0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODUwMzFCM0MwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjA5ODEsNiArMjExNzEsNyBAQAogCQkJCUJDRUE0ODU0
MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzMwOUREQTA5OUU2NDkyMDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1OUI1OTc3MzExMDg2NTZCMDA3MTU5RTggLyogQnJpZGdlSlNDLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUY1NUIzREFGMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25J
bnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRjcwRDdFMkI4MjAwN0MzOTgz
IC8qIGNfY2xhc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRjkwRDdFMkI4MjAwN0Mz
OTgzIC8qIGNfaW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRkIwRDdFMkI4
MjAwN0MzOTgzIC8qIGNfcnVudGltZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIxMDA4LDYgKzIx
MTk5LDcgQEAKIAkJCQk1MTQxODVFRjBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldy
YXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MEI2OUYwOTlERjAyNzAwOTBENzgxIC8q
IENoYXJhY3RlckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMyNkRDMEMwOURBRDVENjAw
QUZDODQ3IC8qIENoYXJzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY1NUIzREIxMTI1
MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5M0Y5MjU0NDBGN0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBODE4NzIyNTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEQ4MjM4QjBBRjkyREY2MDAwNEYwNTcgLyogQ2hy
b21lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjEwMjIsNiArMjEyMTQsNyBAQAogCQkJCUIyNzUz
NTY2MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNG
MzMyNDBGMkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyNzk2MjBEMDBCRjIyMDA3MUI3ODIgLyogQ29sb3JEaXN0YW5jZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGNTVCM0RCMzEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NzcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MEI2QTEwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdDMjM2MTAxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBs
ZXhUZXh0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIxMTEwLDYgKzIxMzAzLDkg
QEAKIAkJCQlCQzc3RDFGRDBGRjI4RDlCMDA3MDg4N0IgLyogRGF0YUdyaWRDb2x1bW5MaXN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjQ2NDFEMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0
RE9NU3RyaW5nTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1RDNBNTdDMTA2QjgzQjMwMDU0
NTI5NyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNTVCM0RCNTEy
NTFGMTJEMDAzRUYyNjkgLyogRGF0ZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlG
NTVCM0RCNzEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZVRpbWVJbnB1dFR5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRjU1QjNEQjkxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lTG9jYWxJbnB1
dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDMjI4QTIxMUQ1NzIyRTAwRDVBN0QzIC8q
IERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2MkE0
NTAxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIxNDQ4LDYgKzIxNjQ0LDcgQEAKIAkJCQlFRDUw
MURDNjBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThDNEE4MDgwOUQ1NjMyNzAwMDNBQzhEIC8qIEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThDRkY2Q0IwQTE1NjFDRDAwMEE0MjM0IC8qIEVsbGlwc2lzQm94LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUY1NUIzREJCMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlwZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0VDMzBBMTk0NUQwMDBBOEVGNUYgLyogRW50aXR5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE3RUMxMEExOTQ1RDAwMEE4RUY1RiAvKiBFbnRpdHlS
ZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODk4Nzg1NUIxMjJDQTA2NDAwM0FBQkRB
IC8qIEVudHJ5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjE0ODMsNiArMjE2ODAsNyBAQAogCQkJ
CTkzNEZFOUU1MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNjZDNzcyRDBBQjYwM0QyMDAyMzhDQzQgLyogRmlsZUNob29zZXJNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4OTg3ODU2MTEyMkNBMDY0MDAzQUFCREEgLyogRmlsZUVudHJ5LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUY1NUIzREJEMTI1MUYxMkQwMDNFRjI2OSAvKiBGaWxlSW5w
dXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkQ2Qzg1MTIyQjhBM0QwMDFGRDFGNyAv
KiBGaWxlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzZENkM4ODEyMkI4QTNEMDAxRkQx
RjcgLyogRmlsZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRURGMzY5QzEyMkM5NEI0
MDAyRjdENEUgLyogRmlsZVJlYWRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMTU2MSw2
ICsyMTc1OSw3IEBACiAJCQkJMEY1ODBCMDUwRjEyQTI1NTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5
ZXJDQS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyQTAxNUFBMEFGNkNENTMwMDZCQ0UwRSAvKiBH
cmFwaGljc1R5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MEI1NjE2MTIxMTlEMjMwMDhC
NDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY1NUIzREJGMTI1
MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM5NEQxNTMwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTdEQ0UyMDExMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNzQxRDEyMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTIxNzA3LDYgKzIxOTA2LDcgQEAKIAkJCQlCMjc1MzU1RTBC
MDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzc5Nzkx
OTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
MjA1QUI1MTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUY1NUIzREMxMTI1MUYxMkQwMDNFRjI2OSAvKiBJbWFnZUlucHV0VHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwODk1ODI1NTBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0IwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdl
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjAxNDlFN0YxMUE0QjIxNTAwMTk2QTdCIC8qIElt
YWdlUmVzaXplclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIxNzIwLDYgKzIxOTIwLDcg
QEAKIAkJCQlBOENGRjVFNDBBMTU1QTA1MDAwQTQyMzQgLyogSW5saW5lRmxvd0JveC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0VBNDg1OTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJv
eC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODcwMEJFNzBGMDg2QzUzMDA5MTk0MTkgLyogSW5w
dXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3RTM1MjRCMTI0NTBDNTIwMEJBRjVE
OSAvKiBJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERTkwOTlFNjQ5MjAw
NTZFNTgxIC8qIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTMzMDlERUIwOTlFNjQ5MjAwNTZFNTgxIC8qIEluc2VydExpbmVCcmVha0NvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRDA3REVBQjkwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExp
c3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjE3NTMsNiArMjE5NTQsNyBAQAogCQkJ
CUIyNzUzNTdEMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjI3NTM1NjIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMjc1MzU3RTBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZU1hYy5tbSBpbiBT
b3VyY2VzICovLAorCQkJCUY1NUIzREMzMTI1MUYxMkQwMDNFRjI2OSAvKiBJc0luZGV4SW5wdXRU
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5RTU2MEE5MTEwNTMzNkYwMEFBMTI1OCAvKiBK
YXZhQ2xhc3NKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlBOUU3QjAxMTA0NzU4ODAwREZC
NEMxIC8qIEphdmFJbnN0YW5jZUpTQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTY5ODI2NDEx
MzQ2N0YzMDA4OTQxMTUgLyogSmF2YVJ1bnRpbWVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yMjM3MCw2ICsyMjU3Miw3IEBACiAJCQkJQkM3NzJDNEUwQzRFQjMwNDAwODMyODVGIC8qIE1J
TUVUeXBlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3NzJDNUUwQzRFQjM0NDAw
ODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNkQ3
NEFFNDA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUY1NUIzREM1MTI1MUYxMkQwMDNFRjI2OSAvKiBNb250aElucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUI0NTBBNDRFRkM3MDBGOTkyRTAgLyogTW91
c2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0VCMzU1RjA5RTM3RkQ2MDBGNDM3OTkg
LyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NTAzMUI0NzBBNDRFRkM3MDBGOTkyRTAgLyogTW91c2VSZWxhdGVkRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yMjM5NSw2ICsyMjU5OCw3IEBACiAJCQkJMzM5MENBNTUwRkZDMTU3QjAwOTIx
OTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQw
QTBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE1NjlEMEQwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlGNTVCM0RDNzEyNTFGMTJEMDAzRUYyNjkgLyogTnVtYmVySW5wdXRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTYwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfaW5z
dGFuY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQxODBEN0UyQjgyMDA3QzM5ODMgLyog
b2JqY19ydW50aW1lLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yMjQxNiw2ICsyMjYyMCw3IEBACiAJ
CQkJMUMyNjQ5N0MwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTEyODRBRUExMDQ0N0RFRTAwRUFFQjUyIC8qIFBhZ2VUcmFuc2l0aW9uRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMUVDQzIwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxS
ZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjU1QjNEQzkxMjUxRjEyRDAwM0VGMjY5IC8q
IFBhc3N3b3JkSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRCMjcwOTgzMEFGMkU1
RTAwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1
N0YwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1
NjMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGhDRy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIyNDUy
LDcgKzIyNjU3LDkgQEAKIAkJCQk1MTRDNzY3NDBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlv
blNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0RDY4Nzc3MEVEN0FFM0QwMDZFQTk3OCAv
KiBQdXJnZWFibGVCdWZmZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTUwQTBCQzkwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjU1
QjNEQ0IxMjUxRjEyRDAwM0VGMjY5IC8qIFJhZGlvSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzRjE5QUI5MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGNTVCM0RDRDEyNTFGMTJEMDAzRUYyNjkgLyogUmFuZ2VJbnB1dFR5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTc5RjQzRDMxMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2No
ZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjRCMEE0NEVGQzcwMEY5OTJFMCAv
KiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEy
QzBEMDA2QzFEMDBFRjZGMjYgLyogUmVndWxhckV4cHJlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yMjU3MCw2ICsyMjc3Nyw3IEBACiAJCQkJQTg5Q0NDNTIwRjQ0RTk4MTAwQjVEQTEwIC8q
IFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5
RTA5MDk5RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0IxNkMyRTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlGNTVCM0RDRjEyNTFGMTJEMDAzRUYyNjkgLyogUmVzZXRJbnB1dFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM0RjcxM0UwRDVBNkYyODAwMDE4RDY5IC8qIFJl
c291cmNlRXJyb3JCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUw
MDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2
NzgwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjI2MjQsNiArMjI4MzIsNyBAQAogCQkJCTVEOTI1QjY3MEY2NEQ0REQwMEI4NDdGMCAvKiBT
Y3JvbGxCZWhhdmlvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzI0NDFDNDBFOEI2NUQwMDA1
NTMyMEYgLyogU2Nyb2xsVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzUzNjc2QjA5QUVE
ODhCMDBEMzVDRDYgLyogU2Nyb2xsVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUY1NUIz
REQxMTI1MUYxMkQwMDNFRjI2OSAvKiBTZWFyY2hJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQUI3MTcwQTAwQjMxMTkzQjAwMTcxMjNFIC8qIFNlYXJjaFBvcHVwTWVudU1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTMzQzBDQ0Q0MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0
SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEMEUwRkEwRTk3MkMzNTAwMjY1REVBIC8q
IFNlY3VyaXR5T3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjI3MjUsNiArMjI5MzQsNyBA
QAogCQkJCUJDNUVCODBGMEU4MUYyQ0UwMEIyNTk2NSAvKiBTdHlsZVRyYW5zZm9ybURhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI2OTkwRTgxREE2MzAwQjI1OTY1IC8qIFN0eWxlVmlz
dWFsRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMDAwRUQyNzExQzFCOUNEMDBDNDc3MjYg
LyogU3ViZnJhbWVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjU1QjNERDMxMjUxRjEy
RDAwM0VGMjY5IC8qIFN1Ym1pdElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0Uy
MjdFNDBBRjU4OUFEMDBENDgzMjQgLyogU3VicmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTNCMkQ4MTgwRjk5MjBFRTAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNjJDMTIxN0MxMUFCOUU3NzAwM0M0NjJDIC8qIFN1c3BlbmRh
YmxlVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMjkwNCw2ICsyMzExNCw3IEBACiAJCQkJ
QjJFNEVDOTcwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2NTgyQTE2MzA5OTk5RDZEMDBCRUVCNkQgLyogU3lzdGVtVGltZU1hYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0UzQkVDMjBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjU1QjNERDUxMjUxRjEyRDAwM0VGMjY5IC8qIFRlbGVw
aG9uZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTUwQjZBNTA5OURGMDI3MDA5
MEQ3ODEgLyogVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFGRkM5NzBEMDBBNURGMDAz
MDA3NEQgLyogVGV4dEJvdW5kYXJpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEzNzBE
MDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yMjkyMSw2ICsyMzEzMiw4IEBACiAJCQkJQzEwNURBNjIwRjNBQTY4RjAwMURENDRGIC8q
IFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTQ4
MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5MzNBMTQyRTBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUY1NUIzREQ3MTI1MUYxMkQwMDNFRjI2OSAvKiBUZXh0RmllbGRJbnB1dFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjU1QjNERDkxMjUxRjEyRDAwM0VGMjY5IC8qIFRl
eHRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUIwOTlFNjQ5MjAwNTZF
NTgxIC8qIFRleHRJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUE5RDA4MjQ1
RTU5MDAxRTlBQkMgLyogVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkMzREE0QTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTIyOTMzLDYgKzIzMTQ2LDcgQEAKIAkJCQk1MURGNkQ4MDBCOTJBMThFMDBDMkRDODUg
LyogVGhyZWFkQ2hlY2subW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUZGNTdBNjBGMDEyNTZCMDA4
OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxODVCQ0Yy
ODBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUY1NUIzRERCMTI1MUYxMkQwMDNFRjI2OSAvKiBUaW1lSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTc1NTNDRkU5MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3Rv
cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFQTQwOTlFQjc4QzAwNTZFNTgxIC8qIFRp
bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxM0FGMENENjMzMTAwMEZBREE3NSAvKiBU
aW1lUmFuZ2VzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjI5NTMsNiArMjMxNjcsNyBAQAogCQkJ
CTQ5RUVDREVFMTA1MDNDMjQwMDA5OUZBQiAvKiBVaW50OEFycmF5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTRDMEQwMDZDMUQwMEVGNkYyNiAvKiBVbmljb2RlUmFuZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRDA4NkZFOTkwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjU1QjNEREQxMjUxRjEyRDAwM0VGMjY5IC8qIFVSTElu
cHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzI2MTA5RDFFMTk5MDAwQkUzMjUg
LyogVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQUNG
M0JDMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMjU0MkY0REExMTY2QzI1QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNh
dG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjI5OTcsNiArMjMyMTIsNyBAQAogCQkJCTc2MzdD
NTQxMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTc2N0Y5OUJFMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNGMzMyQzBGMkI5QTI1MDA0
QjY3OTUgLyogV2ViVGlsZWRMYXllci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUY1NUIzRERGMTI1
MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1
MDMxQjUwMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzNUM0NzczMDlBQzRENzcwMEE2QUFCNCAvKiBXaGVlbEV2ZW50TWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTM4MEY0NzMwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAg
Yi9XZWJDb3JlL2h0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxNjYwMzI3
YThlYjdjODIyYjI1YWI3NDY4YWEwMjY2Y2VkNTBhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2h0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAg
ICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5
YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcg
KHNhbUB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmFzZVRl
eHRJbnB1dFR5cGUuaCIKKworI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK0Jhc2VUZXh0SW5w
dXRUeXBlOjpCYXNlVGV4dElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQp
CisgICAgOiBUZXh0RmllbGRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KQoreworfQorCitib29sIEJh
c2VUZXh0SW5wdXRUeXBlOjppc1RleHRUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBCYXNlVGV4dElucHV0VHlwZTo6cGF0dGVybk1pc21hdGNoKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwYXR0ZXJuID0gZWxl
bWVudCgpLT5nZXRBdHRyaWJ1dGUocGF0dGVybkF0dHIpOworICAgIC8vIEVtcHR5IHZhbHVlcyBj
YW4ndCBiZSBtaXNtYXRjaGVkCisgICAgaWYgKHBhdHRlcm4uaXNFbXB0eSgpIHx8IHZhbHVlLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFJlZ3VsYXJFeHByZXNzaW9uIHBh
dHRlcm5SZWdFeHAocGF0dGVybiwgVGV4dENhc2VTZW5zaXRpdmUpOworICAgIGludCBtYXRjaExl
bmd0aCA9IDA7CisgICAgaW50IHZhbHVlTGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7CisgICAgaW50
IG1hdGNoT2Zmc2V0ID0gcGF0dGVyblJlZ0V4cC5tYXRjaCh2YWx1ZSwgMCwgJm1hdGNoTGVuZ3Ro
KTsKKyAgICByZXR1cm4gbWF0Y2hPZmZzZXQgfHwgbWF0Y2hMZW5ndGggIT0gdmFsdWVMZW5ndGg7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9C
YXNlVGV4dElucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODA0ZDY1NWNlY2QyNmVkZDQ5NjQ2ODhmMzUyNWMxMjAyN2UxOTgzYwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5oCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEJhc2VUZXh0SW5wdXRUeXBlX2gKKyNkZWZpbmUgQmFzZVRleHRJbnB1dFR5
cGVfaAorCisjaW5jbHVkZSAiVGV4dEZpZWxkSW5wdXRUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gQmFzZSBvZiBlbWFpbCwgcGFzc3dvcmQsIHNlYXJjaCwgdGVsLCB0ZXh0LCBh
bmQgVVJMIHR5cGVzLgorLy8gVGhleSBzdXBwb3J0IG1heGxlbmd0aCwgc2VsZWN0aW9uIGZ1bmN0
aW9ucywgYW5kIHNvIG9uLgorY2xhc3MgQmFzZVRleHRJbnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZp
ZWxkSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBCYXNlVGV4dElucHV0VHlwZShIVE1MSW5wdXRF
bGVtZW50Kik7CisgICAgdmlydHVhbCBib29sIGlzVGV4dFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgcGF0dGVybk1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQmFzZVRleHRJbnB1dFR5cGVfaApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0J1dHRvbklucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwv
QnV0dG9uSW5wdXRUeXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTU3N2IzZGVmOWNiYzgwMmM2ZmYyOTg1
M2MwMTgxODE4OTMwYzlmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0J1dHRvbklu
cHV0VHlwZS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBM
YXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtv
aXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVl
bGxlciAobXVlbGxlckBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20p
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdXR0b25JbnB1dFR5cGUuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093
blB0cjxJbnB1dFR5cGU+IEJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEJ1dHRvbklucHV0VHlw
ZShpbnB1dEVsZW1lbnQpKTsKK30KKworQnV0dG9uSW5wdXRUeXBlOjpCdXR0b25JbnB1dFR5cGUo
SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIDogSW5wdXRUeXBlKGlucHV0RWxl
bWVudCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0J1dHRvbklucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0J1dHRvbklucHV0VHlwZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRlMzU1MmMzYjQ3MTQ2YjI0M2QzNjQ2N2JiOWYyOTIzZmQ4ZTgxMDcKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQnV0dG9uSW5wdXRUeXBlLmgKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQnV0dG9uSW5wdXRUeXBlX2gKKyNkZWZpbmUgQnV0dG9uSW5wdXRUeXBl
X2gKKworI2luY2x1ZGUgIklucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEJ1dHRvbklucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKwor
cHJpdmF0ZToKKyAgICBCdXR0b25JbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCopOworICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCB7IHJldHVy
biBJbnB1dFR5cGVOYW1lczo6YnV0dG9uKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEJ1dHRvbklucHV0VHlwZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZTFhZTQzOGIxZGQwZmNkMmZhYjMyNDI2NzgzM2IzMTJiM2QzOTlk
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcApA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAg
IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdo
dCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNoZWNrYm94SW5wdXRUeXBlLmgiCisKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8SW5wdXRU
eXBlPiBDaGVja2JveElucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENoZWNrYm94SW5wdXRUeXBlKGlucHV0
RWxlbWVudCkpOworfQorCitDaGVja2JveElucHV0VHlwZTo6Q2hlY2tib3hJbnB1dFR5cGUoSFRN
TElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIDogSW5wdXRUeXBlKGlucHV0RWxlbWVu
dCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0NoZWNrYm94SW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYjVjMzEyY2M5NDY3MjM5MTgyMjk0ODNiNjBiZjAwMjc2MzIzMTYwCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmgKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ2hlY2tib3hJbnB1dFR5cGVfaAorI2RlZmluZSBDaGVja2JveElu
cHV0VHlwZV9oCisKKyNpbmNsdWRlICJJbnB1dFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDaGVja2JveElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1l
bnQqKTsKKworcHJpdmF0ZToKKyAgICBDaGVja2JveElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50
Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpjaGVja2JveCgpOyB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDaGVja2JveElucHV0VHlwZV9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTJkYTFjMTQyMDAwNzhjOTNhNGRmODNhN2FjMTJi
MDQ5OTc3MzM0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8g
KGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAg
ICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbG9ySW5wdXRUeXBlLmgiCisKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8SW5w
dXRUeXBlPiBDb2xvcklucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbG9ySW5wdXRUeXBlKGlucHV0RWxl
bWVudCkpOworfQorCitDb2xvcklucHV0VHlwZTo6Q29sb3JJbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50KQorICAgIDogVGV4dEZpZWxkSW5wdXRUeXBlKGlucHV0RWxlbWVu
dCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0NvbG9ySW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YmQ3MDg0ZTY2OGQ3ZGQ0OWNmYTYxZDI1Y2I3Yzc1OWJmOGE5ZTQ1Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKQEAgLTAsMCArMSw0OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQ29sb3JJbnB1dFR5cGVfaAorI2RlZmluZSBDb2xvcklucHV0VHlwZV9oCisKKyNp
bmNsdWRlICJUZXh0RmllbGRJbnB1dFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBDb2xvcklucHV0VHlwZSA6IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5cGUgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudCk7CisKK3ByaXZhdGU6CisgICAgQ29sb3JJbnB1dFR5cGUoSFRNTElu
cHV0RWxlbWVudCogaW5wdXRFbGVtZW50KTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmNvbG9y
KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEJ1dHRvbklu
cHV0VHlwZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAgYi9X
ZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMyMmUwMTI4OGZkMTIw
ODA4M2VkZjRhYmIzOWNmNzVmYTkxODMxMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRt
bC9EYXRlSW5wdXRUeXBlLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55
cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0
Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGVJbnB1dFR5cGUuaCIK
KworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGFzc093blB0cjxJbnB1dFR5cGU+IERhdGVJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dEVsZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRlSW5wdXRU
eXBlKGlucHV0RWxlbWVudCkpOworfQorCitEYXRlSW5wdXRUeXBlOjpEYXRlSW5wdXRUeXBlKEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICA6IFRleHRGaWVsZElucHV0VHlwZShp
bnB1dEVsZW1lbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlw
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmEzYjhlMThhMTc3YzljNWRmMWVlMjIxYTkwODI2ZTNhYWNkYTU4MjQK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5oCkBAIC0wLDAg
KzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIERhdGVJbnB1dFR5cGVfaAorI2RlZmluZSBEYXRlSW5wdXRUeXBlX2gK
KworI2luY2x1ZGUgIlRleHRGaWVsZElucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIERhdGVJbnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZpZWxkSW5wdXRUeXBlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRF
bGVtZW50Kik7CisKK3ByaXZhdGU6CisgICAgRGF0ZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50
Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpkYXRlKCk7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERhdGVJbnB1dFR5cGVfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlu
cHV0VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjgyZTViZTIyOTYxOGI0NTgzNTQ2ZTViMzQzMjdhNWIw
ZmYxYTg5MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlw
ZS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAg
ICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRlVGltZUlucHV0VHlwZS5oIgorCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRy
PElucHV0VHlwZT4gRGF0ZVRpbWVJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRlVGltZUlucHV0VHlw
ZShpbnB1dEVsZW1lbnQpKTsKK30KKworRGF0ZVRpbWVJbnB1dFR5cGU6OkRhdGVUaW1lSW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICA6IFRleHRGaWVsZElucHV0
VHlwZShpbnB1dEVsZW1lbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0Rh
dGVUaW1lSW5wdXRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIxZTMzZDFhYWYyOWQzNTY5OWY4NDMyZGRh
NjcyNGZjN2M1ZmJkNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlu
cHV0VHlwZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERhdGVUaW1lSW5wdXRUeXBlX2gKKyNk
ZWZpbmUgRGF0ZVRpbWVJbnB1dFR5cGVfaAorCisjaW5jbHVkZSAiVGV4dEZpZWxkSW5wdXRUeXBl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGF0ZVRpbWVJbnB1dFR5cGUgOiBw
dWJsaWMgVGV4dEZpZWxkSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7CisKK3ByaXZhdGU6CisgICAg
RGF0ZVRpbWVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCopOworICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVO
YW1lczo6ZGF0ZXRpbWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRGF0ZVRpbWVJbnB1dFR5cGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0RhdGVU
aW1lTG9jYWxJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5
cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJkOWI0M2ZkZmE3YjI1ZjEwZDczOGZhNTQ5ODVkOGU3Mzk4ZGU5
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlw
ZS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAg
ICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgiCisKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NP
d25QdHI8SW5wdXRUeXBlPiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0
RWxlbWVudCogaW5wdXRFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGF0ZVRp
bWVMb2NhbElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKK30KKworRGF0ZVRpbWVMb2NhbElucHV0
VHlwZTo6RGF0ZVRpbWVMb2NhbElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQpCisgICAgOiBUZXh0RmllbGRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KQoreworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZWY5ZmMzYTk2MzZlODE2NGZhNzUzNWM4ZjlhNThhMjc5MmRkNDhlCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaApAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlX2gKKyNkZWZpbmUgRGF0ZVRp
bWVMb2NhbElucHV0VHlwZV9oCisKKyNpbmNsdWRlICJUZXh0RmllbGRJbnB1dFR5cGUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRlVGltZUxvY2FsSW5wdXRUeXBlIDogcHVi
bGljIFRleHRGaWVsZElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOworCitwcml2YXRlOgorICAgIERh
dGVUaW1lTG9jYWxJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCopOworICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5
cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBEYXRlVGltZUxvY2FsSW5wdXRUeXBlX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY0MmUxNDRlZDQzNTk1MjU0ODUxMDljNDU3YjY4M2U3NjgwZmJhNDEK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2Rl
Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMp
IDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChD
KSAyMDA3IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRW1haWxJbnB1dFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJbnB1dFR5cGU+IEVt
YWlsSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgRW1haWxJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7Cit9
CisKK0VtYWlsSW5wdXRUeXBlOjpFbWFpbElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnQpCisgICAgOiBCYXNlVGV4dElucHV0VHlwZShpbnB1dEVsZW1lbnQpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9FbWFpbElu
cHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU5
NmQxZGQ2YTNlNTg5Y2ViZTUxNWFlOWJkMGZhNzhiOGQ2NGQ5MgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVt
YWlsSW5wdXRUeXBlX2gKKyNkZWZpbmUgRW1haWxJbnB1dFR5cGVfaAorCisjaW5jbHVkZSAiQmFz
ZVRleHRJbnB1dFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbWFpbElu
cHV0VHlwZSA6IHB1YmxpYyBCYXNlVGV4dElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOworCitwcml2
YXRlOgorICAgIEVtYWlsSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gSW5w
dXRUeXBlTmFtZXM6OmVtYWlsKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEJ1dHRvbklucHV0VHlwZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmMyZjhiMzZhMGJhYmRlODE1MDIzZTNiZDk1MWQ4YjBmNDhjMzlmMQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMCwwICsxLDQ0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAg
ICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAg
ICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQ
cm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwg
V2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZpbGVJbnB1dFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJbnB1dFR5cGU+IEZpbGVJbnB1dFR5cGU6OmNy
ZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBGaWxlSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworfQorCitGaWxlSW5wdXRUeXBl
OjpGaWxlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICA6IElu
cHV0VHlwZShpbnB1dEVsZW1lbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlNTcxNmRlMTgwZDQzODhkY2UzZTQ4YWJiODVhMDg3
OGRhMWVmMjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5o
CkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZpbGVJbnB1dFR5cGVfaAorI2RlZmluZSBGaWxlSW5w
dXRUeXBlX2gKKworI2luY2x1ZGUgIklucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEZpbGVJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7
CisKK3ByaXZhdGU6CisgICAgRmlsZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIElucHV0VHlwZU5hbWVzOjpmaWxlKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEZpbGVJbnB1dFR5cGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IGIwNmFhMzViN2RhMDJhYzkwMzQ5YTJiZTNlZjMzNzE1MTY4ODNhNTkuLjZjMTllMzgx
MjBkODM0N2E4MmQwZjZlNDZjZWRkYmRlODA2ZmU1ZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNp
bmNsdWRlICJJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVk
ZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKQEAgLTE2MSw2
ICsxNjIsNyBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogICAgICwgbV9hdXRvY29tcGxldGUo
VW5pbml0aWFsaXplZCkKICAgICAsIG1fYXV0b2ZpbGxlZChmYWxzZSkKICAgICAsIG1faW5pdGVk
KGZhbHNlKQorICAgICwgbV9pbnB1dFR5cGUoSW5wdXRUeXBlOjpjcmVhdGVUZXh0KHRoaXMpKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGlucHV0VGFnKSB8fCBoYXNUYWdOYW1lKGlzaW5kZXhU
YWcpKTsKIH0KQEAgLTM0NSwxNyArMzQ3LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1
ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIAogYm9vbCBIVE1MSW5wdXRFbGVt
ZW50OjpwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICBp
ZiAoIWlzVGV4dFR5cGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgcGF0dGVybiA9IGdldEF0dHJpYnV0ZShwYXR0ZXJuQXR0cik7Ci0gICAgLy8gRW1w
dHkgdmFsdWVzIGNhbid0IGJlIG1pc21hdGNoZWQKLSAgICBpZiAocGF0dGVybi5pc0VtcHR5KCkg
fHwgdmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmVndWxhckV4
cHJlc3Npb24gcGF0dGVyblJlZ0V4cChwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7Ci0gICAg
aW50IG1hdGNoTGVuZ3RoID0gMDsKLSAgICBpbnQgdmFsdWVMZW5ndGggPSB2YWx1ZS5sZW5ndGgo
KTsKLSAgICBpbnQgbWF0Y2hPZmZzZXQgPSBwYXR0ZXJuUmVnRXhwLm1hdGNoKHZhbHVlLCAwLCAm
bWF0Y2hMZW5ndGgpOwotICAgIHJldHVybiBtYXRjaE9mZnNldCB8fCBtYXRjaExlbmd0aCAhPSB2
YWx1ZUxlbmd0aDsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnBhdHRlcm5NaXNtYXRjaCh2YWx1
ZSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZh
bHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2spIGNvbnN0CkBAIC05MTEsNiArOTAzLDcg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICAgICAgICAgIGJvb2wg
d2FzUGFzc3dvcmRGaWVsZCA9IGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSA9PSBQQVNTV09SRDsKICAg
ICAgICAgICAgIGJvb2wgZGlkUmVzcGVjdEhlaWdodEFuZFdpZHRoID0gcmVzcGVjdEhlaWdodEFu
ZFdpZHRoQXR0cnMoKTsKICAgICAgICAgICAgIG1fZGVwcmVjYXRlZFR5cGVOdW1iZXIgPSBuZXdU
eXBlOworICAgICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZSh0aGlzLCB0
eXBlU3RyaW5nKTsKICAgICAgICAgICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKICAg
ICAgICAgICAgIGJvb2wgd2lsbFN0b3JlVmFsdWUgPSBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0
dHJpYnV0ZSgpOwogICAgICAgICAgICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQgPSBkZXByZWNhdGVk
SW5wdXRUeXBlKCkgPT0gUEFTU1dPUkQ7CkBAIC05NTksNDIgKzk1Miw5IEBAIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlVHlwZSgpCiAgICAgICAgIG1faW1hZ2VMb2FkZXIuY2xlYXIoKTsK
IH0KIAotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogY3JlYXRlRm9ybUNvbnRyb2xUeXBlcygp
Ci17Ci0gICAgQXRvbWljU3RyaW5nKiB0eXBlcyA9IG5ldyBBdG9taWNTdHJpbmdbSFRNTElucHV0
RWxlbWVudDo6ZGVwcmVjYXRlZE51bWJlck9mVHlwZXNdOwotICAgIC8vIFRoZSB2YWx1ZXMgbXVz
dCBiZSBsb3dlcmNhc2VkIGJlY2F1c2UgdGhleSB3aWxsIGJlIHRoZSByZXR1cm4gdmFsdWVzIG9m
Ci0gICAgLy8gIGlucHV0LnR5cGUgYW5kIGl0IG11c3QgYmUgbG93ZXJjYXNlIGFjY29yZGluZyB0
byBET00gTGV2ZWwgMi4KLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpCVVRUT05dID0gImJ1
dHRvbiI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6Q0hFQ0tCT1hdID0gImNoZWNrYm94
IjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpDT0xPUl0gPSAiY29sb3IiOwotICAgIHR5
cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkRBVEVdID0gImRhdGUiOwotICAgIHR5cGVzW0hUTUxJbnB1
dEVsZW1lbnQ6OkRBVEVUSU1FXSA9ICJkYXRldGltZSI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxl
bWVudDo6REFURVRJTUVMT0NBTF0gPSAiZGF0ZXRpbWUtbG9jYWwiOwotICAgIHR5cGVzW0hUTUxJ
bnB1dEVsZW1lbnQ6OkVNQUlMXSA9ICJlbWFpbCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVu
dDo6RklMRV0gPSAiZmlsZSI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6SElEREVOXSA9
ICJoaWRkZW4iOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OklNQUdFXSA9ICJpbWFnZSI7
Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6SVNJTkRFWF0gPSBlbXB0eUF0b207Ci0gICAg
dHlwZXNbSFRNTElucHV0RWxlbWVudDo6TU9OVEhdID0gIm1vbnRoIjsKLSAgICB0eXBlc1tIVE1M
SW5wdXRFbGVtZW50OjpOVU1CRVJdID0gIm51bWJlciI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxl
bWVudDo6UEFTU1dPUkRdID0gInBhc3N3b3JkIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50
OjpSQURJT10gPSAicmFkaW8iOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlJBTkdFXSA9
ICJyYW5nZSI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6UkVTRVRdID0gInJlc2V0IjsK
LSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpTRUFSQ0hdID0gInNlYXJjaCI7Ci0gICAgdHlw
ZXNbSFRNTElucHV0RWxlbWVudDo6U1VCTUlUXSA9ICJzdWJtaXQiOwotICAgIHR5cGVzW0hUTUxJ
bnB1dEVsZW1lbnQ6OlRFTEVQSE9ORV0gPSAidGVsIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVt
ZW50OjpURVhUXSA9ICJ0ZXh0IjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpUSU1FXSA9
ICJ0aW1lIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpVUkxdID0gInVybCI7Ci0gICAg
dHlwZXNbSFRNTElucHV0RWxlbWVudDo6V0VFS10gPSAid2VlayI7Ci0gICAgcmV0dXJuIHR5cGVz
OwotfQotCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbnB1dEVsZW1lbnQ6OmZvcm1Db250cm9s
VHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogZm9ybUNvbnRy
b2xUeXBlcyA9IGNyZWF0ZUZvcm1Db250cm9sVHlwZXMoKTsKLSAgICByZXR1cm4gZm9ybUNvbnRy
b2xUeXBlc1tkZXByZWNhdGVkSW5wdXRUeXBlKCldOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+
Zm9ybUNvbnRyb2xUeXBlKCk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2F2ZUZvcm1D
b250cm9sU3RhdGUoU3RyaW5nJiByZXN1bHQpIGNvbnN0CkBAIC0xNDgxLDcwICsxNDQxLDEyIEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVzZXQoKQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OmlzVGV4dEZpZWxkKCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKGRlcHJlY2F0ZWRJbnB1dFR5cGUo
KSkgewotICAgIGNhc2UgQ09MT1I6Ci0gICAgY2FzZSBEQVRFOgotICAgIGNhc2UgREFURVRJTUU6
Ci0gICAgY2FzZSBEQVRFVElNRUxPQ0FMOgotICAgIGNhc2UgRU1BSUw6Ci0gICAgY2FzZSBJU0lO
REVYOgotICAgIGNhc2UgTU9OVEg6Ci0gICAgY2FzZSBOVU1CRVI6Ci0gICAgY2FzZSBQQVNTV09S
RDoKLSAgICBjYXNlIFNFQVJDSDoKLSAgICBjYXNlIFRFTEVQSE9ORToKLSAgICBjYXNlIFRFWFQ6
Ci0gICAgY2FzZSBUSU1FOgotICAgIGNhc2UgVVJMOgotICAgIGNhc2UgV0VFSzoKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgY2FzZSBCVVRUT046Ci0gICAgY2FzZSBDSEVDS0JPWDoKLSAgICBj
YXNlIEZJTEU6Ci0gICAgY2FzZSBISURERU46Ci0gICAgY2FzZSBJTUFHRToKLSAgICBjYXNlIFJB
RElPOgotICAgIGNhc2UgUkFOR0U6Ci0gICAgY2FzZSBSRVNFVDoKLSAgICBjYXNlIFNVQk1JVDoK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pc1RleHRGaWVsZCgp
OwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzVGV4dFR5cGUoKSBjb25zdAogewotICAg
IHN3aXRjaCAoZGVwcmVjYXRlZElucHV0VHlwZSgpKSB7Ci0gICAgY2FzZSBFTUFJTDoKLSAgICBj
YXNlIFBBU1NXT1JEOgotICAgIGNhc2UgU0VBUkNIOgotICAgIGNhc2UgVEVMRVBIT05FOgotICAg
IGNhc2UgVEVYVDoKLSAgICBjYXNlIFVSTDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2Fz
ZSBCVVRUT046Ci0gICAgY2FzZSBDSEVDS0JPWDoKLSAgICBjYXNlIENPTE9SOgotICAgIGNhc2Ug
REFURToKLSAgICBjYXNlIERBVEVUSU1FOgotICAgIGNhc2UgREFURVRJTUVMT0NBTDoKLSAgICBj
YXNlIEZJTEU6Ci0gICAgY2FzZSBISURERU46Ci0gICAgY2FzZSBJTUFHRToKLSAgICBjYXNlIElT
SU5ERVg6Ci0gICAgY2FzZSBNT05USDoKLSAgICBjYXNlIE5VTUJFUjoKLSAgICBjYXNlIFJBRElP
OgotICAgIGNhc2UgUkFOR0U6Ci0gICAgY2FzZSBSRVNFVDoKLSAgICBjYXNlIFNVQk1JVDoKLSAg
ICBjYXNlIFRJTUU6Ci0gICAgY2FzZSBXRUVLOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gbV9pbnB1dFR5cGUtPmlzVGV4dFR5cGUoKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpzZXRDaGVja2VkKGJvb2wgbm93Q2hlY2tlZCwgYm9vbCBzZW5kQ2hhbmdlRXZlbnQpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaAppbmRleCBlMDY4YzhjYjY3NmY0ZjQ2MzJjZjE2NzZiOGI4MDdkZTIw
Y2E0NTliLi44OGUyYmY3NzQyYjhmOGQ5YjFhOGQ5MmQxNTQxMWNhZGEyNzY5MmMzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgRmlsZUxpc3Q7CiBjbGFz
cyBIVE1MRGF0YUxpc3RFbGVtZW50OwogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSFRN
TE9wdGlvbkVsZW1lbnQ7CitjbGFzcyBJbnB1dFR5cGU7CiBjbGFzcyBLVVJMOwogY2xhc3MgVmlz
aWJsZVNlbGVjdGlvbjsKIApAQCAtNjUsOSArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIE1PTlRI
LAogICAgICAgICBUSU1FLAogICAgICAgICBXRUVLLAotICAgICAgICAvLyBJZiB5b3UgYWRkIG5l
dyB0eXBlcyBvciBjaGFuZ2UgdGhlIG9yZGVyIG9mIGVudW0gdmFsdWVzLCB1cGRhdGUgZGVwcmVj
YXRlZE51bWJlck9mVHlwZXMgYmVsb3cuCiAgICAgfTsKLSAgICBzdGF0aWMgY29uc3QgaW50IGRl
cHJlY2F0ZWROdW1iZXJPZlR5cGVzID0gV0VFSyArIDE7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxIVE1MSW5wdXRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTElucHV0RWxlbWVudCgpOwpA
QCAtMzc1LDYgKzM3NCw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERBVEFMSVNUKQogICAgIGJv
b2wgbV9oYXNOb25FbXB0eUxpc3QgOiAxOwogI2VuZGlmCisgICAgT3duUHRyPElucHV0VHlwZT4g
bV9pbnB1dFR5cGU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSGlkZGVuSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRmMzJkZDNmNjBlZjgxNjFmZTk4M2IyY2UxMjAyMjI0YTBjOTIwOTYKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcApAQCAtMCww
ICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykg
MjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkhpZGRlbklucHV0VHlwZS5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPElucHV0VHlwZT4gSGlk
ZGVuSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgSGlkZGVuSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOwor
fQorCitIaWRkZW5JbnB1dFR5cGU6OkhpZGRlbklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQpCisgICAgOiBJbnB1dFR5cGUoaW5wdXRFbGVtZW50KQoreworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRU
eXBlLmggYi9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I0Mjhj
Mzk3YWFmZGEzZWVmZjEwZTRlMjg2ZDc5ZDkyZTU5MTViYwotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIaWRk
ZW5JbnB1dFR5cGVfaAorI2RlZmluZSBIaWRkZW5JbnB1dFR5cGVfaAorCisjaW5jbHVkZSAiSW5w
dXRUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSGlkZGVuSW5wdXRUeXBl
IDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5w
dXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOworCitwcml2YXRlOgorICAgIEhpZGRl
bklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpo
aWRkZW4oKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSGlk
ZGVuSW5wdXRUeXBlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5j
cHAgYi9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlZjI5MDBl
MjlhZTYyZjY1MDVjNTVlZDk2YjhmYWE2OTI5ZmZlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAo
QykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAo
QykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
diAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgKHNh
bUB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VJbnB1
dFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGFzc093blB0cjxJbnB1dFR5cGU+IEltYWdlSW5wdXRUeXBlOjpjcmVhdGUoSFRN
TElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
SW1hZ2VJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7Cit9CisKK0ltYWdlSW5wdXRUeXBlOjpJbWFn
ZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgOiBJbnB1dFR5
cGUoaW5wdXRFbGVtZW50KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9JbWFnZUlu
cHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwNjNiNWFhZDZmZDE4ZDE0NGQ5NDgwZDVmNjVhZmEwYzE1
YTJkMGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaApA
QCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBJbWFnZUlucHV0VHlwZV9oCisjZGVmaW5lIEltYWdlSW5w
dXRUeXBlX2gKKworI2luY2x1ZGUgIklucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEltYWdlSW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCop
OworCitwcml2YXRlOgorICAgIEltYWdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmltYWdlKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEltYWdlSW5wdXRUeXBlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTQ5NzA4MzQxZTBmYzE0NTdlYmJiZTRmODI3OGJlODkyYjY4ZWZjZgotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0wLDAgKzEsMjgxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9z
a3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2Vp
bmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklu
cHV0VHlwZS5oIgorCisjaW5jbHVkZSAiQnV0dG9uSW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiQ2hl
Y2tib3hJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJDb2xvcklucHV0VHlwZS5oIgorI2luY2x1ZGUg
IkRhdGVJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJEYXRlVGltZUlucHV0VHlwZS5oIgorI2luY2x1
ZGUgIkRhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJFbWFpbElucHV0VHlwZS5o
IgorI2luY2x1ZGUgIkZpbGVJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50
LmgiCisjaW5jbHVkZSAiSGlkZGVuSW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiSW1hZ2VJbnB1dFR5
cGUuaCIKKyNpbmNsdWRlICJJc0luZGV4SW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiTW9udGhJbnB1
dFR5cGUuaCIKKyNpbmNsdWRlICJOdW1iZXJJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJQYXNzd29y
ZElucHV0VHlwZS5oIgorI2luY2x1ZGUgIlJhZGlvSW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiUmFu
Z2VJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IlJlc2V0SW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiU2VhcmNoSW5wdXRUeXBlLmgiCisjaW5jbHVk
ZSAiU3VibWl0SW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgiCisj
aW5jbHVkZSAiVGV4dElucHV0VHlwZS5oIgorI2luY2x1ZGUgIlRpbWVJbnB1dFR5cGUuaCIKKyNp
bmNsdWRlICJVUkxJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJXZWVrSW5wdXRUeXBlLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUGFzc093blB0
cjxJbnB1dFR5cGU+ICgqKShIVE1MSW5wdXRFbGVtZW50KiksIENhc2VGb2xkaW5nSGFzaD4gSW5w
dXRUeXBlRmFjdG9yeU1hcDsKK3N0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZUZhY3RvcnlNYXA+
IGNyZWF0ZUlucHV0VHlwZUZhY3RvcnlNYXAoKQoreworICAgIE93blB0cjxJbnB1dFR5cGVGYWN0
b3J5TWFwPiBtYXAgPSBhZG9wdFB0cihuZXcgSW5wdXRUeXBlRmFjdG9yeU1hcCk7CisgICAgbWFw
LT5hZGQoSW5wdXRUeXBlTmFtZXM6OmJ1dHRvbigpLCBCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZSk7
CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmNoZWNrYm94KCksIENoZWNrYm94SW5wdXRU
eXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpjb2xvcigpLCBDb2xv
cklucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZGF0ZSgp
LCBEYXRlSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpk
YXRldGltZSgpLCBEYXRlVGltZUlucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1
dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCgpLCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVh
dGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjplbWFpbCgpLCBFbWFpbElucHV0VHlw
ZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZmlsZSgpLCBGaWxlSW5w
dXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpoaWRkZW4oKSwg
SGlkZGVuSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpp
bWFnZSgpLCBJbWFnZUlucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVO
YW1lczo6aXNpbmRleCgpLCBJc0luZGV4SW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRk
KElucHV0VHlwZU5hbWVzOjptb250aCgpLCBNb250aElucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBt
YXAtPmFkZChJbnB1dFR5cGVOYW1lczo6bnVtYmVyKCksIE51bWJlcklucHV0VHlwZTo6Y3JlYXRl
KTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6cGFzc3dvcmQoKSwgUGFzc3dvcmRJbnB1
dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnJhZGlvKCksIFJh
ZGlvSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpyYW5n
ZSgpLCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1l
czo6cmVzZXQoKSwgUmVzZXRJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRU
eXBlTmFtZXM6OnNlYXJjaCgpLCBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5h
ZGQoSW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCgpLCBTdWJtaXRJbnB1dFR5cGU6OmNyZWF0ZSk7Cisg
ICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnRlbGVwaG9uZSgpLCBUZWxlcGhvbmVJbnB1dFR5
cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnRpbWUoKSwgVGltZUlu
cHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6dXJsKCksIFVS
TElucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6d2Vlaygp
LCBXZWVrSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIC8vIE5vIG5lZWQgdG8gcmVnaXN0ZXIgInRl
eHQiIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQgdHlwZS4KKyAgICByZXR1cm4gbWFwLnJlbGVh
c2UoKTsKK30KKworUGFzc093blB0cjxJbnB1dFR5cGU+IElucHV0VHlwZTo6Y3JlYXRlKEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFtZSkK
K3sKKyAgICBzdGF0aWMgY29uc3QgSW5wdXRUeXBlRmFjdG9yeU1hcCogZmFjdG9yeU1hcCA9IGNy
ZWF0ZUlucHV0VHlwZUZhY3RvcnlNYXAoKS5sZWFrUHRyKCk7CisgICAgUGFzc093blB0cjxJbnB1
dFR5cGU+ICgqZmFjdG9yeSkoSFRNTElucHV0RWxlbWVudCopID0gZmFjdG9yeU1hcC0+Z2V0KHR5
cGVOYW1lKTsKKyAgICBpZiAoIWZhY3RvcnkpCisgICAgICAgIGZhY3RvcnkgPSBUZXh0SW5wdXRU
eXBlOjpjcmVhdGU7CisgICAgcmV0dXJuIGZhY3RvcnkoaW5wdXRFbGVtZW50KTsKK30KKworUGFz
c093blB0cjxJbnB1dFR5cGU+IElucHV0VHlwZTo6Y3JlYXRlVGV4dChIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dEVsZW1lbnQpCit7CisgICAgcmV0dXJuIFRleHRJbnB1dFR5cGU6OmNyZWF0ZShpbnB1
dEVsZW1lbnQpOworfQorCitJbnB1dFR5cGU6OklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQpIDogbV9lbGVtZW50KGlucHV0RWxlbWVudCkKK3sKK30KKworSW5wdXRUeXBl
Ojp+SW5wdXRUeXBlKCkKK3sKK30KKworYm9vbCBJbnB1dFR5cGU6OmlzVGV4dEZpZWxkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSW5wdXRUeXBlOjppc1RleHRUeXBl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSW5wdXRUeXBlOjpwYXR0
ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK25hbWVzcGFjZSBJbnB1dFR5cGVOYW1lcyB7CisKKy8vIFRoZSB0eXBlIG5hbWVzIG11c3Qg
YmUgbG93ZXJjYXNlZCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB0aGUgcmV0dXJuIHZhbHVlcyBvZgor
Ly8gaW5wdXQudHlwZSBhbmQgaW5wdXQudHlwZSBtdXN0IGJlIGxvd2VyY2FzZSBhY2NvcmRpbmcg
dG8gRE9NIExldmVsIDIuCisKK2NvbnN0IEF0b21pY1N0cmluZyYgYnV0dG9uKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJidXR0b24iKSk7CisgICAg
cmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgY2hlY2tib3goKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNoZWNrYm94IikpOwor
ICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIGNvbG9yKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJjb2xvciIpKTsKKyAg
ICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBkYXRlKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRlIikpOworICAgIHJl
dHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRldGltZSIpKTsKKyAg
ICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBkYXRldGltZWxvY2FsKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRldGlt
ZS1sb2NhbCIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBl
bWFpbCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgi
ZW1haWwiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgZmls
ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiZmls
ZSIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBoaWRkZW4o
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImhpZGRl
biIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZSgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiaW1hZ2Ui
KSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgaXNpbmRleCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgia2h0bWxf
aXNpbmRleCIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBt
b250aCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgi
bW9udGgiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgbnVt
YmVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJu
dW1iZXIiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgcGFz
c3dvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAo
InBhc3N3b3JkIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IHJhZGlvKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwg
KCJyYWRpbyIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBy
YW5nZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgi
cmFuZ2UiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgcmVz
ZXQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInJl
c2V0IikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIHNlYXJj
aCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgic2Vh
cmNoIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIHN1Ym1p
dCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgic3Vi
bWl0IikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIHRlbGVw
aG9uZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgi
dGVsIikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIHRleHQo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInRleHQi
KSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgdGltZSgpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgidGltZSIpKTsK
KyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiB1cmwoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInVybCIpKTsKKyAgICBy
ZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiB3ZWVrKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ3ZWVrIikpOworICAgIHJldHVy
biBuYW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpJbnB1VHlwZU5hbWVzCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3NzA5ZDIwYjBiY2Nm
YTQyMDU0OGQ4OTliMGRhMmM0NzY3ZDlmOWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5wdXRUeXBlX2gKKyNkZWZp
bmUgSW5wdXRUeXBlX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTElucHV0
RWxlbWVudDsKKworY2xhc3MgSW5wdXRUeXBlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVt
ZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRU
eXBlPiBjcmVhdGVUZXh0KEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5JbnB1dFR5
cGUoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBpc1RleHRUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBwYXR0
ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBJbnB1
dFR5cGUoSFRNTElucHV0RWxlbWVudCopOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KKworcHJpdmF0ZToKKyAgICAvLyBSYXcgcG9p
bnRlciBiZWNhdXNlIHRoZSBIVE1MSW5wdXRFbGVtZW50IG9iamVjdCBvd25zIHRoaXMgSW5wdXRU
eXBlIG9iamVjdC4KKyAgICBIVE1MSW5wdXRFbGVtZW50KiBtX2VsZW1lbnQ7Cit9OworCituYW1l
c3BhY2UgSW5wdXRUeXBlTmFtZXMgeworCitjb25zdCBBdG9taWNTdHJpbmcmIGJ1dHRvbigpOwor
Y29uc3QgQXRvbWljU3RyaW5nJiBjaGVja2JveCgpOworY29uc3QgQXRvbWljU3RyaW5nJiBjb2xv
cigpOworY29uc3QgQXRvbWljU3RyaW5nJiBkYXRlKCk7Citjb25zdCBBdG9taWNTdHJpbmcmIGRh
dGV0aW1lKCk7Citjb25zdCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lbG9jYWwoKTsKK2NvbnN0IEF0
b21pY1N0cmluZyYgZW1haWwoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgZmlsZSgpOworY29uc3Qg
QXRvbWljU3RyaW5nJiBoaWRkZW4oKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2UoKTsKK2Nv
bnN0IEF0b21pY1N0cmluZyYgaXNpbmRleCgpOworY29uc3QgQXRvbWljU3RyaW5nJiBtb250aCgp
OworY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgcGFz
c3dvcmQoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgcmFkaW8oKTsKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgcmFuZ2UoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgcmVzZXQoKTsKK2NvbnN0IEF0b21pY1N0
cmluZyYgc2VhcmNoKCk7Citjb25zdCBBdG9taWNTdHJpbmcmIHN1Ym1pdCgpOworY29uc3QgQXRv
bWljU3RyaW5nJiB0ZWxlcGhvbmUoKTsKK2NvbnN0IEF0b21pY1N0cmluZyYgdGV4dCgpOworY29u
c3QgQXRvbWljU3RyaW5nJiB0aW1lKCk7Citjb25zdCBBdG9taWNTdHJpbmcmIHVybCgpOworY29u
c3QgQXRvbWljU3RyaW5nJiB3ZWVrKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSXNJbmRleElucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvSXNJbmRl
eElucHV0VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI1OWQ2NWRjZTY3ZTlkNGFiODBjZTU3MDI3MGIx
NjEyMzU4MTBjNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9Jc0luZGV4SW5wdXRU
eXBlLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
ICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAq
IENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklzSW5kZXhJbnB1dFR5cGUuaCIKKworI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0
cjxJbnB1dFR5cGU+IElzSW5kZXhJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJc0luZGV4SW5wdXRUeXBl
KGlucHV0RWxlbWVudCkpOworfQorCitJc0luZGV4SW5wdXRUeXBlOjpJc0luZGV4SW5wdXRUeXBl
KEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKKyAgICA6IFRleHRGaWVsZElucHV0VHlw
ZShpbnB1dEVsZW1lbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9Jc0luZGV4SW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvSXNJbmRl
eElucHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMmM5NTRhMTZlNmFhNjJiYTc4ODc1YTIwYjAyY2Jm
NDQzZmRhOWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSXNJbmRleElucHV0VHlw
ZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElzSW5kZXhJbnB1dFR5cGVfaAorI2RlZmluZSBJ
c0luZGV4SW5wdXRUeXBlX2gKKworI2luY2x1ZGUgIlRleHRGaWVsZElucHV0VHlwZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIElzSW5kZXhJbnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZpZWxkSW5wdXRUeXBlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRF
bGVtZW50Kik7CisKK3ByaXZhdGU6CisgICAgSXNJbmRleElucHV0VHlwZShIVE1MSW5wdXRFbGVt
ZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gSXNJbmRleElucHV0VHlwZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NDQ1NjMwNmM4M2YzMWEwNDRiYWMyMDAzY2RkYWJlNzMwNWY4Yjg1Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcApAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcp
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChDKSAyMDA2
IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAw
NyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk1vbnRoSW5wdXRUeXBlLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8SW5wdXRUeXBlPiBNb250aElu
cHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IE1vbnRoSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworfQorCitN
b250aElucHV0VHlwZTo6TW9udGhJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50KQorICAgIDogVGV4dEZpZWxkSW5wdXRUeXBlKGlucHV0RWxlbWVudCkKK3sKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRU
eXBlLmggYi9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzU5NjRh
ZWQ4MjUxMWRmM2RmZDZhZWYzMDk1YTUyNDZjMTdhYWEzCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9udGhJ
bnB1dFR5cGVfaAorI2RlZmluZSBNb250aElucHV0VHlwZV9oCisKKyNpbmNsdWRlICJUZXh0Rmll
bGRJbnB1dFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb250aElucHV0
VHlwZSA6IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKworcHJpdmF0
ZToKKyAgICBNb250aElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0
VHlwZU5hbWVzOjptb250aCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBNb250aElucHV0VHlwZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTnVtYmVy
SW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY1YmNhYjMyMGI2MGQ2NGYyODIyMDVhY2I4ZmZkYjNjNTg2NjZiNGIKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisg
KiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChDKSAyMDA2IEFsZXhl
eSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11
ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk51bWJlcklucHV0VHlwZS5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPElucHV0VHlwZT4gTnVtYmVySW5wdXRU
eXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQoreworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgTnVtYmVySW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworfQorCitOdW1i
ZXJJbnB1dFR5cGU6Ok51bWJlcklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQpCisgICAgOiBUZXh0RmllbGRJbnB1dFR5cGUoaW5wdXRFbGVtZW50KQoreworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRU
eXBlLmggYi9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI5YzMx
NzYwYjYyYjMwOWU1MzFhZWIyODhkM2U1MzI4MDdjZDdjZgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOdW1i
ZXJJbnB1dFR5cGVfaAorI2RlZmluZSBOdW1iZXJJbnB1dFR5cGVfaAorCisjaW5jbHVkZSAiVGV4
dEZpZWxkSW5wdXRUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTnVtYmVy
SW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOworCitw
cml2YXRlOgorICAgIE51bWJlcklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IElucHV0VHlwZU5hbWVzOjpudW1iZXIoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gTnVtYmVySW5wdXRUeXBlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9QYXNzd29yZElucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJhYjUyYjJiZDBlOGVlODBmZTVjYjMyM2ExMGM1MzcyYjljN2EwNDIK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAg
KEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0
IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGFzc3dvcmRJbnB1dFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJbnB1dFR5
cGU+IFBhc3N3b3JkSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFzc3dvcmRJbnB1dFR5cGUoaW5wdXRF
bGVtZW50KSk7Cit9CisKK1Bhc3N3b3JkSW5wdXRUeXBlOjpQYXNzd29yZElucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgOiBCYXNlVGV4dElucHV0VHlwZShpbnB1
dEVsZW1lbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5w
dXRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZiZGFkYTY3ZWVkNjYzNzI4MmVmNDFkZTM0MDM3NjY4MTFj
N2EyMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5o
CkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhc3N3b3JkSW5wdXRUeXBlX2gKKyNkZWZpbmUgUGFz
c3dvcmRJbnB1dFR5cGVfaAorCisjaW5jbHVkZSAiQmFzZVRleHRJbnB1dFR5cGUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYXNzd29yZElucHV0VHlwZSA6IHB1YmxpYyBCYXNl
VGV4dElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBl
PiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOworCitwcml2YXRlOgorICAgIFBhc3N3b3JkSW5w
dXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnBhc3N3
b3JkKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBhc3N3
b3JkSW5wdXRUeXBlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5j
cHAgYi9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3OWE4NTEz
YjMxODE3Mjk2OWFjYzIxZTU5Y2I4NzA3YTgxMzViYzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAo
QykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAo
QykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
diAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgKHNh
bUB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmFkaW9JbnB1
dFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGFzc093blB0cjxJbnB1dFR5cGU+IFJhZGlvSW5wdXRUeXBlOjpjcmVhdGUoSFRN
TElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
UmFkaW9JbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7Cit9CisKK1JhZGlvSW5wdXRUeXBlOjpSYWRp
b0lucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgOiBJbnB1dFR5
cGUoaW5wdXRFbGVtZW50KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9SYWRpb0lu
cHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMjJkYjg1OGViYTgzNDc2ODE1MjRhNGE3MjIxM2NiZjky
ZjdlZWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaApA
QCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBSYWRpb0lucHV0VHlwZV9oCisjZGVmaW5lIFJhZGlvSW5w
dXRUeXBlX2gKKworI2luY2x1ZGUgIklucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFJhZGlvSW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCop
OworCitwcml2YXRlOgorICAgIFJhZGlvSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnJhZGlvKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFJhZGlvSW5wdXRUeXBlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQwZmRlYmMzNWVmZTRiMzU3YTU1NDI2ZjJiMjUwOWNjOGU0ZDQ1NzkKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2Rl
Lm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9y
ZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChDKSAy
MDA3IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmFuZ2VJbnB1dFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJbnB1dFR5cGU+IFJhbmdl
SW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQoreworICAg
IHJldHVybiBhZG9wdFB0cihuZXcgUmFuZ2VJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7Cit9CisK
K1JhbmdlSW5wdXRUeXBlOjpSYW5nZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVs
ZW1lbnQpCisgICAgOiBJbnB1dFR5cGUoaW5wdXRFbGVtZW50KQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCBi
L1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2ZmQwY2NjNDI0MDIy
ZDg4NDNlZjNiMTllYTA2NmY0NjI5MTJkZjEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0
bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSYW5nZUlucHV0VHlw
ZV9oCisjZGVmaW5lIFJhbmdlSW5wdXRUeXBlX2gKKworI2luY2x1ZGUgIklucHV0VHlwZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJhbmdlSW5wdXRUeXBlIDogcHVibGljIElu
cHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVh
dGUoSFRNTElucHV0RWxlbWVudCopOworCitwcml2YXRlOgorICAgIFJhbmdlSW5wdXRUeXBlKEhU
TUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNv
bnRyb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnJhbmdlKCk7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJhbmdlSW5wdXRUeXBlX2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0
bWwvUmVzZXRJbnB1dFR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MmZiZWMwMjdjYjdhY2Y5ODQyZjI5
MWQ3ZDliZjI1MzM5MDFiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvUmVzZXRJ
bnB1dFR5cGUuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBL
b2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11
ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29t
KQorICogQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVzZXRJbnB1dFR5cGUuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093
blB0cjxJbnB1dFR5cGU+IFJlc2V0SW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVzZXRJbnB1dFR5cGUo
aW5wdXRFbGVtZW50KSk7Cit9CisKK1Jlc2V0SW5wdXRUeXBlOjpSZXNldElucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCisgICAgOiBJbnB1dFR5cGUoaW5wdXRFbGVtZW50
KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvUmVzZXRJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ0YTE1NTM3YjNjMjU5MmNmNjVjYTI2NDIzZGNmMjIwN2I2MWE4NzEKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuaApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBSZXNldElucHV0VHlwZV9oCisjZGVmaW5lIFJlc2V0SW5wdXRUeXBlX2gKKworI2lu
Y2x1ZGUgIklucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlc2V0
SW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOworCitwcml2YXRlOgor
ICAgIFJlc2V0SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBl
TmFtZXM6OnJlc2V0KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFJlc2V0SW5wdXRUeXBlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1
dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmY2NGZhZjdkZTZlYWY2ZWFhMGE4OTk5YTQ1YTYyMGU2ZWYyNjc1YQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAg
ICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAg
ICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBX
ZWluaWcgKHNhbUB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2VhcmNoSW5wdXRUeXBlLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8SW5wdXRUeXBlPiBTZWFyY2hJbnB1dFR5cGU6
OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBTZWFyY2hJbnB1dFR5cGUoaW5wdXRFbGVtZW50KSk7Cit9CisKK1NlYXJjaElu
cHV0VHlwZTo6U2VhcmNoSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkK
KyAgICA6IEJhc2VUZXh0SW5wdXRUeXBlKGlucHV0RWxlbWVudCkKK3sKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5o
IGIvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMzU0Mjg2ZTFl
NTJkMWJhZTU1OGE4NWYwNzIyOThmYTc2ODI1YjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2VhcmNoSW5w
dXRUeXBlX2gKKyNkZWZpbmUgU2VhcmNoSW5wdXRUeXBlX2gKKworI2luY2x1ZGUgIkJhc2VUZXh0
SW5wdXRUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VhcmNoSW5wdXRU
eXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7CisKK3ByaXZhdGU6
CisgICAgU2VhcmNoSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gSW5wdXRU
eXBlTmFtZXM6OnNlYXJjaCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBTZWFyY2hJbnB1dFR5cGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1N1Ym1p
dElucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMDM5MTlmNzhiY2FmNmFiMDU0ZjEwZmQzMWYzZTVlYTUwYjIxZDcwCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9odG1sL1N1Ym1pdElucHV0VHlwZS5jcHAKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQor
ICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQor
ICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU2Ft
dWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTdWJtaXRJbnB1dFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJbnB1dFR5cGU+IFN1Ym1pdElucHV0
VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKK3sKKyAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFN1Ym1pdElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKK30KKworU3Vi
bWl0SW5wdXRUeXBlOjpTdWJtaXRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50KQorICAgIDogSW5wdXRUeXBlKGlucHV0RWxlbWVudCkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1N1Ym1pdElucHV0VHlwZS5oIGIv
V2ViQ29yZS9odG1sL1N1Ym1pdElucHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyZDQ1OWFkZjBhYjFh
YTM5OGFiZmU1MWI3MTA3ZTJjZDM4YjQ5ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0
bWwvU3VibWl0SW5wdXRUeXBlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3VibWl0SW5wdXRU
eXBlX2gKKyNkZWZpbmUgU3VibWl0SW5wdXRUeXBlX2gKKworI2luY2x1ZGUgIklucHV0VHlwZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN1Ym1pdElucHV0VHlwZSA6IHB1Ymxp
YyBJbnB1dFR5cGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4g
Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBTdWJtaXRJbnB1dFR5
cGUoSFRNTElucHV0RWxlbWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBm
b3JtQ29udHJvbFR5cGUoKSBjb25zdCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6c3VibWl0KCk7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFN1Ym1pdElucHV0
VHlwZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvVGVsZXBob25lSW5wdXRUeXBlLmNwcCBi
L1dlYkNvcmUvaHRtbC9UZWxlcGhvbmVJbnB1dFR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlOGIwYzA5
YWMxNjgwMzhhMTE1MTlkYzg0ZTA2OWY3YjA3NWYzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2h0bWwvVGVsZXBob25lSW5wdXRUeXBlLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAg
ICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3Vy
eWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2Vpbmln
IChzYW1Ad2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbGVw
aG9uZUlucHV0VHlwZS5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPElucHV0VHlwZT4gVGVsZXBob25lSW5wdXRUeXBl
OjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgVGVsZXBob25lSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworfQorCitUZWxl
cGhvbmVJbnB1dFR5cGU6OlRlbGVwaG9uZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnQpCisgICAgOiBCYXNlVGV4dElucHV0VHlwZShpbnB1dEVsZW1lbnQpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9UZWxlcGhv
bmVJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9UZWxlcGhvbmVJbnB1dFR5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hNTYwZTVkYjhiNzU5NzJiY2VkNjc3YjVjMmY1YzZkYjU5ZDU4ZDlmCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9odG1sL1RlbGVwaG9uZUlucHV0VHlwZS5oCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFRlbGVwaG9uZUlucHV0VHlwZV9oCisjZGVmaW5lIFRlbGVwaG9uZUlucHV0VHlw
ZV9oCisKKyNpbmNsdWRlICJCYXNlVGV4dElucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFRlbGVwaG9uZUlucHV0VHlwZSA6IHB1YmxpYyBCYXNlVGV4dElucHV0VHlw
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRN
TElucHV0RWxlbWVudCopOworCitwcml2YXRlOgorICAgIFRlbGVwaG9uZUlucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250
cm9sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjp0ZWxlcGhvbmUoKTsgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVGVsZXBob25lSW5wdXRU
eXBlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZkODBkNjk3
YWRjMzJlYzkxMmUyZTY0ZGI0YTE4ZjgxZjJkNmJiMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAg
ICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5
YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcg
KHNhbUB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEZp
ZWxkSW5wdXRUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dEZpZWxkSW5wdXRU
eXBlOjpUZXh0RmllbGRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQor
ICAgIDogSW5wdXRUeXBlKGlucHV0RWxlbWVudCkKK3sKK30KKworYm9vbCBUZXh0RmllbGRJbnB1
dFR5cGU6OmlzVGV4dEZpZWxkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjExMWM1ZGZiNzYzNTAwZmNmZWYxZjU3YmZhN2IxNzNjMDg1MTU0ZmYKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVGV4dEZpZWxkSW5wdXRUeXBlX2gKKyNkZWZpbmUgVGV4dEZpZWxkSW5wdXRUeXBlX2gK
KworI2luY2x1ZGUgIklucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRo
ZSBjbGFzcyByZXByZXNlbnRzIHR5cGVzIG9mIHdoaWNoIFVJIGNvbnRhaW4gdGV4dCBmaWVsZHMu
CisvLyBJdCBzdXBwb3J0cyBub3Qgb25seSB0aGUgdHlwZXMgZm9yIEJhc2VUZXh0SW5wdXRUeXBl
IGJ1dCBhbHNvIHR5cGU9bnVtYmVyLgorY2xhc3MgVGV4dEZpZWxkSW5wdXRUeXBlIDogcHVibGlj
IElucHV0VHlwZSB7CitwdWJsaWM6CisgICAgVGV4dEZpZWxkSW5wdXRUeXBlKEhUTUxJbnB1dEVs
ZW1lbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGQoKSBjb25zdDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRleHRGaWVsZElucHV0VHlwZV9oCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwv
VGV4dElucHV0VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZiOTQyZDg2YWY4NmU3MmRhMjJlMjljOTc2
ZmQ3MmI1Y2UwZTk3ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRU
eXBlLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
ICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAq
IENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHRJbnB1dFR5cGUuaCIKKworI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJ
bnB1dFR5cGU+IFRleHRJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVs
ZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0SW5wdXRUeXBlKGlucHV0RWxl
bWVudCkpOworfQorCitUZXh0SW5wdXRUeXBlOjpUZXh0SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudCkKKyAgICA6IEJhc2VUZXh0SW5wdXRUeXBlKGlucHV0RWxlbWVudCkK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L1RleHRJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODQ5Y2E5MTRkZDk2NWZhNzRjZDZjOGMyZjE1ZTUyYTBhYTYyZDUxOQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVGV4dElucHV0VHlwZV9oCisjZGVmaW5lIFRleHRJbnB1dFR5cGVfaAorCisjaW5jbHVkZSAi
QmFzZVRleHRJbnB1dFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0
SW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVs
ZW1lbnQpOworCitwcml2YXRlOgorICAgIFRleHRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50KTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRy
b2xUeXBlKCkgY29uc3QgeyByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnRleHQoKTsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVGV4dElucHV0VHlwZV9oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvVGlt
ZUlucHV0VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTgzYWI3ZDY3YWQ4OTkyMWM2NDZlYjM4OThhZTA2
Y2QzZDIzOTA2MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBl
LmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8g
KGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAg
ICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRpbWVJbnB1dFR5cGUuaCIKKworI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJbnB1
dFR5cGU+IFRpbWVJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUaW1lSW5wdXRUeXBlKGlucHV0RWxlbWVu
dCkpOworfQorCitUaW1lSW5wdXRUeXBlOjpUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCkKKyAgICA6IFRleHRGaWVsZElucHV0VHlwZShpbnB1dEVsZW1lbnQpCit7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9U
aW1lSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQwMmQ0MmZjNzQ1ZDRhOTVlMmUwYmU4YzI0ZGRjZjczZmEzNGFjZWUKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFRpbWVJbnB1dFR5cGVfaAorI2RlZmluZSBUaW1lSW5wdXRUeXBlX2gKKworI2luY2x1ZGUgIlRl
eHRGaWVsZElucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRpbWVJ
bnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZpZWxkSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7CisKK3By
aXZhdGU6CisgICAgVGltZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIElu
cHV0VHlwZU5hbWVzOjp0aW1lKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFRpbWVJbnB1dFR5cGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1VSTElu
cHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZDExYWYxM2Q1ZmI4NGY2NmNmNDc5ODFkZjdhM2MyZDQxYmViY2ZlCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAg
ICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAg
ICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1
cnlha292IChhcEBueXBvcC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5p
ZyAoc2FtQHdlYmtpdC5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkxJ
bnB1dFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUGFzc093blB0cjxJbnB1dFR5cGU+IFVSTElucHV0VHlwZTo6Y3JlYXRlKEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFVSTElucHV0VHlwZShpbnB1dEVsZW1lbnQpKTsKK30KKworVVJMSW5wdXRUeXBlOjpVUkxJbnB1
dFR5cGUoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KQorICAgIDogQmFzZVRleHRJbnB1
dFR5cGUoaW5wdXRFbGVtZW50KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvVVJMSW5w
dXRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZkMzU5MDNhNmIxNzMxOGE1NDc3YzJhYzU2NzdkNTcyZjUx
ZjQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuaApAQCAt
MCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBVUkxJbnB1dFR5cGVfaAorI2RlZmluZSBVUkxJbnB1dFR5cGVf
aAorCisjaW5jbHVkZSAiQmFzZVRleHRJbnB1dFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBVUkxJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZVRleHRJbnB1dFR5cGUgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVs
ZW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBVUkxJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCop
OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25z
dCB7IHJldHVybiBJbnB1dFR5cGVOYW1lczo6dXJsKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFVSTElucHV0VHlwZV9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvV2Vla0lucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjBhMTEzZTFjZGFkZjcxZTNiY2VjM2Q2OGFmMzUyMTg5ZjM4MjdiYwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcApAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcp
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChDKSAyMDA2
IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAw
NyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlZWtJbnB1dFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJbnB1dFR5cGU+IFdlZWtJbnB1
dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCit7CisgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBXZWVrSW5wdXRUeXBlKGlucHV0RWxlbWVudCkpOworfQorCitXZWVr
SW5wdXRUeXBlOjpXZWVrSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkK
KyAgICA6IFRleHRGaWVsZElucHV0VHlwZShpbnB1dEVsZW1lbnQpCit7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmgg
Yi9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ODg3NzU2MTQ2MTZh
ZmMyOGFlZDIxMjI1MDBjMzdlNzM5YzBkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0
bWwvV2Vla0lucHV0VHlwZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlZWtJbnB1dFR5cGVf
aAorI2RlZmluZSBXZWVrSW5wdXRUeXBlX2gKKworI2luY2x1ZGUgIlRleHRGaWVsZElucHV0VHlw
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlZWtJbnB1dFR5cGUgOiBwdWJs
aWMgVGV4dEZpZWxkSW5wdXRUeXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7CisKK3ByaXZhdGU6CisgICAgV2Vl
a0lucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIElucHV0VHlwZU5hbWVzOjp3
ZWVrKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdlZWtJ
bnB1dFR5cGVfaAo=
</data>
<flag name="review"
          id="58658"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>