<?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>128215</bug_id>
          
          <creation_ts>2014-02-04 15:27:29 -0800</creation_ts>
          <short_desc>Web Replay: upstream replay input code generator and EncodedValue class</short_desc>
          <delta_ts>2014-02-11 16:16:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>976531</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-04 15:27:29 -0800</bug_when>
    <thetext>It has tests/regression detectors, so you need not look at all the real replay inputs to see what it does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976586</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-04 17:18:39 -0800</bug_when>
    <thetext>CC: keepers of template knowledge for EncodedValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976588</commentid>
    <comment_count>2</comment_count>
      <attachid>223185</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-04 17:19:45 -0800</bug_when>
    <thetext>Created attachment 223185
Current branch input specification for WebCore

For reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976591</commentid>
    <comment_count>3</comment_count>
      <attachid>223186</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-04 17:23:25 -0800</bug_when>
    <thetext>Created attachment 223186
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976592</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-04 17:25:49 -0800</bug_when>
    <thetext>Attachment 223186 did not pass style-queue:


ERROR: Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h:67:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:95:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:101:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:141:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:538:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:687:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:823:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:833:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:841:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:865:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:886:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:973:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h:80:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 13 in 61 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976593</commentid>
    <comment_count>5</comment_count>
      <attachid>223187</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-04 17:26:19 -0800</bug_when>
    <thetext>Created attachment 223187
WebCore generated implementation file

for reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976594</commentid>
    <comment_count>6</comment_count>
      <attachid>223188</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-04 17:27:52 -0800</bug_when>
    <thetext>Created attachment 223188
WebCore generated header file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976807</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-05 10:42:20 -0800</bug_when>
    <thetext>I&apos;m looking at changing EncodedValue to be copyable, since it may make auto-serialization of vectors possible without hacks. So, maybe defer on reviewing that part until I post another comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977470</commentid>
    <comment_count>8</comment_count>
      <attachid>223361</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-06 12:07:32 -0800</bug_when>
    <thetext>Created attachment 223361
new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977471</commentid>
    <comment_count>9</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-06 12:08:13 -0800</bug_when>
    <thetext>OK, everything is ready for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977474</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-06 12:10:00 -0800</bug_when>
    <thetext>Attachment 223361 did not pass style-queue:


ERROR: Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp:78:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h:65:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:70:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:103:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:534:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:686:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:822:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:832:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:840:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:864:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:885:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:972:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h:76:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 13 in 60 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979227</commentid>
    <comment_count>11</comment_count>
      <attachid>223361</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-10 20:09:47 -0800</bug_when>
    <thetext>Comment on attachment 223361
new patch

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

r=me. Most of my comments are style. This looks real good to me, nice and clean.

&gt; Source/JavaScriptCore/inspector/InspectorValues.cpp:638
&gt; +    *output = static_cast&lt;long&gt;(m_doubleValue);

This case should be &lt;long long&gt;.

&gt; Source/JavaScriptCore/replay/EncodedValue.cpp:2
&gt; + * Copyright (C) 2013 University of Washington. All rights reserved.

2014.

&gt; Source/JavaScriptCore/replay/EncodedValue.h:70
&gt; +    virtual ~EncodedValue() { }

Any reason this is needed? Is there going to be an EncodedValue subclass?

&gt; Source/JavaScriptCore/replay/EncodedValue.h:97
&gt; +template&lt;&gt; JS_EXPORT_PRIVATE unsigned long EncodedValue::convertTo&lt;unsigned long&gt;();

unsigned long doesn&apos;t match with uint32_t or uint64_t?

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:350
&gt; +def check_properties(props, obj, what):

How about naming this check_for_required_properties?

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:415
&gt; +        for ty_framework_name, ty_list in json[&apos;types&apos;].iteritems():

Style: We don&apos;t normally abbreviate variable names. I&apos;d prefer &quot;type_framework_name&quot; and &quot;type_list&quot;

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:431
&gt; +        _type = Type(json[&apos;name&apos;], TypeMode.fromString(json[&apos;mode&apos;]), framework, json.get(&apos;header&apos;, None), json.get(&apos;enclosing_class&apos;, None), json.get(&apos;values&apos;), json.get(&apos;guarded_values&apos;, {}), json.get(&apos;storage&apos;), json.get(&apos;flags&apos;, []))

This would reach much better split up across multiple lines:

    name = json[&apos;name&apos;]
    mode = TypeMode.fromString(json[&apos;mode&apos;])
    header = json.get(&apos;header&apos;)
    ...
    _type = Type(name, mode, framework, header, ...)

Nit: json.get(&apos;header&apos;, None) the None is unnecessary here &lt;http://docs.python.org/2/library/stdtypes.html#dict.get&gt;.

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:438
&gt; +            if _type.is_enum() and &quot;storage&quot; not in json:
&gt; +                raise ParseException(&quot;C-style enums must also specify their storage type so they can be forward declared.&quot;)

You should include the name of the enum that this is failing for.

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:459
&gt; +    def typecheck(self):
&gt; +        for _type in self.types:
&gt; +            self.typecheck_type(_type)
&gt; +
&gt; +        for _input in self.inputs:
&gt; +            self.typecheck_input(_input)

&quot;typecheck&quot; being the action name sounds like a pure method. However it does go through and initialize self.types_by_name / self.inputs_by_name. Maybe this should be called &quot;resolve_types&quot;.

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:491
&gt; +            raise TypecheckException(&quot;Unknown type %s referenced in member %s&quot;
&gt; +                            % (input_member.typeName, input_member.memberName))

Style: unnecessary wrap

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:524
&gt; +def lcfirst(s):
&gt; +    return s[0].lower() + s[1:]

This is unused.

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:564
&gt; +        head_file = IncrementalFileWriter(os.path.join(_dir, self.output_filename(&apos;h&apos;)), force)
&gt; +        impl_file = IncrementalFileWriter(os.path.join(_dir, self.output_filename(&apos;cpp&apos;)), force)

Style: We don&apos;t normally abbreviate variable names. I&apos;d prefer &quot;header_file&quot; and maybe &quot;implementation_file&quot; (though impl is commonplace)

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:675
&gt; +

Style: Remove empty line

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:802
&gt; +                &apos;qualifiedEnumValue&apos;: &quot;%s%s&quot; % (enum_prefix, _value),

Should this be &quot;%s::%s&quot;? Likewise for the rest in this method?

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py:102
&gt; +    InputTraitsDeclaration = &quot;&quot;&quot;template&lt;&gt; ${structOrClass} InputTraits&lt;${qualifiedInputName}&gt; {
&gt; +    static InputQueue queue() { return InputQueue::${queueType}; }
&gt; +    static const AtomicString&amp; type();
&gt; +
&gt; +    static void encode(JSC::EncodedValue&amp;, const ${qualifiedInputName}&amp;);
&gt; +    static bool decode(JSC::EncodedValue&amp;, std::unique_ptr&lt;${qualifiedInputName}&gt;&amp;);
&gt; +};&quot;&quot;&quot;

I find this a little difficult to read. I prefer the format of the CodeGeneratorInspector:

    VariableName = (
    &quot;&quot;&quot;...
    ...&quot;&quot;&quot;)

This way there is no jarring indentation of the first line and the variable name is on its own line and easy to recognize.

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py:182
&gt; +    EnumClassDecodeCase = &quot;&quot;&quot;    if (enumString == String(ASCIILiteral(&quot;${enumStringValue}&quot;))) {
&gt; +        enumValue = ${qualifiedEnumValue};

WTFString should have an == operator for String == char*:

    inline bool operator==(const String&amp; a, const char* b)

So I don&apos;t think you will need to String(ASCIILiteral(...)) boxing. Just:

    if (enumString == &quot;${enumStringValue}&quot;)

should do!

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py:212
&gt; +    EnumDecodeCase = &quot;&quot;&quot;        if (enumString == String(ASCIILiteral(&quot;${enumStringValue}&quot;)))
&gt; +            enumValue = static_cast&lt;${qualifiedEnumName}&gt;(enumValue | ${qualifiedEnumValue});&quot;&quot;&quot;

Ditto RE String(ASCIILiteral(...))

&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py:226
&gt; +${inputName}::~${inputName}()
&gt; +{
&gt; +}&quot;&quot;&quot;

If the destructors are always empty, can we inline them in the header and avoid including them in the implementation?

&gt; Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-missing-input-name.json-error:1
&gt; +ERROR: When parsing input, required property missing: name

Would be nice to say, &quot;When parsing input &apos;Foo&apos;, ...&quot;

&gt; Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-missing-type-mode.json-error:1
&gt; +ERROR: When parsing type, required property missing: mode

Would be nice to say, &quot;When parsing type &apos;Foo&apos;, ...&quot;

&gt; Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-unknown-member-type.json-error:1
&gt; +ERROR: Unknown type double referenced in member randomSeed

Most of the other errors end with the bad type, making it clear what was bad input. Might be nice to mark the user inputs here, e.g. something like &apos;double&apos; and &apos;randomSeed&apos; or rephrase the error.

&gt; Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp:77
&gt; +EncodedValue EncodingTraits&lt;WebCore::MouseButton&gt;::encodeValue(const WebCore::MouseButton&amp; enumValue)
&gt; +{
&gt; +    EncodedValue encodedValue = EncodedValue::createArray();
&gt; +    if (enumValue &amp; WebCore::NoButton)
&gt; +        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;NoButton&quot;));
&gt; +    if (enumValue == WebCore::NoButton)
&gt; +        return encodedValue;

So you&apos;re doing the double check so that you can support exclusive enums and bitwise enums? Seems fine.

Can you nest the &apos;==&apos; check within the &apos;&amp;&apos; check? Or is it possible that something can be == but not &amp;?

    if (enumValue &amp; WebCore::NoButton) {
        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;NoButton&quot;));
        if (enumValue == WebCore::NoButton)
            return encodedValue;
    }

&gt; Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp:72
&gt; +}
&gt; +EncodedValue EncodingTraits&lt;InputQueue&gt;::encodeValue(const InputQueue&amp; enumValue)

Nit: Should be a newline here, if it is easy.

&gt; Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-error:1
&gt; +ERROR: When parsing type, required property missing: storage

Does this still generate files despite the error?

&gt; Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-input-queue.json:19
&gt; +            &quot;queue&quot;: &quot;SCRIPT_MEOIZED&quot;,
&gt; +            &quot;members&quot;: [
&gt; +                {
&gt; +                    &quot;name&quot;: &quot;currentTime&quot;,
&gt; +                    &quot;type&quot;: &quot;double&quot;
&gt; +                }
&gt; +            ]
&gt; +        }

A bunch of these tests have multiple errors. You&apos;re depending on the order of error checking for the current output. Would probably be good to just include one error per test (as that is what it sounds like the test is trying to do anyways). Here, the type &quot;double&quot; would throw an error.

&gt; Source/JavaScriptCore/replay/scripts/tests/generate-inputs-with-flags.json:21
&gt; +            &quot;flags&quot;: [&quot;HIDDEN&quot;],

Should the generator warn about unknown flags (possible typos)? HIDDEN can just be a passive accepted flag.

&gt; LayoutTests/inspector-protocol/model/probe-manager-add-remove-actions.html:1
&gt; +&lt;!doctype html&gt;

Hehe, this probes related test is unrelated to this patch =).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979638</commentid>
    <comment_count>12</comment_count>
      <attachid>223361</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-11 15:34:48 -0800</bug_when>
    <thetext>Comment on attachment 223361
new patch

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

&gt;&gt; Source/JavaScriptCore/replay/EncodedValue.cpp:2
&gt;&gt; + * Copyright (C) 2013 University of Washington. All rights reserved.
&gt; 
&gt; 2014.

This file is based on EncoderContext/JSONEncoderContext, which haven&apos;t been edited in 2014 from UW.

&gt;&gt; Source/JavaScriptCore/replay/EncodedValue.h:70
&gt;&gt; +    virtual ~EncodedValue() { }
&gt; 
&gt; Any reason this is needed? Is there going to be an EncodedValue subclass?

Oops, cruft. Will remove.

&gt;&gt; Source/JavaScriptCore/replay/EncodedValue.h:97
&gt;&gt; +template&lt;&gt; JS_EXPORT_PRIVATE unsigned long EncodedValue::convertTo&lt;unsigned long&gt;();
&gt; 
&gt; unsigned long doesn&apos;t match with uint32_t or uint64_t?

We need this even though it&apos;s almost always a uint32_t, because the data type is defined in terms of unsigned long rather than a fixed-size type.

&gt;&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:459
&gt;&gt; +            self.typecheck_input(_input)
&gt; 
&gt; &quot;typecheck&quot; being the action name sounds like a pure method. However it does go through and initialize self.types_by_name / self.inputs_by_name. Maybe this should be called &quot;resolve_types&quot;.

OK

&gt;&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:524
&gt;&gt; +    return s[0].lower() + s[1:]
&gt; 
&gt; This is unused.

Oops, used to be everywhere

&gt;&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:802
&gt;&gt; +                &apos;qualifiedEnumValue&apos;: &quot;%s%s&quot; % (enum_prefix, _value),
&gt; 
&gt; Should this be &quot;%s::%s&quot;? Likewise for the rest in this method?

Sometimes you don&apos;t need the prefix (c-style enum in same namespace with no enclosing class), so enum_prefix becomes nothing by the current implementation trick of adding a dummy element to prefix_components and joining with ::

&gt;&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py:102
&gt;&gt; +};&quot;&quot;&quot;
&gt; 
&gt; I find this a little difficult to read. I prefer the format of the CodeGeneratorInspector:
&gt; 
&gt;     VariableName = (
&gt;     &quot;&quot;&quot;...
&gt;     ...&quot;&quot;&quot;)
&gt; 
&gt; This way there is no jarring indentation of the first line and the variable name is on its own line and easy to recognize.

I forgot how to do that. Thanks!

&gt;&gt; Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py:226
&gt;&gt; +}&quot;&quot;&quot;
&gt; 
&gt; If the destructors are always empty, can we inline them in the header and avoid including them in the implementation?

They are only in the implementation file so that forward declarations of PassRefPtr&apos;d things still work. I can fix this in a followup patch once some of those inputs are actually landed.

&gt;&gt; Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-unknown-member-type.json-error:1
&gt;&gt; +ERROR: Unknown type double referenced in member randomSeed
&gt; 
&gt; Most of the other errors end with the bad type, making it clear what was bad input. Might be nice to mark the user inputs here, e.g. something like &apos;double&apos; and &apos;randomSeed&apos; or rephrase the error.

OK

&gt;&gt; Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp:77
&gt;&gt; +        return encodedValue;
&gt; 
&gt; So you&apos;re doing the double check so that you can support exclusive enums and bitwise enums? Seems fine.
&gt; 
&gt; Can you nest the &apos;==&apos; check within the &apos;&amp;&apos; check? Or is it possible that something can be == but not &amp;?
&gt; 
&gt;     if (enumValue &amp; WebCore::NoButton) {
&gt;         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;NoButton&quot;));
&gt;         if (enumValue == WebCore::NoButton)
&gt;             return encodedValue;
&gt;     }

OK

&gt;&gt; Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-error:1
&gt;&gt; +ERROR: When parsing type, required property missing: storage
&gt; 
&gt; Does this still generate files despite the error?

Oops, this file shouldn&apos;t exist.

&gt;&gt; Source/JavaScriptCore/replay/scripts/tests/generate-inputs-with-flags.json:21
&gt;&gt; +            &quot;flags&quot;: [&quot;HIDDEN&quot;],
&gt; 
&gt; Should the generator warn about unknown flags (possible typos)? HIDDEN can just be a passive accepted flag.

I forgot to fix and rebaseline this one apparently.

&gt;&gt; LayoutTests/inspector-protocol/model/probe-manager-add-remove-actions.html:1
&gt;&gt; +&lt;!doctype html&gt;
&gt; 
&gt; Hehe, this probes related test is unrelated to this patch =).

Git is hard ._.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979651</commentid>
    <comment_count>13</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-11 16:16:57 -0800</bug_when>
    <thetext>Committed r163918: &lt;http://trac.webkit.org/changeset/163918&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>223185</attachid>
            <date>2014-02-04 17:19:45 -0800</date>
            <delta_ts>2014-02-04 17:19:45 -0800</delta_ts>
            <desc>Current branch input specification for WebCore</desc>
            <filename>WebInputs.json</filename>
            <type>text/plain</type>
            <size>18986</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">ewogICAgInR5cGVzIjogewogICAgICAgICJHbG9iYWwiOiBbCiAgICAgICAgICAgIHsgIm5hbWUi
OiAiYm9vbCIsICJzaGFwZSI6ICJTQ0FMQVIiIH0sCiAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91
YmxlIiwgInNoYXBlIjogIlNDQUxBUiIgfSwKICAgICAgICAgICAgeyAibmFtZSI6ICJpbnQiLCAi
c2hhcGUiOiAiU0NBTEFSIiB9LAogICAgICAgICAgICB7ICJuYW1lIjogInVuc2lnbmVkIGludCIs
ICJzaGFwZSI6ICJTQ0FMQVIiIH0sCiAgICAgICAgICAgIHsgIm5hbWUiOiAidW5zaWduZWQgbG9u
ZyIsICJzaGFwZSI6ICJTQ0FMQVIiIH0sCiAgICAgICAgICAgIHsgIm5hbWUiOiAidW5zaWduZWQg
bG9uZyBsb25nIiwgInNoYXBlIjogIlNDQUxBUiIgfSwKICAgICAgICAgICAgeyAibmFtZSI6ICJT
dHJpbmciLCAic2hhcGUiOiAiU0NBTEFSIiB9CiAgICAgICAgXSwKCiAgICAgICAgIkphdmFTY3Jp
cHRDb3JlIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJJbnB1dFF1
ZXVlIiwgInNoYXBlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVpbnQ4X3QiLAogICAgICAgICAg
ICAgICAgImZsYWdzIjogWyJFTlVNX0NMQVNTIl0sCiAgICAgICAgICAgICAgICAidmFsdWVzIjog
WyJFdmVudExvb3BJbnB1dCIsICJMb2FkZXJNZW1vaXplZERhdGEiLCAiU2NyaXB0TWVtb2l6ZWRE
YXRhIiwgIkNvdW50Il0sCiAgICAgICAgICAgICAgICAiaGVhZGVyIjogInJlcGxheS9Ob25kZXRl
cm1pbmlzdGljSW5wdXQuaCIKICAgICAgICAgICAgfQogICAgICAgIF0sCgogICAgICAgICJXZWJD
b3JlIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJQbGF0Zm9ybUV2
ZW50VHlwZSIsICJzaGFwZSI6ICJTQ0FMQVIiLAogICAgICAgICAgICAgICAgImZsYWdzIjogWyJF
TlVNX0NMQVNTIl0sCiAgICAgICAgICAgICAgICAidmFsdWVzIjogWwogICAgICAgICAgICAgICAg
ICAgICJOb1R5cGUiLCAiS2V5RG93biIsICJLZXlVcCIsICJSYXdLZXlEb3duIiwgIkNoYXIiLCAi
TW91c2VNb3ZlZCIsCiAgICAgICAgICAgICAgICAgICAgIk1vdXNlUHJlc3NlZCIsICJNb3VzZVJl
bGVhc2VkIiwgIk1vdXNlU2Nyb2xsIiwgIldoZWVsIgogICAgICAgICAgICAgICAgXSwKICAgICAg
ICAgICAgICAgICJndWFyZGVkX3ZhbHVlcyI6IHsKICAgICAgICAgICAgICAgICAgICAiRU5BQkxF
KFRPVUNIX0VWRU5UUykiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJUb3VjaFN0YXJ0Iiwg
IlRvdWNoTW92ZSIsICJUb3VjaEVuZCIsICJUb3VjaENhbmNlbCIKICAgICAgICAgICAgICAgICAg
ICBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9y
bS9QbGF0Zm9ybUV2ZW50LmgiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICJuYW1lIjogIk1vZGlmaWVycyIsICJzaGFwZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6
ICJ1aW50OF90IiwKICAgICAgICAgICAgICAgICJlbmNsb3NpbmdfY2xhc3MiOiAiUGxhdGZvcm1F
dmVudCIsCiAgICAgICAgICAgICAgICAiZmxhZ3MiOiBbIkVOVU0iXSwKICAgICAgICAgICAgICAg
ICJ2YWx1ZXMiOiBbIkFsdEtleSIsICJDdHJsS2V5IiwgIk1ldGFLZXkiLCAiU2hpZnRLZXkiXSwK
ICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oIgogICAg
ICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJUeXBlIiwg
InNoYXBlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVpbnQ4X3QiLAogICAgICAgICAgICAgICAg
ImVuY2xvc2luZ19jbGFzcyI6ICJGb3JtRGF0YUVsZW1lbnQiLAogICAgICAgICAgICAgICAgImZs
YWdzIjogWyJFTlVNIl0sCiAgICAgICAgICAgICAgICAidmFsdWVzIjogWyJkYXRhIiwgImVuY29k
ZWRGaWxlIl0sCiAgICAgICAgICAgICAgICAiZ3VhcmRlZF92YWx1ZXMiOiB7CiAgICAgICAgICAg
ICAgICAgICAgIkVOQUJMRShCTE9CKSI6IFsiZW5jb2RlZEJsb2IiXQogICAgICAgICAgICAgICAg
fSwKICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vRm9ybURhdGEuaCIKICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiTW91c2VCdXR0
b24iLCAic2hhcGUiOiAiU0NBTEFSIiwgInN0b3JhZ2UiOiAiaW50OF90IiwKICAgICAgICAgICAg
ICAgICJmbGFncyI6IFsiRU5VTSJdLAogICAgICAgICAgICAgICAgInZhbHVlcyI6IFsiTm9CdXR0
b24iLCAiTGVmdEJ1dHRvbiIsICJNaWRkbGVCdXR0b24iLCAiUmlnaHRCdXR0b24iXSwKICAgICAg
ICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlNjcm9sbERp
cmVjdGlvbiIsICJzaGFwZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6ICJ1aW50OF90IiwKICAgICAg
ICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAogICAgICAgICAgICAgICAgInZhbHVlcyI6IFsi
U2Nyb2xsVXAiLCAiU2Nyb2xsRG93biIsICJTY3JvbGxMZWZ0IiwgIlNjcm9sbFJpZ2h0Il0sCiAg
ICAgICAgICAgICAgICAiaGVhZGVyIjogInBsYXRmb3JtL1Njcm9sbFR5cGVzLmgiCiAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlNjcm9sbExvZ2lj
YWxEaXJlY3Rpb24iLCAic2hhcGUiOiAiU0NBTEFSIiwgInN0b3JhZ2UiOiAidWludDhfdCIsCiAg
ICAgICAgICAgICAgICAiZmxhZ3MiOiBbIkVOVU0iXSwKICAgICAgICAgICAgICAgICJ2YWx1ZXMi
OiBbCiAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJsb2NrRGlyZWN0aW9uQmFja3dhcmQiLAog
ICAgICAgICAgICAgICAgICAgICJTY3JvbGxCbG9ja0RpcmVjdGlvbkZvcndhcmQiLAogICAgICAg
ICAgICAgICAgICAgICJTY3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNrd2FyZCIsCiAgICAgICAgICAg
ICAgICAgICAgIlNjcm9sbElubGluZURpcmVjdGlvbkZvcndhcmQiCiAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIgogICAg
ICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJTY3JvbGxH
cmFudWxhcml0eSIsICJzaGFwZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6ICJ1aW50OF90IiwKICAg
ICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAogICAgICAgICAgICAgICAgInZhbHVlcyI6
IFsKICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsQnlMaW5lIiwKICAgICAgICAgICAgICAgICAg
ICAiU2Nyb2xsQnlQYWdlIiwKICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsQnlEb2N1bWVudCIs
CiAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJ5UGl4ZWwiLAogICAgICAgICAgICAgICAgICAg
ICJTY3JvbGxCeVByZWNpc2VQaXhlbCIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAg
ICAiaGVhZGVyIjogInBsYXRmb3JtL1Njcm9sbFR5cGVzLmgiCiAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlBsYXRmb3JtV2hlZWxFdmVudEdyYW51
bGFyaXR5IiwgInNoYXBlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVpbnQ4X3QiLAogICAgICAg
ICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCiAgICAgICAgICAgICAgICAidmFsdWVzIjogWyJT
Y3JvbGxCeVBhZ2VXaGVlbEV2ZW50IiwgIlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50Il0sCiAgICAg
ICAgICAgICAgICAiaGVhZGVyIjogInBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIgogICAg
ICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZSIsICJzaGFwZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6ICJ1aW50OF90
IiwKICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAogICAgICAgICAgICAgICAgImd1
YXJkIjogIlBMQVRGT1JNKE1BQykiLAogICAgICAgICAgICAgICAgInZhbHVlcyI6IFsKICAgICAg
ICAgICAgICAgICAgICAiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lIiwKICAgICAgICAgICAg
ICAgICAgICAiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbiIsCiAgICAgICAgICAgICAgICAg
ICAgIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFyeSIsCiAgICAgICAgICAgICAgICAg
ICAgIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZCIsCiAgICAgICAgICAgICAgICAgICAg
IlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQiLAogICAgICAgICAgICAgICAgICAgICJQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZCIsCiAgICAgICAgICAgICAgICAgICAgIlBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlTWF5QmVnaW4iCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiUmVzb3VyY2VMb2Fk
UHJpb3JpdHkiLCAic2hhcGUiOiAiU0NBTEFSIiwgInN0b3JhZ2UiOiAiaW50OF90IiwKICAgICAg
ICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAogICAgICAgICAgICAgICAgInZhbHVlcyI6IFsK
ICAgICAgICAgICAgICAgICAgICAiUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkIiwKICAg
ICAgICAgICAgICAgICAgICAiUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93IiwKICAgICAgICAg
ICAgICAgICAgICAiUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3ciLAogICAgICAgICAgICAgICAgICAg
ICJSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bSIsCiAgICAgICAgICAgICAgICAgICAgIlJlc291
cmNlTG9hZFByaW9yaXR5SGlnaCIsCiAgICAgICAgICAgICAgICAgICAgIlJlc291cmNlTG9hZFBy
aW9yaXR5VmVyeUhpZ2giCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgImhlYWRl
ciI6ICJwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFByaW9yaXR5LmgiCiAgICAgICAgICAg
IH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlJlc291cmNlUmVxdWVz
dENhY2hlUG9saWN5IiwgInNoYXBlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVpbnQ4X3QiLAog
ICAgICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCiAgICAgICAgICAgICAgICAidmFsdWVz
IjogWwogICAgICAgICAgICAgICAgICAgICJVc2VQcm90b2NvbENhY2hlUG9saWN5IiwKICAgICAg
ICAgICAgICAgICAgICAiUmVsb2FkSWdub3JpbmdDYWNoZURhdGEiLAogICAgICAgICAgICAgICAg
ICAgICJSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCIsCiAgICAgICAgICAgICAgICAgICAgIlJldHVy
bkNhY2hlRGF0YURvbnRMb2FkIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJo
ZWFkZXIiOiAicGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3QuaCIKICAgICAgICAgICAg
fSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiRnJhbWVMb2FkUmVxdWVz
dCIsICJzaGFwZSI6ICJNQVAiLAogICAgICAgICAgICAgICAgImZsYWdzIjogWyJTVFJVQ1QiXSwK
ICAgICAgICAgICAgICAgICJoZWFkZXIiOiAibG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaCIKICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiUGxhdGZv
cm1LZXlib2FyZEV2ZW50IiwgInNoYXBlIjogIk1BUCIsCiAgICAgICAgICAgICAgICAiaGVhZGVy
IjogInBsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogICAgICAgICAgICB9LAogICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJQbGF0Zm9ybU1vdXNlRXZlbnQiLCAi
c2hhcGUiOiAiTUFQIiwKICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICJuYW1lIjogIlBsYXRmb3JtV2hlZWxFdmVudCIsICJzaGFwZSI6ICJNQVAiLAogICAgICAg
ICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiS2V5cHJlc3ND
b21tYW5kIiwgInNoYXBlIjogIk1BUCIsCiAgICAgICAgICAgICAgICAiZmxhZ3MiOiBbIlNUUlVD
VCJdLAogICAgICAgICAgICAgICAgImhlYWRlciI6ICJkb20vS2V5Ym9hcmRFdmVudC5oIgogICAg
ICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJSZXNvdXJj
ZUVycm9yIiwgInNoYXBlIjogIk1BUCIsCiAgICAgICAgICAgICAgICAiaGVhZGVyIjogInBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvci5oIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAibmFtZSI6ICJSZXNvdXJjZVJlcXVlc3QiLCAic2hhcGUiOiAiTUFQ
IiwKICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3QuaCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5h
bWUiOiAiUmVzb3VyY2VSZXNwb25zZSIsICJzaGFwZSI6ICJNQVAiLAogICAgICAgICAgICAgICAg
ImhlYWRlciI6ICJwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuaCIKICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiU2VjdXJpdHlPcmln
aW4iLCAic2hhcGUiOiAiU0hBUkVEX01BUCIsCiAgICAgICAgICAgICAgICAiaGVhZGVyIjogInBh
Z2UvU2VjdXJpdHlPcmlnaW4uaCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIm5hbWUiOiAiU2hhcmVkQnVmZmVyIiwgInNoYXBlIjogIlNIQVJFRF9NQVAiLAog
ICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCIKICAgICAg
ICAgICAgfQogICAgICAgIF0KICAgIH0sCgogICAgImlucHV0cyI6IFsKICAgICAgICB7CiAgICAg
ICAgICAgICJuYW1lIjogIkJlZ2luU2VudGluZWwiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiQSBzZW50aW5lbCBpbnB1dCB0byBzaWduYWwgdGhlIHN0YXJ0IG9mIGEgcmVjb3JkaW5nLiIs
CiAgICAgICAgICAgICJmbGFncyI6IFsiSElEREVOIl0sCiAgICAgICAgICAgICJxdWV1ZSI6ICJF
VkVOVF9MT09QIiwKICAgICAgICAgICAgIm1lbWJlcnMiOiBbIF0KICAgICAgICB9LAogICAgICAg
IHsKICAgICAgICAgICAgIm5hbWUiOiAiRGlzYWJsZUNhY2hlIiwKICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkEgc2VudGluZWwgaW5wdXQgdG8gZGlzYWJsZSB0aGUgcmVzb3VyY2UgY2FjaGUu
IiwKICAgICAgICAgICAgImZsYWdzIjogWyJISURERU4iXSwKICAgICAgICAgICAgInF1ZXVlIjog
IkVWRU5UX0xPT1AiLAogICAgICAgICAgICAibWVtYmVycyI6IFsgXQogICAgICAgIH0sCiAgICAg
ICAgewogICAgICAgICAgICAibmFtZSI6ICJFbmFibGVDYWNoZSIsCiAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJBIHNlbnRpbmVsIGlucHV0IHRvIGVuYWJsZSB0aGUgcmVzb3VyY2UgY2FjaGUu
IiwKICAgICAgICAgICAgImZsYWdzIjogWyJISURERU4iXSwKICAgICAgICAgICAgInF1ZXVlIjog
IkVWRU5UX0xPT1AiLAogICAgICAgICAgICAibWVtYmVycyI6IFsgXQogICAgICAgIH0sCiAgICAg
ICAgewogICAgICAgICAgICAibmFtZSI6ICJFbmRTZW50aW5lbCIsCiAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJBIHNlbnRpbmVsIGlucHV0IHRvIHNpZ25hbCB0aGUgZW5kIG9mIGEgcmVjb3Jk
aW5nLiIsCiAgICAgICAgICAgICJmbGFncyI6IFsiSElEREVOIl0sCiAgICAgICAgICAgICJxdWV1
ZSI6ICJFVkVOVF9MT09QIiwKICAgICAgICAgICAgIm1lbWJlcnMiOiBbIF0KICAgICAgICB9LAog
ICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiUGxheWJhY2tFcnJvciIsCiAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIGR1cmluZyBjYXB0dXJpbmcu
IiwKICAgICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAogICAgICAgICAgICAibWVtYmVy
cyI6IFsKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JNZXNzYWdlIiwgInR5cGUiOiAi
U3RyaW5nIiB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAg
Im5hbWUiOiAiSW5pdGlhbGl6ZUZvY3VzIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEg
c2VudGluZWwgaW5wdXQgdG8gaW5pdGFsaXplIHRoZSBmb2N1cyBzdGF0ZSBvZiB0aGUgZm9jdXNl
ZCBmcmFtZS4iLAogICAgICAgICAgICAiZmxhZ3MiOiBbIkhJRERFTiIsICJDUkVBVEVfRlJPTV9Q
QUdFIl0sCiAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwKICAgICAgICAgICAgIm1l
bWJlcnMiOiBbCiAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzRm9jdXNlZCIsICJ0eXBlIjog
ImJvb2wiIH0sCiAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzQWN0aXZlIiwgInR5cGUiOiAi
Ym9vbCIgfSwKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZm9jdXNlZEZyYW1lSW5kZXgiLCAi
dHlwZSI6ICJpbnQiIH0KICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAg
ICAgICAibmFtZSI6ICJJbml0aWFsaXplV2luZG93IiwKICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkEgc2VudGluZWwgaW5wdXQgdG8gaW5pdGFsaXplIHRoZSBwYWdlJ3Mgd2luZG93IHNpemUu
IiwKICAgICAgICAgICAgImZsYWdzIjogWyJISURERU4iLCAiQ1JFQVRFX0ZST01fUEFHRSJdLAog
ICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCiAgICAgICAgICAgICJtZW1iZXJzIjog
WwogICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImludCIgfSwKICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUiOiAiaW50IiB9CiAgICAgICAg
ICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiSW5pdGlhbE5h
dmlnYXRpb24iLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2ltdWxhdGUgdGhlIGluaXRp
YWwgbWFpbiBmcmFtZSBuYXZpZ2F0aW9uLiIsCiAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9M
T09QIiwKICAgICAgICAgICAgImZsYWdzIjogWyJISURERU4iLCAiQ1JFQVRFX0ZST01fUEFHRSJd
LAogICAgICAgICAgICAibWVtYmVycyI6IFsKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2Vj
dXJpdHlPcmlnaW4iLCAidHlwZSI6ICJTZWN1cml0eU9yaWdpbiIgfSwKICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAiU3RyaW5nIiB9LAogICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJyZWZlcnJlciIsICJ0eXBlIjogIlN0cmluZyIgfQogICAgICAgICAgICBdCiAgICAg
ICAgfSwKCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGb2N1c1NldEFjdGl2ZSIsCiAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgdXNlciBjaGFuZ2VkIHRoZSBhY3RpdmUgc3Rh
dGUgb2YgdGhlIHBhZ2UuIiwKICAgICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAogICAg
ICAgICAgICAibWVtYmVycyI6IFsKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidG9TdGF0ZSIs
ICJ0eXBlIjogImJvb2wiIH0KICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAg
ICAgICAgICAibmFtZSI6ICJGb2N1c1NldEZvY3VzZWQiLAogICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiVGhlIHVzZXIgY2hhbmdlZCB0aGUgZm9jdXMgc3RhdGUgb2YgdGhlIHBhZ2UuIiwKICAg
ICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAogICAgICAgICAgICAibWVtYmVycyI6IFsK
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidG9TdGF0ZSIsICJ0eXBlIjogImJvb2wiIH0KICAg
ICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTZW5k
UmVzaXplRXZlbnQiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHVzZXIgY2hhbmdl
ZCBzaXplIG9mIHRoZSBzcGVjaWZpZWQgZnJhbWUuIiwKICAgICAgICAgICAgInF1ZXVlIjogIkVW
RU5UX0xPT1AiLAogICAgICAgICAgICAibWVtYmVycyI6IFsKICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAid2lkdGgiLCAidHlwZSI6ICJpbnQiIH0sCiAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImhlaWdodCIsICJ0eXBlIjogImludCIgfSwKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJh
bWVJbmRleCIsICJ0eXBlIjogImludCIgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAg
ICB7CiAgICAgICAgICAgICJuYW1lIjogIkhhbmRsZUNvbnRleHRNZW51IiwKICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlRoZSBlbWJlZGRlciBzaWduYWxsZWQgYSBjb250ZXh0IG1lbnUgZXZl
bnQgb24gdGhlIHNwZWNpZmllZCBmcmFtZS4iLAogICAgICAgICAgICAicXVldWUiOiAiRVZFTlRf
TE9PUCIsCiAgICAgICAgICAgICJtZW1iZXJzIjogWwogICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJwbGF0Zm9ybUV2ZW50IiwgInR5cGUiOiAiUGxhdGZvcm1Nb3VzZUV2ZW50IiB9LAogICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUluZGV4IiwgInR5cGUiOiAiaW50IiB9CiAgICAgICAg
ICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiSGFuZGxlS2V5
UHJlc3MiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGVtYmVkZGVyIHNpZ25hbGxl
ZCBhIGtleSBwcmVzcyBldmVudC4iLAogICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIs
CiAgICAgICAgICAgICJtZW1iZXJzIjogWwogICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwbGF0
Zm9ybUV2ZW50IiwgInR5cGUiOiAiUGxhdGZvcm1LZXlib2FyZEV2ZW50IiB9CiAgICAgICAgICAg
IF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiSGFuZGxlTW91c2VN
b3ZlIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBlbWJlZGRlciBzaWduYWxsZWQg
YSBtb3VzZSBtb3ZlIGV2ZW50LiIsCiAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwK
ICAgICAgICAgICAgIm1lbWJlcnMiOiBbCiAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBsYXRm
b3JtRXZlbnQiLCAidHlwZSI6ICJQbGF0Zm9ybU1vdXNlRXZlbnQiIH0sCiAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNjcm9sbGJhclRhcmdldGVkIiwgInR5cGUiOiAiYm9vbCIgfQogICAgICAg
ICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkhhbmRsZU1v
dXNlUHJlc3MiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGVtYmVkZGVyIHNpZ25h
bGxlZCBhIG1vdXNlIHByZXNzIGV2ZW50LiIsCiAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9M
T09QIiwKICAgICAgICAgICAgIm1lbWJlcnMiOiBbCiAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InBsYXRmb3JtRXZlbnQiLCAidHlwZSI6ICJQbGF0Zm9ybU1vdXNlRXZlbnQiIH0KICAgICAgICAg
ICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJIYW5kbGVNb3Vz
ZVJlbGVhc2UiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGVtYmVkZGVyIHNpZ25h
bGxlZCBhIG1vdXNlIHJlbGVhc2UgZXZlbnQuIiwKICAgICAgICAgICAgInF1ZXVlIjogIkVWRU5U
X0xPT1AiLAogICAgICAgICAgICAibWVtYmVycyI6IFsKICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAicGxhdGZvcm1FdmVudCIsICJ0eXBlIjogIlBsYXRmb3JtTW91c2VFdmVudCIgfQogICAgICAg
ICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkhhbmRsZVdo
ZWVsRXZlbnQiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGVtYmVkZGVyIHNpZ25h
bGxlZCBhIG1vdXNlIHdoZWVsIGV2ZW50LiIsCiAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9M
T09QIiwKICAgICAgICAgICAgIm1lbWJlcnMiOiBbCiAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InBsYXRmb3JtRXZlbnQiLCAidHlwZSI6ICJQbGF0Zm9ybVdoZWVsRXZlbnQiIH0KICAgICAgICAg
ICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTY3JvbGxQYWdl
IiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBlbWJlZGRlciBzaWduYWxsZWQgYSBz
Y3JvbGwgZXZlbnQuIiwKICAgICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAogICAgICAg
ICAgICAibWVtYmVycyI6IFsKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGlyZWN0aW9uIiwg
InR5cGUiOiAiU2Nyb2xsRGlyZWN0aW9uIiB9LAogICAgICAgICAgICAgICAgeyAibmFtZSI6ICJn
cmFudWxhcml0eSIsICJ0eXBlIjogIlNjcm9sbEdyYW51bGFyaXR5IiB9CiAgICAgICAgICAgIF0K
ICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTG9naWNhbFNjcm9sbFBh
Z2UiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGVtYmVkZGVyIHNpZ25hbGxlZCBh
IGxvZ2ljYWwgc2Nyb2xsIGV2ZW50LiIsCiAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9MT09Q
IiwKICAgICAgICAgICAgIm1lbWJlcnMiOiBbCiAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRp
cmVjdGlvbiIsICJ0eXBlIjogIlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24iIH0sCiAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImdyYW51bGFyaXR5IiwgInR5cGUiOiAiU2Nyb2xsR3JhbnVsYXJpdHki
IH0KICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6
ICJJbnRlcnByZXRlZEtleUNvbW1hbmRzIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRo
ZSBlbWJlZGRlcidzIGludGVycHJldGF0aW9uIG9mIHNvbWUga2V5IHByZXNzZXMuIiwKICAgICAg
ICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCiAgICAgICAgICAgICJndWFyZCI6ICJQ
TEFURk9STShNQUMpIiwKICAgICAgICAgICAgIm1lbWJlcnMiOiBbCiAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImNvbW1hbmRzIiwgInR5cGUiOiAiS2V5cHJlc3NDb21tYW5kIiwgImZsYWdzIjog
WyJWRUNUT1IiXSB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAg
ICAgICJuYW1lIjogIkRPTVRpbWVyQ3JlYXRlZCIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJBIERPTSB0aW1lciB3aXRoIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmlyZSB3YXMgY3JlYXRlZCBp
biB0aGUgc3BlY2lmaWVkIGZyYW1lIiwKICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1P
SVpFRCIsCiAgICAgICAgICAgICJtZW1iZXJzIjogWwogICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ0aW1lcklkIiwgInR5cGUiOiAiaW50IiB9LAogICAgICAgICAgICAgICAgeyAibmFtZSI6ICJm
cmFtZUluZGV4IiwgInR5cGUiOiAiaW50IiB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAg
ICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiRE9NVGltZXJGaXJlZCIsCiAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJUaGUgRE9NIHRpbWVyIG9uIHRoZSBzcGVjaWZpZWQgZnJhbWUgd2l0aCB0
aGUgc3BlY2lmaWVkIGlkZW50aWZpZXIgZmlyZWQuIiwKICAgICAgICAgICAgInF1ZXVlIjogIkVW
RU5UX0xPT1AiLAogICAgICAgICAgICAibWVtYmVycyI6IFsKICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAidGltZXJJZCIsICJ0eXBlIjogImludCIgfSwKICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZnJhbWVJbmRleCIsICJ0eXBlIjogImludCIgfQogICAgICAgICAgICBdCiAgICAgICAgfSwK
ICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkFzeW5jVGltZXJGaXJlZCIsCiAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJBIFJlcGxheWFibGVUaW1lciBpbnN0YW5jZSBmaXJlZCB0aGF0
IHdhcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBmcmFtZS4iLAogICAgICAgICAgICAi
cXVldWUiOiAiRVZFTlRfTE9PUCIsCiAgICAgICAgICAgICJtZW1iZXJzIjogWwogICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJmcmFtZUluZGV4IiwgInR5cGUiOiAiaW50IiB9LAogICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJpZGVudGlmaWVyIiwgInR5cGUiOiAidW5zaWduZWQgaW50IiB9CiAg
ICAgICAgICAgIF0KICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkxv
YWRVUkxSZXF1ZXN0IiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBlbWJlZGRlciBy
ZXF1ZXN0ZWQgdGhhdCB0aGUgc3BlY2lmaWVkIGZyYW1lIHN0YXJ0IGEgbmV3IGxvYWQuIiwKICAg
ICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAogICAgICAgICAgICAibWVtYmVycyI6IFsK
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibG9hZFJlcXVlc3QiLCAidHlwZSI6ICJGcmFtZUxv
YWRSZXF1ZXN0IiB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAg
ICAgIm5hbWUiOiAiVHJ5Q2xvc2VQYWdlIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRo
ZSBlbWJlZGRlciByZXF1ZXN0ZWQgdGhhdCB0aGUgcGFnZSBiZSBjbG9zZWQsIHN1YmplY3QgdG8g
b25iZWZvcmV1bmxvYWQgZXZlbnQgaGFuZGxlcnMuIiwKICAgICAgICAgICAgInF1ZXVlIjogIkVW
RU5UX0xPT1AiLAogICAgICAgICAgICAiZmxhZ3MiOiBbIkhJRERFTiJdLAogICAgICAgICAgICAi
bWVtYmVycyI6IFsgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJS
ZWxvYWRGcmFtZSIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgZW1iZWRkZXIgcmVx
dWVzdGVkIHRoYXQgdGhlIHNwZWNpZmllZCBmcmFtZSBzaG91bGQgcmVsb2FkLiIsCiAgICAgICAg
ICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwKICAgICAgICAgICAgIm1lbWJlcnMiOiBbCiAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSW5kZXgiLCAidHlwZSI6ICJpbnQiIH0sCiAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImVuZFRvRW5kUmVsb2FkIiwgInR5cGUiOiAiYm9vbCIgfQog
ICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlN0
b3BMb2FkaW5nRnJhbWUiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGVtYmVkZGVy
IHJlcXVlc3RlZCB0aGF0IHRoZSBzcGVjaWZpZWQgZnJhbWUgc2hvdWxkIHN0b3AgbG9hZGluZy4i
LAogICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCiAgICAgICAgICAgICJtZW1iZXJz
IjogWwogICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUluZGV4IiwgInR5cGUiOiAiaW50
IiB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgICJuYW1l
IjogIlJlc291cmNlTG9hZGVyRGlkRmFpbCIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJB
IHJlc291cmNlIGxvYWRlciBmYWlsZWQgdG8gbG9hZCBpdHMgcmVzb3VyY2UuIiwKICAgICAgICAg
ICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAogICAgICAgICAgICAibWVtYmVycyI6IFsKICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiaWRlbnRpZmllciIsICJ0eXBlIjogInVuc2lnbmVkIGxvbmci
IH0sCiAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSW5kZXgiLCAidHlwZSI6ICJpbnQi
IH0sCiAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yIiwgInR5cGUiOiAiUmVzb3VyY2VF
cnJvciIgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJu
YW1lIjogIlJlc291cmNlTG9hZGVyRGlkRmluaXNoTG9hZGluZyIsCiAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJBIHJlc291cmNlIGxvYWRlciBmaW5pc2hlZCByZWNlaXZpbmcgYSByZXNvdXJj
ZS4iLAogICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCiAgICAgICAgICAgICJtZW1i
ZXJzIjogWwogICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpZGVudGlmaWVyIiwgInR5cGUiOiAi
dW5zaWduZWQgbG9uZyIgfSwKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJbmRleCIs
ICJ0eXBlIjogImludCIgfSwKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZmluaXNoVGltZSIs
ICJ0eXBlIjogImRvdWJsZSIgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAg
ICAgICAgICAgICJuYW1lIjogIlJlc291cmNlTG9hZGVyRGlkUmVjZWl2ZVJlc3BvbnNlIiwKICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgcmVzb3VyY2UgbG9hZGVyIHJlY2VpdmVkIGFuIGlu
aXRpYWwgcmVzcG9uc2UuIiwKICAgICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAogICAg
ICAgICAgICAibWVtYmVycyI6IFsKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaWRlbnRpZmll
ciIsICJ0eXBlIjogInVuc2lnbmVkIGxvbmciIH0sCiAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImZyYW1lSW5kZXgiLCAidHlwZSI6ICJpbnQiIH0sCiAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlc3BvbnNlIiwgInR5cGUiOiAiUmVzb3VyY2VSZXNwb25zZSIgfQogICAgICAgICAgICBdCiAg
ICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlJlc291cmNlTG9hZGVyRGlk
U2VuZERhdGEiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSByZXNvdXJjZSBsb2FkZXIg
c2VudCBzb21lIGRhdGEuIiwKICAgICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAogICAg
ICAgICAgICAibWVtYmVycyI6IFsKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaWRlbnRpZmll
ciIsICJ0eXBlIjogInVuc2lnbmVkIGxvbmciIH0sCiAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImZyYW1lSW5kZXgiLCAidHlwZSI6ICJpbnQiIH0sCiAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImJ5dGVzU2VudCIsICJ0eXBlIjogInVuc2lnbmVkIGxvbmcgbG9uZyIgfSwKICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAidG90YWxCeXRlc1RvQmVTZW50IiwgInR5cGUiOiAidW5zaWduZWQgbG9u
ZyBsb25nIiB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAg
Im5hbWUiOiAiUmVzb3VyY2VMb2FkZXJEaWRSZWNlaXZlRGF0YSIsCiAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJBIHJlc291cmNlIGxvYWRlciByZWNlaXZlZCBzb21lIGRhdGEuIiwKICAgICAg
ICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAogICAgICAgICAgICAibWVtYmVycyI6IFsKICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiaWRlbnRpZmllciIsICJ0eXBlIjogInVuc2lnbmVkIGxv
bmciIH0sCiAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSW5kZXgiLCAidHlwZSI6ICJp
bnQiIH0sCiAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJ1ZmZlciIsICJ0eXBlIjogIlNoYXJl
ZEJ1ZmZlciIgfSwKICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5jb2RlZExlbmd0aCIsICJ0
eXBlIjogImludCIgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAg
ICAgICJuYW1lIjogIlJlc291cmNlTG9hZGVyQ3JlYXRlZCIsCiAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJBIHJlc291cmNlIGxvYWRlciB3YXMgY3JlYXRlZC4gVGhpcyBpbnB1dCBtZW1vaXpl
cyB0aGUgbG9hZGVyIGlkZW50aWZpZXIgYW5kIGhlbHBzIGlkZW50aWZ5IGxvYWQgb3JkZXIgZGlz
Y3JlcGFuY2llcy4iLAogICAgICAgICAgICAicXVldWUiOiAiTE9BREVSX01FTU9JWkVEIiwKICAg
ICAgICAgICAgIm1lbWJlcnMiOiBbCiAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlkZW50aWZp
ZXIiLCAidHlwZSI6ICJ1bnNpZ25lZCBsb25nIiB9LAogICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0IiwgInR5cGUiOiAiUmVzb3VyY2VSZXF1ZXN0IiB9CiAgICAgICAgICAgIF0KICAg
ICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlNhdmVkQmVnaW5BbmltYXRp
b25VcGRhdGVUaW1lIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB0aW1lIHVzZWQg
YnkgdGhlIGFuaW1hdGlvbiBjb250cm9sbGVyIGFzIHRoZSBiZWdpbm5pbmcgb2YgYW5pbWF0aW9u
LCB1c2VkIHRvIGludGVycG9sYXRlIGZyYW1lcy4iLAogICAgICAgICAgICAicXVldWUiOiAiU0NS
SVBUX01FTU9JWkVEIiwKICAgICAgICAgICAgIm1lbWJlcnMiOiBbCiAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImN1cnJlbnRUaW1lIiwgInR5cGUiOiAiZG91YmxlIiB9CiAgICAgICAgICAgIF0K
ICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiU2F2ZWRUaW1lck5leHRG
aXJlSW50ZXJ2YWwiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHRpbWUgcmVwb3J0
ZWQgYnkgYSByZXBsYXlhYmxlIHRpbWVyIGFzIHRoZSB0aW1lIHJlbWFpbmluZyB1bnRpbCBpdCBm
aXJlcyBhZ2Fpbi4iLAogICAgICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwKICAg
ICAgICAgICAgIm1lbWJlcnMiOiBbCiAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5leHRGaXJl
SW50ZXJ2YWwiLCAidHlwZSI6ICJkb3VibGUiIH0KICAgICAgICAgICAgXQogICAgICAgIH0KICAg
IF0KfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223186</attachid>
            <date>2014-02-04 17:23:25 -0800</date>
            <delta_ts>2014-02-06 12:07:27 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-128215-20140204172424.patch</filename>
            <type>text/plain</type>
            <size>192188</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MDlhODU4NmQzZTgyMzBiYjk2YWExMDJlYzFlNTdlNzM2ZGUyMWFkLi4zNDgyMjIwMjdlZWJiZjZh
OWI0MDIxNDdkNTNmNDUxMzdiNjE1YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDIgQEAKKzIwMTQtMDItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIFJlcGxheTogdXBzdHJlYW0gcmVwbGF5IGlucHV0IGNvZGUgZ2VuZXJhdG9y
IGFuZCBFbmNvZGVkVmFsdWUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyODIxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCB0aGUgcmVwbGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvci4gTW9z
dCBmZWF0dXJlcyBvZiB0aGUgaW5wdXQgZ2VuZXJhdG9yIGFyZQorICAgICAgICBleGVyY2lzZWQg
YnkgaW5jbHVkZWQgZ2VuZXJhdG9yIHJlZ3Jlc3Npb24gdGVzdHMsIHdoaWNoIHByb2R1Y2UgdXNl
ZnVsIGJ1dAorICAgICAgICBub24tY29tcGlsYWJsZSB0ZXN0IHJlcGxheSBpbnB1dHMuCisKKyAg
ICAgICAgQWRkIEVuY29kZWRWYWx1ZSwgdGhlIG1haW4gcmVwbGF5IGlucHV0IHNlcmlhbGl6YXRp
b24gY2xhc3MgdGhhdCBlbmNvZGVzIGFuZAorICAgICAgICBkZWNvZGVzIGlucHV0cyBhbmQgdGhl
aXIgZGF0YSBiZXR3ZWVuIEMrKyB0eXBlcyBhbmQgdGhlIEpTT04tYmFzZWQgcmVwbGF5IHJlY29y
ZGluZworICAgICAgICBmb3JtYXQuIFJlbGF0aXZlIHRvIG90aGVyIFdlYktpdCBtYXJzaGFsbGlu
ZyBtZWNoYW5pc21zLCBFbmNvZGVkVmFsdWUgaXMga2V5L3ZhbHVlIGJhc2VkLgorICAgICAgICBF
bmNvZGVkVmFsdWVzIHVzZSBJbnNwZWN0b3JPYmplY3RzIGFzIHRoZWlyIGJhY2tpbmcgZGF0YSBz
dHJ1Y3R1cmUuCisKKyAgICAgICAgQWRkIHNvbWUgbWlzc2luZyBudW1lcmljYWwgY29udmVyc2lv
bnMgdG8gSW5zcGVjdG9yVmFsdWUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOgorICAgICAgICAqIHJlcGxheS9FbmNvZGVk
VmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpFbmNvZGVkVmFs
dWUpOgorICAgICAgICAoSlNDOjpFbmNvZGVkVmFsdWU6On5FbmNvZGVkVmFsdWUpOgorICAgICAg
ICAoSlNDOjpFbmNvZGVkVmFsdWU6OmNyZWF0ZUVuY29kZWRNYXApOgorICAgICAgICAoSlNDOjpF
bmNvZGVkVmFsdWU6OmNyZWF0ZUVuY29kZWRMaXN0KToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZh
bHVlOjphZG9wdEluc3BlY3RvclZhbHVlKToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpw
dXRFbmNvZGVkKToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjphcHBlbmRFbmNvZGVkKToK
KyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpTaGFwZTo6U2NhbGFyPik6CisgICAgICAgIChK
U0M6OkVuY29kZWRWYWx1ZTo6U2hhcGU6Ok1hcD4pOgorICAgICAgICAoSlNDOjpFbmNvZGVkVmFs
dWU6OlNoYXBlOjpMaXN0Pik6CisgICAgICAgICogcmVwbGF5L0VuY29kZWRWYWx1ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjppbnNwZWN0b3JWYWx1ZSk6CisgICAgICAg
IChKU0M6OlByaW1pdGl2ZUVuY29kaW5nVHJhaXRzOjplbmNvZGVWYWx1ZSk6CisgICAgICAgIChK
U0M6OlByaW1pdGl2ZUVuY29kaW5nVHJhaXRzOjpkZWNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6
OkVuY29kaW5nVHJhaXRzPEVuY29kZWRWYWx1ZT46OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpT
Qzo6RW5jb2RpbmdUcmFpdHM8RW5jb2RlZFZhbHVlPjo6ZGVjb2RlVmFsdWUpOgorICAgICAgICAo
SlNDOjpFbmNvZGVkVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6YXBw
ZW5kKToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpnZXQpOgorICAgICAgICAqIHJlcGxh
eS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHk6IEFkZGVkLgorICAgICAgICAo
UGFyc2VFeGNlcHRpb24pOgorICAgICAgICAoVHlwZWNoZWNrRXhjZXB0aW9uKToKKyAgICAgICAg
KEZyYW1ld29yayk6CisgICAgICAgIChGcmFtZXdvcmsuX19pbml0X18pOgorICAgICAgICAoRnJh
bWV3b3JrLnNldHRpbmcpOgorICAgICAgICAoRnJhbWV3b3JrLmZyb21TdHJpbmcpOgorICAgICAg
ICAoRnJhbWV3b3Jrcyk6CisgICAgICAgIChJbnB1dFF1ZXVlKToKKyAgICAgICAgKElucHV0UXVl
dWUuX19pbml0X18pOgorICAgICAgICAoSW5wdXRRdWV1ZS5zZXR0aW5nKToKKyAgICAgICAgKElu
cHV0UXVldWUuZnJvbVN0cmluZyk6CisgICAgICAgIChJbnB1dFF1ZXVlcyk6CisgICAgICAgIChJ
bnB1dCk6CisgICAgICAgIChJbnB1dC5fX2luaXRfXyk6CisgICAgICAgIChJbnB1dC5zZXR0aW5n
KToKKyAgICAgICAgKElucHV0TWVtYmVyKToKKyAgICAgICAgKElucHV0TWVtYmVyLl9faW5pdF9f
KToKKyAgICAgICAgKElucHV0TWVtYmVyLmhhc19mbGFnKToKKyAgICAgICAgKFR5cGVTaGFwZSk6
CisgICAgICAgIChUeXBlU2hhcGUuX19pbml0X18pOgorICAgICAgICAoVHlwZVNoYXBlLnNldHRp
bmcpOgorICAgICAgICAoVHlwZVNoYXBlLmZyb21TdHJpbmcpOgorICAgICAgICAoVHlwZVNoYXBl
cyk6CisgICAgICAgIChUeXBlKToKKyAgICAgICAgKFR5cGUuX19pbml0X18pOgorICAgICAgICAo
VHlwZS5fX2VxX18pOgorICAgICAgICAoVHlwZS5fX2hhc2hfXyk6CisgICAgICAgIChUeXBlLmhh
c19mbGFnKToKKyAgICAgICAgKFR5cGUuaXNfc3RydWN0KToKKyAgICAgICAgKFR5cGUuaXNfZW51
bSk6CisgICAgICAgIChUeXBlLmlzX2VudW1fY2xhc3MpOgorICAgICAgICAoVHlwZS5kZWNsYXJh
dGlvbl9raW5kKToKKyAgICAgICAgKFR5cGUucXVhbGlmaWVkX3ByZWZpeCk6CisgICAgICAgIChU
eXBlLnF1YWxpZmllZF9wcmVmaXguaXMpOgorICAgICAgICAoVHlwZS50eXBlX25hbWUpOgorICAg
ICAgICAoVHlwZS5zdG9yYWdlX3R5cGUpOgorICAgICAgICAoVHlwZS5ib3Jyb3dfdHlwZSk6Cisg
ICAgICAgIChUeXBlLmFyZ3VtZW50X3R5cGUpOgorICAgICAgICAoY2hlY2tfcHJvcGVydGllcyk6
CisgICAgICAgIChWZWN0b3JUeXBlKToKKyAgICAgICAgKFZlY3RvclR5cGUuX19pbml0X18pOgor
ICAgICAgICAoVmVjdG9yVHlwZS5oYXNfZmxhZyk6CisgICAgICAgIChWZWN0b3JUeXBlLmlzX3N0
cnVjdCk6CisgICAgICAgIChWZWN0b3JUeXBlLmlzX2VudW0pOgorICAgICAgICAoVmVjdG9yVHlw
ZS5pc19lbnVtX2NsYXNzKToKKyAgICAgICAgKFZlY3RvclR5cGUucXVhbGlmaWVkX3ByZWZpeCk6
CisgICAgICAgIChWZWN0b3JUeXBlLnR5cGVfbmFtZSk6CisgICAgICAgIChWZWN0b3JUeXBlLnN0
b3JhZ2VfdHlwZSk6CisgICAgICAgIChWZWN0b3JUeXBlLmJvcnJvd190eXBlKToKKyAgICAgICAg
KFZlY3RvclR5cGUuYXJndW1lbnRfdHlwZSk6CisgICAgICAgIChJbnB1dHNNb2RlbCk6CisgICAg
ICAgIChJbnB1dHNNb2RlbC5fX2luaXRfXyk6CisgICAgICAgIChJbnB1dHNNb2RlbC5lbnVtX3R5
cGVzKToKKyAgICAgICAgKElucHV0c01vZGVsLmdldF90eXBlX2Zvcl9tZW1iZXIpOgorICAgICAg
ICAoSW5wdXRzTW9kZWwucGFyc2VfdG9wbGV2ZWwpOgorICAgICAgICAoSW5wdXRzTW9kZWwucGFy
c2VfdHlwZV93aXRoX2ZyYW1ld29ya19uYW1lKToKKyAgICAgICAgKElucHV0c01vZGVsLnBhcnNl
X2lucHV0KToKKyAgICAgICAgKElucHV0c01vZGVsLnR5cGVjaGVjayk6CisgICAgICAgIChJbnB1
dHNNb2RlbC50eXBlY2hlY2tfdHlwZSk6CisgICAgICAgIChJbnB1dHNNb2RlbC50eXBlY2hlY2tf
aW5wdXQpOgorICAgICAgICAoSW5wdXRzTW9kZWwudHlwZWNoZWNrX2lucHV0X21lbWJlcik6Cisg
ICAgICAgIChJbmNyZW1lbnRhbEZpbGVXcml0ZXIpOgorICAgICAgICAoSW5jcmVtZW50YWxGaWxl
V3JpdGVyLl9faW5pdF9fKToKKyAgICAgICAgKEluY3JlbWVudGFsRmlsZVdyaXRlci53cml0ZSk6
CisgICAgICAgIChJbmNyZW1lbnRhbEZpbGVXcml0ZXIuY2xvc2UpOgorICAgICAgICAobGNmaXJz
dCk6CisgICAgICAgICh3cmFwX3dpdGhfZ3VhcmQpOgorICAgICAgICAoR2VuZXJhdG9yKToKKyAg
ICAgICAgKEdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAgIChHZW5lcmF0b3Iuc2V0dGluZyk6
CisgICAgICAgIChHZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEdlbmVyYXRv
ci53cml0ZV9vdXRwdXRfZmlsZXMpOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRl
cik6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfaW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAoR2VuZXJhdG9yLmdlbmVyYXRlX2xpY2Vuc2UpOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVy
YXRlX2luY2x1ZGVzKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbmNsdWRlcy5pcyk6
CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6
CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9mb3J3YXJkX2RlY2xhcmF0aW9ucy5p
cyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfY2xhc3NfZGVjbGFyYXRpb24pOgorICAg
ICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2lucHV0X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKToK
KyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF9kZXN0cnVjdG9yX2RlY2xhcmF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfZ2V0dGVyKToKKyAg
ICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfZGVjbGFyYXRpb24pOgorICAg
ICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2lucHV0X21lbWJlcl90dXBsZXMpOgorICAgICAgICAo
R2VuZXJhdG9yLnF1YWxpZmllZF9pbnB1dF9uYW1lKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5l
cmF0ZV9pbnB1dF90cmFpdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJh
dGVfZW51bV90cmFpdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVf
Zm9yX2VhY2hfbWFjcm8pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2NsYXNzX2ltcGxl
bWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9lbnVtX3RyYWl0X2ltcGxl
bWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9lbnVtX3RyYWl0X2ltcGxl
bWVudGF0aW9uLmlzKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF90cmFpdF9p
bXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfaW5wdXRfZW5jb2Rl
X2ltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF9kZWNv
ZGVfaW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2NvbnN0cnVj
dG9yX2luaXRpYWxpemVyX2xpc3QpOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2NvbnN0
cnVjdG9yX2Zvcm1hbHNfbGlzdCk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfbWVtYmVy
X2JvcnJvd19leHByZXNzaW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9tZW1iZXJf
bW92ZV9leHByZXNzaW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9jb25zdHJ1Y3Rv
cl9hcmd1bWVudHNfbGlzdCk6CisgICAgICAgIChnZW5lcmF0ZV9mcm9tX3NwZWNpZmljYXRpb24p
OgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1w
bGF0ZXMucHk6IEFkZGVkLgorICAgICAgICAoVGVtcGxhdGVzKToKKyAgICAgICAgKHN0ZCk6Cisg
ICAgICAgIChTdHJpbmcpOgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2ZhaWwtb24tYy1zdHlsZS1lbnVtLW5vLXN0b3JhZ2UuanNvbi1lcnJvcjogQWRkZWQuCisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1kdXBsaWNhdGUtaW5w
dXQtbmFtZXMuanNvbi1lcnJvcjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZmFpbC1vbi1kdXBsaWNhdGUtdHlwZS1uYW1lcy5qc29uLWVycm9yOiBBZGRl
ZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLWVudW0t
dHlwZS1taXNzaW5nLXZhbHVlcy5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbWVtYmVyLW5hbWUu
anNvbi1lcnJvcjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LW5hbWUuanNvbi1lcnJvcjogQWRkZWQuCisgICAgICAg
ICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LXF1
ZXVlLmpzb24tZXJyb3I6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2ZhaWwtb24tbWlzc2luZy10eXBlLW1vZGUuanNvbi1lcnJvcjogQWRkZWQuCisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLXR5cGUt
bmFtZS5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9mYWlsLW9uLW5vLWlucHV0cy5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiBy
ZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW5vLXR5cGVzLmpzb24tZXJyb3I6
IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24t
dW5rbm93bi1pbnB1dC1xdWV1ZS5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLXVua25vd24tbWVtYmVyLXR5cGUuanNvbi1l
cnJvcjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFp
bC1vbi11bmtub3duLXR5cGUtc2hhcGUuanNvbi1lcnJvcjogQWRkZWQuCisgICAgICAgICogcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJz
LXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcDogQWRkZWQuCisg
ICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNv
ZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmg6
IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRl
LWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVu
Y29kaW5nLWhlbHBlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmg6IEFkZGVkLgorICAgICAgICAq
IHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVs
cGVycy5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9nZW5lcmF0ZS1ldmVudC1sb29wLXNoYXBlLXR5cGVzLmpzb24tVGVzdFJlcGxheUlu
cHV0cy5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hhcGUtdHlwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmg6
IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRl
LWlucHV0LXdpdGgtZ3VhcmQuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcDogQWRkZWQuCisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1n
dWFyZC5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaDogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5q
c29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24t
VGVzdFJlcGxheUlucHV0cy5oOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dHMtd2l0aC1mbGFncy5qc29uLWVycm9yOiBBZGRlZC4K
KyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXpl
ZC10eXBlLXNoYXBlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLXNo
YXBlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaDogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZmFpbC1vbi1jLXN0eWxlLWVudW0tbm8tc3RvcmFnZS5qc29uOiBBZGRlZC4K
KyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWR1cGxpY2F0ZS1pbnB1dC1u
YW1lcy5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9u
LWR1cGxpY2F0ZS10eXBlLW5hbWVzLmpzb246IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3Jp
cHRzL3Rlc3RzL2ZhaWwtb24tZW51bS10eXBlLW1pc3NpbmctdmFsdWVzLmpzb246IEFkZGVkLgor
ICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tbWlzc2luZy1pbnB1dC1tZW1i
ZXItbmFtZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWls
LW9uLW1pc3NpbmctaW5wdXQtbmFtZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2Ny
aXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctaW5wdXQtcXVldWUuanNvbjogQWRkZWQuCisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLXR5cGUtbW9kZS5qc29u
OiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3Npbmct
dHlwZS1uYW1lLmpzb246IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2Zh
aWwtb24tbm8taW5wdXRzLmpzb246IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rl
c3RzL2ZhaWwtb24tbm8tdHlwZXMuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3Njcmlw
dHMvdGVzdHMvZmFpbC1vbi11bmtub3duLWlucHV0LXF1ZXVlLmpzb246IEFkZGVkLgorICAgICAg
ICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi1tZW1iZXItdHlwZS5qc29u
OiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLXVua25vd24t
dHlwZS1zaGFwZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9n
ZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uOiBB
ZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1lbnVtLWVuY29k
aW5nLWhlbHBlcnMuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMv
Z2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBlcy5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBy
ZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1dC13aXRoLWd1YXJkLmpzb246IEFkZGVk
LgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWlucHV0LXdpdGgtdmVj
dG9yLW1lbWJlcnMuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMv
Z2VuZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtbWVtb2l6ZWQtdHlwZS1zaGFwZXMuanNvbjogQWRkZWQu
CisKIDIwMTQtMDItMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgU3RyaW5nSW1wbDo6Z2V0Q2hhcmFjdGVycyB0byBTdHJpbmdJbXBsOjpj
aGFyYWN0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU1ZjEzZmI4MzBhNmY4
NjM4MWFiYzU2MmNiZWEzMWIyNTQzMTc1ZDcuLjYxYzEwMjAyMDU3ZGMxNzI3OTNjZmYxMWM0MzUz
OGYwZjU4NDE2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTgsOSArOTE4
LDExIEBACiAJCTk2OUEwNzlCMEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzk1MEVEMUQzQUUwMEYx
RjY4MSAvKiBPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5Nzg4MDE0MDE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMjE0NzFB
RDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5jcHAgKi87IH07CiAJCTk3ODgwMTQxMTQ3MUFEOTIw
MDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5Nzg4RkMyMzE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTk5RTQ1QTEw
MThBMDFGMzUwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEwRDE4QTAxRjM1MDAyNkQ4OEYgLyog
RW1wdHlJbnB1dEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTk5RTQ1QTExMThBMDFGMzUwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMEUxOEEw
MUYzNTAwMjZEODhGIC8qIElucHV0Q3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTlFNDVBMTIxOEEwMUYzNTAwMjZEODhGIC8qIE5vbmRl
dGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlFNDVBMEYxOEEwMUYzNTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5
RTQ1QTI0MThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUExRjE4QTFCMjU5MDAyNkQ4
OEYgLyogRW1wdHlJbnB1dEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5RTQ1QTI1MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlF
NDVBMjAxOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5jcHAgKi87IH07CisJCTk5RTQ1
QTI2MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTIxMThBMUIyNTkwMDI2RDg4RiAvKiBF
bmNvZGVkVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5OUU0NUEyNzE4QTFCMjU5MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTIyMThBMUIyNTkw
MDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5RTQ1QTI4MThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRlcm1p
bmlzdGljSW5wdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5RTQ1QTIzMThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkIz
QjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJl
Z0V4cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4
cENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUz
MTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNTksOSArMjM2MSwx
MyBAQAogCQk5NjlBMDkyMjBFRDFFMDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wbGV0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc4OEZDMjIxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1h
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRlTWF0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3ODhGQzIzMTQ3MUFEMEMwMDY4Q0Uy
RCAvKiBKU0RhdGVNYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0
ZU1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTlFNDVBMEQxOEEwMUYzNTAw
MjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRW1wdHlJbnB1dEN1cnNvci5oOyBwYXRoID0gcmVwbGF5L0VtcHR5SW5wdXRDdXJzb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTlFNDVBMEUxOEEwMUYzNTAwMjZEODhG
IC8qIElucHV0Q3Vyc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElucHV0
Q3Vyc29yLmg7IHBhdGggPSByZXBsYXkvSW5wdXRDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJOTlFNDVBMEYxOEEwMUYzNTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJ
bnB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb25kZXRlcm1pbmlzdGlj
SW5wdXQuaDsgcGF0aCA9IHJlcGxheS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlFNDVBMUQxOEExQjFFNzAwMjZEODhGIC8qIENvZGVHZW5l
cmF0b3JSZXBsYXlJbnB1dHMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGgg
PSBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5OUU0NUExRTE4QTFCMUU3MDAyNkQ4OEYgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0
c1RlbXBsYXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVH
ZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5RTQ1QTFGMThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVtcHR5SW5wdXRDdXJzb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlFNDVBMjAxOEExQjI1OTAwMjZEODhGIC8qIEVuY29k
ZWRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbmNvZGVk
VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUU0NUEyMTE4QTFCMjU5
MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVuY29kZWRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUU0NUEy
MjE4QTFCMjU5MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5wdXRDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTlFNDVBMjMxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb25kZXRlcm1pbmlzdGljSW5wdXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJl
Z0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4
cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIy
ODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjQw
MTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDY4
LDExICs0NDc0LDIzIEBACiAJCTk5RTQ1QTBDMThBMDFFOTMwMDI2RDg4RiAvKiByZXBsYXkgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTk5RTQ1QTBEMThB
MDFGMzUwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggKi8sCi0JCQkJOTlFNDVBMEUxOEEw
MUYzNTAwMjZEODhGIC8qIElucHV0Q3Vyc29yLmggKi8sCi0JCQkJOTlFNDVBMEYxOEEwMUYzNTAw
MjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oICovLAorCQkJCTk5RTQ1QTFDMThBMUIx
QjgwMDI2RDg4RiAvKiBzY3JpcHRzICovLAorCQkJCTk5RTQ1QTIwMThBMUIyNTkwMDI2RDg4RiAv
KiBFbmNvZGVkVmFsdWUuY3BwICovLAorCQkJCTk5RTQ1QTIxMThBMUIyNTkwMDI2RDg4RiAvKiBF
bmNvZGVkVmFsdWUuaCAqLywKKwkJCQk5OUU0NUExRjE4QTFCMjU5MDAyNkQ4OEYgLyogRW1wdHlJ
bnB1dEN1cnNvci5oICovLAorCQkJCTk5RTQ1QTIyMThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1
cnNvci5oICovLAorCQkJCTk5RTQ1QTIzMThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlz
dGljSW5wdXQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gcmVwbGF5OworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJOTlFNDVBMUMxOEExQjFCODAwMjZEODhGIC8qIHNjcmlwdHMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTk5RTQ1QTFE
MThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5ICovLAorCQkJ
CTk5RTQ1QTFFMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVt
cGxhdGVzLnB5ICovLAogCQkJKTsKLQkJCW5hbWUgPSByZXBsYXk7CisJCQlwYXRoID0gc2NyaXB0
czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCUE1MTNFNUNDMTg1RkI5OTIw
MDdFOTVBRCAvKiBhZ2VudHMgKi8gPSB7CkBAIC00NjgwLDYgKzQ2OTgsNyBAQAogCQkJCTk2OUEw
NzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEMzRUQwRTE2RjVDRDAwQjM0NDYwIC8qIENhbGxEYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5OUU0NUEyNjE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFFRjE3OTg3QUI2MDAyOTlEQjIgLyogQ2FsbEZyYW1l
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTVFM0JDMDUwRTFBRTY4MjAwQjJEMUMxIC8q
IENhbGxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NDEsNiArNDg2MCw3IEBACiAJ
CQkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVFMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JF
eGl0UHJlcGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3
MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlFNDVBMjcxOEExQjI1OTAw
MjZEODhGIC8qIElucHV0Q3Vyc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzhBOTc3QjE3OTcz
OEI4MDA5REY3NDQgLyogREZHUGxhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRTBGNzUxNkMx
REIwQjAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGRkM5NUUxNEVGOTBCNzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5MjQsNyArNDk0NCw2IEBACiAJCQkJMEZF
QTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0Q4OUQwMjE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVu
dHJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQk5OUU0NUExMTE4QTAxRjM1MDAyNkQ4OEYgLyogSW5w
dXRDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkREMTcxNzhFMUMwMDY5MEM3RiAv
KiBGVExPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERTE3MTc4RTFDMDA2OTBD
N0YgLyogRlRMT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRTAxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC00OTQ1LDYgKzQ5NjQsNyBAQAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FFMTRFOTg1
QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDMw
MTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTk5RTQ1QTI0MThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZBQzE3QjZCNTNGMDBBN0FFM0YgLyogR0NJbmNvbWluZ1Jl
ZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFEMTdCNkI1NDUwMEE3QUUzRiAv
KiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NkFFMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIGluIEhlYWRl
cnMgKi8sCkBAIC01MDk1LDcgKzUxMTUsNiBAQAogCQkJCUJDMThDNDVFMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3OTg3QUI2MDAyOTlE
QjIgLyogSlNTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI3MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTlFNDVBMTIxOEEw
MUYzNTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZFODU1MzkxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyODBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmdS
ZWYuaCBpbiBIZWFkZXJzICovLApAQCAtNTI0NCw2ICs1MjYzLDcgQEAKIAkJCQk4NjE1OEFCMzE1
NUM4QjQwMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQ1NDBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0
aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTUwRTE2RjVDRDAwQjM0NDYwIC8q
IFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUMxNUVEOEU0NjAwRjE2
N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzODgxODU2
ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVy
cyAqLywKQEAgLTUyOTYsNyArNTMxNiw2IEBACiAJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFG
IC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTczODY1NTQxMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCBp
biBIZWFkZXJzICovLAotCQkJCTk5RTQ1QTEwMThBMDFGMzUwMDI2RDg4RiAvKiBFbXB0eUlucHV0
Q3Vyc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNFMjUgLyog
U3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3
OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVBRjIxNzk4
N0FCNjAwMjk5REIyIC8qIFN0YWNrVmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTIwLDYg
KzYxMzksNyBAQAogCQkJCTE0ODJCNzRFMEE0MzAzMjgwMDUxN0NGQyAvKiBKU1N0cmluZ1JlZi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZBQUIzODBCNjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJp
bmdSZWZDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0Qg
LyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OUU0NUEyNTE4
QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI2NkZBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzOEIxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpT
VHlwZUJ1aWxkZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkZDMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmlu
ZGV4IDRjZGY3MWU5MmZiZDU5ZGUyYTdiYzc4ZjI4YzQ0YWZhZDg5ZTRhZjQuLjEyYjExZjc1ZjY3
Yzc1NmMzMzUxZGEyMmI0ZTA2MzVmNWI5MmQ5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBA
QCBib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcihkb3VibGUqKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIobG9uZyopIGNvbnN0
Citib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcihmbG9hdCopIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQpAQCAtNTAyLDEyICs1MDIsMjcgQEAgYm9vbCBJbnNwZWN0b3JWYWx1ZTo6
YXNOdW1iZXIoaW50KikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgSW5zcGVj
dG9yVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkKikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKGxvbmcqKSBjb25zdAoreworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIobG9uZyBs
b25nKikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgSW5zcGVjdG9yVmFs
dWU6OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgaW50KikgY29uc3QK
K2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyopIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNTg0LDExICs1OTksMTEgQEAgYm9vbCBJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcihkb3VibGUqIG91dHB1dCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcihsb25nKiBv
dXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGZsb2F0KiBv
dXRwdXQpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlTnVtYmVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgKm91dHB1dCA9IHN0YXRpY19jYXN0PGxvbmc+KG1fZG91YmxlVmFs
dWUpOworICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxmbG9hdD4obV9kb3VibGVWYWx1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYwMCw2ICs2MTUsMzAgQEAgYm9vbCBJbnNwZWN0b3JC
YXNpY1ZhbHVlOjphc051bWJlcihpbnQqIG91dHB1dCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNpZ25lZCogb3V0cHV0
KSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gVHlwZU51bWJlcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9kb3VibGVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNO
dW1iZXIobG9uZyogb3V0cHV0KSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gVHlwZU51bWJl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxsb25n
PihtX2RvdWJsZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnNwZWN0b3JC
YXNpY1ZhbHVlOjphc051bWJlcihsb25nIGxvbmcqIG91dHB1dCkgY29uc3QKK3sKKyAgICBpZiAo
dHlwZSgpICE9IFR5cGVOdW1iZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAqb3V0cHV0
ID0gc3RhdGljX2Nhc3Q8bG9uZz4obV9kb3VibGVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIGJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgbG9uZyogb3V0
cHV0KSBjb25zdAogewogICAgIGlmICh0eXBlKCkgIT0gVHlwZU51bWJlcikKQEAgLTYwOCwxMSAr
NjQ3LDExIEBAIGJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgbG9u
Zyogb3V0cHV0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEluc3BlY3RvckJh
c2ljVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkIGludCogb3V0cHV0KSBjb25zdAorYm9vbCBJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29u
c3QKIHsKICAgICBpZiAodHlwZSgpICE9IFR5cGVOdW1iZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtX2RvdWJsZVZhbHVl
KTsKKyAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihtX2RvdWJs
ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXggMDZjNWRmZTk3NzViZGFlYzhk
Njk4NDllOWY2MTBhYmU5ZjgzODJiNS4uM2I4NjE2NjRkYTMzNzlkZWI1Njg5YmMwMDEzNGRlMjZl
YmE2NzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oCkBAIC02NywxMCArNjcsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIGFzQm9vbGVhbihib29sKiBvdXRwdXQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhc051
bWJlcihkb3VibGUqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGxv
bmcqIG91dHB1dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGZsb2F0KiBvdXRw
dXQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihpbnQqIG91dHB1dCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBhc051bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBhc051bWJlcihsb25nIGxvbmcqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGFzTnVtYmVyKHVuc2lnbmVkIGludCogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIodW5zaWduZWQgbG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGFz
VmFsdWUoUmVmUHRyPEluc3BlY3RvclZhbHVlPiogb3V0cHV0KTsKICAgICB2aXJ0dWFsIGJvb2wg
YXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCk7CkBAIC05OSwxMCArMTAy
LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhc0Jvb2xlYW4oYm9vbCogb3V0cHV0
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoZG91YmxlKiBvdXRw
dXQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihsb25nKiBvdXRw
dXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihmbG9hdCogb3V0
cHV0KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoaW50KiBvdXRw
dXQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBs
b25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1
bnNpZ25lZCogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1i
ZXIobG9uZyogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1i
ZXIobG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBh
c051bWJlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1
YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBs
YXkvRW5jb2RlZFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2Rl
ZFZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzQ3MTk3YzI5MGMwZTI1MTI2NmU0ZDZjM2I2OGM5MDU2
M2U5NDhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9F
bmNvZGVkVmFsdWUuY3BwCkBAIC0wLDAgKzEsMjk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVu
Y29kZWRWYWx1ZS5oIgorCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisKKyNpbmNsdWRlICA8d3Rm
L3RleHQvQmFzZTY0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK25hbWVzcGFj
ZSBKU0MgeworCitFbmNvZGVkVmFsdWU6OkVuY29kZWRWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBvYmplY3QpCisgICAgOiBtX29iamVjdChvYmplY3QpIHsgfQorCitFbmNvZGVkVmFs
dWU6On5FbmNvZGVkVmFsdWUoKSB7IH0KKworc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4g
RW5jb2RlZFZhbHVlOjpjcmVhdGVFbmNvZGVkTWFwKCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPEVuY29kZWRWYWx1ZT4obmV3IEVuY29kZWRWYWx1ZShJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IEVuY29kZWRWYWx1
ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8RW5j
b2RlZFZhbHVlPihuZXcgRW5jb2RlZFZhbHVlKEluc3BlY3RvckFycmF5OjpjcmVhdGUoKSkpOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBFbmNvZGVkVmFsdWU6OmFkb3B0SW5z
cGVjdG9yVmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCit7CisgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+KG5ldyBFbmNvZGVkVmFsdWUodmFsdWUp
KTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgYm9vbCYgdmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY2FzdGVkT2JqZWN0OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVj
dC0+YXNPYmplY3QoJmNhc3RlZE9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmpl
Y3RJc01hcCwgY2FzdGVkT2JqZWN0SXNNYXApOworCisgICAgY2FzdGVkT2JqZWN0LT5zZXRCb29s
ZWFuKGtleSwgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgRW5jb2RlZFZhbHVlOjpwdXRF
bmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBkb3VibGUmIHZhbHVlKQoreworICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVj
dElzTWFwID0gbV9vYmplY3QtPmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9V
TlVTRUQoY2FzdGVkT2JqZWN0SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIGNhc3Rl
ZE9iamVjdC0+c2V0TnVtYmVyKGtleSwgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgRW5j
b2RlZFZhbHVlOjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBmbG9hdCYgdmFs
dWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FzdGVkT2JqZWN0OworICAgIGJv
b2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVjdC0+YXNPYmplY3QoJmNhc3RlZE9iamVjdCk7
CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmplY3RJc01hcCwgY2FzdGVkT2JqZWN0SXNNYXAp
OworCisgICAgY2FzdGVkT2JqZWN0LT5zZXROdW1iZXIoa2V5LCAoZG91YmxlKSB2YWx1ZSk7Cit9
CisKK3RlbXBsYXRlPD4gdm9pZCBFbmNvZGVkVmFsdWU6OnB1dEVuY29kZWQoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IGludDMyX3QmIHZhbHVlKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0gbV9vYmplY3Qt
PmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdGVkT2JqZWN0
SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIGNhc3RlZE9iamVjdC0+c2V0TnVtYmVy
KGtleSwgKGRvdWJsZSkgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgRW5jb2RlZFZhbHVl
OjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBpbnQ2NF90JiB2YWx1ZSkKK3sK
KyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0
ZWRPYmplY3RJc01hcCA9IG1fb2JqZWN0LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBB
U1NFUlRfVU5VU0VEKGNhc3RlZE9iamVjdElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAg
ICBjYXN0ZWRPYmplY3QtPnNldE51bWJlcihrZXksIChkb3VibGUpIHZhbHVlKTsKK30KKwordGVt
cGxhdGU8PiB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYXN0
ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01hcCA9IG1fb2JqZWN0LT5hc09iamVj
dCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RlZE9iamVjdElzTWFwLCBj
YXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICBjYXN0ZWRPYmplY3QtPnNldFN0cmluZyhrZXksIHZh
bHVlKTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgdWludDMyX3QmIHZhbHVlKQoreworICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0g
bV9vYmplY3QtPmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dGVkT2JqZWN0SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIGNhc3RlZE9iamVjdC0+
c2V0TnVtYmVyKGtleSwgKGRvdWJsZSkgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgRW5j
b2RlZFZhbHVlOjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50NjRfdCYg
dmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FzdGVkT2JqZWN0OworICAg
IGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVjdC0+YXNPYmplY3QoJmNhc3RlZE9iamVj
dCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmplY3RJc01hcCwgY2FzdGVkT2JqZWN0SXNN
YXApOworCisgICAgY2FzdGVkT2JqZWN0LT5zZXROdW1iZXIoa2V5LCAoZG91YmxlKSB2YWx1ZSk7
Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBFbmNvZGVkVmFsdWU6OnB1dEVuY29kZWQoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IHVuc2lnbmVkIGxvbmcmIHZhbHVlKQoreworICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0g
bV9vYmplY3QtPmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dGVkT2JqZWN0SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIGNhc3RlZE9iamVjdC0+
c2V0TnVtYmVyKGtleSwgKGRvdWJsZSkgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgRW5j
b2RlZFZhbHVlOjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8RW5jb2RlZFZhbHVlPiYgZW5jb2RlZFZhbHVlKQoreworICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0gbV9v
YmplY3QtPmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdGVk
T2JqZWN0SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gZW5jb2RlZE9iamVjdCA9IGVuY29kZWRWYWx1ZS0+aW5zcGVjdG9yVmFsdWUoKTsKKyAg
ICBjYXN0ZWRPYmplY3QtPnNldFZhbHVlKGtleSwgZW5jb2RlZE9iamVjdCk7Cit9CisKK3RlbXBs
YXRlPD4gdm9pZCBFbmNvZGVkVmFsdWU6OmFwcGVuZEVuY29kZWQoY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPEVuY29kZWRWYWx1ZT4mIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IGNhc3RlZEFycmF5OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNMaXN0ID0gbV9vYmpl
Y3QtPmFzQXJyYXkoJmNhc3RlZEFycmF5KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RlZE9iamVj
dElzTGlzdCwgY2FzdGVkT2JqZWN0SXNMaXN0KTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gZW5jb2RlZE9iamVjdCA9IGVuY29kZWRWYWx1ZS0+aW5zcGVjdG9yVmFsdWUoKTsKKyAgICBj
YXN0ZWRBcnJheS0+cHVzaFZhbHVlKGVuY29kZWRPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+IHZv
aWQgRW5jb2RlZFZhbHVlOjphcHBlbmRFbmNvZGVkKGNvbnN0IGludDMyX3QmIHZhbHVlKQorewor
ICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2FzdGVkQXJyYXk7CisgICAgYm9vbCBjYXN0ZWRP
YmplY3RJc0xpc3QgPSBtX29iamVjdC0+YXNBcnJheSgmY2FzdGVkQXJyYXkpOworICAgIEFTU0VS
VF9VTlVTRUQoY2FzdGVkT2JqZWN0SXNMaXN0LCBjYXN0ZWRPYmplY3RJc0xpc3QpOworCisgICAg
Y2FzdGVkQXJyYXktPnB1c2hOdW1iZXIoKGRvdWJsZSkgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+
IHZvaWQgRW5jb2RlZFZhbHVlOjphcHBlbmRFbmNvZGVkKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYXN0ZWRBcnJheTsKKyAgICBib29sIGNhc3Rl
ZE9iamVjdElzTGlzdCA9IG1fb2JqZWN0LT5hc0FycmF5KCZjYXN0ZWRBcnJheSk7CisgICAgQVNT
RVJUX1VOVVNFRChjYXN0ZWRPYmplY3RJc0xpc3QsIGNhc3RlZE9iamVjdElzTGlzdCk7CisKKyAg
ICBjYXN0ZWRBcnJheS0+cHVzaFN0cmluZyh2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBF
bmNvZGVkVmFsdWU6OmFwcGVuZEVuY29kZWQoY29uc3QgdWludDMyX3QmIHZhbHVlKQoreworICAg
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2FzdGVkQXJyYXk7CisgICAgYm9vbCBjYXN0ZWRPYmpl
Y3RJc0xpc3QgPSBtX29iamVjdC0+YXNBcnJheSgmY2FzdGVkQXJyYXkpOworICAgIEFTU0VSVF9V
TlVTRUQoY2FzdGVkT2JqZWN0SXNMaXN0LCBjYXN0ZWRPYmplY3RJc0xpc3QpOworCisgICAgY2Fz
dGVkQXJyYXktPnB1c2hOdW1iZXIoKGRvdWJsZSkgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJv
b2wgRW5jb2RlZFZhbHVlOjpnZXRFbmNvZGVkPGJvb2wsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNj
YWxhcj4oY29uc3QgU3RyaW5nJiBrZXksIGJvb2wmIHZhbHVlKQoreworICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0g
bV9vYmplY3QtPmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dGVkT2JqZWN0SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIHJldHVybiBjYXN0ZWRP
YmplY3QtPmdldEJvb2xlYW4oa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wgRW5j
b2RlZFZhbHVlOjpnZXRFbmNvZGVkPGRvdWJsZSwgRW5jb2RlZFZhbHVlOjpTaGFwZTo6U2NhbGFy
Pihjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01hcCA9IG1f
b2JqZWN0LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3Rl
ZE9iamVjdElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICByZXR1cm4gY2FzdGVkT2Jq
ZWN0LT5nZXROdW1iZXIoa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wgRW5jb2Rl
ZFZhbHVlOjpnZXRFbmNvZGVkPGZsb2F0LCBFbmNvZGVkVmFsdWU6OlNoYXBlOjpTY2FsYXI+KGNv
bnN0IFN0cmluZyYga2V5LCBmbG9hdCYgdmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY2FzdGVkT2JqZWN0OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVj
dC0+YXNPYmplY3QoJmNhc3RlZE9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmpl
Y3RJc01hcCwgY2FzdGVkT2JqZWN0SXNNYXApOworCisgICAgcmV0dXJuIGNhc3RlZE9iamVjdC0+
Z2V0TnVtYmVyKGtleSwgJnZhbHVlKTsKK30KKwordGVtcGxhdGU8PiBib29sIEVuY29kZWRWYWx1
ZTo6Z2V0RW5jb2RlZDxpbnQzMl90LCBFbmNvZGVkVmFsdWU6OlNoYXBlOjpTY2FsYXI+KGNvbnN0
IFN0cmluZyYga2V5LCBpbnQzMl90JiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01hcCA9IG1fb2JqZWN0
LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RlZE9iamVj
dElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICByZXR1cm4gY2FzdGVkT2JqZWN0LT5n
ZXROdW1iZXIoa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wgRW5jb2RlZFZhbHVl
OjpnZXRFbmNvZGVkPGludDY0X3QsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3Qg
U3RyaW5nJiBrZXksIGludDY0X3QmIHZhbHVlKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0gbV9vYmplY3Qt
PmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdGVkT2JqZWN0
SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIHJldHVybiBjYXN0ZWRPYmplY3QtPmdl
dE51bWJlcihrZXksICZ2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPD4gYm9vbCBFbmNvZGVkVmFsdWU6
OmdldEVuY29kZWQ8dWludDMyX3QsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3Qg
U3RyaW5nJiBrZXksIHVpbnQzMl90JiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01hcCA9IG1fb2JqZWN0
LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RlZE9iamVj
dElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICByZXR1cm4gY2FzdGVkT2JqZWN0LT5n
ZXROdW1iZXIoa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wgRW5jb2RlZFZhbHVl
OjpnZXRFbmNvZGVkPHVpbnQ2NF90LCBFbmNvZGVkVmFsdWU6OlNoYXBlOjpTY2FsYXI+KGNvbnN0
IFN0cmluZyYga2V5LCB1aW50NjRfdCYgdmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY2FzdGVkT2JqZWN0OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVj
dC0+YXNPYmplY3QoJmNhc3RlZE9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmpl
Y3RJc01hcCwgY2FzdGVkT2JqZWN0SXNNYXApOworCisgICAgcmV0dXJuIGNhc3RlZE9iamVjdC0+
Z2V0TnVtYmVyKGtleSwgJnZhbHVlKTsKK30KKwordGVtcGxhdGU8PiBib29sIEVuY29kZWRWYWx1
ZTo6Z2V0RW5jb2RlZDx1bnNpZ25lZCBsb25nLCBFbmNvZGVkVmFsdWU6OlNoYXBlOjpTY2FsYXI+
KGNvbnN0IFN0cmluZyYga2V5LCB1bnNpZ25lZCBsb25nJiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01h
cCA9IG1fb2JqZWN0LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VE
KGNhc3RlZE9iamVjdElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICByZXR1cm4gY2Fz
dGVkT2JqZWN0LT5nZXROdW1iZXIoa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wg
RW5jb2RlZFZhbHVlOjpnZXRFbmNvZGVkPFN0cmluZywgRW5jb2RlZFZhbHVlOjpTaGFwZTo6U2Nh
bGFyPihjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01hcCA9
IG1fb2JqZWN0LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNh
c3RlZE9iamVjdElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICByZXR1cm4gY2FzdGVk
T2JqZWN0LT5nZXRTdHJpbmcoa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wgRW5j
b2RlZFZhbHVlOjpnZXRFbmNvZGVkPHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+LCBFbmNv
ZGVkVmFsdWU6OlNoYXBlOjpNYXA+KGNvbnN0IFN0cmluZyYga2V5LCBzdGQ6OnVuaXF1ZV9wdHI8
RW5jb2RlZFZhbHVlPiYgdmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2Fz
dGVkT2JqZWN0OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVjdC0+YXNPYmpl
Y3QoJmNhc3RlZE9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmplY3RJc01hcCwg
Y2FzdGVkT2JqZWN0SXNNYXApOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0
ID0gY2FzdGVkT2JqZWN0LT5nZXRPYmplY3Qoa2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFsdWUgPSBFbmNvZGVkVmFsdWU6OmFkb3B0SW5zcGVj
dG9yVmFsdWUocmVzdWx0LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBs
YXRlPD4gYm9vbCBFbmNvZGVkVmFsdWU6OmdldEVuY29kZWQ8c3RkOjp1bmlxdWVfcHRyPEVuY29k
ZWRWYWx1ZT4sIEVuY29kZWRWYWx1ZTo6U2hhcGU6Okxpc3Q+KGNvbnN0IFN0cmluZyYga2V5LCBz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiYgdmFsdWUpCit7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY2FzdGVkT2JqZWN0OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBt
X29iamVjdC0+YXNPYmplY3QoJmNhc3RlZE9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0
ZWRPYmplY3RJc01hcCwgY2FzdGVkT2JqZWN0SXNNYXApOworCisgICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiByZXN1bHQgPSBjYXN0ZWRPYmplY3QtPmdldEFycmF5KGtleSk7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhbHVlID0gRW5jb2RlZFZhbHVl
OjphZG9wdEluc3BlY3RvclZhbHVlKHJlc3VsdC5yZWxlYXNlKCkpOworICAgIHJldHVybiB0cnVl
OworfQorCit9OyAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExB
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgzOWIxMjIzNDVkYmQ0NzA0NGVjZjJlZjdhMjM4OWVhNWQ1YjY5NGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5oCkBAIC0w
LDAgKzEsMjQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2Fz
aGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBFbmNvZGVkVmFsdWVfaAorI2RlZmluZSBFbmNvZGVkVmFsdWVfaAorCisjaWYg
RU5BQkxFKFdFQl9SRVBMQVkpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE5vbmRldGVybWlu
aXN0aWNJbnB1dEJhc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRW5jb2RpbmdUcmFp
dHM7CisKK2NsYXNzIEVuY29kZWRWYWx1ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRW5j
b2RlZFZhbHVlKTsKK3B1YmxpYzoKKyAgICBFbmNvZGVkVmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlPik7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIHN0ZDo6
dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGNyZWF0ZUVuY29kZWRNYXAoKTsKKyAgICBzdGF0aWMg
SlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gY3JlYXRlRW5j
b2RlZExpc3QoKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRy
PEVuY29kZWRWYWx1ZT4gYWRvcHRJbnNwZWN0b3JWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWU+KTsKKyAgICB2aXJ0dWFsIEpTX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVk
VmFsdWUoKTsKKworICAgIGVudW0gY2xhc3MgU2hhcGUgeworICAgICAgICBTY2FsYXIsCisgICAg
ICAgIE1hcCwKKyAgICAgICAgTGlzdAorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIHZvaWQgcHV0KGNvbnN0IFN0cmluZyYsIGNvbnN0IHR5cGVuYW1lIEVuY29kaW5nVHJh
aXRzPFQ+OjpEZWNvZGVkVHlwZSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2
b2lkIGFwcGVuZChjb25zdCB0eXBlbmFtZSBFbmNvZGluZ1RyYWl0czxUPjo6RGVjb2RlZFR5cGUm
KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIHR5
cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpEZWNvZGVkVHlwZSYpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIFJlZlB0cjx0eXBlbmFtZSBFbmNvZGlu
Z1RyYWl0czxUPjo6RGVjb2RlZFR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBnZXQoY29uc3QgU3RyaW5nJiwgc3RkOjp1bmlxdWVfcHRyPHR5cGVuYW1lIEVuY29kaW5nVHJh
aXRzPFQ+OjpEZWNvZGVkVHlwZT4mKTsKKworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZT4gaW5zcGVjdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQor
Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZWRUeXBlPgorICAgIHZvaWQg
cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmLCBjb25zdCBFbmNvZGVkVHlwZSYpOworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2RlZFR5cGUsIFNoYXBlPgorICAgIGJvb2wgZ2V0RW5jb2RlZChj
b25zdCBTdHJpbmcmLCBEZWNvZGVkVHlwZSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2RlZFR5cGU+CisgICAgdm9pZCBhcHBlbmRFbmNvZGVkKGNvbnN0IEVuY29kZWRUeXBlJik7CisK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gbV9vYmplY3Q7Cit9OworCit0
ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgRW5jb2RlZFZhbHVlOjpnZXRFbmNvZGVk
PGJvb2wsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wmIHJlc3VsdCk7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgRW5jb2RlZFZh
bHVlOjpnZXRFbmNvZGVkPGRvdWJsZSwgRW5jb2RlZFZhbHVlOjpTaGFwZTo6U2NhbGFyPihjb25z
dCBTdHJpbmcmIGtleSwgZG91YmxlJiByZXN1bHQpOwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJ
VkFURSBib29sIEVuY29kZWRWYWx1ZTo6Z2V0RW5jb2RlZDxmbG9hdCwgRW5jb2RlZFZhbHVlOjpT
aGFwZTo6U2NhbGFyPihjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQmIHJlc3VsdCk7Cit0ZW1wbGF0
ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgRW5jb2RlZFZhbHVlOjpnZXRFbmNvZGVkPGludDMy
X3QsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3QgU3RyaW5nJiBrZXksIGludDMy
X3QmIHJlc3VsdCk7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgRW5jb2RlZFZh
bHVlOjpnZXRFbmNvZGVkPGludDY0X3QsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29u
c3QgU3RyaW5nJiBrZXksIGludDY0X3QmIHJlc3VsdCk7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgRW5jb2RlZFZhbHVlOjpnZXRFbmNvZGVkPHVpbnQzMl90LCBFbmNvZGVkVmFs
dWU6OlNoYXBlOjpTY2FsYXI+KGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCYgcmVzdWx0KTsK
K3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBFbmNvZGVkVmFsdWU6OmdldEVuY29k
ZWQ8dWludDY0X3QsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3QgU3RyaW5nJiBr
ZXksIHVpbnQ2NF90JiByZXN1bHQpOwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSBib29s
IEVuY29kZWRWYWx1ZTo6Z2V0RW5jb2RlZDx1bnNpZ25lZCBsb25nLCBFbmNvZGVkVmFsdWU6OlNo
YXBlOjpTY2FsYXI+KGNvbnN0IFN0cmluZyYga2V5LCB1bnNpZ25lZCBsb25nJiByZXN1bHQpOwor
dGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSBib29sIEVuY29kZWRWYWx1ZTo6Z2V0RW5jb2Rl
ZDxTdHJpbmcsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3QgU3RyaW5nJiBrZXks
IFN0cmluZyYgcmVzdWx0KTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBFbmNv
ZGVkVmFsdWU6OmdldEVuY29kZWQ8c3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4sIEVuY29k
ZWRWYWx1ZTo6U2hhcGU6Ok1hcD4oY29uc3QgU3RyaW5nJiwgc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZWRWYWx1ZT4mKTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBFbmNvZGVkVmFs
dWU6OmdldEVuY29kZWQ8c3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4sIEVuY29kZWRWYWx1
ZTo6U2hhcGU6Okxpc3Q+KGNvbnN0IFN0cmluZyYsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFs
dWU+Jik7CisKKwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIEVuY29kZWRWYWx1
ZTo6cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEVu
Y29kZWRWYWx1ZT4mKTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBFbmNvZGVk
VmFsdWU6OnB1dEVuY29kZWQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpOwordGVt
cGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgYm9vbCYpOwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgZG91YmxlJik7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgRW5jb2RlZFZh
bHVlOjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBmbG9hdCYpOwordGVtcGxh
dGU8PiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgaW50MzJfdCYpOwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgaW50NjRfdCYpOwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIEVuY29kZWRW
YWx1ZTo6cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDMyX3QmKTsKK3Rl
bXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBFbmNvZGVkVmFsdWU6OnB1dEVuY29kZWQo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ2NF90Jik7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgRW5jb2RlZFZhbHVlOjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCB1bnNpZ25lZCBsb25nJik7CisKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBFbmNvZGVkVmFsdWU6OmFwcGVuZEVuY29kZWQoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEVu
Y29kZWRWYWx1ZT4mKTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBFbmNvZGVk
VmFsdWU6OmFwcGVuZEVuY29kZWQoY29uc3QgU3RyaW5nJik7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgRW5jb2RlZFZhbHVlOjphcHBlbmRFbmNvZGVkKGNvbnN0IGludDMyX3Qm
KTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBFbmNvZGVkVmFsdWU6OmFwcGVu
ZEVuY29kZWQoY29uc3QgdWludDMyX3QmKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVj
dCBFbmNvZGluZ1RyYWl0cyB7CisgICAgdHlwZWRlZiBUIERlY29kZWRUeXBlOworICAgIHR5cGVk
ZWYgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gRW5jb2RlZFR5cGU7CisKKyAgICBzdGF0
aWMgRW5jb2RlZFR5cGUgZW5jb2RlVmFsdWUoUGFzc1JlZlB0cjxEZWNvZGVkVHlwZT4pOworICAg
IHN0YXRpYyBFbmNvZGVkVHlwZSBlbmNvZGVWYWx1ZShjb25zdCBEZWNvZGVkVHlwZSYpOworCisg
ICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5jb2RlZFR5cGUmLCBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2RlZFR5cGU+Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5jb2RlZFR5cGUm
LCBSZWZQdHI8RGVjb2RlZFR5cGU+Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5j
b2RlZFR5cGUmLCBEZWNvZGVkVHlwZSYpOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CitzdHJ1Y3QgRW5j
b2RpbmdUcmFpdHM8VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+PiB7
CisgICAgdHlwZWRlZiBWZWN0b3I8dHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkRlY29kZWRU
eXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiBEZWNvZGVkVHlwZTsKKyAgICB0
eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IEVuY29kZWRUeXBlOworICAgIHN0
YXRpYyBjb25zdCBFbmNvZGVkVmFsdWU6OlNoYXBlIFNoYXBlID0gRW5jb2RlZFZhbHVlOjpTaGFw
ZTo6TGlzdDsKKworICAgIHN0YXRpYyBFbmNvZGVkVHlwZSBlbmNvZGVWYWx1ZShjb25zdCBEZWNv
ZGVkVHlwZSYgdmVjdG9yT2ZWYWx1ZXMpCisgICAgeworICAgICAgICBFbmNvZGVkVHlwZSBlbmNv
ZGVkVmVjdG9yID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVFbmNvZGVkTGlzdCgpOworICAgICAgICBm
b3IgKGNvbnN0IHR5cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpEZWNvZGVkVHlwZSYgdmFsdWUg
OiB2ZWN0b3JPZlZhbHVlcykKKyAgICAgICAgICAgIGVuY29kZWRWZWN0b3ItPmFwcGVuZDx0eXBl
bmFtZSBFbmNvZGluZ1RyYWl0czxUPjo6RGVjb2RlZFR5cGU+KHZhbHVlKTsKKworICAgICAgICBy
ZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWZWN0b3IpOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IGRlY29kZVZhbHVlKEVuY29kZWRUeXBlJiBlbmNvZGVkVmVjdG9yLCBEZWNvZGVkVHlwZSYgZGVj
b2RlZFZhbHVlKQorICAgIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+IGluc3BlY3RvckFycmF5ID0gZW5jb2RlZFZlY3Rvci0+aW5zcGVjdG9yVmFsdWUoKS0+YXNB
cnJheSgpOworICAgICAgICBkZWNvZGVkVmFsdWUgPSBWZWN0b3I8dHlwZW5hbWUgRW5jb2RpbmdU
cmFpdHM8VD46OkRlY29kZWRUeXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPihp
bnNwZWN0b3JBcnJheS0+bGVuZ3RoKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGluc3BlY3RvckFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBFbmNvZGVkVmFs
dWUgZW5jb2RlZEVsZW1lbnQoaW5zcGVjdG9yQXJyYXktPmdldChpKSk7CisgICAgICAgICAgICBp
ZiAoIUVuY29kaW5nVHJhaXRzPFQ+OjpkZWNvZGVWYWx1ZShlbmNvZGVkRWxlbWVudCwgZGVjb2Rl
ZFZhbHVlLmF0KGkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3N0cnVjdCBQcmltaXRpdmVFbmNvZGluZ1RyYWl0cyB7CisgICAgdHlwZWRlZiBUIEVuY29kZWRU
eXBlOworICAgIHR5cGVkZWYgVCBEZWNvZGVkVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgRW5jb2Rl
ZFZhbHVlOjpTaGFwZSBTaGFwZSA9IEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcjsKKworICAg
IHN0YXRpYyBFbmNvZGVkVHlwZSBlbmNvZGVWYWx1ZShjb25zdCBEZWNvZGVkVHlwZSYgZGVjb2Rl
ZFZhbHVlKSB7IHJldHVybiBkZWNvZGVkVmFsdWU7IH0KKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVW
YWx1ZShFbmNvZGVkVHlwZSYgZW5jb2RlZFZhbHVlLCBEZWNvZGVkVHlwZSYgZGVjb2RlZFZhbHVl
KQorICAgIHsKKyAgICAgICAgZGVjb2RlZFZhbHVlID0gZW5jb2RlZFZhbHVlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0
czxib29sPiA6IFByaW1pdGl2ZUVuY29kaW5nVHJhaXRzPGJvb2w+IHsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IEVuY29kaW5nVHJhaXRzPGRvdWJsZT4gOiBQcmltaXRpdmVFbmNvZGluZ1RyYWl0czxk
b3VibGU+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPGZsb2F0PiA6IFBy
aW1pdGl2ZUVuY29kaW5nVHJhaXRzPGZsb2F0PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNv
ZGluZ1RyYWl0czxpbnQzMl90PiA6IFByaW1pdGl2ZUVuY29kaW5nVHJhaXRzPGludDMyX3Q+IHsg
fTsKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPGludDY0X3Q+IDogUHJpbWl0aXZl
RW5jb2RpbmdUcmFpdHM8aW50NjRfdD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdU
cmFpdHM8dWludDMyX3Q+IDogUHJpbWl0aXZlRW5jb2RpbmdUcmFpdHM8dWludDMyX3Q+IHsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPHVpbnQ2NF90PiA6IFByaW1pdGl2ZUVu
Y29kaW5nVHJhaXRzPHVpbnQ2NF90PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1Ry
YWl0czx1bnNpZ25lZCBsb25nPiA6IFByaW1pdGl2ZUVuY29kaW5nVHJhaXRzPHVuc2lnbmVkIGxv
bmc+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPFN0cmluZz4gOiBQcmlt
aXRpdmVFbmNvZGluZ1RyYWl0czxTdHJpbmc+IHsgfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5j
b2RpbmdUcmFpdHM8RW5jb2RlZFZhbHVlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8
RW5jb2RlZFZhbHVlPiBEZWNvZGVkVHlwZTsKKyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxF
bmNvZGVkVmFsdWU+IEVuY29kZWRUeXBlOworCisgICAgc3RhdGljIEVuY29kZWRUeXBlIGVuY29k
ZVZhbHVlKGNvbnN0IERlY29kZWRUeXBlJiBkZWNvZGVkVmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gRW5jb2RlZFZhbHVlOjphZG9wdEluc3BlY3RvclZhbHVlKGRlY29kZWRWYWx1ZS0+aW5z
cGVjdG9yVmFsdWUoKSk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKEVuY29k
ZWRUeXBlJiBlbmNvZGVkVmFsdWUsIERlY29kZWRUeXBlJiBkZWNvZGVkVmFsdWUpCisgICAgewor
ICAgICAgICBkZWNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmFkb3B0SW5zcGVjdG9yVmFsdWUo
ZW5jb2RlZFZhbHVlLT5pbnNwZWN0b3JWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgRW5jb2RlZFZhbHVlOjpwdXQo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHR5cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpEZWNv
ZGVkVHlwZSYgdmFsdWUpCit7CisgICAgdHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkVuY29k
ZWRUeXBlIGVuY29kZWRWYWx1ZSA9IEVuY29kaW5nVHJhaXRzPFQ+OjplbmNvZGVWYWx1ZSh2YWx1
ZSk7CisgICAgcHV0RW5jb2RlZChrZXksIGVuY29kZWRWYWx1ZSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+Cit2b2lkIEVuY29kZWRWYWx1ZTo6YXBwZW5kKGNvbnN0IHR5cGVuYW1lIEVuY29k
aW5nVHJhaXRzPFQ+OjpEZWNvZGVkVHlwZSYgdmFsdWUpCit7CisgICAgdHlwZW5hbWUgRW5jb2Rp
bmdUcmFpdHM8VD46OkVuY29kZWRUeXBlIGVuY29kZWRWYWx1ZSA9IEVuY29kaW5nVHJhaXRzPFQ+
OjplbmNvZGVWYWx1ZSh2YWx1ZSk7CisgICAgYXBwZW5kRW5jb2RlZChlbmNvZGVkVmFsdWUpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBFbmNvZGVkVmFsdWU6OmdldChjb25zdCBT
dHJpbmcmIGtleSwgdHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkRlY29kZWRUeXBlJiBkZWNv
ZGVkVmFsdWUpCit7CisgICAgdHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkVuY29kZWRUeXBl
IGVuY29kZWRWYWx1ZTsKKyAgICBpZiAoIWdldEVuY29kZWQ8dHlwZW5hbWUgRW5jb2RpbmdUcmFp
dHM8VD46OkVuY29kZWRUeXBlLCBFbmNvZGluZ1RyYWl0czxUPjo6U2hhcGU+KGtleSwgZW5jb2Rl
ZFZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIEVuY29kaW5nVHJh
aXRzPFQ+OjpkZWNvZGVWYWx1ZShlbmNvZGVkVmFsdWUsIGRlY29kZWRWYWx1ZSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIEVuY29kZWRWYWx1ZTo6Z2V0KGNvbnN0IFN0cmluZyYg
a2V5LCBSZWZQdHI8dHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkRlY29kZWRUeXBlPiYgZGVj
b2RlZFZhbHVlKQoreworICAgIHR5cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpFbmNvZGVkVHlw
ZSBlbmNvZGVkVmFsdWU7CisgICAgaWYgKCFnZXRFbmNvZGVkPHR5cGVuYW1lIEVuY29kaW5nVHJh
aXRzPFQ+OjpFbmNvZGVkVHlwZSwgRW5jb2RpbmdUcmFpdHM8VD46OlNoYXBlPihrZXksIGVuY29k
ZWRWYWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBFbmNvZGluZ1Ry
YWl0czxUPjo6ZGVjb2RlVmFsdWUoZW5jb2RlZFZhbHVlLCBkZWNvZGVkVmFsdWUpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBFbmNvZGVkVmFsdWU6OmdldChjb25zdCBTdHJpbmcm
IGtleSwgc3RkOjp1bmlxdWVfcHRyPHR5cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpEZWNvZGVk
VHlwZT4mIGRlY29kZWRWYWx1ZSkKK3sKKyAgICB0eXBlbmFtZSBFbmNvZGluZ1RyYWl0czxUPjo6
RW5jb2RlZFR5cGUgZW5jb2RlZFZhbHVlOworICAgIGlmICghZ2V0RW5jb2RlZDx0eXBlbmFtZSBF
bmNvZGluZ1RyYWl0czxUPjo6RW5jb2RlZFR5cGUsIEVuY29kaW5nVHJhaXRzPFQ+OjpTaGFwZT4o
a2V5LCBlbmNvZGVkVmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
RW5jb2RpbmdUcmFpdHM8VD46OmRlY29kZVZhbHVlKCplbmNvZGVkVmFsdWUsIGRlY29kZWRWYWx1
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OkVuY29kZWRWYWx1ZTsK
K3VzaW5nIEpTQzo6RW5jb2RpbmdUcmFpdHM7CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExB
WSkKKworI2VuZGlmIC8vIEVuY29kZWRWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5w
dXRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJjY2JiY2ExMjU2NzVhNGQ5NjFkYzExZTIxZGYyMjI3YWQ1MGNj
NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Njcmlw
dHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQpAQCAtMCwwICsxLDk4MiBAQAorIyBDb3B5
cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUworIyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyMgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisjIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQg
b3MucGF0aAoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmlu
ZyBpbXBvcnQgVGVtcGxhdGUKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IGxvZ2dpbmcKK2Zyb20g
Q29kZUdlbmVyYXRvclJlcGxheUlucHV0c1RlbXBsYXRlcyBpbXBvcnQgVGVtcGxhdGVzCisKK3Ry
eToKKyAgICBpbXBvcnQganNvbgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBzaW1w
bGVqc29uIGFzIGpzb24KKworIyBDb25maWd1cmF0aW9uIHZhbHVlcyBhcmUgZmlyc3QgbG9va2Vk
IHVwIGluIHRoZSBmcmFtZXdvcmsgY29uZmlndXJhdGlvbiwKKyMgYW5kIHRoZW4gaW4gdGhlIGds
b2JhbCBjb25maWd1cmF0aW9uIGlmIHRoZXJlIGlzIG5vIGZyYW1ld29yay1zcGVjaWZpYyB2YWx1
ZS4KK0dMT0JBTF9DT05GSUcgPSB7CisiYmFzZUZpbGVuYW1lIjogIlJlcGxheUlucHV0cyIsCisi
Z3VhcmRDb25kaXRpb24iOiAiRU5BQkxFKFdFQl9SRVBMQVkpIiwKKyJ0cmFpdHNGcmFtZXdvcmtO
YW1lIjogIkphdmFTY3JpcHRDb3JlIiwKKworIyBUaGVzZSBhcmUgZm9ybWF0dGVkIGFzIChbYWxs
b3dlZF9mcmFtZXdvcmtzXSwgKGZyYW1ld29yaywgaGVhZGVyX3BhdGgpKS4KKyMgVGhlIGdlbmVy
YXRvciBjYW4gZmlndXJlIG91dCBob3cgdG8gZm9ybWF0IHRoZSBpbmNsdWRlcy4KKyJoZWFkZXJJ
bmNsdWRlcyI6IFsKKyAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICgiV2ViQ29yZSIsICJyZXBs
YXkvRXZlbnRMb29wSW5wdXQuaCIpCisgICAgKSwKKyAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJX
ZWJDb3JlIl0sCisgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicmVwbGF5L0VuY29kZWRWYWx1
ZS5oIikKKyAgICApLAorICAgIChbIkphdmFTY3JpcHRDb3JlIl0sCisgICAgICAgICgiSmF2YVNj
cmlwdENvcmUiLCAicmVwbGF5L05vbmRldGVybWluaXN0aWNJbnB1dC5oIikKKyAgICApLAorICAg
IChbIldlYkNvcmUiXSwKKyAgICAgICAgKCJXVEYiLCAid3RmL3RleHQvV1RGU3RyaW5nLmgiKQor
ICAgICksCisKKyAgICAjIFRlc3RpbmcgZml4dHVyZXMuCisgICAgKFsiVGVzdCJdLAorICAgICAg
ICAoIldlYkNvcmUiLCAicGxhdGZvcm0vRXh0ZXJuYWxOYW1lc3BhY2VIZWFkZXJJbmNsdWRlRHVt
bXkuaCIpCisgICAgKSwKKyAgICAoWyJUZXN0Il0sCisgICAgICAgICgiVGVzdCIsICJwbGF0Zm9y
bS9JbnRlcm5hbE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oIikKKyAgICApCitdLAorCisi
aW1wbEluY2x1ZGVzIjogWworICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgKCJXZWJDb3JlIiwg
InJlcGxheS9SZXBsYXlJbnB1dFR5cGVzLmgiKQorICAgICksCisgICAgKFsiV2ViQ29yZSJdLAor
ICAgICAgICAoIldlYkNvcmUiLCAicmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmgiKQorICAg
ICksCisgICAgKFsiV2ViQ29yZSIsICJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAoIkphdmFT
Y3JpcHRDb3JlIiwgImluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCIpCisgICAgKSwKKyAgICAo
WyJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAoIldURiIsICJ3dGYvTmV2ZXJEZXN0cm95ZWQu
aCIpCisgICAgKSwKKyAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAoIldURiIsICJ3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaCIpCisgICAgKSwKKworICAgICMgVGVzdGluZyBmaXh0dXJl
cy4KKyAgICAoWyJUZXN0Il0sCisgICAgICAgICgiV2ViQ29yZSIsICJwbGF0Zm9ybS9FeHRlcm5h
bE5hbWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaCIpCisgICAgKSwKKyAgICAoWyJUZXN0Il0sCisg
ICAgICAgICgiVGVzdCIsICJwbGF0Zm9ybS9JbnRlcm5hbE5hbWVzcGFjZUltcGxJbmNsdWRlRHVt
bXkuaCIpCisgICAgKV0KK30KKworRlJBTUVXT1JLX0NPTkZJR19NQVAgPSB7CisiR2xvYmFsIjog
eworICAgICJwcmVmaXgiOiAiIiwKKyAgICAibmFtZXNwYWNlIjogIiIgfSwKKyJKYXZhU2NyaXB0
Q29yZSI6IHsKKyAgICAicHJlZml4IjogIkpTIiwKKyAgICAibmFtZXNwYWNlIjogIkpTQyIsCisg
ICAgImV4cG9ydE1hY3JvIjogIkpTX0VYUE9SVF9QUklWQVRFIiwKKyAgICAiaW5wdXRUeXBlVGVt
cGxhdGUiOiBUZW1wbGF0ZXMuSW5wdXRUeXBlRnJvbVN0YXRpY0xvY2FsLAorfSwKKyJXZWJDb3Jl
IjogeworICAgICJwcmVmaXgiOiAiV2ViIiwKKyAgICAibmFtZXNwYWNlIjogIldlYkNvcmUiLAor
ICAgICJpbnB1dFR5cGVUZW1wbGF0ZSI6IFRlbXBsYXRlcy5JbnB1dFR5cGVGcm9tVGhyZWFkTG9j
YWwsCit9LAorIyBVc2VkIGZvciBiaW5kaW5ncyB0ZXN0cy4KKyJUZXN0IjogeworICAgICJwcmVm
aXgiOiAiVGVzdCIsCisgICAgIm5hbWVzcGFjZSI6ICJUZXN0IiwKKyAgICAiaW5wdXRUeXBlVGVt
cGxhdGUiOiBUZW1wbGF0ZXMuSW5wdXRUeXBlRnJvbVN0YXRpY0xvY2FsLAorfQorfQorCisjIFRo
ZXNlIHNldHRpbmdzIGFyZSBzcGVjaWZpYyB0byBhbiBpbnB1dCBxdWV1ZS4KK1FVRVVFX0NPTkZJ
R19NQVAgPSB7CisgICAgIlNDUklQVF9NRU1PSVpFRCI6IHsKKyAgICAgICAgImVudW1WYWx1ZSI6
ICJTY3JpcHRNZW1vaXplZERhdGEiLAorICAgICAgICAiYmFzZUNsYXNzIjogIk5vbmRldGVybWlu
aXN0aWNJbnB1dDwlcz4iLAorICAgIH0sCisgICAgIkxPQURFUl9NRU1PSVpFRCI6IHsKKyAgICAg
ICAgImVudW1WYWx1ZSI6ICJMb2FkZXJNZW1vaXplZERhdGEiLAorICAgICAgICAiYmFzZUNsYXNz
IjogIk5vbmRldGVybWluaXN0aWNJbnB1dDwlcz4iLAorICAgIH0sCisgICAgIkVWRU5UX0xPT1Ai
OiB7CisgICAgICAgICJlbnVtVmFsdWUiOiAiRXZlbnRMb29wSW5wdXQiLAorICAgICAgICAiYmFz
ZUNsYXNzIjogIkV2ZW50TG9vcElucHV0PCVzPiIsCisgICAgfSwKK30KKworVFlQRV9TSEFQRV9D
T05GSUdfTUFQID0geworICAgICJTQ0FMQVIiOiB7Im5vbmNvcHlhYmxlIjogRmFsc2V9LAorICAg
ICJNQVAiOiB7Im5vbmNvcHlhYmxlIjogVHJ1ZX0sCisgICAgIlNIQVJFRF9NQVAiOiB7Im5vbmNv
cHlhYmxlIjogRmFsc2V9LAorICAgICJMSVNUIjogeyJub25jb3B5YWJsZSI6IEZhbHNlfQorfQor
CisjIFVzZSBhIGdsb2JhbCBsb2dnZXIsIHdoaWNoIG5vcm1hbGx5IG9ubHkgbG9ncyBlcnJvcnMu
CisjIEl0IGNhbiBiZSBjb25maWd1cmVkIHRvIGxvZyBkZWJ1ZyBtZXNzYWdlcyBmcm9tIHRoZSBD
TEkuCitsb2dnaW5nLmJhc2ljQ29uZmlnKGZvcm1hdD0nJShsZXZlbG5hbWUpczogJShtZXNzYWdl
KXMnLCBsZXZlbD1sb2dnaW5nLkVSUk9SKQorbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2Jh
bCcpCisjIE1vZGVsIGNsYXNzZXMsIHdoaWNoIHRyYW5zbGl0ZXJhdGUgSlNPTiBpbnB1dC4KKwor
CitjbGFzcyBQYXJzZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitjbGFzcyBU
eXBlY2hlY2tFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworY2xhc3MgRnJhbWV3
b3JrOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fc2V0dGlu
Z3MgPSBGUkFNRVdPUktfQ09ORklHX01BUFtuYW1lXQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1l
CisKKyAgICBkZWYgc2V0dGluZyhzZWxmLCBrZXksIGRlZmF1bHQ9JycpOgorICAgICAgICByZXR1
cm4gc2VsZi5fc2V0dGluZ3MuZ2V0KGtleSwgZGVmYXVsdCkKKworICAgIEBzdGF0aWNtZXRob2QK
KyAgICBkZWYgZnJvbVN0cmluZyhmcmFtZXdvcmtTdHJpbmcpOgorICAgICAgICBpZiBmcmFtZXdv
cmtTdHJpbmcgPT0gIkdsb2JhbCI6CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5HbG9i
YWwKKworICAgICAgICBpZiBmcmFtZXdvcmtTdHJpbmcgPT0gIkphdmFTY3JpcHRDb3JlIjoKKyAg
ICAgICAgICAgIHJldHVybiBGcmFtZXdvcmtzLkphdmFTY3JpcHRDb3JlCisKKyAgICAgICAgaWYg
ZnJhbWV3b3JrU3RyaW5nID09ICJXZWJDb3JlIjoKKyAgICAgICAgICAgIHJldHVybiBGcmFtZXdv
cmtzLldlYkNvcmUKKworICAgICAgICBpZiBmcmFtZXdvcmtTdHJpbmcgPT0gIlRlc3QiOgorICAg
ICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3MuVGVzdAorCisgICAgICAgIHJhaXNlIFBhcnNlRXhj
ZXB0aW9uKCJVbmtub3duIGZyYW1ld29yazogIiArIGZyYW1ld29ya1N0cmluZykKKworCitjbGFz
cyBGcmFtZXdvcmtzOgorICAgIEdsb2JhbCA9IEZyYW1ld29yaygiR2xvYmFsIikKKyAgICBKYXZh
U2NyaXB0Q29yZSA9IEZyYW1ld29yaygiSmF2YVNjcmlwdENvcmUiKQorICAgIFdlYkNvcmUgPSBG
cmFtZXdvcmsoIldlYkNvcmUiKQorICAgIFRlc3QgPSBGcmFtZXdvcmsoIlRlc3QiKQorCisKK2Ns
YXNzIElucHV0UXVldWU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNldHRpbmdzKToKKyAgICAg
ICAgc2VsZi5fc2V0dGluZ3MgPSBzZXR0aW5ncworCisgICAgZGVmIHNldHRpbmcoc2VsZiwga2V5
LCBkZWZhdWx0PScnKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NldHRpbmdzLmdldChrZXksIGRl
ZmF1bHQpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGZyb21TdHJpbmcocXVldWVTdHJp
bmcpOgorICAgICAgICBpZiBxdWV1ZVN0cmluZyA9PSAiU0NSSVBUX01FTU9JWkVEIjoKKyAgICAg
ICAgICAgIHJldHVybiBJbnB1dFF1ZXVlcy5TQ1JJUFRfTUVNT0laRUQKKworICAgICAgICBpZiBx
dWV1ZVN0cmluZyA9PSAiTE9BREVSX01FTU9JWkVEIjoKKyAgICAgICAgICAgIHJldHVybiBJbnB1
dFF1ZXVlcy5MT0FERVJfTUVNT0laRUQKKworICAgICAgICBpZiBxdWV1ZVN0cmluZyA9PSAiRVZF
TlRfTE9PUCI6CisgICAgICAgICAgICByZXR1cm4gSW5wdXRRdWV1ZXMuRVZFTlRfTE9PUAorCisg
ICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJVbmtub3duIGlucHV0IHF1ZXVlOiAiICsgcXVl
dWVTdHJpbmcpCisKKworY2xhc3MgSW5wdXRRdWV1ZXM6CisgICAgU0NSSVBUX01FTU9JWkVEID0g
SW5wdXRRdWV1ZShRVUVVRV9DT05GSUdfTUFQWyJTQ1JJUFRfTUVNT0laRUQiXSkKKyAgICBMT0FE
RVJfTUVNT0laRUQgPSBJbnB1dFF1ZXVlKFFVRVVFX0NPTkZJR19NQVBbIkxPQURFUl9NRU1PSVpF
RCJdKQorICAgIEVWRU5UX0xPT1AgPSBJbnB1dFF1ZXVlKFFVRVVFX0NPTkZJR19NQVBbIkVWRU5U
X0xPT1AiXSkKKworCitjbGFzcyBJbnB1dDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwg
ZGVzY3JpcHRpb24sIHF1ZXVlU3RyaW5nLCBmbGFncywgZ3VhcmQ9Tm9uZSk6CisgICAgICAgIHNl
bGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uCisg
ICAgICAgIHNlbGYucXVldWUgPSBJbnB1dFF1ZXVlLmZyb21TdHJpbmcocXVldWVTdHJpbmcpCisg
ICAgICAgIHNlbGYuX2ZsYWdzID0gZmxhZ3MKKyAgICAgICAgc2VsZi5ndWFyZCA9IGd1YXJkCisg
ICAgICAgIHNlbGYubWVtYmVycyA9IFtdICAjIG5hbWVzIHNob3VsZCBiZSB1bmlxdWUsIGJ1dCBv
cmRlcmVkLgorCisgICAgZGVmIHNldHRpbmcoc2VsZiwga2V5LCBkZWZhdWx0PScnKToKKyAgICAg
ICAgaWYga2V5IGluIHNlbGYuX2ZsYWdzOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAg
ICAgICByZXR1cm4gc2VsZi5xdWV1ZS5zZXR0aW5nKGtleSwgZGVmYXVsdCkKKworCitjbGFzcyBJ
bnB1dE1lbWJlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVtYmVyTmFtZSwgdHlwZU5hbWUs
IGZsYWdzPVtdKToKKyAgICAgICAgc2VsZi5tZW1iZXJOYW1lID0gbWVtYmVyTmFtZQorICAgICAg
ICBzZWxmLnR5cGVOYW1lID0gdHlwZU5hbWUKKyAgICAgICAgc2VsZi5fZmxhZ3MgPSBmbGFncwor
CisgICAgZGVmIGhhc19mbGFnKHNlbGYsIGtleSwgZGVmYXVsdD0nJyk6CisgICAgICAgIHJldHVy
biBrZXkgaW4gc2VsZi5fZmxhZ3MKKworCitjbGFzcyBUeXBlU2hhcGU6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHNldHRpbmdzKToKKyAgICAgICAgc2VsZi5fc2V0dGluZ3MgPSBzZXR0aW5ncwor
CisgICAgZGVmIHNldHRpbmcoc2VsZiwga2V5LCBkZWZhdWx0PUZhbHNlKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3NldHRpbmdzLmdldChrZXksIGRlZmF1bHQpCisKKyAgICBAc3RhdGljbWV0aG9k
CisgICAgZGVmIGZyb21TdHJpbmcoc2hhcGVTdHJpbmcpOgorICAgICAgICBzaGFwZVN0cmluZyA9
IHNoYXBlU3RyaW5nLnVwcGVyKCkKKyAgICAgICAgaWYgc2hhcGVTdHJpbmcgPT0gJ1NDQUxBUic6
CisgICAgICAgICAgICByZXR1cm4gVHlwZVNoYXBlcy5TQ0FMQVIKKyAgICAgICAgaWYgc2hhcGVT
dHJpbmcgPT0gJ01BUCc6CisgICAgICAgICAgICByZXR1cm4gVHlwZVNoYXBlcy5NQVAKKyAgICAg
ICAgaWYgc2hhcGVTdHJpbmcgPT0gJ1NIQVJFRF9NQVAnOgorICAgICAgICAgICAgcmV0dXJuIFR5
cGVTaGFwZXMuU0hBUkVEX01BUAorICAgICAgICBpZiBzaGFwZVN0cmluZyA9PSAnTElTVCc6Cisg
ICAgICAgICAgICByZXR1cm4gVHlwZVNoYXBlcy5MSVNUCisKKyAgICAgICAgcmFpc2UgUGFyc2VF
eGNlcHRpb24oIlVua25vd24gdHlwZSBzaGFwZTogIiArIHNoYXBlU3RyaW5nKQorCisKK2NsYXNz
IFR5cGVTaGFwZXM6CisgICAgU0NBTEFSID0gVHlwZVNoYXBlKFRZUEVfU0hBUEVfQ09ORklHX01B
UFsiU0NBTEFSIl0pCisgICAgTUFQID0gVHlwZVNoYXBlKFRZUEVfU0hBUEVfQ09ORklHX01BUFsi
TUFQIl0pCisgICAgU0hBUkVEX01BUCA9IFR5cGVTaGFwZShUWVBFX1NIQVBFX0NPTkZJR19NQVBb
IlNIQVJFRF9NQVAiXSkKKyAgICBMSVNUID0gVHlwZVNoYXBlKFRZUEVfU0hBUEVfQ09ORklHX01B
UFsiTElTVCJdKQorCisKK2NsYXNzIFR5cGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUs
IHNoYXBlLCBmcmFtZXdvcmssIGhlYWRlciwgZW5jbG9zaW5nX2NsYXNzLCB2YWx1ZXMsIGd1YXJk
X3ZhbHVlc19tYXAsIHVuZGVybHlpbmdfc3RvcmFnZSwgZmxhZ3MpOgorICAgICAgICBzZWxmLl9u
YW1lID0gbmFtZQorICAgICAgICBzZWxmLnNoYXBlID0gc2hhcGUKKyAgICAgICAgc2VsZi5mcmFt
ZXdvcmsgPSBmcmFtZXdvcmsKKyAgICAgICAgc2VsZi5oZWFkZXIgPSBoZWFkZXIKKyAgICAgICAg
c2VsZi5lbmNsb3NpbmdfY2xhc3MgPSBlbmNsb3NpbmdfY2xhc3MKKyAgICAgICAgc2VsZi52YWx1
ZXMgPSB2YWx1ZXMKKyAgICAgICAgc2VsZi5ndWFyZF92YWx1ZXNfbWFwID0gZ3VhcmRfdmFsdWVz
X21hcAorICAgICAgICBzZWxmLnVuZGVybHlpbmdfc3RvcmFnZSA9IHVuZGVybHlpbmdfc3RvcmFn
ZQorICAgICAgICBzZWxmLl9mbGFncyA9IGZsYWdzCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90
aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lKCkgPT0gb3RoZXIudHlwZV9uYW1l
KCkgYW5kIHNlbGYuc2hhcGUgPT0gb3RoZXIuc2hhcGUKKworICAgIGRlZiBfX2hhc2hfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUuX19oYXNoX18oKQorCisgICAgZGVmIGhhc19m
bGFnKHNlbGYsIGZsYWdTdHJpbmcpOgorICAgICAgICByZXR1cm4gZmxhZ1N0cmluZyBpbiBzZWxm
Ll9mbGFncworCisgICAgZGVmIGlzX3N0cnVjdChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
aGFzX2ZsYWcoIlNUUlVDVCIpCisKKyAgICBkZWYgaXNfZW51bShzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuaGFzX2ZsYWcoIkVOVU0iKQorCisgICAgZGVmIGlzX2VudW1fY2xhc3Moc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLmhhc19mbGFnKCJFTlVNX0NMQVNTIikKKworICAgIGRlZiBk
ZWNsYXJhdGlvbl9raW5kKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmlzX2VudW0oKToKKyAgICAg
ICAgICAgIHJldHVybiAiZW51bSIKKyAgICAgICAgZWxpZiBzZWxmLmlzX2VudW1fY2xhc3MoKToK
KyAgICAgICAgICAgIHJldHVybiAiZW51bSBjbGFzcyIKKyAgICAgICAgZWxpZiBzZWxmLmlzX3N0
cnVjdCgpOgorICAgICAgICAgICAgcmV0dXJuICJzdHJ1Y3QiCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICByZXR1cm4gImNsYXNzIgorCisgICAgZGVmIHF1YWxpZmllZF9wcmVmaXgoc2VsZik6
CisgICAgICAgIGNvbXBvbmVudHMgPSBbXQorICAgICAgICBpZiBzZWxmLmZyYW1ld29yayAhPSBG
cmFtZXdvcmtzLkdsb2JhbDoKKyAgICAgICAgICAgIGNvbXBvbmVudHMuYXBwZW5kKHNlbGYuZnJh
bWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpKQorICAgICAgICBpZiBzZWxmLmVuY2xvc2luZ19j
bGFzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbXBvbmVudHMuYXBwZW5kKHNlbGYuZW5j
bG9zaW5nX2NsYXNzKQorICAgICAgICBjb21wb25lbnRzLmFwcGVuZCgiIikKKyAgICAgICAgcmV0
dXJuICI6OiIuam9pbihjb21wb25lbnRzKQorCisgICAgZGVmIHR5cGVfbmFtZShzZWxmLCBxdWFs
aWZpZWQ9RmFsc2UpOgorICAgICAgICByZXR1cm4gIiVzJXMiICUgKHNlbGYucXVhbGlmaWVkX3By
ZWZpeCgpLCBzZWxmLl9uYW1lKSBpZiBxdWFsaWZpZWQgZWxzZSBzZWxmLl9uYW1lCisKKyAgICBk
ZWYgc3RvcmFnZV90eXBlKHNlbGYsIHF1YWxpZmllZD1GYWxzZSk6CisgICAgICAgIGlmIHNlbGYu
c2hhcGUgPT0gVHlwZVNoYXBlcy5TQ0FMQVI6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50eXBl
X25hbWUocXVhbGlmaWVkKQorICAgICAgICBlbGlmIHNlbGYuc2hhcGUgPT0gVHlwZVNoYXBlcy5T
SEFSRURfTUFQOgorICAgICAgICAgICAgcmV0dXJuICJSZWZQdHI8JXM+IiAlIHNlbGYudHlwZV9u
YW1lKHF1YWxpZmllZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAic3RkOjp1
bmlxdWVfcHRyPCVzPiIgJSBzZWxmLnR5cGVfbmFtZShxdWFsaWZpZWQpCisKKyAgICBkZWYgYm9y
cm93X3R5cGUoc2VsZiwgcXVhbGlmaWVkPUZhbHNlKToKKyAgICAgICAgaWYgc2VsZi5zaGFwZSA9
PSBUeXBlU2hhcGVzLlNDQUxBUjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZShx
dWFsaWZpZWQpCisgICAgICAgIGVsaWYgc2VsZi5zaGFwZSA9PSBUeXBlU2hhcGVzLlNIQVJFRF9N
QVA6CisgICAgICAgICAgICByZXR1cm4gIlBhc3NSZWZQdHI8JXM+IiAlIHNlbGYudHlwZV9uYW1l
KHF1YWxpZmllZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiY29uc3QgJXMm
IiAlIHNlbGYudHlwZV9uYW1lKHF1YWxpZmllZCkKKworICAgIGRlZiBhcmd1bWVudF90eXBlKHNl
bGYsIHF1YWxpZmllZD1GYWxzZSk6CisgICAgICAgIGlmIHNlbGYuc2hhcGUgPT0gVHlwZVNoYXBl
cy5TSEFSRURfTUFQOgorICAgICAgICAgICAgcmV0dXJuICJQYXNzUmVmUHRyPCVzPiIgJSBzZWxm
LnR5cGVfbmFtZShxdWFsaWZpZWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5zdG9yYWdlX3R5cGUoKQorCisKK2RlZiBjaGVja19wcm9wZXJ0aWVzKHByb3BzLCBvYmos
IHdoYXQpOgorICAgIGZvciBwcm9wIGluIHByb3BzOgorICAgICAgICBpZiBwcm9wIG5vdCBpbiBv
Ymo6CisgICAgICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiV2hlbiBwYXJzaW5nICVzLCBy
ZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiAlcyIgJSAod2hhdCwgcHJvcCkpCisKKworY2xhc3Mg
VmVjdG9yVHlwZShUeXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZWxlbWVudF90eXBlKToK
KyAgICAgICAgc2VsZi5fZWxlbWVudF90eXBlID0gZWxlbWVudF90eXBlCisgICAgICAgIHNlbGYu
c2hhcGUgPSBUeXBlU2hhcGVzLkxJU1QKKyAgICAgICAgc2VsZi5mcmFtZXdvcmsgPSBlbGVtZW50
X3R5cGUuZnJhbWV3b3JrCisgICAgICAgIHNlbGYuZW5jbG9zaW5nX2NsYXNzID0gTm9uZQorCisg
ICAgZGVmIGhhc19mbGFnKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBp
c19zdHJ1Y3Qoc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2VudW0o
c2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2VudW1fY2xhc3Moc2Vs
Zik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHF1YWxpZmllZF9wcmVmaXgoc2Vs
Zik6CisgICAgICAgIHJldHVybiAiIgorCisgICAgZGVmIHR5cGVfbmFtZShzZWxmLCBxdWFsaWZp
ZWQ9RmFsc2UpOgorICAgICAgICByZXR1cm4gIlZlY3Rvcjwlcz4iICUgc2VsZi5fZWxlbWVudF90
eXBlLnR5cGVfbmFtZShxdWFsaWZpZWQ9cXVhbGlmaWVkKQorCisgICAgZGVmIHN0b3JhZ2VfdHlw
ZShzZWxmLCBxdWFsaWZpZWQ9RmFsc2UpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUo
cXVhbGlmaWVkPXF1YWxpZmllZCkKKworICAgIGRlZiBib3Jyb3dfdHlwZShzZWxmLCBxdWFsaWZp
ZWQ9RmFsc2UpOgorICAgICAgICByZXR1cm4gImNvbnN0ICVzJiIgJSBzZWxmLnR5cGVfbmFtZShx
dWFsaWZpZWQ9cXVhbGlmaWVkKQorCisgICAgZGVmIGFyZ3VtZW50X3R5cGUoc2VsZiwgcXVhbGlm
aWVkPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lKHF1YWxpZmllZD1xdWFs
aWZpZWQpICsgIiYiCisKKworY2xhc3MgSW5wdXRzTW9kZWw6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBhcnNlZF9qc29uKToKKyAgICAgICAgc2VsZi5pbnB1dHMgPSBbXQorICAgICAgICBzZWxm
LnR5cGVzID0gW10KKworICAgICAgICAjIFR5cGVzIGhhdmUgYXNzb2NpYXRlZCBmcmFtZXdvcmtz
IGFuZCBhcmUgaW4gdGhlaXIgbmFtZXNwYWNlLCBidXQgd2l0aGluIHRoZSBzcGVjaWZpY2F0aW9u
CisgICAgICAgICMgZmlsZSB0eXBlcyBhcmUgaW4gYSBmbGF0IG5hbWVzcGFjZS4gVHlwZXMgd2l0
aCB0aGUgc2FtZSBuYW1lIGFyZSBub3QgYWxsb3dlZC4KKyAgICAgICAgc2VsZi50eXBlc19ieV9u
YW1lID0ge30KKyAgICAgICAgc2VsZi5pbnB1dHNfYnlfbmFtZSA9IHt9CisKKyAgICAgICAgc2Vs
Zi5wYXJzZV90b3BsZXZlbChwYXJzZWRfanNvbikKKworICAgIGRlZiBlbnVtX3R5cGVzKHNlbGYp
OgorICAgICAgICBfZW51bXMgPSBmaWx0ZXIobGFtYmRhIHg6IHguaXNfZW51bSgpIG9yIHguaXNf
ZW51bV9jbGFzcygpLCBzZWxmLnR5cGVzKQorICAgICAgICByZXR1cm4gc29ydGVkKF9lbnVtcywg
a2V5PWxhbWJkYSBfZW51bTogX2VudW0udHlwZV9uYW1lKCkpCisKKyAgICBkZWYgZ2V0X3R5cGVf
Zm9yX21lbWJlcihzZWxmLCBtZW1iZXIpOgorICAgICAgICBpZiBtZW1iZXIuaGFzX2ZsYWcoIlZF
Q1RPUiIpOgorICAgICAgICAgICAgcmV0dXJuIFZlY3RvclR5cGUoc2VsZi50eXBlc19ieV9uYW1l
LmdldChtZW1iZXIudHlwZU5hbWUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJu
IHNlbGYudHlwZXNfYnlfbmFtZS5nZXQobWVtYmVyLnR5cGVOYW1lKQorCisgICAgZGVmIHBhcnNl
X3RvcGxldmVsKHNlbGYsIGpzb24pOgorICAgICAgICBjaGVja19wcm9wZXJ0aWVzKFsndHlwZXMn
LCAnaW5wdXRzJ10sIGpzb24sICd0b3BsZXZlbCcpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KGpzb25bJ3R5cGVzJ10sIGRpY3QpOgorICAgICAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24o
Ik1hbGZvcm1lZCBzcGVjaWZpY2F0aW9uOiB0eXBlcyBpcyBub3QgYSBkaWN0IG9mIGZyYW1ld29y
ay0+dHlwZSBsaXN0IikKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShqc29uWydpbnB1dHMn
XSwgbGlzdCk6CisgICAgICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiTWFsZm9ybWVkIHNw
ZWNpZmljYXRpb246IGlucHV0cyBpcyBub3QgYW4gYXJyYXkiKQorCisgICAgICAgIGZvciB0eV9m
cmFtZXdvcmtfbmFtZSwgdHlfbGlzdCBpbiBqc29uWyd0eXBlcyddLml0ZXJpdGVtcygpOgorICAg
ICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodHlfbGlzdCwgbGlzdCk6CisgICAgICAgICAgICAg
ICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIk1hbGZvcm1lZCBzcGVjaWZpY2F0aW9uOiB0eXBlIGxp
c3QgZm9yIGZyYW1ld29yayAlcyBpcyBub3QgYSBsaXN0IiAlIHR5X2ZyYW1ld29ya19uYW1lKQor
CisgICAgICAgICAgICBmb3IgX3R5IGluIHR5X2xpc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5w
YXJzZV90eXBlX3dpdGhfZnJhbWV3b3JrX25hbWUoX3R5LCB0eV9mcmFtZXdvcmtfbmFtZSkKKwor
ICAgICAgICBmb3IgdmFsIGluIGpzb25bJ2lucHV0cyddOgorICAgICAgICAgICAgc2VsZi5wYXJz
ZV9pbnB1dCh2YWwpCisKKyAgICBkZWYgcGFyc2VfdHlwZV93aXRoX2ZyYW1ld29ya19uYW1lKHNl
bGYsIGpzb24sIGZyYW1ld29ya19uYW1lKToKKyAgICAgICAgY2hlY2tfcHJvcGVydGllcyhbJ25h
bWUnLCAnc2hhcGUnXSwganNvbiwgJ3R5cGUnKQorICAgICAgICBmcmFtZXdvcmsgPSBGcmFtZXdv
cmsuZnJvbVN0cmluZyhmcmFtZXdvcmtfbmFtZSkKKyAgICAgICAgaWYgZnJhbWV3b3JrIGlzIG5v
dCBGcmFtZXdvcmtzLkdsb2JhbDoKKyAgICAgICAgICAgIGNoZWNrX3Byb3BlcnRpZXMoWydoZWFk
ZXInXSwganNvbiwgJ25vbi1nbG9iYWwgdHlwZScpCisKKyAgICAgICAgX3R5cGUgPSBUeXBlKGpz
b25bJ25hbWUnXSwgVHlwZVNoYXBlLmZyb21TdHJpbmcoanNvblsnc2hhcGUnXSksIGZyYW1ld29y
aywganNvbi5nZXQoJ2hlYWRlcicsIE5vbmUpLCBqc29uLmdldCgnZW5jbG9zaW5nX2NsYXNzJywg
Tm9uZSksIGpzb24uZ2V0KCd2YWx1ZXMnKSwganNvbi5nZXQoJ2d1YXJkZWRfdmFsdWVzJywge30p
LCBqc29uLmdldCgnc3RvcmFnZScpLCBqc29uLmdldCgnZmxhZ3MnLCBbXSkpCisgICAgICAgIGlm
IF90eXBlLmlzX2VudW0oKSBvciBfdHlwZS5pc19lbnVtX2NsYXNzKCk6CisgICAgICAgICAgICBj
aGVja19wcm9wZXJ0aWVzKFsndmFsdWVzJ10sIGpzb24sICdlbnVtJykKKyAgICAgICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKGpzb25bJ3ZhbHVlcyddLCBsaXN0KSBvciBsZW4oX3R5cGUudmFsdWVz
KSA9PSAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJNYWxmb3JtZWQg
c3BlY2lmaWNhdGlvbjogZW51bSB0eXBlIGRvZXMgbm90IHN1cHBseSBhIGxpc3Qgb2YgdmFsdWVz
IikKKworICAgICAgICAgICAgaWYgX3R5cGUuaXNfZW51bSgpIGFuZCAic3RvcmFnZSIgbm90IGlu
IGpzb246CisgICAgICAgICAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIkMtc3R5bGUgZW51
bXMgbXVzdCBhbHNvIHNwZWNpZnkgdGhlaXIgc3RvcmFnZSB0eXBlIHNvIHRoZXkgY2FuIGJlIGZv
cndhcmQgZGVjbGFyZWQuIikKKworICAgICAgICBzZWxmLnR5cGVzLmFwcGVuZChfdHlwZSkKKwor
ICAgIGRlZiBwYXJzZV9pbnB1dChzZWxmLCBqc29uKToKKyAgICAgICAgY2hlY2tfcHJvcGVydGll
cyhbJ25hbWUnLCAnZGVzY3JpcHRpb24nLCAncXVldWUnLCAnbWVtYmVycyddLCBqc29uLCAnaW5w
dXQnKQorICAgICAgICBfaW5wdXQgPSBJbnB1dChqc29uWyduYW1lJ10sIGpzb25bJ2Rlc2NyaXB0
aW9uJ10sIGpzb25bJ3F1ZXVlJ10sIGpzb24uZ2V0KCdmbGFncycsIFtdKSwganNvbi5nZXQoJ2d1
YXJkJywgTm9uZSkpCisgICAgICAgIGlmIGlzaW5zdGFuY2UoanNvblsnbWVtYmVycyddLCBsaXN0
KToKKyAgICAgICAgICAgIGZvciBtZW1iZXIgaW4ganNvblsnbWVtYmVycyddOgorICAgICAgICAg
ICAgICAgIGNoZWNrX3Byb3BlcnRpZXMoWyduYW1lJywgJ3R5cGUnXSwgbWVtYmVyLCAnbWVtYmVy
JykKKyAgICAgICAgICAgICAgICBfaW5wdXQubWVtYmVycy5hcHBlbmQoSW5wdXRNZW1iZXIobWVt
YmVyWyduYW1lJ10sIG1lbWJlclsndHlwZSddLCBtZW1iZXIuZ2V0KCdmbGFncycsIFtdKSkpCisK
KyAgICAgICAgc2VsZi5pbnB1dHMuYXBwZW5kKF9pbnB1dCkKKworICAgICMgVHlwZXMgY2Fubm90
ICh5ZXQpIHJlZmVyZW5jZSBvdGhlciB0eXBlcywKKyAgICAjIHNvIHdlIGNhbiBjaGVjayByZWZl
cmVuY2VzIGluIG9uZSBwYXNzLgorICAgIGRlZiB0eXBlY2hlY2soc2VsZik6CisgICAgICAgIGZv
ciBfdHlwZSBpbiBzZWxmLnR5cGVzOgorICAgICAgICAgICAgc2VsZi50eXBlY2hlY2tfdHlwZShf
dHlwZSkKKworICAgICAgICBmb3IgX2lucHV0IGluIHNlbGYuaW5wdXRzOgorICAgICAgICAgICAg
c2VsZi50eXBlY2hlY2tfaW5wdXQoX2lucHV0KQorCisgICAgZGVmIHR5cGVjaGVja190eXBlKHNl
bGYsIF90eXBlKToKKyAgICAgICAgbG9nLmRlYnVnKCJ0eXBlY2hlY2sgdHlwZSAiICsgX3R5cGUu
dHlwZV9uYW1lKCkpCisKKyAgICAgICAgaWYgX3R5cGUudHlwZV9uYW1lKCkgaW4gc2VsZi50eXBl
c19ieV9uYW1lOgorICAgICAgICAgICAgcmFpc2UgVHlwZWNoZWNrRXhjZXB0aW9uKCJEdXBsaWNh
dGUgdHlwZSB3aXRoIG5hbWU6ICIgKyBfdHlwZS50eXBlX25hbWUoKSkKKworICAgICAgICBzZWxm
LnR5cGVzX2J5X25hbWVbX3R5cGUudHlwZV9uYW1lKCldID0gX3R5cGUKKworICAgIGRlZiB0eXBl
Y2hlY2tfaW5wdXQoc2VsZiwgX2lucHV0KToKKyAgICAgICAgbG9nLmRlYnVnKCJ0eXBlY2hlY2sg
aW5wdXQgIiArIF9pbnB1dC5uYW1lKQorCisgICAgICAgIGlmIF9pbnB1dC5uYW1lIGluIHNlbGYu
aW5wdXRzX2J5X25hbWU6CisgICAgICAgICAgICByYWlzZSBUeXBlY2hlY2tFeGNlcHRpb24oIkR1
cGxpY2F0ZSBpbnB1dCB3aXRoIG5hbWU6ICIgKyBfaW5wdXQubmFtZSkKKworICAgICAgICBzZWVu
X21lbWJlcnMgPSB7fQorCisgICAgICAgIGZvciBtZW1iZXIgaW4gX2lucHV0Lm1lbWJlcnM6Cisg
ICAgICAgICAgICBpZiBtZW1iZXIubWVtYmVyTmFtZSBpbiBzZWVuX21lbWJlcnM6CisgICAgICAg
ICAgICAgICAgcmFpc2UgVHlwZWNoZWNrRXhjZXB0aW9uKCJEdXBsaWNhdGUgaW5wdXQgbWVtYmVy
IHdpdGggbmFtZTogIiArIG1lbWJlci5tZW1iZXJOYW1lKQorCisgICAgICAgICAgICBzZWxmLnR5
cGVjaGVja19pbnB1dF9tZW1iZXIobWVtYmVyKQorICAgICAgICAgICAgc2Vlbl9tZW1iZXJzW21l
bWJlci5tZW1iZXJOYW1lXSA9IG1lbWJlcgorCisgICAgICAgIHNlbGYuaW5wdXRzX2J5X25hbWVb
X2lucHV0Lm5hbWVdID0gX2lucHV0CisKKyAgICBkZWYgdHlwZWNoZWNrX2lucHV0X21lbWJlcihz
ZWxmLCBpbnB1dF9tZW1iZXIpOgorICAgICAgICBsb2cuZGVidWcoInR5cGVjaGVjayBtZW1iZXIg
IiArIGlucHV0X21lbWJlci5tZW1iZXJOYW1lKQorCisgICAgICAgIGlmIGlucHV0X21lbWJlci50
eXBlTmFtZSBub3QgaW4gc2VsZi50eXBlc19ieV9uYW1lOgorICAgICAgICAgICAgcmFpc2UgVHlw
ZWNoZWNrRXhjZXB0aW9uKCJVbmtub3duIHR5cGUgJXMgcmVmZXJlbmNlZCBpbiBtZW1iZXIgJXMi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW5wdXRfbWVtYmVyLnR5cGVOYW1lLCBp
bnB1dF9tZW1iZXIubWVtYmVyTmFtZSkpCisKKworIyBBIHdyaXRlciB0aGF0IG9ubHkgdXBkYXRl
cyBmaWxlIGlmIGl0IGFjdHVhbGx5IGNoYW5nZWQuCitjbGFzcyBJbmNyZW1lbnRhbEZpbGVXcml0
ZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVwYXRoLCBmb3JjZV9vdXRwdXQpOgorICAg
ICAgICBzZWxmLl9maWxlcGF0aCA9IGZpbGVwYXRoCisgICAgICAgIHNlbGYuX291dHB1dCA9ICIi
CisgICAgICAgIHNlbGYuZm9yY2Vfb3V0cHV0ID0gZm9yY2Vfb3V0cHV0CisKKyAgICBkZWYgd3Jp
dGUoc2VsZiwgdGV4dCk6CisgICAgICAgIHNlbGYuX291dHB1dCArPSB0ZXh0CisKKyAgICBkZWYg
Y2xvc2Uoc2VsZik6CisgICAgICAgIHRleHRfY2hhbmdlZCA9IFRydWUKKyAgICAgICAgc2VsZi5f
b3V0cHV0ID0gc2VsZi5fb3V0cHV0LnJzdHJpcCgpICsgIlxuIgorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHJlYWRfZmlsZSA9IG9wZW4oc2VsZi5fZmlsZXBhdGgsICJyIikKKyAgICAgICAg
ICAgIG9sZF90ZXh0ID0gcmVhZF9maWxlLnJlYWQoKQorICAgICAgICAgICAgcmVhZF9maWxlLmNs
b3NlKCkKKyAgICAgICAgICAgIHRleHRfY2hhbmdlZCA9IG9sZF90ZXh0ICE9IHNlbGYuX291dHB1
dAorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAjIElnbm9yZSwganVzdCBvdmVyd3JpdGUg
YnkgZGVmYXVsdAorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIHRleHRfY2hhbmdlZCBv
ciBzZWxmLmZvcmNlX291dHB1dDoKKyAgICAgICAgICAgIG91dF9maWxlID0gb3BlbihzZWxmLl9m
aWxlcGF0aCwgInciKQorICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc2VsZi5fb3V0cHV0KQor
ICAgICAgICAgICAgb3V0X2ZpbGUuY2xvc2UoKQorCisKK2RlZiBsY2ZpcnN0KHMpOgorICAgIHJl
dHVybiBzWzBdLmxvd2VyKCkgKyBzWzE6XQorCisKK2RlZiB3cmFwX3dpdGhfZ3VhcmQoY29udGVu
dHMsIGNvbmRpdGlvbj1Ob25lKToKKyAgICBpZiBjb25kaXRpb24gaXMgTm9uZToKKyAgICAgICAg
cmV0dXJuIGNvbnRlbnRzCisKKyAgICByZXR1cm4gIlxuIi5qb2luKFsKKyAgICAgICAgIiNpZiAl
cyIgJSBjb25kaXRpb24sCisgICAgICAgIGNvbnRlbnRzLAorICAgICAgICAiI2VuZGlmIC8vICVz
IiAlIGNvbmRpdGlvbgorICAgIF0pCisKKworY2xhc3MgR2VuZXJhdG9yOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtb2RlbCwgdGFyZ2V0X2ZyYW1ld29ya19uYW1lLCBpbnB1dF9maWxlcGF0aCwg
b3V0cHV0X3ByZWZpeCk6CisgICAgICAgIHNlbGYuX21vZGVsID0gbW9kZWwKKyAgICAgICAgc2Vs
Zi50YXJnZXRfZnJhbWV3b3JrID0gRnJhbWV3b3JrLmZyb21TdHJpbmcodGFyZ2V0X2ZyYW1ld29y
a19uYW1lKQorICAgICAgICBzZWxmLnRyYWl0c19mcmFtZXdvcmsgPSBGcmFtZXdvcmsuZnJvbVN0
cmluZyhzZWxmLnNldHRpbmcoJ3RyYWl0c0ZyYW1ld29ya05hbWUnKSkKKyAgICAgICAgc2VsZi5f
aW5wdXRfZmlsZXBhdGggPSBpbnB1dF9maWxlcGF0aAorICAgICAgICBzZWxmLl9vdXRwdXRfcHJl
Zml4ID0gb3V0cHV0X3ByZWZpeAorCisgICAgZGVmIHNldHRpbmcoc2VsZiwga2V5LCBkZWZhdWx0
PScnKToKKyAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0X2ZyYW1ld29yay5zZXR0aW5nKGtleSwg
R0xPQkFMX0NPTkZJRy5nZXQoa2V5LCBkZWZhdWx0KSkKKworICAgICMgVGhpcyBkb2VzIG5vdCBh
Y2NvdW50IGZvciBhbnkgZmlsZW5hbWUgbWFuZ2xpbmcgcGVyZm9ybWVkIG9uIGJlaGFsZiBvZiB0
aGUgdGVzdCBoYXJuZXNzLgorICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZiwgZXh0ZW5zaW9u
PU5vbmUpOgorICAgICAgICBjb21wb25lbnRzID0gW10KKyAgICAgICAgaWYgbGVuKHNlbGYuX291
dHB1dF9wcmVmaXgpID4gMDoKKyAgICAgICAgICAgIGNvbXBvbmVudHMuZXh0ZW5kKFtzZWxmLl9v
dXRwdXRfcHJlZml4LCAnLSddKQorCisgICAgICAgIGNvbXBvbmVudHMuZXh0ZW5kKFtzZWxmLnNl
dHRpbmcoJ3ByZWZpeCcpLCBzZWxmLnNldHRpbmcoJ2Jhc2VGaWxlbmFtZScpXSkKKworICAgICAg
ICBpZiBleHRlbnNpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb21wb25lbnRzLmV4dGVu
ZChbJy4nLCBleHRlbnNpb25dKQorCisgICAgICAgIHJldHVybiAiIi5qb2luKGNvbXBvbmVudHMp
CisKKyAgICBkZWYgd3JpdGVfb3V0cHV0X2ZpbGVzKHNlbGYsIF9kaXIsIGZvcmNlPUZhbHNlKToK
KyAgICAgICAgaGVhZF9maWxlID0gSW5jcmVtZW50YWxGaWxlV3JpdGVyKG9zLnBhdGguam9pbihf
ZGlyLCBzZWxmLm91dHB1dF9maWxlbmFtZSgnaCcpKSwgZm9yY2UpCisgICAgICAgIGltcGxfZmls
ZSA9IEluY3JlbWVudGFsRmlsZVdyaXRlcihvcy5wYXRoLmpvaW4oX2Rpciwgc2VsZi5vdXRwdXRf
ZmlsZW5hbWUoJ2NwcCcpKSwgZm9yY2UpCisKKyAgICAgICAgaGVhZF9maWxlLndyaXRlKHNlbGYu
Z2VuZXJhdGVfaGVhZGVyKCkpCisgICAgICAgIGltcGxfZmlsZS53cml0ZShzZWxmLmdlbmVyYXRl
X2ltcGxlbWVudGF0aW9uKCkpCisKKyAgICAgICAgaGVhZF9maWxlLmNsb3NlKCkKKyAgICAgICAg
aW1wbF9maWxlLmNsb3NlKCkKKworICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXIoc2VsZik6CisgICAg
ICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgICdsaWNlbnNlQmxvY2snOiBz
ZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSwKKyAgICAgICAgICAgICdoZWFkZXJfZ3VhcmQnOiByZS5z
dWIoJ1suLy1dJywgJ18nLCBzZWxmLm91dHB1dF9maWxlbmFtZSgpICsgIi5oIiksCisgICAgICAg
ICAgICAnZ3VhcmRDb25kaXRpb24nOiBzZWxmLnNldHRpbmcoJ2d1YXJkQ29uZGl0aW9uJyksCisg
ICAgICAgICAgICAndHJhaXRzTmFtZXNwYWNlJzogc2VsZi50cmFpdHNfZnJhbWV3b3JrLnNldHRp
bmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ2lucHV0c05hbWVzcGFjZSc6IHNlbGYudGFy
Z2V0X2ZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdpbmNsdWRl
cyc6IHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXMoZGVmYXVsdHM9c2VsZi5zZXR0aW5nKCdoZWFkZXJJ
bmNsdWRlcycpKSwKKyAgICAgICAgICAgICd0eXBlRm9yd2FyZERlY2xhcmF0aW9ucyc6IHNlbGYu
Z2VuZXJhdGVfdHlwZV9mb3J3YXJkX2RlY2xhcmF0aW9ucygpLAorICAgICAgICAgICAgJ2lucHV0
Rm9yd2FyZERlY2xhcmF0aW9ucyc6ICJcbiIuam9pbihbd3JhcF93aXRoX2d1YXJkKCJjbGFzcyAl
czsiLCBfaW5wdXQuZ3VhcmQpICUgX2lucHV0Lm5hbWUgZm9yIF9pbnB1dCBpbiBzZWxmLl9tb2Rl
bC5pbnB1dHNdKSwKKyAgICAgICAgICAgICdpbnB1dENsYXNzRGVjbGFyYXRpb25zJzogIlxuXG4i
LmpvaW4oW3NlbGYuZ2VuZXJhdGVfY2xhc3NfZGVjbGFyYXRpb24oX2lucHV0KSBmb3IgX2lucHV0
IGluIHNlbGYuX21vZGVsLmlucHV0c10pLAorICAgICAgICAgICAgJ2lucHV0VHJhaXREZWNsYXJh
dGlvbnMnOiAiXG5cbiIuam9pbihbc2VsZi5nZW5lcmF0ZV9pbnB1dF90cmFpdF9kZWNsYXJhdGlv
bihfaW5wdXQpIGZvciBfaW5wdXQgaW4gc2VsZi5fbW9kZWwuaW5wdXRzXSksCisgICAgICAgICAg
ICAnZW51bVRyYWl0RGVjbGFyYXRpb25zJzogIlxuXG4iLmpvaW4oW3NlbGYuZ2VuZXJhdGVfZW51
bV90cmFpdF9kZWNsYXJhdGlvbihfdHlwZSkgZm9yIF90eXBlIGluIHNlbGYuX21vZGVsLmVudW1f
dHlwZXMoKV0pLAorICAgICAgICAgICAgJ2ZvckVhY2hNYWNybyc6IHNlbGYuZ2VuZXJhdGVfZm9y
X2VhY2hfbWFjcm8oKSwKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBUZW1wbGF0ZShUZW1w
bGF0ZXMuSGVhZGVyU2tlbGV0b24pLnN1YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKQorCisg
ICAgZGVmIGdlbmVyYXRlX2ltcGxlbWVudGF0aW9uKHNlbGYpOgorICAgICAgICB0ZW1wbGF0ZV9h
cmd1bWVudHMgPSB7CisgICAgICAgICAgICAnbGljZW5zZUJsb2NrJzogc2VsZi5nZW5lcmF0ZV9s
aWNlbnNlKCksCisgICAgICAgICAgICAnZmlsZW5hbWUnOiBzZWxmLm91dHB1dF9maWxlbmFtZSgp
LAorICAgICAgICAgICAgJ2d1YXJkQ29uZGl0aW9uJzogc2VsZi5zZXR0aW5nKCdndWFyZENvbmRp
dGlvbicpLAorICAgICAgICAgICAgJ3RyYWl0c05hbWVzcGFjZSc6IHNlbGYudHJhaXRzX2ZyYW1l
d29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdpbnB1dHNOYW1lc3BhY2Un
OiBzZWxmLnRhcmdldF9mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAg
ICAnaW5jbHVkZXMnOiBzZWxmLmdlbmVyYXRlX2luY2x1ZGVzKGRlZmF1bHRzPXNlbGYuc2V0dGlu
ZygnaW1wbEluY2x1ZGVzJyksIGluY2x1ZGVzX2Zvcl90eXBlcz1UcnVlKSwKKyAgICAgICAgICAg
ICdpbnB1dENsYXNzSW1wbGVtZW50YXRpb25zJzogIlxuXG4iLmpvaW4oW3NlbGYuZ2VuZXJhdGVf
Y2xhc3NfaW1wbGVtZW50YXRpb24oX2lucHV0KSBmb3IgX2lucHV0IGluIHNlbGYuX21vZGVsLmlu
cHV0c10pLAorICAgICAgICAgICAgJ2lucHV0VHJhaXRJbXBsZW1lbnRhdGlvbnMnOiAiXG5cbiIu
am9pbihbc2VsZi5nZW5lcmF0ZV9pbnB1dF90cmFpdF9pbXBsZW1lbnRhdGlvbihfaW5wdXQpIGZv
ciBfaW5wdXQgaW4gc2VsZi5fbW9kZWwuaW5wdXRzXSksCisgICAgICAgICAgICAnZW51bVRyYWl0
SW1wbGVtZW50YXRpb25zJzogIlxuXG4iLmpvaW4oW3NlbGYuZ2VuZXJhdGVfZW51bV90cmFpdF9p
bXBsZW1lbnRhdGlvbihfdHlwZSkgZm9yIF90eXBlIGluIHNlbGYuX21vZGVsLmVudW1fdHlwZXMo
KV0pLAorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFRlbXBsYXRlKFRlbXBsYXRlcy5JbXBs
ZW1lbnRhdGlvblNrZWxldG9uKS5zdWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50cykKKworICAg
IGRlZiBnZW5lcmF0ZV9saWNlbnNlKHNlbGYpOgorICAgICAgICByZXR1cm4gVGVtcGxhdGUoVGVt
cGxhdGVzLkNvcHlyaWdodEJsb2NrKS5zdWJzdGl0dXRlKE5vbmUsIGlucHV0RmlsZW5hbWU9b3Mu
cGF0aC5iYXNlbmFtZShzZWxmLl9pbnB1dF9maWxlcGF0aCkpCisKKyAgICBkZWYgZ2VuZXJhdGVf
aW5jbHVkZXMoc2VsZiwgZGVmYXVsdHM9W10sIGluY2x1ZGVzX2Zvcl90eXBlcz1GYWxzZSk6Cisg
ICAgICAgIGxpbmVzID0gc2V0KCkKKworICAgICAgICBmb3IgX3R5cGUgaW4gc2VsZi5fbW9kZWwu
dHlwZXM6CisgICAgICAgICAgICBpZiBfdHlwZS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5HbG9i
YWw6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgRm9yIFBhc3NSZWZQ
dHInZCB0eXBlcywgd2UgcmV2ZXJzZSB3aGVuIHRvIGluY2x1ZGUgdGhlIGhlYWRlcgorICAgICAg
ICAgICAgIyBzbyB0aGF0IH5QYXNzUmVmUHRyPFQ+IGlzIGF2YWlsYWJsZSBpbiB0aGUgaGVhZGVy
IGZpbGUuCisgICAgICAgICAgICBpbmNsdWRlX2Zvcl9wYXNzcmVmcHRyID0gX3R5cGUuc2hhcGUg
aXMgVHlwZVNoYXBlcy5TSEFSRURfTUFQCisgICAgICAgICAgICBpbmNsdWRlX2Zvcl9lbmNsb3Np
bmdfY2xhc3MgPSBfdHlwZS5pc19lbnVtKCkgYW5kIF90eXBlLmVuY2xvc2luZ19jbGFzcyBpcyBu
b3QgTm9uZQorICAgICAgICAgICAgaWYgKG5vdCBpbmNsdWRlc19mb3JfdHlwZXMpIF4gKGluY2x1
ZGVfZm9yX3Bhc3NyZWZwdHIgb3IgaW5jbHVkZV9mb3JfZW5jbG9zaW5nX2NsYXNzKToKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBzZWxmLnRhcmdldF9mcmFtZXdv
cmsgIT0gX3R5cGUuZnJhbWV3b3JrOgorICAgICAgICAgICAgICAgIGxpbmVzLmFkZCgiI2luY2x1
ZGUgPCVzPiIgJSBfdHlwZS5oZWFkZXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIGxpbmVzLmFkZCgiI2luY2x1ZGUgXCIlc1wiIiAlIG9zLnBhdGguYmFzZW5hbWUoX3R5cGUu
aGVhZGVyKSkKKworICAgICAgICBmb3IgZW50cnkgaW4gZGVmYXVsdHM6CisgICAgICAgICAgICAo
YWxsb3dlZF9mcmFtZXdvcmtfbmFtZXMsIGRhdGEpID0gZW50cnkKKyAgICAgICAgICAgIChmcmFt
ZXdvcmtfbmFtZSwgaGVhZGVyX3BhdGgpID0gZGF0YQorCisgICAgICAgICAgICBpZiBzZWxmLnRh
cmdldF9mcmFtZXdvcmsubmFtZSBub3QgaW4gYWxsb3dlZF9mcmFtZXdvcmtfbmFtZXM6CisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHNlbGYudGFyZ2V0X2ZyYW1ld29y
ay5uYW1lICE9IGZyYW1ld29ya19uYW1lOgorICAgICAgICAgICAgICAgIGxpbmVzLmFkZCgiI2lu
Y2x1ZGUgPCVzPiIgJSBoZWFkZXJfcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgbGluZXMuYWRkKCIjaW5jbHVkZSBcIiVzXCIiICUgb3MucGF0aC5iYXNlbmFtZShoZWFk
ZXJfcGF0aCkpCisKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzb3J0ZWQobGlzdChsaW5lcykp
KQorCisgICAgZGVmIGdlbmVyYXRlX3R5cGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6Cisg
ICAgICAgIGxpbmVzID0gW10KKworICAgICAgICBkZWNsc19ieV9mcmFtZXdvcmsgPSB7fQorICAg
ICAgICBmcmFtZXdvcmtzID0gW0ZyYW1ld29yay5mcm9tU3RyaW5nKHMpIGZvciBzIGluIEZSQU1F
V09SS19DT05GSUdfTUFQLmtleXMoKSBpZiBzICE9IEZyYW1ld29ya3MuR2xvYmFsLm5hbWVdCisg
ICAgICAgIGZvciBmcmFtZXdvcmsgaW4gZnJhbWV3b3JrczoKKyAgICAgICAgICAgIGRlY2xzX2J5
X2ZyYW1ld29ya1tmcmFtZXdvcmtdID0gW10KKworICAgICAgICBmb3IgX3R5cGUgaW4gc2VsZi5f
bW9kZWwudHlwZXM6CisgICAgICAgICAgICBpZiBfdHlwZS5mcmFtZXdvcmsgbm90IGluIGZyYW1l
d29ya3M6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIF90eXBlLmVu
Y2xvc2luZ19jbGFzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAg
ICAgICAgICAgaWYgX3R5cGUuaXNfZW51bSgpOgorICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9u
ID0gImVudW0gJXMgOiAlczsiICUgKF90eXBlLnR5cGVfbmFtZSgpLCBfdHlwZS51bmRlcmx5aW5n
X3N0b3JhZ2UpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9u
ID0gIiVzICVzOyIgJSAoX3R5cGUuZGVjbGFyYXRpb25fa2luZCgpLCBfdHlwZS50eXBlX25hbWUo
KSkKKyAgICAgICAgICAgIGRlY2xzX2J5X2ZyYW1ld29ya1tfdHlwZS5mcmFtZXdvcmtdLmFwcGVu
ZChkZWNsYXJhdGlvbikKKworICAgICAgICAjIERlY2xhcmUgYWxsIG5hbWVzcGFjZXMgZXhwbGlj
aXRseSwgZXZlbiBpZiBpdCdzIHRoZSBtYWluIG5hbWVzcGFjZS4KKyAgICAgICAgZm9yIGZyYW1l
d29yayBpbiBmcmFtZXdvcmtzOgorICAgICAgICAgICAgaWYgbGVuKGRlY2xzX2J5X2ZyYW1ld29y
a1tmcmFtZXdvcmtdKSA9PSAwOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
ICAgIGRlY2xzX2J5X2ZyYW1ld29ya1tmcmFtZXdvcmtdLnNvcnQoKQorICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCJuYW1lc3BhY2UgJXMgeyIgJSBmcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNl
JykpCisgICAgICAgICAgICBsaW5lcy5leHRlbmQoZGVjbHNfYnlfZnJhbWV3b3JrW2ZyYW1ld29y
a10pCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIn0iKQorICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCIiKQorCisgICAgICAgIHJldHVybiAiXG4iLmpvaW4obGluZXMpCisKKyAgICBkZWYgZ2Vu
ZXJhdGVfY2xhc3NfZGVjbGFyYXRpb24oc2VsZiwgX2lucHV0KToKKworICAgICAgICBleHRyYV9k
ZWNsYXJhdGlvbnMgPSBbXQorICAgICAgICBpZiBfaW5wdXQucXVldWUgPT0gSW5wdXRRdWV1ZXMu
RVZFTlRfTE9PUDoKKyAgICAgICAgICAgIGV4dHJhX2RlY2xhcmF0aW9ucy5leHRlbmQoWworICAg
ICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICIgICAgLy8gRXZlbnRMb29wSW5wdXQg
QVBJIiwKKyAgICAgICAgICAgICAgICAiICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlD
b250cm9sbGVyJikgb3ZlcnJpZGUgZmluYWw7IiwKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAg
ICAgIGlmIF9pbnB1dC5zZXR0aW5nKCdDUkVBVEVfRlJPTV9QQUdFJyk6CisgICAgICAgICAgICAg
ICAgZXh0cmFfZGVjbGFyYXRpb25zLmV4dGVuZChbCisgICAgICAgICAgICAgICAgICAgICIgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjwlcz4gY3JlYXRlRnJvbVBhZ2UoY29uc3QgUGFnZSYpOyIg
JSBfaW5wdXQubmFtZQorICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgbWVtYmVyX2dldHRl
cnMgPSBbc2VsZi5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfZ2V0dGVyKF9tZW1iZXIpIGZvciBfbWVt
YmVyIGluIF9pbnB1dC5tZW1iZXJzXQorCisgICAgICAgIG1lbWJlcl9kZWNsYXJhdGlvbnMgPSBb
c2VsZi5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfZGVjbGFyYXRpb24oX21lbWJlcikgZm9yIF9tZW1i
ZXIgaW4gX2lucHV0Lm1lbWJlcnNdCisgICAgICAgIGlmIGxlbihtZW1iZXJfZGVjbGFyYXRpb25z
KSA+IDA6CisgICAgICAgICAgICBtZW1iZXJfZGVjbGFyYXRpb25zLmluc2VydCgwLCAicHJpdmF0
ZToiKQorCisgICAgICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgICdpbnB1
dENvbnN0cnVjdG9yJzogc2VsZi5nZW5lcmF0ZV9pbnB1dF9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlv
bihfaW5wdXQpLAorICAgICAgICAgICAgJ2lucHV0RGVzdHJ1Y3Rvcic6IHNlbGYuZ2VuZXJhdGVf
aW5wdXRfZGVzdHJ1Y3Rvcl9kZWNsYXJhdGlvbihfaW5wdXQpLAorICAgICAgICAgICAgJ2lucHV0
TmFtZSc6IF9pbnB1dC5uYW1lLAorICAgICAgICAgICAgJ2lucHV0UXVldWUnOiBfaW5wdXQuc2V0
dGluZygnZW51bVZhbHVlJyksCisgICAgICAgICAgICAnYmFzZUNsYXNzJzogX2lucHV0LnNldHRp
bmcoJ2Jhc2VDbGFzcycpICUgX2lucHV0Lm5hbWUsCisgICAgICAgICAgICAnZXh0cmFEZWNsYXJh
dGlvbnMnOiAiXG4iLmpvaW4oZXh0cmFfZGVjbGFyYXRpb25zKSwKKyAgICAgICAgICAgICdtZW1i
ZXJHZXR0ZXJzJzogIlxuIi5qb2luKG1lbWJlcl9nZXR0ZXJzKSwKKyAgICAgICAgICAgICdtZW1i
ZXJEZWNsYXJhdGlvbnMnOiAiXG4iLmpvaW4obWVtYmVyX2RlY2xhcmF0aW9ucyksCisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gd3JhcF93aXRoX2d1YXJkKFRlbXBsYXRlKFRlbXBsYXRlcy5J
bnB1dENsYXNzRGVjbGFyYXRpb24pLnN1YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKSwgX2lu
cHV0Lmd1YXJkKQorCisgICAgZGVmIGdlbmVyYXRlX2lucHV0X2NvbnN0cnVjdG9yX2RlY2xhcmF0
aW9uKHNlbGYsIF9pbnB1dCk6CisgICAgICAgIGZvcm1hbHNfbGlzdCA9IHNlbGYuZ2VuZXJhdGVf
Y29uc3RydWN0b3JfZm9ybWFsc19saXN0KF9pbnB1dCkKKyAgICAgICAgdGVybXMgPSBbXQorICAg
ICAgICBpZiBzZWxmLnNldHRpbmcoJ2V4cG9ydE1hY3JvJyk6CisgICAgICAgICAgICB0ZXJtcy5h
cHBlbmQoc2VsZi5zZXR0aW5nKCdleHBvcnRNYWNybycpKQorICAgICAgICB0ZXJtcy5hcHBlbmQo
IiVzKCVzKSIgJSAoX2lucHV0Lm5hbWUsIGZvcm1hbHNfbGlzdCkpCisgICAgICAgIHJldHVybiAi
ICAgICVzOyIgJSAiICIuam9pbih0ZXJtcykKKworICAgIGRlZiBnZW5lcmF0ZV9pbnB1dF9kZXN0
cnVjdG9yX2RlY2xhcmF0aW9uKHNlbGYsIF9pbnB1dCk6CisgICAgICAgIHJldHVybiAiICAgIHZp
cnR1YWwgfiVzKCk7IiAlIF9pbnB1dC5uYW1lCisKKyAgICBkZWYgZ2VuZXJhdGVfaW5wdXRfbWVt
YmVyX2dldHRlcihzZWxmLCBfbWVtYmVyKToKKyAgICAgICAgbWVtYmVyX3R5cGUgPSBzZWxmLl9t
b2RlbC5nZXRfdHlwZV9mb3JfbWVtYmVyKF9tZW1iZXIpCisgICAgICAgIHJldHVybiAiICAgICVz
ICVzKCkgY29uc3QgeyByZXR1cm4gJXM7IH0iICUgKG1lbWJlcl90eXBlLmJvcnJvd190eXBlKCks
IF9tZW1iZXIubWVtYmVyTmFtZSwgc2VsZi5nZW5lcmF0ZV9tZW1iZXJfYm9ycm93X2V4cHJlc3Np
b24oX21lbWJlcikpCisKKyAgICBkZWYgZ2VuZXJhdGVfaW5wdXRfbWVtYmVyX2RlY2xhcmF0aW9u
KHNlbGYsIF9tZW1iZXIpOgorICAgICAgICBtZW1iZXJfdHlwZSA9IHNlbGYuX21vZGVsLmdldF90
eXBlX2Zvcl9tZW1iZXIoX21lbWJlcikKKyAgICAgICAgcmV0dXJuICIgICAgJXMgbV8lczsiICUg
KG1lbWJlcl90eXBlLnN0b3JhZ2VfdHlwZSgpLCBfbWVtYmVyLm1lbWJlck5hbWUpCisKKyAgICBk
ZWYgZ2VuZXJhdGVfaW5wdXRfbWVtYmVyX3R1cGxlcyhzZWxmLCBfaW5wdXQpOgorICAgICAgICBy
ZXR1cm4gWyhfbWVtYmVyLCBzZWxmLl9tb2RlbC5nZXRfdHlwZV9mb3JfbWVtYmVyKF9tZW1iZXIp
KSBmb3IgX21lbWJlciBpbiBfaW5wdXQubWVtYmVyc10KKworICAgIGRlZiBxdWFsaWZpZWRfaW5w
dXRfbmFtZShzZWxmLCBfaW5wdXQpOgorICAgICAgICBpZiBzZWxmLnRhcmdldF9mcmFtZXdvcmsg
PT0gc2VsZi50cmFpdHNfZnJhbWV3b3JrOgorICAgICAgICAgICAgcmV0dXJuIF9pbnB1dC5uYW1l
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIiVzOjolcyIgJSAoc2VsZi50YXJn
ZXRfZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLCBfaW5wdXQubmFtZSkKKworICAgIGRl
ZiBnZW5lcmF0ZV9pbnB1dF90cmFpdF9kZWNsYXJhdGlvbihzZWxmLCBfaW5wdXQpOgorICAgICAg
ICBkZWNsX3R5cGUgPSBbJ3N0cnVjdCddCisgICAgICAgIGlmIGxlbihzZWxmLnNldHRpbmcoJ2V4
cG9ydE1hY3JvJykpID4gMDoKKyAgICAgICAgICAgIGRlY2xfdHlwZS5hcHBlbmQoc2VsZi5zZXR0
aW5nKCdleHBvcnRNYWNybycpKQorCisgICAgICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAg
ICAgICAgICAgICdzdHJ1Y3RPckNsYXNzJzogIiAiLmpvaW4oZGVjbF90eXBlKSwKKyAgICAgICAg
ICAgICdxdWV1ZVR5cGUnOiBfaW5wdXQucXVldWUuc2V0dGluZygnZW51bVZhbHVlJyksCisgICAg
ICAgICAgICAncXVhbGlmaWVkSW5wdXROYW1lJzogc2VsZi5xdWFsaWZpZWRfaW5wdXRfbmFtZShf
aW5wdXQpLAorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHdyYXBfd2l0aF9ndWFyZChUZW1w
bGF0ZShUZW1wbGF0ZXMuSW5wdXRUcmFpdHNEZWNsYXJhdGlvbikuc3Vic3RpdHV0ZSh0ZW1wbGF0
ZV9hcmd1bWVudHMpLCBfaW5wdXQuZ3VhcmQpCisKKyAgICBkZWYgZ2VuZXJhdGVfZW51bV90cmFp
dF9kZWNsYXJhdGlvbihzZWxmLCBfdHlwZSk6CisgICAgICAgIHNob3VsZF9xdWFsaWZ5X3R5cGUg
PSBfdHlwZS5mcmFtZXdvcmsgIT0gc2VsZi50cmFpdHNfZnJhbWV3b3JrCisgICAgICAgIHRlbXBs
YXRlID0gVGVtcGxhdGVzLkVudW1UcmFpdERlY2xhcmF0aW9uIGlmIF90eXBlLmlzX2VudW0oKSBl
bHNlIFRlbXBsYXRlcy5FbnVtQ2xhc3NUcmFpdERlY2xhcmF0aW9uCisgICAgICAgIHRlbXBsYXRl
X2FyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgICdlbnVtTmFtZSc6IF90eXBlLnR5cGVfbmFtZShx
dWFsaWZpZWQ9c2hvdWxkX3F1YWxpZnlfdHlwZSksCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IFRlbXBsYXRlKHRlbXBsYXRlKS5zdWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50cykKKworICAg
IGRlZiBnZW5lcmF0ZV9mb3JfZWFjaF9tYWNybyhzZWxmKToKKyAgICAgICAgbWFjcm9fbmFtZSA9
ICIlc19SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VBQ0giICUgc2VsZi5zZXR0aW5nKCdwcmVmaXgn
KS51cHBlcigpCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVm
aW5lICVzKG1hY3JvKSBcXCIgJSBtYWNyb19uYW1lKQorICAgICAgICBsaW5lcy5leHRlbmQoWyIg
ICAgbWFjcm8oJXMpIFxcIiAlIF9pbnB1dC5uYW1lIGZvciBfaW5wdXQgaW4gc2VsZi5fbW9kZWwu
aW5wdXRzXSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgXFwiKQorICAgICAgICBsaW5lcy5h
cHBlbmQoIi8vIGVuZCBvZiAlcyIgJSBtYWNyb19uYW1lKQorICAgICAgICByZXR1cm4gIlxuIi5q
b2luKGxpbmVzKQorCisgICAgZGVmIGdlbmVyYXRlX2NsYXNzX2ltcGxlbWVudGF0aW9uKHNlbGYs
IF9pbnB1dCk6CisgICAgICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgICdp
bnB1dE5hbWUnOiBfaW5wdXQubmFtZSwKKyAgICAgICAgICAgICdpbnB1dHNOYW1lc3BhY2UnOiBz
ZWxmLnRhcmdldF9mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAn
aW5pdGlhbGl6ZXJMaXN0Jzogc2VsZi5nZW5lcmF0ZV9jb25zdHJ1Y3Rvcl9pbml0aWFsaXplcl9s
aXN0KF9pbnB1dCksCisgICAgICAgICAgICAnY29uc3RydWN0b3JGb3JtYWxzTGlzdCc6IHNlbGYu
Z2VuZXJhdGVfY29uc3RydWN0b3JfZm9ybWFsc19saXN0KF9pbnB1dCksCisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gd3JhcF93aXRoX2d1YXJkKFRlbXBsYXRlKFRlbXBsYXRlcy5JbnB1dENs
YXNzSW1wbGVtZW50YXRpb24pLnN1YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKSwgX2lucHV0
Lmd1YXJkKQorCisgICAgZGVmIGdlbmVyYXRlX2VudW1fdHJhaXRfaW1wbGVtZW50YXRpb24oc2Vs
ZiwgX3R5cGUpOgorICAgICAgICBzaG91bGRfcXVhbGlmeV90eXBlID0gX3R5cGUuZnJhbWV3b3Jr
ICE9IHNlbGYudHJhaXRzX2ZyYW1ld29yaworICAgICAgICBwcmVmaXhfY29tcG9uZW50cyA9IFtd
CisgICAgICAgIGlmIHNob3VsZF9xdWFsaWZ5X3R5cGU6CisgICAgICAgICAgICBwcmVmaXhfY29t
cG9uZW50cy5hcHBlbmQoX3R5cGUuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpKQorICAg
ICAgICBpZiBfdHlwZS5pc19lbnVtX2NsYXNzKCk6CisgICAgICAgICAgICBwcmVmaXhfY29tcG9u
ZW50cy5hcHBlbmQoX3R5cGUudHlwZV9uYW1lKCkpCisgICAgICAgIGlmIF90eXBlLmVuY2xvc2lu
Z19jbGFzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHByZWZpeF9jb21wb25lbnRzLmFwcGVu
ZChfdHlwZS5lbmNsb3NpbmdfY2xhc3MpCisgICAgICAgIHByZWZpeF9jb21wb25lbnRzLmFwcGVu
ZCgiIikKKyAgICAgICAgZW51bV9wcmVmaXggPSAiOjoiLmpvaW4ocHJlZml4X2NvbXBvbmVudHMp
CisgICAgICAgIGVuY29kZUxpbmVzID0gW10KKworICAgICAgICBpZiBfdHlwZS5pc19lbnVtKCk6
CisgICAgICAgICAgICBlbmNvZGVfdGVtcGxhdGUgPSBUZW1wbGF0ZXMuRW51bUVuY29kZUNhc2UK
KyAgICAgICAgICAgIGRlY29kZV90ZW1wbGF0ZSA9IFRlbXBsYXRlcy5FbnVtRGVjb2RlQ2FzZQor
ICAgICAgICAgICAgZW51bV90cmFpdF90ZW1wbGF0ZSA9IFRlbXBsYXRlcy5FbnVtVHJhaXRJbXBs
ZW1lbnRhdGlvbgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZW5jb2RlX3RlbXBsYXRlID0g
VGVtcGxhdGVzLkVudW1DbGFzc0VuY29kZUNhc2UKKyAgICAgICAgICAgIGRlY29kZV90ZW1wbGF0
ZSA9IFRlbXBsYXRlcy5FbnVtQ2xhc3NEZWNvZGVDYXNlCisgICAgICAgICAgICBlbnVtX3RyYWl0
X3RlbXBsYXRlID0gVGVtcGxhdGVzLkVudW1DbGFzc1RyYWl0SW1wbGVtZW50YXRpb24KKworICAg
ICAgICAjIEdlbmVyYXRlIGJvZHkgZm9yIGVuY29kZS4KKyAgICAgICAgZm9yIF92YWx1ZSBpbiBf
dHlwZS52YWx1ZXM6CisgICAgICAgICAgICB0ZW1wbGF0ZV9hcmd1bWVudHMgPSB7CisgICAgICAg
ICAgICAgICAgJ2VudW1TdHJpbmdWYWx1ZSc6IF92YWx1ZSwKKyAgICAgICAgICAgICAgICAncXVh
bGlmaWVkRW51bVZhbHVlJzogIiVzJXMiICUgKGVudW1fcHJlZml4LCBfdmFsdWUpLAorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZW5jb2RlTGluZXMuYXBwZW5kKFRlbXBsYXRlKGVuY29kZV90
ZW1wbGF0ZSkuc3Vic3RpdHV0ZSh0ZW1wbGF0ZV9hcmd1bWVudHMpKQorCisgICAgICAgIGZvciBn
dWFyZCwgZ3VhcmRfdmFsdWVzIGluIF90eXBlLmd1YXJkX3ZhbHVlc19tYXAuaXRlcml0ZW1zKCk6
CisgICAgICAgICAgICBndWFyZGVkTGluZXMgPSBbXQorICAgICAgICAgICAgZm9yIGd1YXJkX3Zh
bHVlIGluIGd1YXJkX3ZhbHVlczoKKyAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9hcmd1bWVudHMg
PSB7CisgICAgICAgICAgICAgICAgICAgICdlbnVtU3RyaW5nVmFsdWUnOiBndWFyZF92YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgJ3F1YWxpZmllZEVudW1WYWx1ZSc6ICIlcyVzIiAlIChlbnVt
X3ByZWZpeCwgZ3VhcmRfdmFsdWUpLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBndWFyZGVkTGluZXMuYXBwZW5kKFRlbXBsYXRlKGVuY29kZV90ZW1wbGF0ZSkuc3Vic3RpdHV0
ZSh0ZW1wbGF0ZV9hcmd1bWVudHMpKQorICAgICAgICAgICAgZW5jb2RlTGluZXMuYXBwZW5kKHdy
YXBfd2l0aF9ndWFyZCgiXG4iLmpvaW4oZ3VhcmRlZExpbmVzKSwgZ3VhcmQpKQorCisgICAgICAg
ICMgR2VuZXJhdGUgYm9keSBmb3IgZGVjb2RlLgorICAgICAgICBkZWNvZGVMaW5lcyA9IFtdCisg
ICAgICAgIGZvciBfdmFsdWUgaW4gX3R5cGUudmFsdWVzOgorICAgICAgICAgICAgdGVtcGxhdGVf
YXJndW1lbnRzID0geworICAgICAgICAgICAgICAgICdlbnVtU3RyaW5nVmFsdWUnOiBfdmFsdWUs
CisgICAgICAgICAgICAgICAgJ3F1YWxpZmllZEVudW1WYWx1ZSc6ICIlcyVzIiAlIChlbnVtX3By
ZWZpeCwgX3ZhbHVlKSwKKyAgICAgICAgICAgICAgICAncXVhbGlmaWVkRW51bU5hbWUnOiBfdHlw
ZS50eXBlX25hbWUocXVhbGlmaWVkPXNob3VsZF9xdWFsaWZ5X3R5cGUpCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBkZWNvZGVMaW5lcy5hcHBlbmQoVGVtcGxhdGUoZGVjb2RlX3RlbXBsYXRl
KS5zdWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50cykpCisKKyAgICAgICAgZm9yIGd1YXJkLCBn
dWFyZF92YWx1ZXMgaW4gX3R5cGUuZ3VhcmRfdmFsdWVzX21hcC5pdGVyaXRlbXMoKToKKyAgICAg
ICAgICAgIGd1YXJkZWRMaW5lcyA9IFtdCisgICAgICAgICAgICBmb3IgZ3VhcmRfdmFsdWUgaW4g
Z3VhcmRfdmFsdWVzOgorICAgICAgICAgICAgICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAg
ICAgICAgICAgICAgICAgICAgJ2VudW1TdHJpbmdWYWx1ZSc6IGd1YXJkX3ZhbHVlLAorICAgICAg
ICAgICAgICAgICAgICAncXVhbGlmaWVkRW51bVZhbHVlJzogIiVzJXMiICUgKGVudW1fcHJlZml4
LCBndWFyZF92YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICdxdWFsaWZpZWRFbnVtTmFtZSc6
IF90eXBlLnR5cGVfbmFtZShxdWFsaWZpZWQ9c2hvdWxkX3F1YWxpZnlfdHlwZSkKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZ3VhcmRlZExpbmVzLmFwcGVuZChUZW1wbGF0ZShk
ZWNvZGVfdGVtcGxhdGUpLnN1YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKSkKKyAgICAgICAg
ICAgIGRlY29kZUxpbmVzLmFwcGVuZCh3cmFwX3dpdGhfZ3VhcmQoIlxuIi5qb2luKGd1YXJkZWRM
aW5lcyksIGd1YXJkKSkKKworICAgICAgICB0ZW1wbGF0ZV9hcmd1bWVudHMgPSB7CisgICAgICAg
ICAgICAnZW51bU5hbWUnOiBfdHlwZS50eXBlX25hbWUocXVhbGlmaWVkPXNob3VsZF9xdWFsaWZ5
X3R5cGUpLAorICAgICAgICAgICAgJ2VuY29kZUNhc2VzJzogIlxuIi5qb2luKGVuY29kZUxpbmVz
KSwKKyAgICAgICAgICAgICdkZWNvZGVDYXNlcyc6ICJcbiIuam9pbihkZWNvZGVMaW5lcykKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBUZW1wbGF0ZShlbnVtX3RyYWl0X3RlbXBsYXRlKS5z
dWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50cykKKworICAgIGRlZiBnZW5lcmF0ZV9pbnB1dF90
cmFpdF9pbXBsZW1lbnRhdGlvbihzZWxmLCBfaW5wdXQpOgorICAgICAgICB0ZW1wbGF0ZV9hcmd1
bWVudHMgPSB7CisgICAgICAgICAgICAnaW5wdXRzTmFtZXNwYWNlJzogc2VsZi50YXJnZXRfZnJh
bWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ2lucHV0VHlwZUltcGxl
bWVudGF0aW9uJzogVGVtcGxhdGUoc2VsZi5zZXR0aW5nKCdpbnB1dFR5cGVUZW1wbGF0ZScpKS5z
dWJzdGl0dXRlKE5vbmUsIGlucHV0TmFtZT1faW5wdXQubmFtZSksCisgICAgICAgICAgICAncXVh
bGlmaWVkSW5wdXROYW1lJzogc2VsZi5xdWFsaWZpZWRfaW5wdXRfbmFtZShfaW5wdXQpLAorICAg
ICAgICAgICAgJ2NvbnN0cnVjdG9yQXJndW1lbnRzJzogc2VsZi5nZW5lcmF0ZV9jb25zdHJ1Y3Rv
cl9hcmd1bWVudHNfbGlzdChfaW5wdXQpLAorICAgICAgICAgICAgJ2NvbnN0cnVjdG9yRm9ybWFs
c0xpc3QnOiBzZWxmLmdlbmVyYXRlX2NvbnN0cnVjdG9yX2Zvcm1hbHNfbGlzdChfaW5wdXQpLAor
ICAgICAgICAgICAgJ2VuY29kZVN0ZXBzJzogc2VsZi5nZW5lcmF0ZV9pbnB1dF9lbmNvZGVfaW1w
bGVtZW50YXRpb24oX2lucHV0KSwKKyAgICAgICAgICAgICdkZWNvZGVTdGVwcyc6IHNlbGYuZ2Vu
ZXJhdGVfaW5wdXRfZGVjb2RlX2ltcGxlbWVudGF0aW9uKF9pbnB1dCksCisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHdyYXBfd2l0aF9ndWFyZChUZW1wbGF0ZShUZW1wbGF0ZXMuSW5wdXRUcmFp
dHNJbXBsZW1lbnRhdGlvbikuc3Vic3RpdHV0ZSh0ZW1wbGF0ZV9hcmd1bWVudHMpLCBfaW5wdXQu
Z3VhcmQpCisKKyAgICBkZWYgZ2VuZXJhdGVfaW5wdXRfZW5jb2RlX2ltcGxlbWVudGF0aW9uKHNl
bGYsIF9pbnB1dCk6CisgICAgICAgIHN0ZXBzID0gW10KKyAgICAgICAgZm9yIChfbWVtYmVyLCBf
dHlwZSkgaW4gc2VsZi5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfdHVwbGVzKF9pbnB1dCk6CisgICAg
ICAgICAgICBzaG91bGRfcXVhbGlmeV90eXBlID0gX3R5cGUuZnJhbWV3b3JrICE9IHNlbGYudHJh
aXRzX2ZyYW1ld29yaworICAgICAgICAgICAgcHV0X21ldGhvZCA9ICJwdXQ8JXM+IiAlIF90eXBl
LnR5cGVfbmFtZShxdWFsaWZpZWQ9c2hvdWxkX3F1YWxpZnlfdHlwZSkKKworICAgICAgICAgICAg
c3RlcHMuZXh0ZW5kKFsKKyAgICAgICAgICAgICAgICAiICAgIGVuY29kZWRWYWx1ZS4lcyhBU0NJ
SUxpdGVyYWwoXCIlc1wiKSwgaW5wdXQuJXMoKSk7IiAlIChwdXRfbWV0aG9kLCBfbWVtYmVyLm1l
bWJlck5hbWUsIF9tZW1iZXIubWVtYmVyTmFtZSkKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAg
aWYgbGVuKHN0ZXBzKSA9PSAwOgorICAgICAgICAgICAgc3RlcHMuZXh0ZW5kKFsKKyAgICAgICAg
ICAgICAgICAiICAgIFVOVVNFRF9QQVJBTShlbmNvZGVkVmFsdWUpOyIsCisgICAgICAgICAgICAg
ICAgIiAgICBVTlVTRURfUEFSQU0oaW5wdXQpOyIsCisgICAgICAgICAgICBdKQorCisgICAgICAg
IHJldHVybiAiXG4iLmpvaW4oc3RlcHMpCisKKyAgICBkZWYgZ2VuZXJhdGVfaW5wdXRfZGVjb2Rl
X2ltcGxlbWVudGF0aW9uKHNlbGYsIF9pbnB1dCk6CisgICAgICAgIHN0ZXBzID0gW10KKyAgICAg
ICAgZm9yIChfbWVtYmVyLCBfdHlwZSkgaW4gc2VsZi5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfdHVw
bGVzKF9pbnB1dCk6CisgICAgICAgICAgICBzaG91bGRfcXVhbGlmeV90eXBlID0gX3R5cGUuZnJh
bWV3b3JrICE9IHNlbGYudHJhaXRzX2ZyYW1ld29yaworICAgICAgICAgICAgZ2V0X21ldGhvZCA9
ICJnZXQ8JXM+IiAlIF90eXBlLnR5cGVfbmFtZShxdWFsaWZpZWQ9c2hvdWxkX3F1YWxpZnlfdHlw
ZSkKKworICAgICAgICAgICAgbGluZXMgPSBbCisgICAgICAgICAgICAgICAgIiAgICAlcyAlczsi
ICUgKF90eXBlLnN0b3JhZ2VfdHlwZShxdWFsaWZpZWQ9c2hvdWxkX3F1YWxpZnlfdHlwZSksIF9t
ZW1iZXIubWVtYmVyTmFtZSksCisgICAgICAgICAgICAgICAgIiAgICBpZiAoIWVuY29kZWRWYWx1
ZS4lcyhBU0NJSUxpdGVyYWwoXCIlc1wiKSwgJXMpKSIgJSAoZ2V0X21ldGhvZCwgX21lbWJlci5t
ZW1iZXJOYW1lLCBfbWVtYmVyLm1lbWJlck5hbWUpLAorICAgICAgICAgICAgICAgICIgICAgICAg
IHJldHVybiBmYWxzZTsiLAorICAgICAgICAgICAgICAgICIiCisgICAgICAgICAgICBdCisKKyAg
ICAgICAgICAgIHN0ZXBzLmFwcGVuZCgiXG4iLmpvaW4obGluZXMpKQorCisgICAgICAgIGlmIGxl
bihzdGVwcykgPT0gMDoKKyAgICAgICAgICAgIHN0ZXBzLmV4dGVuZChbCisgICAgICAgICAgICAg
ICAgIiAgICBVTlVTRURfUEFSQU0oZW5jb2RlZFZhbHVlKTsiLAorICAgICAgICAgICAgXSkKKwor
ICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0ZXBzKQorCisgICAgZGVmIGdlbmVyYXRlX2NvbnN0
cnVjdG9yX2luaXRpYWxpemVyX2xpc3Qoc2VsZiwgX2lucHV0KToKKyAgICAgICAgaW5pdGlhbGl6
ZXJzID0gW10KKyAgICAgICAgaW5pdGlhbGl6ZXJzLmFwcGVuZCgiICAgIDogJXMoKSIgJSAoX2lu
cHV0LnNldHRpbmcoJ2Jhc2VDbGFzcycpICUgX2lucHV0Lm5hbWUpKQorICAgICAgICBmb3IgX21l
bWJlciBpbiBfaW5wdXQubWVtYmVyczoKKyAgICAgICAgICAgIGluaXRpYWxpemVycy5hcHBlbmQo
IiAgICAsIG1fJXMoJXMpIiAlIChfbWVtYmVyLm1lbWJlck5hbWUsIHNlbGYuZ2VuZXJhdGVfbWVt
YmVyX21vdmVfZXhwcmVzc2lvbihfbWVtYmVyKSkpCisKKyAgICAgICAgcmV0dXJuICJcbiIuam9p
bihpbml0aWFsaXplcnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfY29uc3RydWN0b3JfZm9ybWFsc19s
aXN0KHNlbGYsIF9pbnB1dCk6CisgICAgICAgIG1lbWJlcl90dXBsZXMgPSBzZWxmLmdlbmVyYXRl
X2lucHV0X21lbWJlcl90dXBsZXMoX2lucHV0KQorICAgICAgICByZXR1cm4gIiwgIi5qb2luKFsi
JXMgJXMiICUgKF90eXBlLmFyZ3VtZW50X3R5cGUoKSwgX21lbWJlci5tZW1iZXJOYW1lKSBmb3Ig
KF9tZW1iZXIsIF90eXBlKSBpbiBtZW1iZXJfdHVwbGVzXSkKKworICAgIGRlZiBnZW5lcmF0ZV9t
ZW1iZXJfYm9ycm93X2V4cHJlc3Npb24oc2VsZiwgX21lbWJlcik6CisgICAgICAgIF90eXBlID0g
c2VsZi5fbW9kZWwuZ2V0X3R5cGVfZm9yX21lbWJlcihfbWVtYmVyKQorICAgICAgICBleHByZXNz
aW9uID0gIm1fJXMiICUgX21lbWJlci5tZW1iZXJOYW1lCisgICAgICAgIGlmIF90eXBlLnNoYXBl
LnNldHRpbmcoJ25vbmNvcHlhYmxlJyk6CisgICAgICAgICAgICBleHByZXNzaW9uID0gIioiICsg
ZXhwcmVzc2lvbgorCisgICAgICAgIHJldHVybiBleHByZXNzaW9uCisKKyAgICBkZWYgZ2VuZXJh
dGVfbWVtYmVyX21vdmVfZXhwcmVzc2lvbihzZWxmLCBfbWVtYmVyKToKKyAgICAgICAgX3R5cGUg
PSBzZWxmLl9tb2RlbC5nZXRfdHlwZV9mb3JfbWVtYmVyKF9tZW1iZXIpCisgICAgICAgIGlmIF90
eXBlLnNoYXBlLnNldHRpbmcoJ25vbmNvcHlhYmxlJyk6CisgICAgICAgICAgICByZXR1cm4gInN0
ZDo6bW92ZSglcykiICUgX21lbWJlci5tZW1iZXJOYW1lCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICByZXR1cm4gX21lbWJlci5tZW1iZXJOYW1lCisKKyAgICBkZWYgZ2VuZXJhdGVfY29uc3Ry
dWN0b3JfYXJndW1lbnRzX2xpc3Qoc2VsZiwgX2lucHV0KToKKyAgICAgICAgcmV0dXJuICIsICIu
am9pbihbc2VsZi5nZW5lcmF0ZV9tZW1iZXJfbW92ZV9leHByZXNzaW9uKF9tZW1iZXIpIGZvciBf
bWVtYmVyIGluIF9pbnB1dC5tZW1iZXJzXSkKKworCitkZWYgZ2VuZXJhdGVfZnJvbV9zcGVjaWZp
Y2F0aW9uKGlucHV0X2ZpbGVwYXRoPU5vbmUsIG91dHB1dF9wcmVmaXg9IiIsIG91dHB1dF9kaXJw
YXRoPU5vbmUsIGZyYW1ld29ya19uYW1lPU5vbmUsIGZvcmNlX291dHB1dD1GYWxzZSk6CisgICAg
dHJ5OgorICAgICAgICB3aXRoIG9wZW4oaW5wdXRfZmlsZXBhdGgsICJyIikgYXMgaW5wdXRfZmls
ZToKKyAgICAgICAgICAgIHBhcnNlZF9qc29uID0ganNvbi5sb2FkKGlucHV0X2ZpbGUpCisgICAg
ZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFcnJvciBw
YXJzaW5nIHZhbGlkIEpTT04gaW4gZmlsZTogIiArIGlucHV0X2ZpbGVwYXRoKQorCisgICAgaWYg
bm90IGZyYW1ld29ya19uYW1lIGluIEZSQU1FV09SS19DT05GSUdfTUFQOgorICAgICAgICByYWlz
ZSBQYXJzZUV4Y2VwdGlvbigiVW5rbm93biBvciB1bnN1cHBvcnRlZCBmcmFtZXdvcmsgbmFtZSBz
dXBwbGllZDogIiArIGZyYW1ld29ya19uYW1lKQorCisgICAgbW9kZWwgPSBJbnB1dHNNb2RlbChw
YXJzZWRfanNvbikKKyAgICBtb2RlbC50eXBlY2hlY2soKQorICAgIGdlbmVyYXRvciA9IEdlbmVy
YXRvcihtb2RlbCwgZnJhbWV3b3JrX25hbWUsIGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRfcHJlZml4
KQorCisgICAgZ2VuZXJhdG9yLndyaXRlX291dHB1dF9maWxlcyhvdXRwdXRfZGlycGF0aCwgZm9y
Y2Vfb3V0cHV0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgYWxsb3dlZF9m
cmFtZXdvcmtfbmFtZXMgPSBGUkFNRVdPUktfQ09ORklHX01BUC5rZXlzKCkKKworICAgIGNsaV9w
YXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9InVzYWdlOiAlcHJvZyBbb3B0aW9u
c10gPElucHV0cy5qc29uPiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItbyIsICItLW91
dHB1dERpciIsIGhlbHA9IkRpcmVjdG9yeSB3aGVyZSBnZW5lcmF0ZWQgZmlsZXMgc2hvdWxkIGJl
IHdyaXR0ZW4uIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi0tZnJhbWV3b3JrIiwgdHlw
ZT0iY2hvaWNlIiwgY2hvaWNlcz1hbGxvd2VkX2ZyYW1ld29ya19uYW1lcywgaGVscD0iVGhlIGZy
YW1ld29yayB0aGVzZSBpbnB1dHMgYmVsb25nIHRvLiIpICAjIEphdmFTY3JpcHRDb3JlLCBXZWJD
b3JlCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItLWZvcmNlIiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwgaGVscD0iRm9yY2Ugb3V0cHV0IG9mIGdlbmVyYXRlZCBzY3JpcHRzLCBldmVuIGlmIG5v
dGhpbmcgY2hhbmdlZC4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXYiLCAiLS1kZWJ1
ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkxvZyBleHRyYSBvdXRwdXQgZm9yIGRlYnVn
Z2luZyB0aGUgZ2VuZXJhdG9yIGl0c2VsZi4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigi
LXQiLCAiLS10ZXN0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iRW5hYmxlIHRlc3QgbW9k
ZS4gVXNlIHVuaXF1ZSBvdXRwdXQgZmlsZW5hbWVzIGNyZWF0ZWQgYnkgcHJlcGVuZGluZyB0aGUg
aW5wdXQgZmlsZW5hbWUuIikKKworICAgIG9wdGlvbnMgPSBOb25lCisKKyAgICBhcmdfb3B0aW9u
cywgYXJnX3ZhbHVlcyA9IGNsaV9wYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgKGxlbihhcmdf
dmFsdWVzKSA8IDEpOgorICAgICAgICBjbGlfcGFyc2VyLmVycm9yKCJBdCBsZWFzdCBvbmUgcGxh
aW4gYXJndW1lbnQgZXhwZWN0ZWQiKQorCisgICAgaWYgbm90IGFyZ19vcHRpb25zLm91dHB1dERp
cjoKKyAgICAgICAgY2xpX3BhcnNlci5lcnJvcigiTWlzc2luZyBvdXRwdXQgZGlyZWN0b3J5IikK
KworICAgIGlmIGFyZ19vcHRpb25zLmRlYnVnOgorICAgICAgICBsb2cuc2V0TGV2ZWwobG9nZ2lu
Zy5ERUJVRykKKworICAgIG9wdGlvbnMgPSB7CisgICAgICAgICdpbnB1dF9maWxlcGF0aCc6IGFy
Z192YWx1ZXNbMF0sCisgICAgICAgICdvdXRwdXRfZGlycGF0aCc6IGFyZ19vcHRpb25zLm91dHB1
dERpciwKKyAgICAgICAgJ291dHB1dF9wcmVmaXgnOiBvcy5wYXRoLmJhc2VuYW1lKGFyZ192YWx1
ZXNbMF0pIGlmIGFyZ19vcHRpb25zLnRlc3QgZWxzZSAiIiwKKyAgICAgICAgJ2ZyYW1ld29ya19u
YW1lJzogYXJnX29wdGlvbnMuZnJhbWV3b3JrLAorICAgICAgICAnZm9yY2Vfb3V0cHV0JzogYXJn
X29wdGlvbnMuZm9yY2UKKyAgICB9CisKKyAgICB0cnk6CisgICAgICAgIGdlbmVyYXRlX2Zyb21f
c3BlY2lmaWNhdGlvbigqKm9wdGlvbnMpCisgICAgZXhjZXB0IChQYXJzZUV4Y2VwdGlvbiwgVHlw
ZWNoZWNrRXhjZXB0aW9uKSBhcyBlOgorICAgICAgICBpZiBhcmdfb3B0aW9ucy50ZXN0OgorICAg
ICAgICAgICAgbG9nLmVycm9yKGUubWVzc2FnZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHJhaXNlIGUgICMgRm9yY2UgdGhlIGJ1aWxkIHRvIGZhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0c1Rl
bXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YTg4ZjJlOTY5Nzk2
Y2Y1ZTBmYjRkMWRjNTUzZThkODE1MTIzNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0c1RlbXBs
YXRlcy5weQpAQCAtMCwwICsxLDIyNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisjIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRAorIyBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgR2VuZXJhdG9yIHRlbXBsYXRlcywgd2hpY2gg
Y2FuIGJlIGZpbGxlZCB3aXRoIHN0cmluZy5UZW1wbGF0ZS4KKyMgRm9sbG93aW5nIGFyZSBjbGFz
c2VzIHRoYXQgZmlsbCB0aGUgdGVtcGxhdGVzIGZyb20gdGhlIHR5cGVjaGVja2VkIG1vZGVsLgor
CisKK2NsYXNzIFRlbXBsYXRlczoKKyAgICBDb3B5cmlnaHRCbG9jayA9ICIiIi8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSAke2lucHV0RmlsZW5hbWV9CisvLyBieSB0aGUgc2Ny
aXB0OiBKYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5w
dXRzLnB5IiIiCisKKyAgICBIZWFkZXJTa2VsZXRvbiA9ICIiIiR7bGljZW5zZUJsb2NrfQorCisj
aWZuZGVmICR7aGVhZGVyX2d1YXJkfQorI2RlZmluZSAke2hlYWRlcl9ndWFyZH0KKworI2lmICR7
Z3VhcmRDb25kaXRpb259Ciske2luY2x1ZGVzfQorCiske3R5cGVGb3J3YXJkRGVjbGFyYXRpb25z
fQorCituYW1lc3BhY2UgJHtpbnB1dHNOYW1lc3BhY2V9IHsKKyR7aW5wdXRGb3J3YXJkRGVjbGFy
YXRpb25zfQorfSAvLyBuYW1lc3BhY2UgJHtpbnB1dHNOYW1lc3BhY2V9CisKK25hbWVzcGFjZSAk
e3RyYWl0c05hbWVzcGFjZX0geworJHtpbnB1dFRyYWl0RGVjbGFyYXRpb25zfQorJHtlbnVtVHJh
aXREZWNsYXJhdGlvbnN9Cit9IC8vIG5hbWVzcGFjZSAke3RyYWl0c05hbWVzcGFjZX0KKworbmFt
ZXNwYWNlICR7aW5wdXRzTmFtZXNwYWNlfSB7Ciske2lucHV0Q2xhc3NEZWNsYXJhdGlvbnN9Cit9
IC8vIG5hbWVzcGFjZSAke2lucHV0c05hbWVzcGFjZX0KKworJHtmb3JFYWNoTWFjcm99CisKKyNl
bmRpZiAvLyAke2d1YXJkQ29uZGl0aW9ufQorCisjZW5kaWYgLy8gJHtoZWFkZXJfZ3VhcmR9Cisi
IiIKKworICAgIElucHV0VHJhaXRzRGVjbGFyYXRpb24gPSAiIiJ0ZW1wbGF0ZTw+ICR7c3RydWN0
T3JDbGFzc30gSW5wdXRUcmFpdHM8JHtxdWFsaWZpZWRJbnB1dE5hbWV9PiB7CisgICAgc3RhdGlj
IElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjoke3F1ZXVlVHlwZX07IH0K
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CisKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCAke3F1YWxpZmllZElucHV0TmFtZX0m
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1
ZV9wdHI8JHtxdWFsaWZpZWRJbnB1dE5hbWV9PiYpOworfTsiIiIKKworICAgIEVudW1UcmFpdERl
Y2xhcmF0aW9uID0gIiIidGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8JHtlbnVtTmFt
ZX0+IHsKKyAgICB0eXBlZGVmICR7ZW51bU5hbWV9IERlY29kZWRUeXBlOworICAgIHR5cGVkZWYg
c3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gRW5jb2RlZFR5cGU7CisgICAgc3RhdGljIGNv
bnN0IEVuY29kZWRWYWx1ZTo6U2hhcGUgU2hhcGUgPSBFbmNvZGVkVmFsdWU6OlNoYXBlOjpMaXN0
OworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVuY29kZVZhbHVl
KGNvbnN0ICR7ZW51bU5hbWV9JiB2YWx1ZSk7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUo
c3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4mLCAke2VudW1OYW1lfSYgdmFsdWUpOworfTsi
IiIKKworICAgIEVudW1DbGFzc1RyYWl0RGVjbGFyYXRpb24gPSAiIiJ0ZW1wbGF0ZTw+IHN0cnVj
dCBFbmNvZGluZ1RyYWl0czwke2VudW1OYW1lfT4geworICAgIHR5cGVkZWYgJHtlbnVtTmFtZX0g
RGVjb2RlZFR5cGU7CisgICAgdHlwZWRlZiBTdHJpbmcgRW5jb2RlZFR5cGU7CisgICAgc3RhdGlj
IGNvbnN0IEVuY29kZWRWYWx1ZTo6U2hhcGUgU2hhcGUgPSBFbmNvZGVkVmFsdWU6OlNoYXBlOjpT
Y2FsYXI7CisKKyAgICBzdGF0aWMgU3RyaW5nIGVuY29kZVZhbHVlKGNvbnN0ICR7ZW51bU5hbWV9
JiB2YWx1ZSk7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoU3RyaW5nJiwgJHtlbnVtTmFt
ZX0mIHZhbHVlKTsKK307IiIiCisKKyAgICBJbnB1dENsYXNzRGVjbGFyYXRpb24gPSAiIiJjbGFz
cyAke2lucHV0TmFtZX0gOiBwdWJsaWMgJHtiYXNlQ2xhc3N9IHsKK3B1YmxpYzoKKyR7aW5wdXRD
b25zdHJ1Y3Rvcn0KKyR7aW5wdXREZXN0cnVjdG9yfQorJHtleHRyYURlY2xhcmF0aW9uc30KKyR7
bWVtYmVyR2V0dGVyc30KKyR7bWVtYmVyRGVjbGFyYXRpb25zfQorfTsiIiIKKworICAgIEltcGxl
bWVudGF0aW9uU2tlbGV0b24gPSAiIiIke2xpY2Vuc2VCbG9ja30KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIiR7ZmlsZW5hbWV9LmgiCisKKyNpZiAke2d1YXJkQ29uZGl0aW9ufQor
JHtpbmNsdWRlc30KKworbmFtZXNwYWNlICR7aW5wdXRzTmFtZXNwYWNlfSB7Ciske2lucHV0Q2xh
c3NJbXBsZW1lbnRhdGlvbnN9Cit9IC8vIG5hbWVzcGFjZSAke2lucHV0c05hbWVzcGFjZX0KKwor
bmFtZXNwYWNlICR7dHJhaXRzTmFtZXNwYWNlfSB7Ciske2lucHV0VHJhaXRJbXBsZW1lbnRhdGlv
bnN9Ciske2VudW1UcmFpdEltcGxlbWVudGF0aW9uc30KK30gLy8gbmFtZXNwYWNlICR7dHJhaXRz
TmFtZXNwYWNlfQorCisjZW5kaWYgLy8gJHtndWFyZENvbmRpdGlvbn0KKyIiIgorCisgICAgSW5w
dXRUcmFpdHNJbXBsZW1lbnRhdGlvbiA9ICIiImNvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFp
dHM8JHtxdWFsaWZpZWRJbnB1dE5hbWV9Pjo6dHlwZSgpCit7CiskaW5wdXRUeXBlSW1wbGVtZW50
YXRpb24KK30KKwordm9pZCBJbnB1dFRyYWl0czwke3F1YWxpZmllZElucHV0TmFtZX0+OjplbmNv
ZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0ICR7cXVhbGlmaWVkSW5wdXROYW1l
fSYgaW5wdXQpCit7Ciske2VuY29kZVN0ZXBzfQorfQorCitib29sIElucHV0VHJhaXRzPCR7cXVh
bGlmaWVkSW5wdXROYW1lfT46OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3Rk
Ojp1bmlxdWVfcHRyPCR7cXVhbGlmaWVkSW5wdXROYW1lfT4mIGlucHV0KQoreworJHtkZWNvZGVT
dGVwc30KKyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8JHtxdWFsaWZpZWRJbnB1dE5hbWV9
Pigke2NvbnN0cnVjdG9yQXJndW1lbnRzfSk7CisgICAgcmV0dXJuIHRydWU7Cit9IiIiCisKKyAg
ICBFbnVtQ2xhc3NUcmFpdEltcGxlbWVudGF0aW9uID0gIiIiU3RyaW5nIEVuY29kaW5nVHJhaXRz
PCR7ZW51bU5hbWV9Pjo6ZW5jb2RlVmFsdWUoY29uc3QgJHtlbnVtTmFtZX0mIGVudW1WYWx1ZSkK
K3sKKyAgICBzd2l0Y2ggKGVudW1WYWx1ZSkgeworJHtlbmNvZGVDYXNlc30KKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiRXJyb3IhIik7CisgICAgfQorfQorCitib29sIEVuY29kaW5nVHJhaXRzPCR7ZW51bU5h
bWV9Pjo6ZGVjb2RlVmFsdWUoU3RyaW5nJiBlbmNvZGVkVmFsdWUsICR7ZW51bU5hbWV9JiBlbnVt
VmFsdWUpCit7Ciske2RlY29kZUNhc2VzfQorICAgIHJldHVybiBmYWxzZTsKK30iIiIKKworICAg
IEVudW1DbGFzc0VuY29kZUNhc2UgPSAiIiIgICAgY2FzZSAke3F1YWxpZmllZEVudW1WYWx1ZX06
IHJldHVybiBBU0NJSUxpdGVyYWwoIiR7ZW51bVN0cmluZ1ZhbHVlfSIpOyIiIgorCisgICAgRW51
bUNsYXNzRGVjb2RlQ2FzZSA9ICIiIiAgICBpZiAoZW5jb2RlZFZhbHVlID09IFN0cmluZyhBU0NJ
SUxpdGVyYWwoIiR7ZW51bVN0cmluZ1ZhbHVlfSIpKSkgeworICAgICAgICBlbnVtVmFsdWUgPSAk
e3F1YWxpZmllZEVudW1WYWx1ZX07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0iIiIKKwor
ICAgIEVudW1UcmFpdEltcGxlbWVudGF0aW9uID0gIiIic3RkOjp1bmlxdWVfcHRyPEVuY29kZWRW
YWx1ZT4gRW5jb2RpbmdUcmFpdHM8JHtlbnVtTmFtZX0+OjplbmNvZGVWYWx1ZShjb25zdCAke2Vu
dW1OYW1lfSYgZW51bVZhbHVlKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+
IGVuY29kZWRWYWx1ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKTsKKyR7ZW5j
b2RlQ2FzZXN9CisgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOworfQorCitib29s
IEVuY29kaW5nVHJhaXRzPCR7ZW51bU5hbWV9Pjo6ZGVjb2RlVmFsdWUoc3RkOjp1bmlxdWVfcHRy
PEVuY29kZWRWYWx1ZT4mIGVuY29kZWRWYWx1ZSwgJHtlbnVtTmFtZX0mIGVudW1WYWx1ZSkKK3sK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkgPSBl
bmNvZGVkVmFsdWUtPmluc3BlY3RvclZhbHVlKCktPmFzQXJyYXkoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGluc3BlY3RvckFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFN0
cmluZyBlbmNvZGVkRW51bVZhbHVlOworICAgICAgICBpZiAoIWluc3BlY3RvckFycmF5LT5nZXQo
aSktPmFzU3RyaW5nKCZlbmNvZGVkRW51bVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyR7ZGVjb2RlQ2FzZXN9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9IiIiCisKKyAg
ICBFbnVtRW5jb2RlQ2FzZSA9ICIiIiAgICBpZiAoZW51bVZhbHVlICYgJHtxdWFsaWZpZWRFbnVt
VmFsdWV9KQorICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJh
bCgiJHtlbnVtU3RyaW5nVmFsdWV9IikpOworICAgIGlmIChlbnVtVmFsdWUgPT0gJHtxdWFsaWZp
ZWRFbnVtVmFsdWV9KQorICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7IiIi
CisKKyAgICBFbnVtRGVjb2RlQ2FzZSA9ICIiIiAgICAgICAgaWYgKGVuY29kZWRFbnVtVmFsdWUg
PT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiJHtlbnVtU3RyaW5nVmFsdWV9IikpKQorICAgICAgICAg
ICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8JHtxdWFsaWZpZWRFbnVtTmFtZX0+KGVudW1WYWx1
ZSB8ICR7cXVhbGlmaWVkRW51bVZhbHVlfSk7IiIiCisKKyAgICBJbnB1dFR5cGVGcm9tU3RhdGlj
TG9jYWwgPSAiIiIgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4g
dHlwZSgiJHtpbnB1dE5hbWV9IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgcmV0dXJuIHR5cGU7IiIiCisKKyAgICBJbnB1dFR5cGVGcm9tVGhyZWFkTG9jYWwgPSAi
ICAgIHJldHVybiBXZWJDb3JlOjppbnB1dFR5cGVzKCkuJHtpbnB1dE5hbWV9OyIKKworICAgIElu
cHV0Q2xhc3NJbXBsZW1lbnRhdGlvbiA9ICIiIiR7aW5wdXROYW1lfTo6JHtpbnB1dE5hbWV9KCR7
Y29uc3RydWN0b3JGb3JtYWxzTGlzdH0pCiske2luaXRpYWxpemVyTGlzdH0KK3sKK30KKworJHtp
bnB1dE5hbWV9Ojp+JHtpbnB1dE5hbWV9KCkKK3sKK30iIiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLWMtc3R5
bGUtZW51bS1uby1zdG9yYWdlLmpzb24tZXJyb3IgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1jLXN0eWxlLWVudW0tbm8tc3RvcmFn
ZS5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NjE3MzI4ZTgwOGExMzQxNTRkMmM1YjQ0MGU5MThh
ZDMwODk1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1jLXN0eWxlLWVudW0tbm8tc3RvcmFnZS5q
c29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBDLXN0eWxlIGVudW1zIG11c3QgYWxzbyBz
cGVjaWZ5IHRoZWlyIHN0b3JhZ2UgdHlwZSBzbyB0aGV5IGNhbiBiZSBmb3J3YXJkIGRlY2xhcmVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2ZhaWwtb24tZHVwbGljYXRlLWlucHV0LW5hbWVzLmpzb24tZXJyb3IgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1k
dXBsaWNhdGUtaW5wdXQtbmFtZXMuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzFlYzgwMjM2NTJj
YzM5MTQ3NTAwNmY5MTQwZTRlZTkxMGFjMTk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tZHVwbGlj
YXRlLWlucHV0LW5hbWVzLmpzb24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IER1cGxpY2F0
ZSBpbnB1dCB3aXRoIG5hbWU6IEdldEN1cnJlbnRUaW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1kdXBsaWNh
dGUtdHlwZS1uYW1lcy5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tZHVwbGljYXRlLXR5cGUtbmFtZXMuanNvbi1l
cnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMWU0YzQ3YmJmOTY4Mjg2ZmY5ODE5MTVkY2QyNDg0MWZkNzVkZTFh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tZHVwbGljYXRlLXR5cGUtbmFtZXMuanNvbi1lcnJvcgpA
QCAtMCwwICsxIEBACitFUlJPUjogRHVwbGljYXRlIHR5cGUgd2l0aCBuYW1lOiB1aW50NjRfdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2ZhaWwtb24tZW51bS10eXBlLW1pc3NpbmctdmFsdWVzLmpzb24tZXJyb3IgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1l
bnVtLXR5cGUtbWlzc2luZy12YWx1ZXMuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGEzNDhjZjZl
OTM3ZGJjMTI1ZTYyMWFhZWU3OTYzNTVhNzkwZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tZW51
bS10eXBlLW1pc3NpbmctdmFsdWVzLmpzb24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IFdo
ZW4gcGFyc2luZyBlbnVtLCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiB2YWx1ZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbWVtYmVyLW5hbWUuanNvbi1lcnJvciBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3Np
bmctaW5wdXQtbWVtYmVyLW5hbWUuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmIyODY5ZDJhZWI3
ZjZkOTU5NjczOWM4NGY1NDFlM2QyOGRhYTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tbWlzc2lu
Zy1pbnB1dC1tZW1iZXItbmFtZS5qc29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBXaGVu
IHBhcnNpbmcgbWVtYmVyLCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiBuYW1lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZmFpbC1vbi1taXNzaW5nLWlucHV0LW5hbWUuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctaW5wdXQt
bmFtZS5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1OTk2MDdhNzk2Njg2ZmEyZDAwZDhkOGQ4MzYz
NWI4ZDkwZWRkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LW5hbWUuanNv
bi1lcnJvcgpAQCAtMCwwICsxIEBACitFUlJPUjogV2hlbiBwYXJzaW5nIGlucHV0LCByZXF1aXJl
ZCBwcm9wZXJ0eSBtaXNzaW5nOiBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LXF1
ZXVlLmpzb24tZXJyb3IgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LXF1ZXVlLmpzb24tZXJyb3IKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzc5MTlhYjU1MWMyMWM4YmJmNjIwMTQyM2UxZjBmYzZhZTgwN2Y0NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9mYWlsLW9uLW1pc3NpbmctaW5wdXQtcXVldWUuanNvbi1lcnJvcgpAQCAtMCwwICsxIEBA
CitFUlJPUjogV2hlbiBwYXJzaW5nIGlucHV0LCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiBx
dWV1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2ZhaWwtb24tbWlzc2luZy10eXBlLW1vZGUuanNvbi1lcnJvciBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1p
c3NpbmctdHlwZS1tb2RlLmpzb24tZXJyb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc3M2IwZDgwMDAxMGExZjJl
MDI3YTA5YjYzMTYzMmJjMjBmMmU5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctdHlw
ZS1tb2RlLmpzb24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IFdoZW4gcGFyc2luZyB0eXBl
LCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiBzaGFwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tbWlzc2lu
Zy10eXBlLW5hbWUuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctdHlwZS1uYW1lLmpzb24tZXJyb3IK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGFhZDkwMDE5NWVkNjMyYjVmN2I2NGNiYzUxOTZiZjA3NDkxMzNiYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctdHlwZS1uYW1lLmpzb24tZXJyb3IKQEAgLTAsMCAr
MSBAQAorRVJST1I6IFdoZW4gcGFyc2luZyB0eXBlLCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5n
OiBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1uby1pbnB1dHMuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW5vLWlucHV0
cy5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5NWFjZTc2OGNkZTcyYmVjMWE2YzAzMzI3NTExZWQy
ZTc5NzlmMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1uby1pbnB1dHMuanNvbi1lcnJvcgpAQCAt
MCwwICsxIEBACitFUlJPUjogV2hlbiBwYXJzaW5nIHRvcGxldmVsLCByZXF1aXJlZCBwcm9wZXJ0
eSBtaXNzaW5nOiBpbnB1dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBs
YXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW5vLXR5cGVzLmpzb24tZXJyb3IgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1v
bi1uby10eXBlcy5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMzFjOGQ1ZDFkNjE0NTI0OGJmM2Zi
YTAzN2NjZmNlYzg2NzNiYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1uby10eXBlcy5qc29uLWVy
cm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBXaGVuIHBhcnNpbmcgdG9wbGV2ZWwsIHJlcXVpcmVk
IHByb3BlcnR5IG1pc3Npbmc6IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi11bmtub3duLWlucHV0LXF1
ZXVlLmpzb24tZXJyb3IgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZmFpbC1vbi11bmtub3duLWlucHV0LXF1ZXVlLmpzb24tZXJyb3IKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWNmNDY5YjY4NjBmN2JkMGNjYWUzMDk3M2ZjNTMwMjBjOTZhMjUwYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9mYWlsLW9uLXVua25vd24taW5wdXQtcXVldWUuanNvbi1lcnJvcgpAQCAtMCwwICsxIEBA
CitFUlJPUjogVW5rbm93biBpbnB1dCBxdWV1ZTogU0NSSVBUX01FT0laRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWls
LW9uLXVua25vd24tbWVtYmVyLXR5cGUuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLXVua25vd24tbWVtYmVyLXR5
cGUuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWMyZWI4YjI1NzFjYzcxNDA0NGJlZDhjMmJlMjJk
NGExZjFmZGYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tdW5rbm93bi1tZW1iZXItdHlwZS5qc29u
LWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBVbmtub3duIHR5cGUgZG91YmxlIHJlZmVyZW5j
ZWQgaW4gbWVtYmVyIHJhbmRvbVNlZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLXVua25vd24tdHlwZS1zaGFw
ZS5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2ZhaWwtb24tdW5rbm93bi10eXBlLXNoYXBlLmpzb24tZXJyb3IKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODBmYWQ4YzkzMjA4MTNhYjBmZWNiZjQzN2QwZGYxZjkwNDJhZjY0OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9mYWlsLW9uLXVua25vd24tdHlwZS1zaGFwZS5qc29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VS
Uk9SOiBVbmtub3duIHR5cGUgc2hhcGU6IEJPTktFUlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVu
Y29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy13aXRoLWd1YXJkZWQtdmFsdWVzLmpzb24t
VGVzdFJlcGxheUlucHV0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdkYTg0ZjYxMjFkMWNkNzNkZGQyZDgz
MDc4ZWMwMjdhZWI0MjBlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhl
bHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCkBAIC0w
LDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwor
ICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZ2VuZXJh
dGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbgorLy8gYnkg
dGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0cy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZ2VuZXJhdGUt
ZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5
SW5wdXRzLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJbnRlcm5hbE5h
bWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaCIKKyNpbmNsdWRlIDxwbGF0Zm9ybS9FeHRlcm5hbE5h
bWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaD4KKyNpbmNsdWRlIDxwbGF0Zm9ybS9QbGF0Zm9ybU1v
dXNlRXZlbnQuaD4KKworbmFtZXNwYWNlIFRlc3QgeworU2F2ZWRNb3VzZUJ1dHRvbjo6U2F2ZWRN
b3VzZUJ1dHRvbihNb3VzZUJ1dHRvbiBidXR0b24pCisgICAgOiBOb25kZXRlcm1pbmlzdGljSW5w
dXQ8U2F2ZWRNb3VzZUJ1dHRvbj4oKQorICAgICwgbV9idXR0b24oYnV0dG9uKQoreworfQorCitT
YXZlZE1vdXNlQnV0dG9uOjp+U2F2ZWRNb3VzZUJ1dHRvbigpCit7Cit9Cit9IC8vIG5hbWVzcGFj
ZSBUZXN0CisKK25hbWVzcGFjZSBKU0MgeworY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dFRyYWl0
czxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHlwZSgiU2F2ZWRNb3VzZUJ1dHRvbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB0eXBlOworfQorCit2
b2lkIElucHV0VHJhaXRzPFRlc3Q6OlNhdmVkTW91c2VCdXR0b24+OjplbmNvZGUoRW5jb2RlZFZh
bHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFRlc3Q6OlNhdmVkTW91c2VCdXR0b24mIGlucHV0KQor
eworICAgIGVuY29kZWRWYWx1ZS5wdXQ8V2ViQ29yZTo6TW91c2VCdXR0b24+KEFTQ0lJTGl0ZXJh
bCgiYnV0dG9uIiksIGlucHV0LmJ1dHRvbigpKTsKK30KKworYm9vbCBJbnB1dFRyYWl0czxUZXN0
OjpTYXZlZE1vdXNlQnV0dG9uPjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBz
dGQ6OnVuaXF1ZV9wdHI8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj4mIGlucHV0KQoreworICAgIFdl
YkNvcmU6Ok1vdXNlQnV0dG9uIGJ1dHRvbjsKKyAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8V2Vi
Q29yZTo6TW91c2VCdXR0b24+KEFTQ0lJTGl0ZXJhbCgiYnV0dG9uIiksIGJ1dHRvbikpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0OjpT
YXZlZE1vdXNlQnV0dG9uPihidXR0b24pOworICAgIHJldHVybiB0cnVlOworfQorc3RkOjp1bmlx
dWVfcHRyPEVuY29kZWRWYWx1ZT4gRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6TW91c2VCdXR0b24+
OjplbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpNb3VzZUJ1dHRvbiYgZW51bVZhbHVlKQorewor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVuY29kZWRWYWx1ZSA9IEVuY29kZWRW
YWx1ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKTsKKyAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6
Tm9CdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRl
cmFsKCJOb0J1dHRvbiIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6Ok5vQnV0dG9u
KQorICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKGVudW1W
YWx1ZSAmIFdlYkNvcmU6OkxlZnRCdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5k
PFN0cmluZz4oQVNDSUlMaXRlcmFsKCJMZWZ0QnV0dG9uIikpOworICAgIGlmIChlbnVtVmFsdWUg
PT0gV2ViQ29yZTo6TGVmdEJ1dHRvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVk
VmFsdWUpOworICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpNaWRkbGVCdXR0b24pCisgICAg
ICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJNaWRkbGVCdXR0
b24iKSk7CisgICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpNaWRkbGVCdXR0b24pCisgICAg
ICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKKyAgICBpZiAoZW51bVZhbHVlICYg
V2ViQ29yZTo6UmlnaHRCdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmlu
Zz4oQVNDSUlMaXRlcmFsKCJSaWdodEJ1dHRvbiIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdl
YkNvcmU6OlJpZ2h0QnV0dG9uKQorICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1
ZSk7CisjaWYgRU5BQkxFKFNJREVfQlVUVE9OUykKKyAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29y
ZTo6TGVmdFNpZGVCdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4o
QVNDSUlMaXRlcmFsKCJMZWZ0U2lkZUJ1dHRvbiIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdl
YkNvcmU6OkxlZnRTaWRlQnV0dG9uKQorICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRW
YWx1ZSk7CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6OlJpZ2h0U2lkZUJ1dHRvbikKKyAg
ICAgICAgZW5jb2RlZFZhbHVlLT5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlJpZ2h0U2lk
ZUJ1dHRvbiIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6OlJpZ2h0U2lkZUJ1dHRv
bikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOworI2VuZGlmIC8vIEVO
QUJMRShTSURFX0JVVFRPTlMpCisjaWYgUExBVEZPUk0oV0lORE9XUykKKyAgICBpZiAoZW51bVZh
bHVlICYgV2ViQ29yZTo6V2luZG93c0J1dHRvbikKKyAgICAgICAgZW5jb2RlZFZhbHVlLT5hcHBl
bmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIldpbmRvd3NCdXR0b24iKSk7CisgICAgaWYgKGVudW1W
YWx1ZSA9PSBXZWJDb3JlOjpXaW5kb3dzQnV0dG9uKQorICAgICAgICByZXR1cm4gc3RkOjptb3Zl
KGVuY29kZWRWYWx1ZSk7CisjZW5kaWYgLy8gUExBVEZPUk0oV0lORE9XUykKKyAgICByZXR1cm4g
c3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7Cit9CisKK2Jvb2wgRW5jb2RpbmdUcmFpdHM8V2ViQ29y
ZTo6TW91c2VCdXR0b24+OjpkZWNvZGVWYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVl
PiYgZW5jb2RlZFZhbHVlLCBXZWJDb3JlOjpNb3VzZUJ1dHRvbiYgZW51bVZhbHVlKQoreworICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbnNwZWN0b3JBcnJheSA9IGVuY29k
ZWRWYWx1ZS0+aW5zcGVjdG9yVmFsdWUoKS0+YXNBcnJheSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW5zcGVjdG9yQXJyYXktPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgU3RyaW5n
IGVuY29kZWRFbnVtVmFsdWU7CisgICAgICAgIGlmICghaW5zcGVjdG9yQXJyYXktPmdldChpKS0+
YXNTdHJpbmcoJmVuY29kZWRFbnVtVmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJOb0J1
dHRvbiIpKSkKKyAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1v
dXNlQnV0dG9uPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpOb0J1dHRvbik7CisgICAgICAgIGlmIChl
bmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIkxlZnRCdXR0b24iKSkpCisg
ICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUJ1dHRvbj4o
ZW51bVZhbHVlIHwgV2ViQ29yZTo6TGVmdEJ1dHRvbik7CisgICAgICAgIGlmIChlbmNvZGVkRW51
bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIk1pZGRsZUJ1dHRvbiIpKSkKKyAgICAgICAg
ICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1vdXNlQnV0dG9uPihlbnVtVmFs
dWUgfCBXZWJDb3JlOjpNaWRkbGVCdXR0b24pOworICAgICAgICBpZiAoZW5jb2RlZEVudW1WYWx1
ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJSaWdodEJ1dHRvbiIpKSkKKyAgICAgICAgICAgIGVu
dW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1vdXNlQnV0dG9uPihlbnVtVmFsdWUgfCBX
ZWJDb3JlOjpSaWdodEJ1dHRvbik7CisjaWYgRU5BQkxFKFNJREVfQlVUVE9OUykKKyAgICAgICAg
aWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTGVmdFNpZGVCdXR0
b24iKSkpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3Vz
ZUJ1dHRvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6TGVmdFNpZGVCdXR0b24pOworICAgICAgICBp
ZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJSaWdodFNpZGVCdXR0
b24iKSkpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3Vz
ZUJ1dHRvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6UmlnaHRTaWRlQnV0dG9uKTsKKyNlbmRpZiAv
LyBFTkFCTEUoU0lERV9CVVRUT05TKQorI2lmIFBMQVRGT1JNKFdJTkRPV1MpCisgICAgICAgIGlm
IChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIldpbmRvd3NCdXR0b24i
KSkpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUJ1
dHRvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6V2luZG93c0J1dHRvbik7CisjZW5kaWYgLy8gUExB
VEZPUk0oV0lORE9XUykKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
ZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5
SW5wdXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMu
anNvbi1UZXN0UmVwbGF5SW5wdXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI5ZDE4OWY3ZWYxMDBkZjdjZThk
NGI0YjliMWM3Y2UzNjU4MTA0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVuY29kaW5n
LWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaApAQCAt
MCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwor
ICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZ2VuZXJh
dGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbgorLy8gYnkg
dGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0cy5weQorCisjaWZuZGVmIGdlbmVyYXRlX2VudW1fZW5jb2RpbmdfaGVscGVyc193
aXRoX2d1YXJkZWRfdmFsdWVzX2pzb25fVGVzdFJlcGxheUlucHV0c19oCisjZGVmaW5lIGdlbmVy
YXRlX2VudW1fZW5jb2RpbmdfaGVscGVyc193aXRoX2d1YXJkZWRfdmFsdWVzX2pzb25fVGVzdFJl
cGxheUlucHV0c19oCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJbnRlcm5h
bE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3JtL0V4dGVy
bmFsTmFtZXNwYWNlSGVhZGVySW5jbHVkZUR1bW15Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2VudW0gTW91c2VCdXR0b24gOiB1bnNpZ25lZDsKK30KKworCituYW1lc3BhY2UgVGVzdCB7Citj
bGFzcyBTYXZlZE1vdXNlQnV0dG9uOworfSAvLyBuYW1lc3BhY2UgVGVzdAorCituYW1lc3BhY2Ug
SlNDIHsKK3RlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRlc3Q6OlNhdmVkTW91c2VCdXR0
b24+IHsKKyAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6
OlNjcmlwdE1lbW9pemVkRGF0YTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0
IFRlc3Q6OlNhdmVkTW91c2VCdXR0b24mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpF
bmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj4mKTsK
K307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpNb3VzZUJ1dHRv
bj4geworICAgIHR5cGVkZWYgV2ViQ29yZTo6TW91c2VCdXR0b24gRGVjb2RlZFR5cGU7CisgICAg
dHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBFbmNvZGVkVHlwZTsKKyAgICBz
dGF0aWMgY29uc3QgRW5jb2RlZFZhbHVlOjpTaGFwZSBTaGFwZSA9IEVuY29kZWRWYWx1ZTo6U2hh
cGU6Okxpc3Q7CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gZW5j
b2RlVmFsdWUoY29uc3QgV2ViQ29yZTo6TW91c2VCdXR0b24mIHZhbHVlKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGVWYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiYsIFdlYkNvcmU6
Ok1vdXNlQnV0dG9uJiB2YWx1ZSk7Cit9OworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFj
ZSBUZXN0IHsKK2NsYXNzIFNhdmVkTW91c2VCdXR0b24gOiBwdWJsaWMgTm9uZGV0ZXJtaW5pc3Rp
Y0lucHV0PFNhdmVkTW91c2VCdXR0b24+IHsKK3B1YmxpYzoKKyAgICBTYXZlZE1vdXNlQnV0dG9u
KE1vdXNlQnV0dG9uIGJ1dHRvbik7CisgICAgdmlydHVhbCB+U2F2ZWRNb3VzZUJ1dHRvbigpOwor
CisgICAgTW91c2VCdXR0b24gYnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9idXR0b247IH0KK3By
aXZhdGU6CisgICAgTW91c2VCdXR0b24gbV9idXR0b247Cit9OworfSAvLyBuYW1lc3BhY2UgVGVz
dAorCisjZGVmaW5lIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNIKG1hY3JvKSBcCisg
ICAgbWFjcm8oU2F2ZWRNb3VzZUJ1dHRvbikgXAorICAgIFwKKy8vIGVuZCBvZiBURVNUX1JFUExB
WV9JTlBVVF9OQU1FU19GT1JfRUFDSAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCisK
KyNlbmRpZiAvLyBnZW5lcmF0ZV9lbnVtX2VuY29kaW5nX2hlbHBlcnNfd2l0aF9ndWFyZGVkX3Zh
bHVlc19qc29uX1Rlc3RSZXBsYXlJbnB1dHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2Rp
bmctaGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2Rpbmct
aGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMWMyNTkxMjll
MDY4YTk5YWQ0NTgyNWZlMDdkYTRhMGZlN2U2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51
bS1lbmNvZGluZy1oZWxwZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAKQEAgLTAsMCArMSwx
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRI
SVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBnZW5lcmF0ZS1lbnVt
LWVuY29kaW5nLWhlbHBlcnMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24t
VGVzdFJlcGxheUlucHV0cy5oIgorCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisjaW5jbHVkZSAi
SW50ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15LmgiCisjaW5jbHVkZSA8cGxhdGZvcm0v
RXh0ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15Lmg+CisjaW5jbHVkZSA8cGxhdGZvcm0v
UGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CisjaW5jbHVkZSA8cmVwbGF5L05vbmRldGVybWluaXN0aWNJ
bnB1dC5oPgorCituYW1lc3BhY2UgVGVzdCB7CitTYXZlZE1vdXNlQnV0dG9uOjpTYXZlZE1vdXNl
QnV0dG9uKE1vdXNlQnV0dG9uIGJ1dHRvbikKKyAgICA6IE5vbmRldGVybWluaXN0aWNJbnB1dDxT
YXZlZE1vdXNlQnV0dG9uPigpCisgICAgLCBtX2J1dHRvbihidXR0b24pCit7Cit9CisKK1NhdmVk
TW91c2VCdXR0b246On5TYXZlZE1vdXNlQnV0dG9uKCkKK3sKK30KK30gLy8gbmFtZXNwYWNlIFRl
c3QKKworbmFtZXNwYWNlIEpTQyB7Citjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRl
c3Q6OlNhdmVkTW91c2VCdXR0b24+Ojp0eXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0eXBlKCJTYXZlZE1vdXNlQnV0dG9uIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK3ZvaWQg
SW5wdXRUcmFpdHM8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj46OmVuY29kZShFbmNvZGVkVmFsdWUm
IGVuY29kZWRWYWx1ZSwgY29uc3QgVGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbiYgaW5wdXQpCit7Cisg
ICAgZW5jb2RlZFZhbHVlLnB1dDxXZWJDb3JlOjpNb3VzZUJ1dHRvbj4oQVNDSUlMaXRlcmFsKCJi
dXR0b24iKSwgaW5wdXQuYnV0dG9uKCkpOworfQorCitib29sIElucHV0VHJhaXRzPFRlc3Q6OlNh
dmVkTW91c2VCdXR0b24+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6
dW5pcXVlX3B0cjxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPiYgaW5wdXQpCit7CisgICAgV2ViQ29y
ZTo6TW91c2VCdXR0b24gYnV0dG9uOworICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxXZWJDb3Jl
OjpNb3VzZUJ1dHRvbj4oQVNDSUlMaXRlcmFsKCJidXR0b24iKSwgYnV0dG9uKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3Q6OlNhdmVk
TW91c2VCdXR0b24+KGJ1dHRvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CitTdHJpbmcgRW5jb2Rp
bmdUcmFpdHM8SW5wdXRRdWV1ZT46OmVuY29kZVZhbHVlKGNvbnN0IElucHV0UXVldWUmIGVudW1W
YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGVudW1WYWx1ZSkgeworICAgIGNhc2UgSW5wdXRRdWV1ZTo6
RXZlbnRMb29wSW5wdXQ6IHJldHVybiBBU0NJSUxpdGVyYWwoIkV2ZW50TG9vcElucHV0Iik7Cisg
ICAgY2FzZSBJbnB1dFF1ZXVlOjpMb2FkZXJNZW1vaXplZERhdGE6IHJldHVybiBBU0NJSUxpdGVy
YWwoIkxvYWRlck1lbW9pemVkRGF0YSIpOworICAgIGNhc2UgSW5wdXRRdWV1ZTo6U2NyaXB0TWVt
b2l6ZWREYXRhOiByZXR1cm4gQVNDSUlMaXRlcmFsKCJTY3JpcHRNZW1vaXplZERhdGEiKTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiRXJyb3IhIik7CisgICAgfQorfQorCitib29sIEVuY29kaW5nVHJhaXRz
PElucHV0UXVldWU+OjpkZWNvZGVWYWx1ZShTdHJpbmcmIGVuY29kZWRWYWx1ZSwgSW5wdXRRdWV1
ZSYgZW51bVZhbHVlKQoreworICAgIGlmIChlbmNvZGVkVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0
ZXJhbCgiRXZlbnRMb29wSW5wdXQiKSkpIHsKKyAgICAgICAgZW51bVZhbHVlID0gSW5wdXRRdWV1
ZTo6RXZlbnRMb29wSW5wdXQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAo
ZW5jb2RlZFZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIkxvYWRlck1lbW9pemVkRGF0YSIp
KSkgeworICAgICAgICBlbnVtVmFsdWUgPSBJbnB1dFF1ZXVlOjpMb2FkZXJNZW1vaXplZERhdGE7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoZW5jb2RlZFZhbHVlID09IFN0
cmluZyhBU0NJSUxpdGVyYWwoIlNjcmlwdE1lbW9pemVkRGF0YSIpKSkgeworICAgICAgICBlbnVt
VmFsdWUgPSBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERhdGE7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxFbmNv
ZGVkVmFsdWU+IEVuY29kaW5nVHJhaXRzPFdlYkNvcmU6Ok1vdXNlQnV0dG9uPjo6ZW5jb2RlVmFs
dWUoY29uc3QgV2ViQ29yZTo6TW91c2VCdXR0b24mIGVudW1WYWx1ZSkKK3sKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBlbmNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmNyZWF0
ZUVuY29kZWRMaXN0KCk7CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6Ok5vQnV0dG9uKQor
ICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiTm9CdXR0
b24iKSk7CisgICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpOb0J1dHRvbikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOworICAgIGlmIChlbnVtVmFsdWUgJiBXZWJD
b3JlOjpMZWZ0QnV0dG9uKQorICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFT
Q0lJTGl0ZXJhbCgiTGVmdEJ1dHRvbiIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6
OkxlZnRCdXR0b24pCisgICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6TWlkZGxlQnV0dG9uKQorICAgICAgICBlbmNvZGVk
VmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiTWlkZGxlQnV0dG9uIikpOworICAg
IGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6TWlkZGxlQnV0dG9uKQorICAgICAgICByZXR1cm4g
c3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6OlJp
Z2h0QnV0dG9uKQorICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0
ZXJhbCgiUmlnaHRCdXR0b24iKSk7CisgICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpSaWdo
dEJ1dHRvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOworICAgIHJl
dHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKK30KKworYm9vbCBFbmNvZGluZ1RyYWl0czxX
ZWJDb3JlOjpNb3VzZUJ1dHRvbj46OmRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVk
VmFsdWU+JiBlbmNvZGVkVmFsdWUsIFdlYkNvcmU6Ok1vdXNlQnV0dG9uJiBlbnVtVmFsdWUpCit7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGluc3BlY3RvckFycmF5ID0g
ZW5jb2RlZFZhbHVlLT5pbnNwZWN0b3JWYWx1ZSgpLT5hc0FycmF5KCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBpbnNwZWN0b3JBcnJheS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBT
dHJpbmcgZW5jb2RlZEVudW1WYWx1ZTsKKyAgICAgICAgaWYgKCFpbnNwZWN0b3JBcnJheS0+Z2V0
KGkpLT5hc1N0cmluZygmZW5jb2RlZEVudW1WYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwo
Ik5vQnV0dG9uIikpKQorICAgICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6TW91c2VCdXR0b24+KGVudW1WYWx1ZSB8IFdlYkNvcmU6Ok5vQnV0dG9uKTsKKyAgICAgICAg
aWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTGVmdEJ1dHRvbiIp
KSkKKyAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1vdXNlQnV0
dG9uPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpMZWZ0QnV0dG9uKTsKKyAgICAgICAgaWYgKGVuY29k
ZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTWlkZGxlQnV0dG9uIikpKQorICAg
ICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TW91c2VCdXR0b24+KGVu
dW1WYWx1ZSB8IFdlYkNvcmU6Ok1pZGRsZUJ1dHRvbik7CisgICAgICAgIGlmIChlbmNvZGVkRW51
bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlJpZ2h0QnV0dG9uIikpKQorICAgICAgICAg
ICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TW91c2VCdXR0b24+KGVudW1WYWx1
ZSB8IFdlYkNvcmU6OlJpZ2h0QnV0dG9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dl
bmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hYjFiY2RjN2JhODgwNmJiZWZlYTRjYTY5MGE4NzRmOTZmNzZlODNlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1
dHMuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisv
LyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZy
b20gZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6
IEphdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMu
cHkKKworI2lmbmRlZiBnZW5lcmF0ZV9lbnVtX2VuY29kaW5nX2hlbHBlcnNfanNvbl9UZXN0UmVw
bGF5SW5wdXRzX2gKKyNkZWZpbmUgZ2VuZXJhdGVfZW51bV9lbmNvZGluZ19oZWxwZXJzX2pzb25f
VGVzdFJlcGxheUlucHV0c19oCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJ
bnRlcm5hbE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3Jt
L0V4dGVybmFsTmFtZXNwYWNlSGVhZGVySW5jbHVkZUR1bW15Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2VudW0gTW91c2VCdXR0b24gOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNlIEpTQyB7
CitlbnVtIGNsYXNzIElucHV0UXVldWU7Cit9CisKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3Mg
U2F2ZWRNb3VzZUJ1dHRvbjsKK30gLy8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNlIEpTQyB7
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPiB7
CisgICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpTY3Jp
cHRNZW1vaXplZERhdGE7IH0KKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7
CisKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBUZXN0
OjpTYXZlZE1vdXNlQnV0dG9uJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2Rl
ZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6OlNhdmVkTW91c2VCdXR0b24+Jik7Cit9Owor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8SW5wdXRRdWV1ZT4geworICAgIHR5cGVk
ZWYgSW5wdXRRdWV1ZSBEZWNvZGVkVHlwZTsKKyAgICB0eXBlZGVmIFN0cmluZyBFbmNvZGVkVHlw
ZTsKKyAgICBzdGF0aWMgY29uc3QgRW5jb2RlZFZhbHVlOjpTaGFwZSBTaGFwZSA9IEVuY29kZWRW
YWx1ZTo6U2hhcGU6OlNjYWxhcjsKKworICAgIHN0YXRpYyBTdHJpbmcgZW5jb2RlVmFsdWUoY29u
c3QgSW5wdXRRdWV1ZSYgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKFN0cmlu
ZyYsIElucHV0UXVldWUmIHZhbHVlKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5n
VHJhaXRzPFdlYkNvcmU6Ok1vdXNlQnV0dG9uPiB7CisgICAgdHlwZWRlZiBXZWJDb3JlOjpNb3Vz
ZUJ1dHRvbiBEZWNvZGVkVHlwZTsKKyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVk
VmFsdWU+IEVuY29kZWRUeXBlOworICAgIHN0YXRpYyBjb25zdCBFbmNvZGVkVmFsdWU6OlNoYXBl
IFNoYXBlID0gRW5jb2RlZFZhbHVlOjpTaGFwZTo6TGlzdDsKKworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBlbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpNb3VzZUJ1
dHRvbiYgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVkVmFsdWU+JiwgV2ViQ29yZTo6TW91c2VCdXR0b24mIHZhbHVlKTsKK307Cit9IC8v
IG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3MgU2F2ZWRNb3VzZUJ1dHRv
biA6IHB1YmxpYyBOb25kZXRlcm1pbmlzdGljSW5wdXQ8U2F2ZWRNb3VzZUJ1dHRvbj4geworcHVi
bGljOgorICAgIFNhdmVkTW91c2VCdXR0b24oTW91c2VCdXR0b24gYnV0dG9uKTsKKyAgICB2aXJ0
dWFsIH5TYXZlZE1vdXNlQnV0dG9uKCk7CisKKyAgICBNb3VzZUJ1dHRvbiBidXR0b24oKSBjb25z
dCB7IHJldHVybiBtX2J1dHRvbjsgfQorcHJpdmF0ZToKKyAgICBNb3VzZUJ1dHRvbiBtX2J1dHRv
bjsKK307Cit9IC8vIG5hbWVzcGFjZSBUZXN0CisKKyNkZWZpbmUgVEVTVF9SRVBMQVlfSU5QVVRf
TkFNRVNfRk9SX0VBQ0gobWFjcm8pIFwKKyAgICBtYWNybyhTYXZlZE1vdXNlQnV0dG9uKSBcCisg
ICAgXAorLy8gZW5kIG9mIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNICisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX1JFUExBWSkKKworI2VuZGlmIC8vIGdlbmVyYXRlX2VudW1fZW5jb2Rp
bmdfaGVscGVyc19qc29uX1Rlc3RSZXBsYXlJbnB1dHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0t
ZW5jb2RpbmctaGVscGVycy5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5q
c29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNjJlNGNlMmEyYTQ1MDQxZmFlMzc4OGE1YmExMWY3YTky
OTJiMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24t
ZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IFdoZW4gcGFyc2luZyB0eXBlLCByZXF1aXJlZCBw
cm9wZXJ0eSBtaXNzaW5nOiBzdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFw
ZS10eXBlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hhcGUt
dHlwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODM4MWY1NGViNDQz
NGFkNTZiMWQwZjcxOGMwMTY3ZGYyODI1MDkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWV2ZW50
LWxvb3Atc2hhcGUtdHlwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcApAQCAtMCwwICsxLDE2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRlLWV2ZW50
LWxvb3Atc2hhcGUtdHlwZXMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBlcy5qc29u
LVRlc3RSZXBsYXlJbnB1dHMuaCIKKworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorI2luY2x1ZGUg
IkludGVybmFsTmFtZXNwYWNlSW1wbEluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3Jt
L0V4dGVybmFsTmFtZXNwYWNlSW1wbEluY2x1ZGVEdW1teS5oPgorCituYW1lc3BhY2UgVGVzdCB7
CitTY2FsYXJJbnB1dDo6U2NhbGFySW5wdXQoU2NhbGFyVHlwZSBkYXRhKQorICAgIDogRXZlbnRM
b29wSW5wdXQ8U2NhbGFySW5wdXQ+KCkKKyAgICAsIG1fZGF0YShkYXRhKQoreworfQorCitTY2Fs
YXJJbnB1dDo6flNjYWxhcklucHV0KCkKK3sKK30KKworTWFwSW5wdXQ6Ok1hcElucHV0KHN0ZDo6
dW5pcXVlX3B0cjxNYXBUeXBlPiBkYXRhKQorICAgIDogRXZlbnRMb29wSW5wdXQ8TWFwSW5wdXQ+
KCkKKyAgICAsIG1fZGF0YShzdGQ6Om1vdmUoZGF0YSkpCit7Cit9CisKK01hcElucHV0Ojp+TWFw
SW5wdXQoKQoreworfQorCitTaGFyZWRNYXBJbnB1dDo6U2hhcmVkTWFwSW5wdXQoUGFzc1JlZlB0
cjxTaGFyZWRNYXBUeXBlPiBkYXRhKQorICAgIDogRXZlbnRMb29wSW5wdXQ8U2hhcmVkTWFwSW5w
dXQ+KCkKKyAgICAsIG1fZGF0YShkYXRhKQoreworfQorCitTaGFyZWRNYXBJbnB1dDo6flNoYXJl
ZE1hcElucHV0KCkKK3sKK30KKworTGlzdElucHV0OjpMaXN0SW5wdXQoc3RkOjp1bmlxdWVfcHRy
PExpc3RUeXBlPiBkYXRhKQorICAgIDogRXZlbnRMb29wSW5wdXQ8TGlzdElucHV0PigpCisgICAg
LCBtX2RhdGEoZGF0YSkKK3sKK30KKworTGlzdElucHV0Ojp+TGlzdElucHV0KCkKK3sKK30KK30g
Ly8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNlIEpTQyB7Citjb25zdCBBdG9taWNTdHJpbmcm
IElucHV0VHJhaXRzPFRlc3Q6OlNjYWxhcklucHV0Pjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHlwZSgiU2NhbGFySW5wdXQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gdHlwZTsKK30KKwor
dm9pZCBJbnB1dFRyYWl0czxUZXN0OjpTY2FsYXJJbnB1dD46OmVuY29kZShFbmNvZGVkVmFsdWUm
IGVuY29kZWRWYWx1ZSwgY29uc3QgVGVzdDo6U2NhbGFySW5wdXQmIGlucHV0KQoreworICAgIGVu
Y29kZWRWYWx1ZS5wdXQ8U2NhbGFyVHlwZT4oQVNDSUlMaXRlcmFsKCJkYXRhIiksIGlucHV0LmRh
dGEoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6U2NhbGFySW5wdXQ+OjpkZWNvZGUo
RW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpTY2FsYXJJ
bnB1dD4mIGlucHV0KQoreworICAgIFNjYWxhclR5cGUgZGF0YTsKKyAgICBpZiAoIWVuY29kZWRW
YWx1ZS5nZXQ8U2NhbGFyVHlwZT4oQVNDSUlMaXRlcmFsKCJkYXRhIiksIGRhdGEpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdDo6U2Nh
bGFySW5wdXQ+KGRhdGEpOworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIElucHV0VHJhaXRzPFRlc3Q6Ok1hcElucHV0Pjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHlwZSgiTWFwSW5wdXQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gdHlwZTsKK30KKwordm9p
ZCBJbnB1dFRyYWl0czxUZXN0OjpNYXBJbnB1dD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29k
ZWRWYWx1ZSwgY29uc3QgVGVzdDo6TWFwSW5wdXQmIGlucHV0KQoreworICAgIGVuY29kZWRWYWx1
ZS5wdXQ8TWFwVHlwZT4oQVNDSUlMaXRlcmFsKCJkYXRhIiksIGlucHV0LmRhdGEoKSk7Cit9CisK
K2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6TWFwSW5wdXQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBl
bmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpNYXBJbnB1dD4mIGlucHV0KQorewor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNYXBUeXBlPiBkYXRhOworICAgIGlmICghZW5jb2RlZFZhbHVl
LmdldDxNYXBUeXBlPihBU0NJSUxpdGVyYWwoImRhdGEiKSwgZGF0YSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0OjpNYXBJbnB1dD4o
c3RkOjptb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBJbnB1dFRyYWl0czxUZXN0OjpTaGFyZWRNYXBJbnB1dD46OnR5cGUoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHR5cGUoIlNoYXJlZE1hcElu
cHV0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHR5
cGU7Cit9CisKK3ZvaWQgSW5wdXRUcmFpdHM8VGVzdDo6U2hhcmVkTWFwSW5wdXQ+OjplbmNvZGUo
RW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFRlc3Q6OlNoYXJlZE1hcElucHV0JiBp
bnB1dCkKK3sKKyAgICBlbmNvZGVkVmFsdWUucHV0PFNoYXJlZE1hcFR5cGU+KEFTQ0lJTGl0ZXJh
bCgiZGF0YSIpLCBpbnB1dC5kYXRhKCkpOworfQorCitib29sIElucHV0VHJhaXRzPFRlc3Q6OlNo
YXJlZE1hcElucHV0Pjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVu
aXF1ZV9wdHI8VGVzdDo6U2hhcmVkTWFwSW5wdXQ+JiBpbnB1dCkKK3sKKyAgICBSZWZQdHI8U2hh
cmVkTWFwVHlwZT4gZGF0YTsKKyAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8U2hhcmVkTWFwVHlw
ZT4oQVNDSUlMaXRlcmFsKCJkYXRhIiksIGRhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdDo6U2hhcmVkTWFwSW5wdXQ+KGRhdGEp
OworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRz
PFRlc3Q6Okxpc3RJbnB1dD46OnR5cGUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IHR5cGUoIkxpc3RJbnB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB0eXBlOworfQorCit2b2lkIElucHV0VHJhaXRz
PFRlc3Q6Okxpc3RJbnB1dD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29u
c3QgVGVzdDo6TGlzdElucHV0JiBpbnB1dCkKK3sKKyAgICBlbmNvZGVkVmFsdWUucHV0PExpc3RU
eXBlPihBU0NJSUxpdGVyYWwoImRhdGEiKSwgaW5wdXQuZGF0YSgpKTsKK30KKworYm9vbCBJbnB1
dFRyYWl0czxUZXN0OjpMaXN0SW5wdXQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFs
dWUsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpMaXN0SW5wdXQ+JiBpbnB1dCkKK3sKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGlzdFR5cGU+IGRhdGE7CisgICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PExp
c3RUeXBlPihBU0NJSUxpdGVyYWwoImRhdGEiKSwgZGF0YSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0OjpMaXN0SW5wdXQ+KGRhdGEp
OworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfUkVQTEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Jl
cGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hhcGUtdHlw
ZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBlcy5q
c29uLVRlc3RSZXBsYXlJbnB1dHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTc4ZjdlMDY1ZmUyMDI1NDM2Y2Q5
YTFlZTY4MGE2OGIzNGI2MmMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hh
cGUtdHlwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAq
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBnZW5lcmF0ZS1ldmVudC1sb29wLXNoYXBl
LXR5cGVzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IEphdmFTY3JpcHRDb3JlL3JlcGxheS9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKKworI2lmbmRlZiBnZW5lcmF0ZV9ldmVu
dF9sb29wX3NoYXBlX3R5cGVzX2pzb25fVGVzdFJlcGxheUlucHV0c19oCisjZGVmaW5lIGdlbmVy
YXRlX2V2ZW50X2xvb3Bfc2hhcGVfdHlwZXNfanNvbl9UZXN0UmVwbGF5SW5wdXRzX2gKKworI2lm
IEVOQUJMRShXRUJfUkVQTEFZKQorI2luY2x1ZGUgIkludGVybmFsTmFtZXNwYWNlSGVhZGVySW5j
bHVkZUR1bW15LmgiCisjaW5jbHVkZSA8cGxhdGZvcm0vRXh0ZXJuYWxOYW1lc3BhY2VIZWFkZXJJ
bmNsdWRlRHVtbXkuaD4KKworCisKK25hbWVzcGFjZSBUZXN0IHsKK2NsYXNzIFNjYWxhcklucHV0
OworY2xhc3MgTWFwSW5wdXQ7CitjbGFzcyBTaGFyZWRNYXBJbnB1dDsKK2NsYXNzIExpc3RJbnB1
dDsKK30gLy8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNlIEpTQyB7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpTY2FsYXJJbnB1dD4geworICAgIHN0YXRpYyBJbnB1dFF1
ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6RXZlbnRMb29wSW5wdXQ7IH0KKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CisKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBUZXN0OjpTY2FsYXJJbnB1dCYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0
OjpTY2FsYXJJbnB1dD4mKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRl
c3Q6Ok1hcElucHV0PiB7CisgICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJ
bnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYs
IGNvbnN0IFRlc3Q6Ok1hcElucHV0Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5j
b2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6Ok1hcElucHV0PiYpOworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8VGVzdDo6U2hhcmVkTWFwSW5wdXQ+IHsKKyAgICBz
dGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElu
cHV0OyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOworCisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgVGVzdDo6U2hhcmVkTWFw
SW5wdXQmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6
OnVuaXF1ZV9wdHI8VGVzdDo6U2hhcmVkTWFwSW5wdXQ+Jik7Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpMaXN0SW5wdXQ+IHsKKyAgICBzdGF0aWMgSW5wdXRRdWV1
ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOworCisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgVGVzdDo6TGlzdElucHV0Jik7CisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6Okxp
c3RJbnB1dD4mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgVGVzdCB7
CitjbGFzcyBTY2FsYXJJbnB1dCA6IHB1YmxpYyBFdmVudExvb3BJbnB1dDxTY2FsYXJJbnB1dD4g
eworcHVibGljOgorICAgIFNjYWxhcklucHV0KFNjYWxhclR5cGUgZGF0YSk7CisgICAgdmlydHVh
bCB+U2NhbGFySW5wdXQoKTsKKworICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQorICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlDb250cm9sbGVyJikgb3ZlcnJpZGUgZmluYWw7CisgICAg
U2NhbGFyVHlwZSBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Citwcml2YXRlOgorICAg
IFNjYWxhclR5cGUgbV9kYXRhOworfTsKKworY2xhc3MgTWFwSW5wdXQgOiBwdWJsaWMgRXZlbnRM
b29wSW5wdXQ8TWFwSW5wdXQ+IHsKK3B1YmxpYzoKKyAgICBNYXBJbnB1dChzdGQ6OnVuaXF1ZV9w
dHI8TWFwVHlwZT4gZGF0YSk7CisgICAgdmlydHVhbCB+TWFwSW5wdXQoKTsKKworICAgIC8vIEV2
ZW50TG9vcElucHV0IEFQSQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlDb250cm9s
bGVyJikgb3ZlcnJpZGUgZmluYWw7CisgICAgY29uc3QgTWFwVHlwZSYgZGF0YSgpIGNvbnN0IHsg
cmV0dXJuICptX2RhdGE7IH0KK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPE1hcFR5cGU+
IG1fZGF0YTsKK307CisKK2NsYXNzIFNoYXJlZE1hcElucHV0IDogcHVibGljIEV2ZW50TG9vcElu
cHV0PFNoYXJlZE1hcElucHV0PiB7CitwdWJsaWM6CisgICAgU2hhcmVkTWFwSW5wdXQoUGFzc1Jl
ZlB0cjxTaGFyZWRNYXBUeXBlPiBkYXRhKTsKKyAgICB2aXJ0dWFsIH5TaGFyZWRNYXBJbnB1dCgp
OworCisgICAgLy8gRXZlbnRMb29wSW5wdXQgQVBJCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KFJlcGxheUNvbnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsKKyAgICBQYXNzUmVmUHRyPFNoYXJl
ZE1hcFR5cGU+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KK3ByaXZhdGU6CisgICAg
UmVmUHRyPFNoYXJlZE1hcFR5cGU+IG1fZGF0YTsKK307CisKK2NsYXNzIExpc3RJbnB1dCA6IHB1
YmxpYyBFdmVudExvb3BJbnB1dDxMaXN0SW5wdXQ+IHsKK3B1YmxpYzoKKyAgICBMaXN0SW5wdXQo
c3RkOjp1bmlxdWVfcHRyPExpc3RUeXBlPiBkYXRhKTsKKyAgICB2aXJ0dWFsIH5MaXN0SW5wdXQo
KTsKKworICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aChSZXBsYXlDb250cm9sbGVyJikgb3ZlcnJpZGUgZmluYWw7CisgICAgY29uc3QgTGlzdFR5cGUm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KK3ByaXZhdGU6CisgICAgc3RkOjp1bmlx
dWVfcHRyPExpc3RUeXBlPiBtX2RhdGE7Cit9OworfSAvLyBuYW1lc3BhY2UgVGVzdAorCisjZGVm
aW5lIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNIKG1hY3JvKSBcCisgICAgbWFjcm8o
U2NhbGFySW5wdXQpIFwKKyAgICBtYWNybyhNYXBJbnB1dCkgXAorICAgIG1hY3JvKFNoYXJlZE1h
cElucHV0KSBcCisgICAgbWFjcm8oTGlzdElucHV0KSBcCisgICAgXAorLy8gZW5kIG9mIFRFU1Rf
UkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNICisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExB
WSkKKworI2VuZGlmIC8vIGdlbmVyYXRlX2V2ZW50X2xvb3Bfc2hhcGVfdHlwZXNfanNvbl9UZXN0
UmVwbGF5SW5wdXRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLWd1YXJkLmpzb24tVGVz
dFJlcGxheUlucHV0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJ
bnB1dHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzMDZmMjEyZTBhYWE2YzBlNjc0N2YwYzE4YmViY2M5Mzc1
ZWNkMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RS
ZXBsYXlJbnB1dHMuY3BwCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uCisvLyBieSB0aGUg
c2NyaXB0OiBKYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5
SW5wdXRzLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJnZW5lcmF0ZS1pbnB1
dC13aXRoLWd1YXJkLmpzb24tVGVzdFJlcGxheUlucHV0cy5oIgorCisjaWYgRU5BQkxFKFdFQl9S
RVBMQVkpCisjaW5jbHVkZSAiSW50ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15LmgiCisj
aW5jbHVkZSA8cGxhdGZvcm0vRXh0ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15Lmg+CisK
K25hbWVzcGFjZSBUZXN0IHsKKyNpZiBFTkFCTEUoRFVNTVlfRkVBVFVSRSkKK0dldEN1cnJlbnRU
aW1lOjpHZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUpCisgICAgOiBOb25kZXRlcm1p
bmlzdGljSW5wdXQ8R2V0Q3VycmVudFRpbWU+KCkKKyAgICAsIG1fY3VycmVudFRpbWUoY3VycmVu
dFRpbWUpCit7Cit9CisKK0dldEN1cnJlbnRUaW1lOjp+R2V0Q3VycmVudFRpbWUoKQoreworfQor
I2VuZGlmIC8vIEVOQUJMRShEVU1NWV9GRUFUVVJFKQorCitTZXRSYW5kb21TZWVkOjpTZXRSYW5k
b21TZWVkKHVpbnQ2NF90IHJhbmRvbVNlZWQpCisgICAgOiBOb25kZXRlcm1pbmlzdGljSW5wdXQ8
U2V0UmFuZG9tU2VlZD4oKQorICAgICwgbV9yYW5kb21TZWVkKHJhbmRvbVNlZWQpCit7Cit9CisK
K1NldFJhbmRvbVNlZWQ6On5TZXRSYW5kb21TZWVkKCkKK3sKK30KK30gLy8gbmFtZXNwYWNlIFRl
c3QKKworbmFtZXNwYWNlIEpTQyB7CisjaWYgRU5BQkxFKERVTU1ZX0ZFQVRVUkUpCitjb25zdCBB
dG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRlc3Q6OkdldEN1cnJlbnRUaW1lPjo6dHlwZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHlwZSgiR2V0
Q3VycmVudFRpbWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBy
ZXR1cm4gdHlwZTsKK30KKwordm9pZCBJbnB1dFRyYWl0czxUZXN0OjpHZXRDdXJyZW50VGltZT46
OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgVGVzdDo6R2V0Q3VycmVu
dFRpbWUmIGlucHV0KQoreworICAgIGVuY29kZWRWYWx1ZS5wdXQ8ZG91YmxlPihBU0NJSUxpdGVy
YWwoImN1cnJlbnRUaW1lIiksIGlucHV0LmN1cnJlbnRUaW1lKCkpOworfQorCitib29sIElucHV0
VHJhaXRzPFRlc3Q6OkdldEN1cnJlbnRUaW1lPjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2Rl
ZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8VGVzdDo6R2V0Q3VycmVudFRpbWU+JiBpbnB1dCkKK3sK
KyAgICBkb3VibGUgY3VycmVudFRpbWU7CisgICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PGRvdWJs
ZT4oQVNDSUlMaXRlcmFsKCJjdXJyZW50VGltZSIpLCBjdXJyZW50VGltZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0OjpHZXRDdXJy
ZW50VGltZT4oY3VycmVudFRpbWUpOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmIC8vIEVO
QUJMRShEVU1NWV9GRUFUVVJFKQorCitjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRl
c3Q6OlNldFJhbmRvbVNlZWQ+Ojp0eXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiB0eXBlKCJTZXRSYW5kb21TZWVkIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK3ZvaWQgSW5wdXRU
cmFpdHM8VGVzdDo6U2V0UmFuZG9tU2VlZD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRW
YWx1ZSwgY29uc3QgVGVzdDo6U2V0UmFuZG9tU2VlZCYgaW5wdXQpCit7CisgICAgZW5jb2RlZFZh
bHVlLnB1dDx1aW50NjRfdD4oQVNDSUlMaXRlcmFsKCJyYW5kb21TZWVkIiksIGlucHV0LnJhbmRv
bVNlZWQoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6U2V0UmFuZG9tU2VlZD46OmRl
Y29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6OlNl
dFJhbmRvbVNlZWQ+JiBpbnB1dCkKK3sKKyAgICB1aW50NjRfdCByYW5kb21TZWVkOworICAgIGlm
ICghZW5jb2RlZFZhbHVlLmdldDx1aW50NjRfdD4oQVNDSUlMaXRlcmFsKCJyYW5kb21TZWVkIiks
IHJhbmRvbVNlZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnB1dCA9IHN0ZDo6
bWFrZV91bmlxdWU8VGVzdDo6U2V0UmFuZG9tU2VlZD4ocmFuZG9tU2VlZCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9S
RVBMQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJ
bnB1dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLWd1YXJkLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVlNmE1NmJhNTliYjkwN2IxNzM1ZGE5ZjExOTVjMjJmZjlkNWE2ZGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJbnB1dHMu
aApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
ICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
Z2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBKYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5CisKKyNp
Zm5kZWYgZ2VuZXJhdGVfaW5wdXRfd2l0aF9ndWFyZF9qc29uX1Rlc3RSZXBsYXlJbnB1dHNfaAor
I2RlZmluZSBnZW5lcmF0ZV9pbnB1dF93aXRoX2d1YXJkX2pzb25fVGVzdFJlcGxheUlucHV0c19o
CisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJbnRlcm5hbE5hbWVzcGFjZUhl
YWRlckluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3JtL0V4dGVybmFsTmFtZXNwYWNl
SGVhZGVySW5jbHVkZUR1bW15Lmg+CisKKworCituYW1lc3BhY2UgVGVzdCB7CisjaWYgRU5BQkxF
KERVTU1ZX0ZFQVRVUkUpCitjbGFzcyBHZXRDdXJyZW50VGltZTsKKyNlbmRpZiAvLyBFTkFCTEUo
RFVNTVlfRkVBVFVSRSkKK2NsYXNzIFNldFJhbmRvbVNlZWQ7Cit9IC8vIG5hbWVzcGFjZSBUZXN0
CisKK25hbWVzcGFjZSBKU0MgeworI2lmIEVOQUJMRShEVU1NWV9GRUFUVVJFKQordGVtcGxhdGU8
PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8VGVzdDo6R2V0Q3VycmVudFRpbWU+IHsKKyAgICBzdGF0aWMg
SW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OlNjcmlwdE1lbW9pemVkRGF0
YTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKKworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFRlc3Q6OkdldEN1cnJlbnRU
aW1lJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1
bmlxdWVfcHRyPFRlc3Q6OkdldEN1cnJlbnRUaW1lPiYpOworfTsKKyNlbmRpZiAvLyBFTkFCTEUo
RFVNTVlfRkVBVFVSRSkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8VGVzdDo6U2V0
UmFuZG9tU2VlZD4geworICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5w
dXRRdWV1ZTo6U2NyaXB0TWVtb2l6ZWREYXRhOyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSgpOworCisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVl
JiwgY29uc3QgVGVzdDo6U2V0UmFuZG9tU2VlZCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShK
U0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpTZXRSYW5kb21TZWVkPiYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBUZXN0IHsKKyNpZiBFTkFC
TEUoRFVNTVlfRkVBVFVSRSkKK2NsYXNzIEdldEN1cnJlbnRUaW1lIDogcHVibGljIE5vbmRldGVy
bWluaXN0aWNJbnB1dDxHZXRDdXJyZW50VGltZT4geworcHVibGljOgorICAgIEdldEN1cnJlbnRU
aW1lKGRvdWJsZSBjdXJyZW50VGltZSk7CisgICAgdmlydHVhbCB+R2V0Q3VycmVudFRpbWUoKTsK
KworICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFRpbWU7
IH0KK3ByaXZhdGU6CisgICAgZG91YmxlIG1fY3VycmVudFRpbWU7Cit9OworI2VuZGlmIC8vIEVO
QUJMRShEVU1NWV9GRUFUVVJFKQorCitjbGFzcyBTZXRSYW5kb21TZWVkIDogcHVibGljIE5vbmRl
dGVybWluaXN0aWNJbnB1dDxTZXRSYW5kb21TZWVkPiB7CitwdWJsaWM6CisgICAgU2V0UmFuZG9t
U2VlZCh1aW50NjRfdCByYW5kb21TZWVkKTsKKyAgICB2aXJ0dWFsIH5TZXRSYW5kb21TZWVkKCk7
CisKKyAgICB1aW50NjRfdCByYW5kb21TZWVkKCkgY29uc3QgeyByZXR1cm4gbV9yYW5kb21TZWVk
OyB9Citwcml2YXRlOgorICAgIHVpbnQ2NF90IG1fcmFuZG9tU2VlZDsKK307Cit9IC8vIG5hbWVz
cGFjZSBUZXN0CisKKyNkZWZpbmUgVEVTVF9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VBQ0gobWFj
cm8pIFwKKyAgICBtYWNybyhHZXRDdXJyZW50VGltZSkgXAorICAgIG1hY3JvKFNldFJhbmRvbVNl
ZWQpIFwKKyAgICBcCisvLyBlbmQgb2YgVEVTVF9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VBQ0gK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQorCisjZW5kaWYgLy8gZ2VuZXJhdGVfaW5w
dXRfd2l0aF9ndWFyZF9qc29uX1Rlc3RSZXBsYXlJbnB1dHNfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWlu
cHV0LXdpdGgtdmVjdG9yLW1lbWJlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1p
bnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDJiYjU2YjUyNWM0NDZiMGRiMTEzOGJkZTdkNWYyZGM1Y2Y5NjJiYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlu
cHV0cy5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIGdlbmVyYXRlLWlucHV0LXdpdGgtdmVjdG9yLW1lbWJlcnMuanNvbgorLy8gYnkgdGhl
IHNjcmlwdDogSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxh
eUlucHV0cy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZ2VuZXJhdGUtaW5w
dXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaCIKKworI2lmIEVO
QUJMRShXRUJfUkVQTEFZKQorI2luY2x1ZGUgIkludGVybmFsTmFtZXNwYWNlSW1wbEluY2x1ZGVE
dW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3JtL0V4dGVybmFsTmFtZXNwYWNlSW1wbEluY2x1ZGVE
dW1teS5oPgorI2luY2x1ZGUgPHRoaW5ncy9KU1RoaW5nLmg+CisjaW5jbHVkZSA8dGhpbmdzL1dl
YlRoaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0IHsKK0FycmF5T2ZUaGluZ3M6OkFycmF5T2ZUaGlu
Z3MoVmVjdG9yPGRvdWJsZT4mIGRvdWJsZXMsIFZlY3RvcjxKU1RoaW5nPiYganN0aGluZ3MsIFZl
Y3RvcjxXZWJUaGluZz4mIHdlYnRoaW5ncykKKyAgICA6IE5vbmRldGVybWluaXN0aWNJbnB1dDxB
cnJheU9mVGhpbmdzPigpCisgICAgLCBtX2RvdWJsZXMoZG91YmxlcykKKyAgICAsIG1fanN0aGlu
Z3MoanN0aGluZ3MpCisgICAgLCBtX3dlYnRoaW5ncyh3ZWJ0aGluZ3MpCit7Cit9CisKK0FycmF5
T2ZUaGluZ3M6On5BcnJheU9mVGhpbmdzKCkKK3sKK30KK30gLy8gbmFtZXNwYWNlIFRlc3QKKwor
bmFtZXNwYWNlIEpTQyB7Citjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRlc3Q6OkFy
cmF5T2ZUaGluZ3M+Ojp0eXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiB0eXBlKCJBcnJheU9mVGhpbmdzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK3ZvaWQgSW5wdXRUcmFpdHM8
VGVzdDo6QXJyYXlPZlRoaW5ncz46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwg
Y29uc3QgVGVzdDo6QXJyYXlPZlRoaW5ncyYgaW5wdXQpCit7CisgICAgZW5jb2RlZFZhbHVlLnB1
dDxWZWN0b3I8ZG91YmxlPj4oQVNDSUlMaXRlcmFsKCJkb3VibGVzIiksIGlucHV0LmRvdWJsZXMo
KSk7CisgICAgZW5jb2RlZFZhbHVlLnB1dDxWZWN0b3I8SlNUaGluZz4+KEFTQ0lJTGl0ZXJhbCgi
anN0aGluZ3MiKSwgaW5wdXQuanN0aGluZ3MoKSk7CisgICAgZW5jb2RlZFZhbHVlLnB1dDxWZWN0
b3I8V2ViQ29yZTo6V2ViVGhpbmc+PihBU0NJSUxpdGVyYWwoIndlYnRoaW5ncyIpLCBpbnB1dC53
ZWJ0aGluZ3MoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6QXJyYXlPZlRoaW5ncz46
OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6
OkFycmF5T2ZUaGluZ3M+JiBpbnB1dCkKK3sKKyAgICBWZWN0b3I8ZG91YmxlPiBkb3VibGVzOwor
ICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxWZWN0b3I8ZG91YmxlPj4oQVNDSUlMaXRlcmFsKCJk
b3VibGVzIiksIGRvdWJsZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8
SlNUaGluZz4ganN0aGluZ3M7CisgICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PFZlY3RvcjxKU1Ro
aW5nPj4oQVNDSUlMaXRlcmFsKCJqc3RoaW5ncyIpLCBqc3RoaW5ncykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpXZWJUaGluZz4gd2VidGhpbmdzOworICAg
IGlmICghZW5jb2RlZFZhbHVlLmdldDxWZWN0b3I8V2ViQ29yZTo6V2ViVGhpbmc+PihBU0NJSUxp
dGVyYWwoIndlYnRoaW5ncyIpLCB3ZWJ0aGluZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdDo6QXJyYXlPZlRoaW5ncz4oZG91Ymxl
cywganN0aGluZ3MsIHdlYnRoaW5ncyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtaW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0
ZS1pbnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJiNTIwNjkxMDZhZDQ4M2EwZmY1NDY0ZTQ2M2Q5OGVmZDdiNzI5OWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJ
bnB1dHMuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGZyb20gZ2VuZXJhdGUtaW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uCisvLyBieSB0aGUg
c2NyaXB0OiBKYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5
SW5wdXRzLnB5CisKKyNpZm5kZWYgZ2VuZXJhdGVfaW5wdXRfd2l0aF92ZWN0b3JfbWVtYmVyc19q
c29uX1Rlc3RSZXBsYXlJbnB1dHNfaAorI2RlZmluZSBnZW5lcmF0ZV9pbnB1dF93aXRoX3ZlY3Rv
cl9tZW1iZXJzX2pzb25fVGVzdFJlcGxheUlucHV0c19oCisKKyNpZiBFTkFCTEUoV0VCX1JFUExB
WSkKKyNpbmNsdWRlICJJbnRlcm5hbE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oIgorI2lu
Y2x1ZGUgPHBsYXRmb3JtL0V4dGVybmFsTmFtZXNwYWNlSGVhZGVySW5jbHVkZUR1bW15Lmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdlYlRoaW5nOworfQorCituYW1lc3BhY2UgSlND
IHsKK2NsYXNzIEpTVGhpbmc7Cit9CisKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3MgQXJyYXlP
ZlRoaW5nczsKK30gLy8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNlIEpTQyB7Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpBcnJheU9mVGhpbmdzPiB7CisgICAgc3RhdGlj
IElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERh
dGE7IH0KKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CisKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBUZXN0OjpBcnJheU9mVGhp
bmdzJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1
bmlxdWVfcHRyPFRlc3Q6OkFycmF5T2ZUaGluZ3M+Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3MgQXJyYXlPZlRoaW5ncyA6IHB1YmxpYyBOb25k
ZXRlcm1pbmlzdGljSW5wdXQ8QXJyYXlPZlRoaW5ncz4geworcHVibGljOgorICAgIEFycmF5T2ZU
aGluZ3MoVmVjdG9yPGRvdWJsZT4mIGRvdWJsZXMsIFZlY3RvcjxKU1RoaW5nPiYganN0aGluZ3Ms
IFZlY3RvcjxXZWJUaGluZz4mIHdlYnRoaW5ncyk7CisgICAgdmlydHVhbCB+QXJyYXlPZlRoaW5n
cygpOworCisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGRvdWJsZXMoKSBjb25zdCB7IHJldHVy
biBtX2RvdWJsZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8SlNUaGluZz4mIGpzdGhpbmdzKCkgY29u
c3QgeyByZXR1cm4gbV9qc3RoaW5nczsgfQorICAgIGNvbnN0IFZlY3RvcjxXZWJUaGluZz4mIHdl
YnRoaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fd2VidGhpbmdzOyB9Citwcml2YXRlOgorICAgIFZl
Y3Rvcjxkb3VibGU+IG1fZG91YmxlczsKKyAgICBWZWN0b3I8SlNUaGluZz4gbV9qc3RoaW5nczsK
KyAgICBWZWN0b3I8V2ViVGhpbmc+IG1fd2VidGhpbmdzOworfTsKK30gLy8gbmFtZXNwYWNlIFRl
c3QKKworI2RlZmluZSBURVNUX1JFUExBWV9JTlBVVF9OQU1FU19GT1JfRUFDSChtYWNybykgXAor
ICAgIG1hY3JvKEFycmF5T2ZUaGluZ3MpIFwKKyAgICBcCisvLyBlbmQgb2YgVEVTVF9SRVBMQVlf
SU5QVVRfTkFNRVNfRk9SX0VBQ0gKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQorCisj
ZW5kaWYgLy8gZ2VuZXJhdGVfaW5wdXRfd2l0aF92ZWN0b3JfbWVtYmVyc19qc29uX1Rlc3RSZXBs
YXlJbnB1dHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWlucHV0cy13aXRoLWZsYWdzLmpzb24tZXJyb3Ig
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTFiODZiYTdm
NTMzNTBjZmU1OGM1Mzc5YjMwODc3ZmZmYzBhNGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWlu
cHV0cy13aXRoLWZsYWdzLmpzb24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IER1cGxpY2F0
ZSBpbnB1dCB3aXRoIG5hbWU6IFNjYWxhcklucHV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtbWVtb2l6ZWQt
dHlwZS1zaGFwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBl
LXNoYXBlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlM2M2MmYzODQ3
NmVmNTkwZDM2MDYyM2YwZGMzZDhlMzAxMmMxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtbWVt
b2l6ZWQtdHlwZS1zaGFwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcApAQCAtMCwwICsxLDEw
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRlLW1lbW9p
emVkLXR5cGUtc2hhcGVzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IEphdmFTY3JpcHRDb3JlL3Jl
cGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImdlbmVyYXRlLW1lbW9pemVkLXR5cGUtc2hhcGVzLmpzb24tVGVz
dFJlcGxheUlucHV0cy5oIgorCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisjaW5jbHVkZSAiSW50
ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15LmgiCisjaW5jbHVkZSA8cGxhdGZvcm0vRXh0
ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15Lmg+CisKK25hbWVzcGFjZSBUZXN0IHsKK1Nj
YWxhcklucHV0OjpTY2FsYXJJbnB1dChTY2FsYXJUeXBlIGRhdGEpCisgICAgOiBOb25kZXRlcm1p
bmlzdGljSW5wdXQ8U2NhbGFySW5wdXQ+KCkKKyAgICAsIG1fZGF0YShkYXRhKQoreworfQorCitT
Y2FsYXJJbnB1dDo6flNjYWxhcklucHV0KCkKK3sKK30KKworTWFwSW5wdXQ6Ok1hcElucHV0KHN0
ZDo6dW5pcXVlX3B0cjxNYXBUeXBlPiBkYXRhKQorICAgIDogTm9uZGV0ZXJtaW5pc3RpY0lucHV0
PE1hcElucHV0PigpCisgICAgLCBtX2RhdGEoc3RkOjptb3ZlKGRhdGEpKQoreworfQorCitNYXBJ
bnB1dDo6fk1hcElucHV0KCkKK3sKK30KK30gLy8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNl
IEpTQyB7Citjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRlc3Q6OlNjYWxhcklucHV0
Pjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gdHlwZSgiU2NhbGFySW5wdXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICByZXR1cm4gdHlwZTsKK30KKwordm9pZCBJbnB1dFRyYWl0czxUZXN0OjpTY2FsYXJJ
bnB1dD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgVGVzdDo6U2Nh
bGFySW5wdXQmIGlucHV0KQoreworICAgIGVuY29kZWRWYWx1ZS5wdXQ8U2NhbGFyVHlwZT4oQVND
SUlMaXRlcmFsKCJkYXRhIiksIGlucHV0LmRhdGEoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8
VGVzdDo6U2NhbGFySW5wdXQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0
ZDo6dW5pcXVlX3B0cjxUZXN0OjpTY2FsYXJJbnB1dD4mIGlucHV0KQoreworICAgIFNjYWxhclR5
cGUgZGF0YTsKKyAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8U2NhbGFyVHlwZT4oQVNDSUlMaXRl
cmFsKCJkYXRhIiksIGRhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnB1dCA9
IHN0ZDo6bWFrZV91bmlxdWU8VGVzdDo6U2NhbGFySW5wdXQ+KGRhdGEpOworICAgIHJldHVybiB0
cnVlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRlc3Q6Ok1hcElucHV0
Pjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gdHlwZSgiTWFwSW5wdXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICByZXR1cm4gdHlwZTsKK30KKwordm9pZCBJbnB1dFRyYWl0czxUZXN0OjpNYXBJbnB1dD46
OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgVGVzdDo6TWFwSW5wdXQm
IGlucHV0KQoreworICAgIGVuY29kZWRWYWx1ZS5wdXQ8TWFwVHlwZT4oQVNDSUlMaXRlcmFsKCJk
YXRhIiksIGlucHV0LmRhdGEoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6TWFwSW5w
dXQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxU
ZXN0OjpNYXBJbnB1dD4mIGlucHV0KQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYXBUeXBlPiBk
YXRhOworICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxNYXBUeXBlPihBU0NJSUxpdGVyYWwoImRh
dGEiKSwgZGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlucHV0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZXN0OjpNYXBJbnB1dD4oc3RkOjptb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JF
UExBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLXNoYXBlcy5qc29uLVRlc3RSZXBs
YXlJbnB1dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLXNoYXBlcy5qc29uLVRlc3RSZXBsYXlJbnB1
dHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZDU1ZDU4OWRjOTgzODUzNDQ2ODRhYjhhMzdkN2ZiNzUxZjdiN2Q1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLW1lbW9pemVkLXR5cGUtc2hhcGVzLmpzb24tVGVzdFJl
cGxheUlucHV0cy5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZnJvbSBnZW5lcmF0ZS1tZW1vaXplZC10eXBlLXNoYXBlcy5qc29uCisvLyBieSB0aGUg
c2NyaXB0OiBKYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5
SW5wdXRzLnB5CisKKyNpZm5kZWYgZ2VuZXJhdGVfbWVtb2l6ZWRfdHlwZV9zaGFwZXNfanNvbl9U
ZXN0UmVwbGF5SW5wdXRzX2gKKyNkZWZpbmUgZ2VuZXJhdGVfbWVtb2l6ZWRfdHlwZV9zaGFwZXNf
anNvbl9UZXN0UmVwbGF5SW5wdXRzX2gKKworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorI2luY2x1
ZGUgIkludGVybmFsTmFtZXNwYWNlSGVhZGVySW5jbHVkZUR1bW15LmgiCisjaW5jbHVkZSA8cGxh
dGZvcm0vRXh0ZXJuYWxOYW1lc3BhY2VIZWFkZXJJbmNsdWRlRHVtbXkuaD4KKworCisKK25hbWVz
cGFjZSBUZXN0IHsKK2NsYXNzIFNjYWxhcklucHV0OworY2xhc3MgTWFwSW5wdXQ7Cit9IC8vIG5h
bWVzcGFjZSBUZXN0CisKK25hbWVzcGFjZSBKU0MgewordGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRU
cmFpdHM8VGVzdDo6U2NhbGFySW5wdXQ+IHsKKyAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgp
IHsgcmV0dXJuIElucHV0UXVldWU6OlNjcmlwdE1lbW9pemVkRGF0YTsgfQorICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6
OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFRlc3Q6OlNjYWxhcklucHV0Jik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6OlNjYWxh
cklucHV0PiYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8VGVzdDo6TWFw
SW5wdXQ+IHsKKyAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVl
dWU6OlNjcmlwdE1lbW9pemVkRGF0YTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNv
bnN0IFRlc3Q6Ok1hcElucHV0Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2Rl
ZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6Ok1hcElucHV0PiYpOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBUZXN0IHsKK2NsYXNzIFNjYWxhcklucHV0IDogcHVi
bGljIE5vbmRldGVybWluaXN0aWNJbnB1dDxTY2FsYXJJbnB1dD4geworcHVibGljOgorICAgIFNj
YWxhcklucHV0KFNjYWxhclR5cGUgZGF0YSk7CisgICAgdmlydHVhbCB+U2NhbGFySW5wdXQoKTsK
KworICAgIFNjYWxhclR5cGUgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorcHJpdmF0
ZToKKyAgICBTY2FsYXJUeXBlIG1fZGF0YTsKK307CisKK2NsYXNzIE1hcElucHV0IDogcHVibGlj
IE5vbmRldGVybWluaXN0aWNJbnB1dDxNYXBJbnB1dD4geworcHVibGljOgorICAgIE1hcElucHV0
KHN0ZDo6dW5pcXVlX3B0cjxNYXBUeXBlPiBkYXRhKTsKKyAgICB2aXJ0dWFsIH5NYXBJbnB1dCgp
OworCisgICAgY29uc3QgTWFwVHlwZSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuICptX2RhdGE7IH0K
K3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPE1hcFR5cGU+IG1fZGF0YTsKK307Cit9IC8v
IG5hbWVzcGFjZSBUZXN0CisKKyNkZWZpbmUgVEVTVF9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VB
Q0gobWFjcm8pIFwKKyAgICBtYWNybyhTY2FsYXJJbnB1dCkgXAorICAgIG1hY3JvKE1hcElucHV0
KSBcCisgICAgXAorLy8gZW5kIG9mIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNICisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExBWSkKKworI2VuZGlmIC8vIGdlbmVyYXRlX21lbW9p
emVkX3R5cGVfc2hhcGVzX2pzb25fVGVzdFJlcGxheUlucHV0c19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1jLXN0eWxlLWVu
dW0tbm8tc3RvcmFnZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2ZhaWwtb24tYy1zdHlsZS1lbnVtLW5vLXN0b3JhZ2UuanNvbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MmZjYThjNWI3YTdhNDkwYmY1YmI3NTJjNTExYTEwYzZjZmQ3OGMzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tYy1z
dHlsZS1lbnVtLW5vLXN0b3JhZ2UuanNvbgpAQCAtMCwwICsxLDIzIEBACit7CisgICAgInR5cGVz
IjogeworICAgICAgICAiV2ViQ29yZSI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAibmFtZSI6ICJNb3VzZUJ1dHRvbiIsICJzaGFwZSI6ICJTQ0FMQVIiLAorICAgICAgICAgICAg
ICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAgICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIk5vQnV0
dG9uIiwgIkxlZnRCdXR0b24iLCAiTWlkZGxlQnV0dG9uIiwgIlJpZ2h0QnV0dG9uIl0sCisgICAg
ICAgICAgICAgICAgImhlYWRlciI6ICJwYXRoL3RvL01vdXNlQnV0dG9uLmgiCisgICAgICAgICAg
ICB9CisgICAgICAgIF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAg
ICAgICAgICAgIm5hbWUiOiAiU2F2ZWRNb3VzZUJ1dHRvbiIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiU3VwcGxpZXMgYSBtb3VzZSBidXR0b24gZW51bSB2YWx1ZS4iLAorICAgICAgICAg
ICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJ1dHRvbiIsICJ0eXBlIjogIk1vdXNlQnV0dG9u
IiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1kdXBsaWNhdGUt
aW5wdXQtbmFtZXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90
ZXN0cy9mYWlsLW9uLWR1cGxpY2F0ZS1pbnB1dC1uYW1lcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZDZi
YzliMmJkMDg3OWY2OWNlYTQ0ZGUyZTBjNzY5ODBhMmExOGEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1kdXBsaWNh
dGUtaW5wdXQtbmFtZXMuanNvbgpAQCAtMCwwICsxLDI3IEBACit7CisgICAgInR5cGVzIjogewor
ICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibmFtZSI6ICJkb3VibGUiLCAic2hh
cGUiOiAiU0NBTEFSIiB9LAorICAgICAgICAgICAgeyAibmFtZSI6ICJ1aW50NjRfdCIsICJzaGFw
ZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAiaW5wdXRzIjogWworICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJHZXRDdXJyZW50VGltZSIsCisgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgdGhlIHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkg
YW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQi
LAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJj
dXJyZW50VGltZSIsICJ0eXBlIjogImRvdWJsZSIgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJHZXRDdXJyZW50VGltZSIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyB0aGUgUFJORyBzZWVkIHVzZWQgYnkgTWF0aC5y
YW5kb20oKS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAg
ICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJhbmRvbVNl
ZWQiLCAidHlwZSI6ICJ1aW50NjRfdCIgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAg
XQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rl
c3RzL2ZhaWwtb24tZHVwbGljYXRlLXR5cGUtbmFtZXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWR1cGxpY2F0ZS10eXBlLW5hbWVzLmpz
b24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTdhNjdmNzU4MDkwNjdmYWJiZmVlZTAyOGNlZGE1NmQ1NGU4NWMxMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90
ZXN0cy9mYWlsLW9uLWR1cGxpY2F0ZS10eXBlLW5hbWVzLmpzb24KQEAgLTAsMCArMSwyMiBAQAor
eworICAgICJ0eXBlcyI6IHsKKyAgICAgICAgIkdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsgIm5h
bWUiOiAidWludDY0X3QiLCAic2hhcGUiOiAiU0NBTEFSIiB9LAorICAgICAgICAgICAgeyAibmFt
ZSI6ICJ1aW50NjRfdCIsICJzaGFwZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0sCisK
KyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTZXRSYW5k
b21TZWVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXRzIHRoZSBQUk5HIHNlZWQg
dXNlZCBieSBNYXRoLnJhbmRvbSgpLiIsCisgICAgICAgICAgICAicXVldWUiOiAiU0NSSVBUX01F
TU9JWkVEIiwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmFuZG9tU2VlZCIsCisgICAgICAgICAgICAgICAg
ICAgICJ0eXBlIjogInVpbnQ2NF90IgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
ZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWVudW0tdHlwZS1taXNzaW5nLXZhbHVlcy5qc29u
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tZW51
bS10eXBlLW1pc3NpbmctdmFsdWVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFiOWY5YzYxOWZmYzY2MDgz
MDU0YjU2ZmZmOGYyYzQ3NmM0YmQxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWVudW0tdHlwZS1taXNzaW5nLXZh
bHVlcy5qc29uCkBAIC0wLDAgKzEsMjEgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJH
bG9iYWwiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiTW91c2VC
dXR0b24iLCAic2hhcGUiOiAiU0NBTEFSIiwKKyAgICAgICAgICAgICAgICAiZmxhZ3MiOiBbIkVO
VU0iXQorICAgICAgICAgICAgfQorICAgICAgICBdCisgICAgfSwKKworICAgICJpbnB1dHMiOiBb
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNhdmVkTW91c2VCdXR0b24iLAorICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN1cHBsaWVzIGEgbW91c2UgYnV0dG9uIGVudW0gdmFs
dWUuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAg
ICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjdXJyZW50VGltZSIs
ICJ0eXBlIjogIk1vdXNlQnV0dG9uIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBd
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZmFpbC1vbi1taXNzaW5nLWlucHV0LW1lbWJlci1uYW1lLmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLWlucHV0LW1lbWJl
ci1uYW1lLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlhZjQ5MWUyNTAwMWE0ODkxY2Q1ZGFmOTNmYmQyNzgw
ODE2MzVmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkv
c2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbWVtYmVyLW5hbWUuanNvbgpAQCAt
MCwwICsxLDIwIEBACit7CisgICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAg
ICAgICAgICAgeyAibmFtZSI6ICJkb3VibGUiLCAic2hhcGUiOiAiU0NBTEFSIiB9CisgICAgICAg
IF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAiR2V0Q3VycmVudFRpbWUiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN1cHBs
aWVzIHRoZSBzeXN0ZW0gdGltZSB0byBEYXRlLm5vdygpIGFuZCBuZXcgRGF0ZSgpLiIsCisgICAg
ICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwKKyAgICAgICAgICAgICJtZW1iZXJz
IjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZG91
YmxlIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0
cy9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbmFtZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tbWlzc2luZy1pbnB1dC1uYW1lLmpzb24KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODQzMTA3NjdjODM1NDAwNDg4NDg2NWE4N2Q0ZWM3NjY5NWJiOTEwYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9m
YWlsLW9uLW1pc3NpbmctaW5wdXQtbmFtZS5qc29uCkBAIC0wLDAgKzEsMjAgQEAKK3sKKyAgICAi
dHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAgICAgICAgICB7ICJuYW1lIjogImRv
dWJsZSIsICJzaGFwZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAiaW5w
dXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMg
dGhlIHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAg
ICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBb
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjdXJyZW50
VGltZSIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5n
LWlucHV0LXF1ZXVlLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZmFpbC1vbi1taXNzaW5nLWlucHV0LXF1ZXVlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQwMjM1
MjFhMzE1ZGNiZGJhYmMzYjM0MmFiNjA2OTE0MTQ3ODkxOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3Npbmct
aW5wdXQtcXVldWUuanNvbgpAQCAtMCwwICsxLDIwIEBACit7CisgICAgInR5cGVzIjogeworICAg
ICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibmFtZSI6ICJkb3VibGUiLCAic2hhcGUi
OiAiU0NBTEFSIiB9CisgICAgICAgIF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAg
ICAgeworICAgICAgICAgICAgIm5hbWUiOiAiR2V0Q3VycmVudFRpbWUiLAorICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlN1cHBsaWVzIHRoZSBzeXN0ZW0gdGltZSB0byBEYXRlLm5vdygpIGFu
ZCBuZXcgRGF0ZSgpLiIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImN1cnJlbnRUaW1lIiwKKyAgICAgICAg
ICAgICAgICAgICAgInR5cGUiOiAiZG91YmxlIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctdHlwZS1tb2RlLmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNz
aW5nLXR5cGUtbW9kZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZDM3YjcxM2FhN2Y5MGIyNzMyZmIyNTY0
ZWM5MzUzNjg2YTgzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLXR5cGUtbW9kZS5qc29uCkBAIC0w
LDAgKzEsMjEgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAg
ICAgICAgICB7ICJuYW1lIjogImRvdWJsZSIgfQorICAgICAgICBdCisgICAgfSwKKworICAgICJp
bnB1dHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIkdldEN1cnJlbnRUaW1l
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdXBwbGllcyB0aGUgc3lzdGVtIHRpbWUg
dG8gRGF0ZS5ub3coKSBhbmQgbmV3IERhdGUoKS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlND
UklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImN1cnJlbnRUaW1lIiwKKyAgICAgICAg
ICAgICAgICAgICAgInR5cGUiOiAiZG91YmxlIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctdHlwZS1uYW1lLmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNz
aW5nLXR5cGUtbmFtZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNWRlMmIyZGM5YWUzZDBhOTRiNWQ0YjZh
MzhhNjFkYWEyZTI2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLXR5cGUtbmFtZS5qc29uCkBAIC0w
LDAgKzEsMjEgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAg
ICAgICAgICB7ICJzaGFwZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAi
aW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJHZXRDdXJyZW50VGlt
ZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgdGhlIHN5c3RlbSB0aW1l
IHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJT
Q1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjdXJyZW50VGltZSIsCisgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1uby1pbnB1dHMuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW5vLWlucHV0cy5q
c29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViOTRiNWJkNDRjM2Q0MWQwMmUwMDhmNmFmYmY0N2E1ZjAyZGI1NjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZmFpbC1vbi1uby1pbnB1dHMuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgICAidHlw
ZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAgICAgICAgICB7ICJuYW1lIjogImRvdWJs
ZSIsICJzaGFwZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW5vLXR5
cGVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFp
bC1vbi1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyNjBjNTVhYmVkNmE1MDlkMmIxMzQwMDZk
MjUwMjY5M2Q3YzQ4ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTUg
QEAKK3sKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJH
ZXRDdXJyZW50VGltZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgdGhl
IHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAgICAg
ICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjdXJyZW50VGlt
ZSIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCisgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi1p
bnB1dC1xdWV1ZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rl
c3RzL2ZhaWwtb24tdW5rbm93bi1pbnB1dC1xdWV1ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MzQyNTgx
YWEzMThlOTAzNmUzMDViMDNmZjQ1NWZiNDY1NmFmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi11bmtub3duLWlu
cHV0LXF1ZXVlLmpzb24KQEAgLTAsMCArMSwyMSBAQAoreworICAgICJ0eXBlcyI6IHsKKyAgICAg
ICAgIkdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91YmxlIiwgInNoYXBlIjog
IlNDQUxBUiIgfQorICAgICAgICBdCisgICAgfSwKKworICAgICJpbnB1dHMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJuYW1lIjogIkdldEN1cnJlbnRUaW1lIiwKKyAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJTdXBwbGllcyB0aGUgc3lzdGVtIHRpbWUgdG8gRGF0ZS5ub3coKSBhbmQg
bmV3IERhdGUoKS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU9JWkVEIiwKKyAg
ICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiY3VycmVudFRpbWUiLAorICAgICAgICAgICAgICAgICAgICAidHlwZSI6
ICJkb3VibGUiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9Cisg
ICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2ZhaWwtb24tdW5rbm93bi1tZW1iZXItdHlwZS5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi1tZW1iZXItdHlwZS5q
c29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE4ZDkxZjlhZWQ1OTQzZTU5MWY5MmZmZjI2ZjMxMTgyYjU3Yjc4ZGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZmFpbC1vbi11bmtub3duLW1lbWJlci10eXBlLmpzb24KQEAgLTAsMCArMSwyMSBAQAor
eworICAgICJ0eXBlcyI6IHsKKyAgICAgICAgIkdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsgIm5h
bWUiOiAidWludDY0X3QiLCAic2hhcGUiOiAiU0NBTEFSIiB9CisgICAgICAgIF0KKyAgICB9LAor
CisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU2V0UmFu
ZG9tU2VlZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyB0aGUgUFJORyBzZWVk
IHVzZWQgYnkgTWF0aC5yYW5kb20oKS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9N
RU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICJuYW1lIjogInJhbmRvbVNlZWQiLAorICAgICAgICAgICAgICAg
ICAgICAidHlwZSI6ICJkb3VibGUiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQor
ICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Jl
cGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi10eXBlLXNoYXBlLmpzb24gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi11bmtub3duLXR5
cGUtc2hhcGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzIwMzQ0YmZmMGRiOTc1YmYyZDg1OTcyYjU0NjMx
OTkxZGZmYzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi10eXBlLXNoYXBlLmpzb24KQEAgLTAsMCAr
MSwyMSBAQAoreworICAgICJ0eXBlcyI6IHsKKyAgICAgICAgIkdsb2JhbCI6IFsKKyAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZG91YmxlIiwgInNoYXBlIjogIkJPTktFUlMiIH0KKyAgICAgICAgXQor
ICAgIH0sCisKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6
ICJHZXRDdXJyZW50VGltZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMg
dGhlIHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAg
ICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBb
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjdXJyZW50
VGltZSIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtZW51bS1l
bmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBl
cnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNjFjZDY2YTFjMWQ0NTIy
MDBjNzY3Y2YxNmQxYjUxMzIzNGM0NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxw
ZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbgpAQCAtMCwwICsxLDI3IEBACit7CisgICAgInR5
cGVzIjogeworICAgICAgICAiV2ViQ29yZSI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJNb3VzZUJ1dHRvbiIsICJzaGFwZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6
ICJ1bnNpZ25lZCIsCisgICAgICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCisgICAgICAg
ICAgICAgICAgInZhbHVlcyI6IFsiTm9CdXR0b24iLCAiTGVmdEJ1dHRvbiIsICJNaWRkbGVCdXR0
b24iLCAiUmlnaHRCdXR0b24iXSwKKyAgICAgICAgICAgICAgICAiZ3VhcmRlZF92YWx1ZXMiOiB7
CisgICAgICAgICAgICAgICAgICAgICJFTkFCTEUoU0lERV9CVVRUT05TKSI6IFsiTGVmdFNpZGVC
dXR0b24iLCAiUmlnaHRTaWRlQnV0dG9uIl0sCisgICAgICAgICAgICAgICAgICAgICJQTEFURk9S
TShXSU5ET1dTKSI6IFsiV2luZG93c0J1dHRvbiJdCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAiaGVhZGVyIjogInBsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oIgorICAg
ICAgICAgICAgfQorICAgICAgICBdCisgICAgfSwKKworICAgICJpbnB1dHMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJuYW1lIjogIlNhdmVkTW91c2VCdXR0b24iLAorICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlN1cHBsaWVzIGEgbW91c2UgYnV0dG9uIGVudW0gdmFsdWUuIiwKKyAg
ICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJl
cnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJidXR0b24iLCAidHlwZSI6ICJNb3Vz
ZUJ1dHRvbiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWVu
dW0tZW5jb2RpbmctaGVscGVycy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9z
Y3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY0YTFkMDJjMWUxZTk5NmM5NmE0MDZhMTlmNTM2NzI4ZjM3ZGVkOGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJh
dGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24KQEAgLTAsMCArMSwzMSBAQAoreworICAgICJ0
eXBlcyI6IHsKKyAgICAgICAgIkphdmFTY3JpcHRDb3JlIjogWworICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJuYW1lIjogIklucHV0UXVldWUiLCAic2hhcGUiOiAiU0NBTEFSIiwKKyAg
ICAgICAgICAgICAgICAiZmxhZ3MiOiBbIkVOVU1fQ0xBU1MiXSwKKyAgICAgICAgICAgICAgICAi
dmFsdWVzIjogWyJFdmVudExvb3BJbnB1dCIsICJMb2FkZXJNZW1vaXplZERhdGEiLCAiU2NyaXB0
TWVtb2l6ZWREYXRhIl0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJyZXBsYXkvTm9uZGV0
ZXJtaW5pc3RpY0lucHV0LmgiCisgICAgICAgICAgICB9CisgICAgICAgIF0sCisgICAgICAgICJX
ZWJDb3JlIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogIk1vdXNl
QnV0dG9uIiwgInNoYXBlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVuc2lnbmVkIiwKKyAgICAg
ICAgICAgICAgICAiZmxhZ3MiOiBbIkVOVU0iXSwKKyAgICAgICAgICAgICAgICAidmFsdWVzIjog
WyJOb0J1dHRvbiIsICJMZWZ0QnV0dG9uIiwgIk1pZGRsZUJ1dHRvbiIsICJSaWdodEJ1dHRvbiJd
LAorICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50
LmgiCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsK
KyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU2F2ZWRNb3VzZUJ1dHRvbiIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgYSBtb3VzZSBidXR0b24gZW51bSB2YWx1
ZS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAg
ICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJ1dHRvbiIsICJ0eXBl
IjogIk1vdXNlQnV0dG9uIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBlcy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3JlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hhcGUtdHlwZXMuanNv
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYTExZGEzY2Y2Mzc5ZWQyODE1MjU0MzVhYWViOGQ2Y2MzMmUzMjIyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rl
c3RzL2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hhcGUtdHlwZXMuanNvbgpAQCAtMCwwICsxLDQ1IEBA
Cit7CisgICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAi
bmFtZSI6ICJTY2FsYXJUeXBlIiwgInNoYXBlIjogIlNDQUxBUiIgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiOiAiTWFwVHlwZSIsICJzaGFwZSI6ICJNQVAiIH0sCisgICAgICAgICAgICB7ICJuYW1l
IjogIlNoYXJlZE1hcFR5cGUiLCAic2hhcGUiOiAiU0hBUkVEX01BUCIgfSwKKyAgICAgICAgICAg
IHsgIm5hbWUiOiAiTGlzdFR5cGUiLCAic2hhcGUiOiAiTElTVCIgfQorICAgICAgICBdCisgICAg
fSwKKworICAgICJpbnB1dHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNj
YWxhcklucHV0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAgICAgICAg
InF1ZXVlIjogIkVWRU5UX0xPT1AiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJkYXRhIiwgInR5cGUiOiAiU2NhbGFyVHlwZSIgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJNYXBJ
bnB1dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAgICAgICJxdWV1
ZSI6ICJFVkVOVF9MT09QIiwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZGF0YSIsICJ0eXBlIjogIk1hcFR5cGUiIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU2hhcmVkTWFwSW5w
dXQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCisgICAgICAgICAgICAicXVldWUi
OiAiRVZFTlRfTE9PUCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImRhdGEiLCAidHlwZSI6ICJTaGFyZWRNYXBUeXBlIiB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIkxpc3RJbnB1
dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAgICAgICJxdWV1ZSI6
ICJFVkVOVF9MT09QIiwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiZGF0YSIsICJ0eXBlIjogIkxpc3RUeXBlIiB9CisgICAgICAgICAgICBdCisg
ICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWlucHV0LXdpdGgt
Z3VhcmQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Njk1MTE3OWM5YWVlZDM0YjBkY2FhYjlmMmE3MjMyY2Yz
ZTNjOTIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9z
Y3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWlucHV0LXdpdGgtZ3VhcmQuanNvbgpAQCAtMCwwICsxLDI4
IEBACit7CisgICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAg
eyAibmFtZSI6ICJkb3VibGUiLCAic2hhcGUiOiAiU0NBTEFSIiB9LAorICAgICAgICAgICAgeyAi
bmFtZSI6ICJ1aW50NjRfdCIsICJzaGFwZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0s
CisKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJHZXRD
dXJyZW50VGltZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgdGhlIHN5
c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAgICAgICJx
dWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgImd1YXJkIjogIkVOQUJMRShE
VU1NWV9GRUFUVVJFKSIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImN1cnJlbnRUaW1lIiwgInR5cGUiOiAiZG91YmxlIiB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNldFJhbmRv
bVNlZWQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNldHMgdGhlIFBSTkcgc2VlZCB1
c2VkIGJ5IE1hdGgucmFuZG9tKCkuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVN
T0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAgICAgeyJuYW1l
IjogInJhbmRvbVNlZWQiLCAidHlwZSI6ICJ1aW50NjRfdCIgfQorICAgICAgICAgICAgXQorICAg
ICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWlucHV0LXdpdGgtdmVjdG9yLW1lbWJlcnMuanNvbiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1
dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgwMTEyZWEyNzViMTZjMjI5
OTdmZDQzMWU1YmY2ZThhMzkzODE0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1dC13aXRoLXZlY3Rvci1t
ZW1iZXJzLmpzb24KQEAgLTAsMCArMSwyOCBAQAoreworICAgICJ0eXBlcyI6IHsKKyAgICAgICAg
Ikdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91YmxlIiwgInNoYXBlIjogIlND
QUxBUiIgfQorICAgICAgICBdLAorCisgICAgICAgICJKYXZhU2NyaXB0Q29yZSI6IFsKKyAgICAg
ICAgICAgIHsgIm5hbWUiOiAiSlNUaGluZyIsICJzaGFwZSI6ICJTQ0FMQVIiLCAiaGVhZGVyIjog
InRoaW5ncy9KU1RoaW5nLmgiIH0KKyAgICAgICAgXSwKKworICAgICAgICAiV2ViQ29yZSI6IFsK
KyAgICAgICAgICAgIHsgIm5hbWUiOiAiV2ViVGhpbmciLCAic2hhcGUiOiAiU0NBTEFSIiwgImhl
YWRlciI6ICJ0aGluZ3MvV2ViVGhpbmcuaCIgIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAi
aW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJBcnJheU9mVGhpbmdz
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdXBwbGllcyBhcnJheXMgb2YgdGhpbmdz
LiIsCisgICAgICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwKKyAgICAgICAgICAg
ICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91YmxlcyIsICJ0eXBl
IjogImRvdWJsZSIsICJmbGFncyI6IFsiVkVDVE9SIl0gfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImpzdGhpbmdzIiwgInR5cGUiOiAiSlNUaGluZyIsICJmbGFncyI6IFsiVkVDVE9SIl0g
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndlYnRoaW5ncyIsICJ0eXBlIjogIldlYlRo
aW5nIiwgImZsYWdzIjogWyJWRUNUT1IiXSB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAg
ICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZ2VuZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1dHMtd2l0aC1mbGFncy5qc29u
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmEyNWE0OWU0MDQ2MDkxNjIzNjcxMjA0ZGExOGY5OTJmNWVjNDA5NjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZ2VuZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbgpAQCAtMCwwICsxLDM2IEBACit7Cisg
ICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibmFtZSI6
ICJTY2FsYXJUeXBlIiwgInNoYXBlIjogIlNDQUxBUiIgfQorICAgICAgICBdCisgICAgfSwKKwor
ICAgICJpbnB1dHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNjYWxhcklu
cHV0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAgICAgICAgInF1ZXVl
IjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImRhdGEiLCAidHlwZSI6ICJTY2FsYXJUeXBlIiB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNjYWxh
cklucHV0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAgICAgICAgInF1
ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAiZmxhZ3MiOiBbIkhJRERFTiJd
LAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJk
YXRhIiwgInR5cGUiOiAiU2NhbGFyVHlwZSIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTY2FsYXJJbnB1dCIsCisgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0la
RUQiLAorICAgICAgICAgICAgImZsYWdzIjogWyJDUkVBVEVfRlJPTV9QQUdFIl0sCisgICAgICAg
ICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGEiLCAidHlw
ZSI6ICJTY2FsYXJUeXBlIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJhdGUtbWVtb2l6ZWQtdHlwZS1zaGFwZXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
ZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLXNoYXBlcy5qc29uCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlNGU3NmQ2ODNiOGQ5YzQzYjVmZjcyMmU1ZDQ3NmNiMmEyZWRlYTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMv
Z2VuZXJhdGUtbWVtb2l6ZWQtdHlwZS1zaGFwZXMuanNvbgpAQCAtMCwwICsxLDI3IEBACit7Cisg
ICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibmFtZSI6
ICJTY2FsYXJUeXBlIiwgInNoYXBlIjogIlNDQUxBUiIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
OiAiTWFwVHlwZSIsICJzaGFwZSI6ICJNQVAiIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAi
aW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTY2FsYXJJbnB1dCIs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJT
Q1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJkYXRhIiwgInR5cGUiOiAiU2NhbGFyVHlwZSIgfQorICAgICAgICAgICAg
XQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJNYXBJbnB1dCIs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJT
Q1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJkYXRhIiwgInR5cGUiOiAiTWFwVHlwZSIgfQorICAgICAgICAgICAgXQor
ICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDQxZDlkNTJiMWZjMTk5NWU4ZWM1YzAwYTAzOGY4MzZhM2I3ZDdlNGYu
LjlhZWY0YjE1ZjVjODJlMzE1YTA1YzhlZWE4NDgwNmUwZTE0OGY0YWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAx
NC0wMi0wNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgUmVw
bGF5OiB1cHN0cmVhbSByZXBsYXkgaW5wdXQgY29kZSBnZW5lcmF0b3IgYW5kIEVuY29kZWRWYWx1
ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI4MjE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGFuIGV4ZWN1dGFibGUgc2NyaXB0IHRvIGxhdW5jaCB0aGUgcmVwbGF5IGlucHV0IGdlbmVy
YXRvciB0ZXN0cy4KKyAgICAgICAgQWRkIGEgdGVzdCBoYXJuZXNzIGZvciBydW5uaW5nIHRoZSBj
b2RlIGdlbmVyYXRvciB0ZXN0cywgbW9zdGx5IHRha2VuCisgICAgICAgIGZyb20gdGhlIGJpbmRp
bmdzIHRlc3QgaGFybmVzcyAoYnV0IHNpbXBsaWZpZWQpLgorCisgICAgICAgICogU2NyaXB0cy9y
dW4taW5wdXQtZ2VuZXJhdG9yLXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcmVwbGF5L19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3JlcGxheS9tYWluLnB5OiBBZGRlZC4KKyAgICAgICAgKElucHV0
R2VuZXJhdG9yVGVzdHMpOgorICAgICAgICAoSW5wdXRHZW5lcmF0b3JUZXN0cy5fX2luaXRfXyk6
CisgICAgICAgIChJbnB1dEdlbmVyYXRvclRlc3RzLmdlbmVyYXRlX2Zyb21fanNvbik6CisgICAg
ICAgIChJbnB1dEdlbmVyYXRvclRlc3RzLndyaXRlX2Vycm9yX2ZpbGUpOgorICAgICAgICAoSW5w
dXRHZW5lcmF0b3JUZXN0cy5kZXRlY3RfY2hhbmdlcyk6CisgICAgICAgIChJbnB1dEdlbmVyYXRv
clRlc3RzLnJ1bl90ZXN0cyk6CisgICAgICAgIChJbnB1dEdlbmVyYXRvclRlc3RzLm1haW4pOgor
CiAyMDE0LTAyLTA0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KIAogICAg
ICAgICBbQXV0b21ha2VdIEFkZCBtaXNzaW5nICQoZmVhdHVyZV9kZWZpbmVzKSB3aGVuIGdlbmVy
YXRpbmcgSW5qZWN0ZWRCdW5kbGUgYmluZGluZ3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
cnVuLWlucHV0LWdlbmVyYXRvci10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWlucHV0LWdlbmVy
YXRvci10ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWJjNWQwZDU5ZmZlMmMwZmE4NGZlNDZmZmY5NWEzNTZh
YjliYWQxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4taW5wdXQtZ2VuZXJh
dG9yLXRlc3RzCkBAIC0wLDAgKzEsNDMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTCisjIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorIyBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCBzeXMKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCisKK2Rl
ZiBtYWluKGFyZ3YpOgorICAgICIiIlJ1bnMgcmVwbGF5IGlucHV0IGNvZGUgZ2VuZXJhdG9yIG9u
IHRlc3Qgc3BlY2lmaWNhdGlvbiBmaWxlcyBhbmQgY29tcGFyZXMKKyAgICB0aGUgcmVzdWx0cyB3
aXRoIHJlZmVyZW5jZSBmaWxlcy4KKworICAgIE9wdGlvbnM6CisgICAgICAgLS1yZXNldC1yZXN1
bHRzOiBPdmVyd3JpdGVzIHRoZSByZWZlcmVuY2UgZmlsZXMgd2l0aCB0aGUgZ2VuZXJhdGVkIHJl
c3VsdHMuCisKKyAgICAiIiIKKyAgICByZXNldF9yZXN1bHRzID0gIi0tcmVzZXQtcmVzdWx0cyIg
aW4gYXJndgorCisgICAgZnJvbSB3ZWJraXRweS5yZXBsYXkubWFpbiBpbXBvcnQgSW5wdXRHZW5l
cmF0b3JUZXN0cworICAgIHJldHVybiBJbnB1dEdlbmVyYXRvclRlc3RzKHJlc2V0X3Jlc3VsdHMs
IGV4ZWN1dGl2ZS5FeGVjdXRpdmUoKSkubWFpbigpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndikpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3JlcGxheS9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cmVwbGF5L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNjViZWU1YmI3N2U5NmViYzdjZDljNDc2
NDA2OTBmYmRhOGFjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3JlcGxheS9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24g
dG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcmVwbGF5L21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3JlcGxheS9tYWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MDQyMTk2YTQ2ODI1ZTdiZGRiN2E4ODMz
NTkwNTdlOGVkYWQ1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3JlcGxheS9tYWluLnB5CkBAIC0wLDAgKzEsMTM0IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFT
CisjIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRAorIyBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIEhPTERFUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBh
dGgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0
ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVy
cm9yCisKKworY2xhc3MgSW5wdXRHZW5lcmF0b3JUZXN0czoKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXNldF9yZXN1bHRzLCBleGVjdXRpdmUpOgorICAgICAgICBzZWxmLnJlc2V0X3Jlc3Vs
dHMgPSByZXNldF9yZXN1bHRzCisgICAgICAgIHNlbGYuZXhlY3V0aXZlID0gZXhlY3V0aXZlCisK
KyAgICBkZWYgZ2VuZXJhdGVfZnJvbV9qc29uKHNlbGYsIGpzb25fZmlsZSwgb3V0cHV0X2RpcmVj
dG9yeSk6CisgICAgICAgIGNtZCA9IFsncHl0aG9uJywKKyAgICAgICAgICAgICAgICdKYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5JywKKyAg
ICAgICAgICAgICAgICctLW91dHB1dERpcicsIG91dHB1dF9kaXJlY3RvcnksCisgICAgICAgICAg
ICAgICAnLS1mb3JjZScsCisgICAgICAgICAgICAgICAnLS1mcmFtZXdvcmsnLCAnVGVzdCcsCisg
ICAgICAgICAgICAgICAnLS10ZXN0JywKKyAgICAgICAgICAgICAgIGpzb25fZmlsZV0KKworICAg
ICAgICBleGl0X2NvZGUgPSAwCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0ZGVycl9vdXRw
dXQgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCisgICAgICAgICAgICBpZiBzdGRl
cnJfb3V0cHV0OgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfZXJyb3JfZmlsZShqc29uX2Zp
bGUsIG91dHB1dF9kaXJlY3RvcnksIHN0ZGVycl9vdXRwdXQpCisgICAgICAgIGV4Y2VwdCBTY3Jp
cHRFcnJvciwgZToKKyAgICAgICAgICAgIHByaW50IGUub3V0cHV0CisgICAgICAgICAgICBleGl0
X2NvZGUgPSBlLmV4aXRfY29kZQorICAgICAgICByZXR1cm4gZXhpdF9jb2RlCisKKyAgICBkZWYg
d3JpdGVfZXJyb3JfZmlsZShzZWxmLCBpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2RpcmVjdG9yeSwg
ZXJyb3Jfb3V0cHV0KToKKyAgICAgICAgb3V0cHV0X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG91
dHB1dF9kaXJlY3RvcnksIG9zLnBhdGguYmFzZW5hbWUoaW5wdXRfZmlsZXBhdGgpICsgJy1lcnJv
cicpCisKKyAgICAgICAgd2l0aCBvcGVuKG91dHB1dF9maWxlcGF0aCwgInciKSBhcyBvdXRwdXRf
ZmlsZToKKyAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKGVycm9yX291dHB1dCkKKworICAg
IGRlZiBkZXRlY3RfY2hhbmdlcyhzZWxmLCB3b3JrX2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVj
dG9yeSk6CisgICAgICAgIGNoYW5nZXNfZm91bmQgPSBGYWxzZQorICAgICAgICBmb3Igb3V0cHV0
X2ZpbGUgaW4gb3MubGlzdGRpcih3b3JrX2RpcmVjdG9yeSk6CisgICAgICAgICAgICBjbWQgPSBb
J2RpZmYnLAorICAgICAgICAgICAgICAgICAgICctdScsCisgICAgICAgICAgICAgICAgICAgJy1O
JywKKyAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmVmZXJlbmNlX2RpcmVjdG9yeSwg
b3V0cHV0X2ZpbGUpLAorICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3b3JrX2RpcmVj
dG9yeSwgb3V0cHV0X2ZpbGUpXQorCisgICAgICAgICAgICBleGl0X2NvZGUgPSAwCisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5leGVjdXRpdmUucnVuX2Nv
bW1hbmQoY21kKQorICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAg
ICAgICAgIG91dHB1dCA9IGUub3V0cHV0CisgICAgICAgICAgICAgICAgZXhpdF9jb2RlID0gZS5l
eGl0X2NvZGUKKworICAgICAgICAgICAgaWYgZXhpdF9jb2RlIG9yIG91dHB1dDoKKyAgICAgICAg
ICAgICAgICBwcmludCAnRkFJTDogJXMnICUgb3V0cHV0X2ZpbGUKKyAgICAgICAgICAgICAgICBw
cmludCBvdXRwdXQKKyAgICAgICAgICAgICAgICBjaGFuZ2VzX2ZvdW5kID0gVHJ1ZQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCAnUEFTUzogJXMnICUgb3V0cHV0X2Zp
bGUKKyAgICAgICAgcmV0dXJuIGNoYW5nZXNfZm91bmQKKworICAgIGRlZiBydW5fdGVzdHMoc2Vs
ZiwgaW5wdXRfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgd29ya19k
aXJlY3RvcnkgPSByZWZlcmVuY2VfZGlyZWN0b3J5CisKKyAgICAgICAgcGFzc2VkID0gVHJ1ZQor
ICAgICAgICBmb3IgaW5wdXRfZmlsZSBpbiBvcy5saXN0ZGlyKGlucHV0X2RpcmVjdG9yeSk6Cisg
ICAgICAgICAgICAobmFtZSwgZXh0ZW5zaW9uKSA9IG9zLnBhdGguc3BsaXRleHQoaW5wdXRfZmls
ZSkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbiAhPSAnLmpzb24nOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICAjIEdlbmVyYXRlIG91dHB1dCBpbnRvIHRoZSB3b3JrIGRp
cmVjdG9yeSAoZWl0aGVyIHRoZSBnaXZlbiBvbmUgb3IgYQorICAgICAgICAgICAgIyB0ZW1wIG9u
ZSBpZiBub3QgcmVzZXRfcmVzdWx0cyBpcyBwZXJmb3JtZWQpCisgICAgICAgICAgICBpZiBub3Qg
c2VsZi5yZXNldF9yZXN1bHRzOgorICAgICAgICAgICAgICAgIHdvcmtfZGlyZWN0b3J5ID0gdGVt
cGZpbGUubWtkdGVtcCgpCisKKyAgICAgICAgICAgIGlmIHNlbGYuZ2VuZXJhdGVfZnJvbV9qc29u
KG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlucHV0X2ZpbGUpLCB3b3JrX2RpcmVjdG9y
eSk6CisgICAgICAgICAgICAgICAgcGFzc2VkID0gRmFsc2UKKworICAgICAgICAgICAgaWYgc2Vs
Zi5yZXNldF9yZXN1bHRzOgorICAgICAgICAgICAgICAgIHByaW50ICJSZXNldCByZXN1bHRzIGZv
ciB0ZXN0OiAlcyIgJSAoaW5wdXRfZmlsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisg
ICAgICAgICAgICAjIERldGVjdCBjaGFuZ2VzCisgICAgICAgICAgICBpZiBzZWxmLmRldGVjdF9j
aGFuZ2VzKHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgICAg
ICAgICBwYXNzZWQgPSBGYWxzZQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh3b3JrX2RpcmVj
dG9yeSkKKworICAgICAgICByZXR1cm4gcGFzc2VkCisKKyAgICBkZWYgbWFpbihzZWxmKToKKyAg
ICAgICAgY3VycmVudF9zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShvcy5jdXJkaXIpCisgICAgICAg
IG9zLmNoZGlyKG9zLnBhdGguam9pbihjdXJyZW50X3NjbS5jaGVja291dF9yb290LCAnU291cmNl
JykpCisKKyAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9IFRydWUKKworICAgICAgICBpbnB1dF9k
aXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ0phdmFTY3JpcHRDb3JlJywgJ3JlcGxheScsICdzY3Jp
cHRzJywgJ3Rlc3RzJykKKyAgICAgICAgcmVmZXJlbmNlX2RpcmVjdG9yeSA9IG9zLnBhdGguam9p
bignSmF2YVNjcmlwdENvcmUnLCAncmVwbGF5JywgJ3NjcmlwdHMnLCAndGVzdHMnLCAnZXhwZWN0
ZWQnKQorICAgICAgICBpZiBub3Qgc2VsZi5ydW5fdGVzdHMoaW5wdXRfZGlyZWN0b3J5LCByZWZl
cmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgICAgIGFsbF90ZXN0c19wYXNzZWQgPSBGYWxzZQor
CisgICAgICAgIHByaW50ICcnCisgICAgICAgIGlmIGFsbF90ZXN0c19wYXNzZWQ6CisgICAgICAg
ICAgICBwcmludCAnQWxsIHRlc3RzIFBBU1MhJworICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHByaW50ICdTb21lIHRlc3RzIEZBSUwhIChUbyB1cGRhdGUg
dGhlIHJlZmVyZW5jZSBmaWxlcywgZXhlY3V0ZSAicnVuLWlucHV0LWdlbmVyYXRvci10ZXN0cyAt
LXJlc2V0LXJlc3VsdHMiKScKKyAgICAgICAgICAgIHJldHVybiAtMQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>223187</attachid>
            <date>2014-02-04 17:26:19 -0800</date>
            <delta_ts>2014-02-04 17:27:00 -0800</delta_ts>
            <desc>WebCore generated implementation file</desc>
            <filename>WebReplayInputs.cpp</filename>
            <type>text/plain</type>
            <size>70526</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">LyoKICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKgogKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwogKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKICogVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCiAq
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAogKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCiAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQogKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogKi8KCiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gV2ViSW5wdXRzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IEphdmFTY3JpcHRD
b3JlL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKCiNpbmNsdWRl
ICJjb25maWcuaCIKI2luY2x1ZGUgIldlYlJlcGxheUlucHV0cy5oIgoKI2lmIEVOQUJMRShXRUJf
UkVQTEFZKQojaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgojaW5jbHVkZSAiS2V5Ym9hcmRF
dmVudC5oIgojaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgojaW5jbHVkZSAiUGxhdGZvcm1LZXli
b2FyZEV2ZW50LmgiCiNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKI2luY2x1ZGUgIlBs
YXRmb3JtV2hlZWxFdmVudC5oIgojaW5jbHVkZSAiUmVwbGF5SW5wdXRUeXBlcy5oIgojaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgojaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgojaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgoj
aW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKI2luY2x1ZGUgIlNlcmlhbGl6YXRpb25NZXRob2RzLmgi
CiNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiNpbmNsdWRlIDxyZXBsYXkv
Tm9uZGV0ZXJtaW5pc3RpY0lucHV0Lmg+CgpuYW1lc3BhY2UgV2ViQ29yZSB7CkJlZ2luU2VudGlu
ZWw6OkJlZ2luU2VudGluZWwoKQogICAgOiBFdmVudExvb3BJbnB1dDxCZWdpblNlbnRpbmVsPigp
CnsKfQoKQmVnaW5TZW50aW5lbDo6fkJlZ2luU2VudGluZWwoKQp7Cn0KCkRpc2FibGVDYWNoZTo6
RGlzYWJsZUNhY2hlKCkKICAgIDogRXZlbnRMb29wSW5wdXQ8RGlzYWJsZUNhY2hlPigpCnsKfQoK
RGlzYWJsZUNhY2hlOjp+RGlzYWJsZUNhY2hlKCkKewp9CgpFbmFibGVDYWNoZTo6RW5hYmxlQ2Fj
aGUoKQogICAgOiBFdmVudExvb3BJbnB1dDxFbmFibGVDYWNoZT4oKQp7Cn0KCkVuYWJsZUNhY2hl
Ojp+RW5hYmxlQ2FjaGUoKQp7Cn0KCkVuZFNlbnRpbmVsOjpFbmRTZW50aW5lbCgpCiAgICA6IEV2
ZW50TG9vcElucHV0PEVuZFNlbnRpbmVsPigpCnsKfQoKRW5kU2VudGluZWw6On5FbmRTZW50aW5l
bCgpCnsKfQoKUGxheWJhY2tFcnJvcjo6UGxheWJhY2tFcnJvcihTdHJpbmcgZXJyb3JNZXNzYWdl
KQogICAgOiBFdmVudExvb3BJbnB1dDxQbGF5YmFja0Vycm9yPigpCiAgICAsIG1fZXJyb3JNZXNz
YWdlKGVycm9yTWVzc2FnZSkKewp9CgpQbGF5YmFja0Vycm9yOjp+UGxheWJhY2tFcnJvcigpCnsK
fQoKSW5pdGlhbGl6ZUZvY3VzOjpJbml0aWFsaXplRm9jdXMoYm9vbCBpc0ZvY3VzZWQsIGJvb2wg
aXNBY3RpdmUsIGludCBmb2N1c2VkRnJhbWVJbmRleCkKICAgIDogRXZlbnRMb29wSW5wdXQ8SW5p
dGlhbGl6ZUZvY3VzPigpCiAgICAsIG1faXNGb2N1c2VkKGlzRm9jdXNlZCkKICAgICwgbV9pc0Fj
dGl2ZShpc0FjdGl2ZSkKICAgICwgbV9mb2N1c2VkRnJhbWVJbmRleChmb2N1c2VkRnJhbWVJbmRl
eCkKewp9CgpJbml0aWFsaXplRm9jdXM6On5Jbml0aWFsaXplRm9jdXMoKQp7Cn0KCkluaXRpYWxp
emVXaW5kb3c6OkluaXRpYWxpemVXaW5kb3coaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgOiBF
dmVudExvb3BJbnB1dDxJbml0aWFsaXplV2luZG93PigpCiAgICAsIG1fd2lkdGgod2lkdGgpCiAg
ICAsIG1faGVpZ2h0KGhlaWdodCkKewp9CgpJbml0aWFsaXplV2luZG93Ojp+SW5pdGlhbGl6ZVdp
bmRvdygpCnsKfQoKSW5pdGlhbE5hdmlnYXRpb246OkluaXRpYWxOYXZpZ2F0aW9uKFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBTdHJpbmcgdXJsLCBTdHJpbmcgcmVm
ZXJyZXIpCiAgICA6IEV2ZW50TG9vcElucHV0PEluaXRpYWxOYXZpZ2F0aW9uPigpCiAgICAsIG1f
c2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiAgICAsIG1fdXJsKHVybCkKICAgICwgbV9y
ZWZlcnJlcihyZWZlcnJlcikKewp9CgpJbml0aWFsTmF2aWdhdGlvbjo6fkluaXRpYWxOYXZpZ2F0
aW9uKCkKewp9CgpGb2N1c1NldEFjdGl2ZTo6Rm9jdXNTZXRBY3RpdmUoYm9vbCB0b1N0YXRlKQog
ICAgOiBFdmVudExvb3BJbnB1dDxGb2N1c1NldEFjdGl2ZT4oKQogICAgLCBtX3RvU3RhdGUodG9T
dGF0ZSkKewp9CgpGb2N1c1NldEFjdGl2ZTo6fkZvY3VzU2V0QWN0aXZlKCkKewp9CgpGb2N1c1Nl
dEZvY3VzZWQ6OkZvY3VzU2V0Rm9jdXNlZChib29sIHRvU3RhdGUpCiAgICA6IEV2ZW50TG9vcElu
cHV0PEZvY3VzU2V0Rm9jdXNlZD4oKQogICAgLCBtX3RvU3RhdGUodG9TdGF0ZSkKewp9CgpGb2N1
c1NldEZvY3VzZWQ6On5Gb2N1c1NldEZvY3VzZWQoKQp7Cn0KClNlbmRSZXNpemVFdmVudDo6U2Vu
ZFJlc2l6ZUV2ZW50KGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGZyYW1lSW5kZXgpCiAgICA6
IEV2ZW50TG9vcElucHV0PFNlbmRSZXNpemVFdmVudD4oKQogICAgLCBtX3dpZHRoKHdpZHRoKQog
ICAgLCBtX2hlaWdodChoZWlnaHQpCiAgICAsIG1fZnJhbWVJbmRleChmcmFtZUluZGV4KQp7Cn0K
ClNlbmRSZXNpemVFdmVudDo6flNlbmRSZXNpemVFdmVudCgpCnsKfQoKSGFuZGxlQ29udGV4dE1l
bnU6OkhhbmRsZUNvbnRleHRNZW51KHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1vdXNlRXZlbnQ+
IHBsYXRmb3JtRXZlbnQsIGludCBmcmFtZUluZGV4KQogICAgOiBFdmVudExvb3BJbnB1dDxIYW5k
bGVDb250ZXh0TWVudT4oKQogICAgLCBtX3BsYXRmb3JtRXZlbnQoc3RkOjptb3ZlKHBsYXRmb3Jt
RXZlbnQpKQogICAgLCBtX2ZyYW1lSW5kZXgoZnJhbWVJbmRleCkKewp9CgpIYW5kbGVDb250ZXh0
TWVudTo6fkhhbmRsZUNvbnRleHRNZW51KCkKewp9CgpIYW5kbGVLZXlQcmVzczo6SGFuZGxlS2V5
UHJlc3Moc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gcGxhdGZvcm1FdmVu
dCkKICAgIDogRXZlbnRMb29wSW5wdXQ8SGFuZGxlS2V5UHJlc3M+KCkKICAgICwgbV9wbGF0Zm9y
bUV2ZW50KHN0ZDo6bW92ZShwbGF0Zm9ybUV2ZW50KSkKewp9CgpIYW5kbGVLZXlQcmVzczo6fkhh
bmRsZUtleVByZXNzKCkKewp9CgpIYW5kbGVNb3VzZU1vdmU6OkhhbmRsZU1vdXNlTW92ZShzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1Nb3VzZUV2ZW50PiBwbGF0Zm9ybUV2ZW50LCBib29sIHNjcm9s
bGJhclRhcmdldGVkKQogICAgOiBFdmVudExvb3BJbnB1dDxIYW5kbGVNb3VzZU1vdmU+KCkKICAg
ICwgbV9wbGF0Zm9ybUV2ZW50KHN0ZDo6bW92ZShwbGF0Zm9ybUV2ZW50KSkKICAgICwgbV9zY3Jv
bGxiYXJUYXJnZXRlZChzY3JvbGxiYXJUYXJnZXRlZCkKewp9CgpIYW5kbGVNb3VzZU1vdmU6On5I
YW5kbGVNb3VzZU1vdmUoKQp7Cn0KCkhhbmRsZU1vdXNlUHJlc3M6OkhhbmRsZU1vdXNlUHJlc3Mo
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTW91c2VFdmVudD4gcGxhdGZvcm1FdmVudCkKICAgIDog
RXZlbnRMb29wSW5wdXQ8SGFuZGxlTW91c2VQcmVzcz4oKQogICAgLCBtX3BsYXRmb3JtRXZlbnQo
c3RkOjptb3ZlKHBsYXRmb3JtRXZlbnQpKQp7Cn0KCkhhbmRsZU1vdXNlUHJlc3M6On5IYW5kbGVN
b3VzZVByZXNzKCkKewp9CgpIYW5kbGVNb3VzZVJlbGVhc2U6OkhhbmRsZU1vdXNlUmVsZWFzZShz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Nb3VzZUV2ZW50PiBwbGF0Zm9ybUV2ZW50KQogICAgOiBF
dmVudExvb3BJbnB1dDxIYW5kbGVNb3VzZVJlbGVhc2U+KCkKICAgICwgbV9wbGF0Zm9ybUV2ZW50
KHN0ZDo6bW92ZShwbGF0Zm9ybUV2ZW50KSkKewp9CgpIYW5kbGVNb3VzZVJlbGVhc2U6On5IYW5k
bGVNb3VzZVJlbGVhc2UoKQp7Cn0KCkhhbmRsZVdoZWVsRXZlbnQ6OkhhbmRsZVdoZWVsRXZlbnQo
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtV2hlZWxFdmVudD4gcGxhdGZvcm1FdmVudCkKICAgIDog
RXZlbnRMb29wSW5wdXQ8SGFuZGxlV2hlZWxFdmVudD4oKQogICAgLCBtX3BsYXRmb3JtRXZlbnQo
c3RkOjptb3ZlKHBsYXRmb3JtRXZlbnQpKQp7Cn0KCkhhbmRsZVdoZWVsRXZlbnQ6On5IYW5kbGVX
aGVlbEV2ZW50KCkKewp9CgpTY3JvbGxQYWdlOjpTY3JvbGxQYWdlKFNjcm9sbERpcmVjdGlvbiBk
aXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogICAgOiBFdmVudExvb3BJ
bnB1dDxTY3JvbGxQYWdlPigpCiAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKICAgICwgbV9n
cmFudWxhcml0eShncmFudWxhcml0eSkKewp9CgpTY3JvbGxQYWdlOjp+U2Nyb2xsUGFnZSgpCnsK
fQoKTG9naWNhbFNjcm9sbFBhZ2U6OkxvZ2ljYWxTY3JvbGxQYWdlKFNjcm9sbExvZ2ljYWxEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSkKICAgIDogRXZl
bnRMb29wSW5wdXQ8TG9naWNhbFNjcm9sbFBhZ2U+KCkKICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0
aW9uKQogICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQp7Cn0KCkxvZ2ljYWxTY3JvbGxQ
YWdlOjp+TG9naWNhbFNjcm9sbFBhZ2UoKQp7Cn0KCiNpZiBQTEFURk9STShNQUMpCkludGVycHJl
dGVkS2V5Q29tbWFuZHM6OkludGVycHJldGVkS2V5Q29tbWFuZHMoVmVjdG9yPEtleXByZXNzQ29t
bWFuZD4mIGNvbW1hbmRzKQogICAgOiBOb25kZXRlcm1pbmlzdGljSW5wdXQ8SW50ZXJwcmV0ZWRL
ZXlDb21tYW5kcz4oKQogICAgLCBtX2NvbW1hbmRzKGNvbW1hbmRzKQp7Cn0KCkludGVycHJldGVk
S2V5Q29tbWFuZHM6On5JbnRlcnByZXRlZEtleUNvbW1hbmRzKCkKewp9CiNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCgpET01UaW1lckNyZWF0ZWQ6OkRPTVRpbWVyQ3JlYXRlZChpbnQgdGltZXJJZCwg
aW50IGZyYW1lSW5kZXgpCiAgICA6IE5vbmRldGVybWluaXN0aWNJbnB1dDxET01UaW1lckNyZWF0
ZWQ+KCkKICAgICwgbV90aW1lcklkKHRpbWVySWQpCiAgICAsIG1fZnJhbWVJbmRleChmcmFtZUlu
ZGV4KQp7Cn0KCkRPTVRpbWVyQ3JlYXRlZDo6fkRPTVRpbWVyQ3JlYXRlZCgpCnsKfQoKRE9NVGlt
ZXJGaXJlZDo6RE9NVGltZXJGaXJlZChpbnQgdGltZXJJZCwgaW50IGZyYW1lSW5kZXgpCiAgICA6
IEV2ZW50TG9vcElucHV0PERPTVRpbWVyRmlyZWQ+KCkKICAgICwgbV90aW1lcklkKHRpbWVySWQp
CiAgICAsIG1fZnJhbWVJbmRleChmcmFtZUluZGV4KQp7Cn0KCkRPTVRpbWVyRmlyZWQ6On5ET01U
aW1lckZpcmVkKCkKewp9CgpBc3luY1RpbWVyRmlyZWQ6OkFzeW5jVGltZXJGaXJlZChpbnQgZnJh
bWVJbmRleCwgdW5zaWduZWQgaW50IGlkZW50aWZpZXIpCiAgICA6IEV2ZW50TG9vcElucHV0PEFz
eW5jVGltZXJGaXJlZD4oKQogICAgLCBtX2ZyYW1lSW5kZXgoZnJhbWVJbmRleCkKICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCnsKfQoKQXN5bmNUaW1lckZpcmVkOjp+QXN5bmNUaW1lckZp
cmVkKCkKewp9CgpMb2FkVVJMUmVxdWVzdDo6TG9hZFVSTFJlcXVlc3Qoc3RkOjp1bmlxdWVfcHRy
PEZyYW1lTG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0KQogICAgOiBFdmVudExvb3BJbnB1dDxMb2Fk
VVJMUmVxdWVzdD4oKQogICAgLCBtX2xvYWRSZXF1ZXN0KHN0ZDo6bW92ZShsb2FkUmVxdWVzdCkp
CnsKfQoKTG9hZFVSTFJlcXVlc3Q6On5Mb2FkVVJMUmVxdWVzdCgpCnsKfQoKVHJ5Q2xvc2VQYWdl
OjpUcnlDbG9zZVBhZ2UoKQogICAgOiBFdmVudExvb3BJbnB1dDxUcnlDbG9zZVBhZ2U+KCkKewp9
CgpUcnlDbG9zZVBhZ2U6On5UcnlDbG9zZVBhZ2UoKQp7Cn0KClJlbG9hZEZyYW1lOjpSZWxvYWRG
cmFtZShpbnQgZnJhbWVJbmRleCwgYm9vbCBlbmRUb0VuZFJlbG9hZCkKICAgIDogRXZlbnRMb29w
SW5wdXQ8UmVsb2FkRnJhbWU+KCkKICAgICwgbV9mcmFtZUluZGV4KGZyYW1lSW5kZXgpCiAgICAs
IG1fZW5kVG9FbmRSZWxvYWQoZW5kVG9FbmRSZWxvYWQpCnsKfQoKUmVsb2FkRnJhbWU6On5SZWxv
YWRGcmFtZSgpCnsKfQoKU3RvcExvYWRpbmdGcmFtZTo6U3RvcExvYWRpbmdGcmFtZShpbnQgZnJh
bWVJbmRleCkKICAgIDogRXZlbnRMb29wSW5wdXQ8U3RvcExvYWRpbmdGcmFtZT4oKQogICAgLCBt
X2ZyYW1lSW5kZXgoZnJhbWVJbmRleCkKewp9CgpTdG9wTG9hZGluZ0ZyYW1lOjp+U3RvcExvYWRp
bmdGcmFtZSgpCnsKfQoKUmVzb3VyY2VMb2FkZXJEaWRGYWlsOjpSZXNvdXJjZUxvYWRlckRpZEZh
aWwodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZnJhbWVJbmRleCwgc3RkOjp1bmlxdWVf
cHRyPFJlc291cmNlRXJyb3I+IGVycm9yKQogICAgOiBFdmVudExvb3BJbnB1dDxSZXNvdXJjZUxv
YWRlckRpZEZhaWw+KCkKICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAsIG1fZnJh
bWVJbmRleChmcmFtZUluZGV4KQogICAgLCBtX2Vycm9yKHN0ZDo6bW92ZShlcnJvcikpCnsKfQoK
UmVzb3VyY2VMb2FkZXJEaWRGYWlsOjp+UmVzb3VyY2VMb2FkZXJEaWRGYWlsKCkKewp9CgpSZXNv
dXJjZUxvYWRlckRpZEZpbmlzaExvYWRpbmc6OlJlc291cmNlTG9hZGVyRGlkRmluaXNoTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBmcmFtZUluZGV4LCBkb3VibGUgZmluaXNo
VGltZSkKICAgIDogRXZlbnRMb29wSW5wdXQ8UmVzb3VyY2VMb2FkZXJEaWRGaW5pc2hMb2FkaW5n
PigpCiAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgLCBtX2ZyYW1lSW5kZXgoZnJh
bWVJbmRleCkKICAgICwgbV9maW5pc2hUaW1lKGZpbmlzaFRpbWUpCnsKfQoKUmVzb3VyY2VMb2Fk
ZXJEaWRGaW5pc2hMb2FkaW5nOjp+UmVzb3VyY2VMb2FkZXJEaWRGaW5pc2hMb2FkaW5nKCkKewp9
CgpSZXNvdXJjZUxvYWRlckRpZFJlY2VpdmVSZXNwb25zZTo6UmVzb3VyY2VMb2FkZXJEaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZnJhbWVJbmRleCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlKQogICAgOiBFdmVudExvb3BJ
bnB1dDxSZXNvdXJjZUxvYWRlckRpZFJlY2VpdmVSZXNwb25zZT4oKQogICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKICAgICwgbV9mcmFtZUluZGV4KGZyYW1lSW5kZXgpCiAgICAsIG1fcmVz
cG9uc2Uoc3RkOjptb3ZlKHJlc3BvbnNlKSkKewp9CgpSZXNvdXJjZUxvYWRlckRpZFJlY2VpdmVS
ZXNwb25zZTo6flJlc291cmNlTG9hZGVyRGlkUmVjZWl2ZVJlc3BvbnNlKCkKewp9CgpSZXNvdXJj
ZUxvYWRlckRpZFNlbmREYXRhOjpSZXNvdXJjZUxvYWRlckRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgaW50IGZyYW1lSW5kZXgsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1Nl
bnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiAgICA6IEV2ZW50TG9v
cElucHV0PFJlc291cmNlTG9hZGVyRGlkU2VuZERhdGE+KCkKICAgICwgbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiAgICAsIG1fZnJhbWVJbmRleChmcmFtZUluZGV4KQogICAgLCBtX2J5dGVzU2Vu
dChieXRlc1NlbnQpCiAgICAsIG1fdG90YWxCeXRlc1RvQmVTZW50KHRvdGFsQnl0ZXNUb0JlU2Vu
dCkKewp9CgpSZXNvdXJjZUxvYWRlckRpZFNlbmREYXRhOjp+UmVzb3VyY2VMb2FkZXJEaWRTZW5k
RGF0YSgpCnsKfQoKUmVzb3VyY2VMb2FkZXJEaWRSZWNlaXZlRGF0YTo6UmVzb3VyY2VMb2FkZXJE
aWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBmcmFtZUluZGV4LCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBpbnQgZW5jb2RlZExlbmd0aCkKICAgIDog
RXZlbnRMb29wSW5wdXQ8UmVzb3VyY2VMb2FkZXJEaWRSZWNlaXZlRGF0YT4oKQogICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKICAgICwgbV9mcmFtZUluZGV4KGZyYW1lSW5kZXgpCiAgICAs
IG1fYnVmZmVyKGJ1ZmZlcikKICAgICwgbV9lbmNvZGVkTGVuZ3RoKGVuY29kZWRMZW5ndGgpCnsK
fQoKUmVzb3VyY2VMb2FkZXJEaWRSZWNlaXZlRGF0YTo6flJlc291cmNlTG9hZGVyRGlkUmVjZWl2
ZURhdGEoKQp7Cn0KClJlc291cmNlTG9hZGVyQ3JlYXRlZDo6UmVzb3VyY2VMb2FkZXJDcmVhdGVk
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVz
dD4gcmVxdWVzdCkKICAgIDogTm9uZGV0ZXJtaW5pc3RpY0lucHV0PFJlc291cmNlTG9hZGVyQ3Jl
YXRlZD4oKQogICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICwgbV9yZXF1ZXN0KHN0
ZDo6bW92ZShyZXF1ZXN0KSkKewp9CgpSZXNvdXJjZUxvYWRlckNyZWF0ZWQ6On5SZXNvdXJjZUxv
YWRlckNyZWF0ZWQoKQp7Cn0KClNhdmVkQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lOjpTYXZlZEJl
Z2luQW5pbWF0aW9uVXBkYXRlVGltZShkb3VibGUgY3VycmVudFRpbWUpCiAgICA6IE5vbmRldGVy
bWluaXN0aWNJbnB1dDxTYXZlZEJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZT4oKQogICAgLCBtX2N1
cnJlbnRUaW1lKGN1cnJlbnRUaW1lKQp7Cn0KClNhdmVkQmVnaW5BbmltYXRpb25VcGRhdGVUaW1l
Ojp+U2F2ZWRCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKQp7Cn0KClNhdmVkVGltZXJOZXh0Rmly
ZUludGVydmFsOjpTYXZlZFRpbWVyTmV4dEZpcmVJbnRlcnZhbChkb3VibGUgbmV4dEZpcmVJbnRl
cnZhbCkKICAgIDogTm9uZGV0ZXJtaW5pc3RpY0lucHV0PFNhdmVkVGltZXJOZXh0RmlyZUludGVy
dmFsPigpCiAgICAsIG1fbmV4dEZpcmVJbnRlcnZhbChuZXh0RmlyZUludGVydmFsKQp7Cn0KClNh
dmVkVGltZXJOZXh0RmlyZUludGVydmFsOjp+U2F2ZWRUaW1lck5leHRGaXJlSW50ZXJ2YWwoKQp7
Cn0KfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKbmFtZXNwYWNlIEpTQyB7CmNvbnN0IEF0b21pY1N0
cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6QmVnaW5TZW50aW5lbD46OnR5cGUoKQp7CiAgICBy
ZXR1cm4gV2ViQ29yZTo6aW5wdXRUeXBlcygpLkJlZ2luU2VudGluZWw7Cn0KCnZvaWQgSW5wdXRU
cmFpdHM8V2ViQ29yZTo6QmVnaW5TZW50aW5lbD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29k
ZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6QmVnaW5TZW50aW5lbCYgaW5wdXQpCnsKICAgIFVOVVNF
RF9QQVJBTShlbmNvZGVkVmFsdWUpOwogICAgVU5VU0VEX1BBUkFNKGlucHV0KTsKfQoKYm9vbCBJ
bnB1dFRyYWl0czxXZWJDb3JlOjpCZWdpblNlbnRpbmVsPjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYg
ZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QmVnaW5TZW50aW5lbD4mIGlu
cHV0KQp7CiAgICBVTlVTRURfUEFSQU0oZW5jb2RlZFZhbHVlKTsKICAgIGlucHV0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb3JlOjpCZWdpblNlbnRpbmVsPigpOwogICAgcmV0dXJuIHRydWU7Cn0K
CmNvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6RGlzYWJsZUNhY2hlPjo6
dHlwZSgpCnsKICAgIHJldHVybiBXZWJDb3JlOjppbnB1dFR5cGVzKCkuRGlzYWJsZUNhY2hlOwp9
Cgp2b2lkIElucHV0VHJhaXRzPFdlYkNvcmU6OkRpc2FibGVDYWNoZT46OmVuY29kZShFbmNvZGVk
VmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6RGlzYWJsZUNhY2hlJiBpbnB1dCkK
ewogICAgVU5VU0VEX1BBUkFNKGVuY29kZWRWYWx1ZSk7CiAgICBVTlVTRURfUEFSQU0oaW5wdXQp
Owp9Cgpib29sIElucHV0VHJhaXRzPFdlYkNvcmU6OkRpc2FibGVDYWNoZT46OmRlY29kZShFbmNv
ZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRpc2FibGVD
YWNoZT4mIGlucHV0KQp7CiAgICBVTlVTRURfUEFSQU0oZW5jb2RlZFZhbHVlKTsKICAgIGlucHV0
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpEaXNhYmxlQ2FjaGU+KCk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dFRyYWl0czxXZWJDb3JlOjpFbmFibGVD
YWNoZT46OnR5cGUoKQp7CiAgICByZXR1cm4gV2ViQ29yZTo6aW5wdXRUeXBlcygpLkVuYWJsZUNh
Y2hlOwp9Cgp2b2lkIElucHV0VHJhaXRzPFdlYkNvcmU6OkVuYWJsZUNhY2hlPjo6ZW5jb2RlKEVu
Y29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBXZWJDb3JlOjpFbmFibGVDYWNoZSYgaW5w
dXQpCnsKICAgIFVOVVNFRF9QQVJBTShlbmNvZGVkVmFsdWUpOwogICAgVU5VU0VEX1BBUkFNKGlu
cHV0KTsKfQoKYm9vbCBJbnB1dFRyYWl0czxXZWJDb3JlOjpFbmFibGVDYWNoZT46OmRlY29kZShF
bmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkVuYWJs
ZUNhY2hlPiYgaW5wdXQpCnsKICAgIFVOVVNFRF9QQVJBTShlbmNvZGVkVmFsdWUpOwogICAgaW5w
dXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkVuYWJsZUNhY2hlPigpOwogICAgcmV0dXJu
IHRydWU7Cn0KCmNvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6RW5kU2Vu
dGluZWw+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5FbmRTZW50
aW5lbDsKfQoKdm9pZCBJbnB1dFRyYWl0czxXZWJDb3JlOjpFbmRTZW50aW5lbD46OmVuY29kZShF
bmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6RW5kU2VudGluZWwmIGlu
cHV0KQp7CiAgICBVTlVTRURfUEFSQU0oZW5jb2RlZFZhbHVlKTsKICAgIFVOVVNFRF9QQVJBTShp
bnB1dCk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6RW5kU2VudGluZWw+OjpkZWNvZGUo
RW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpFbmRT
ZW50aW5lbD4mIGlucHV0KQp7CiAgICBVTlVTRURfUEFSQU0oZW5jb2RlZFZhbHVlKTsKICAgIGlu
cHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpFbmRTZW50aW5lbD4oKTsKICAgIHJldHVy
biB0cnVlOwp9Cgpjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFdlYkNvcmU6OlBsYXli
YWNrRXJyb3I+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5QbGF5
YmFja0Vycm9yOwp9Cgp2b2lkIElucHV0VHJhaXRzPFdlYkNvcmU6OlBsYXliYWNrRXJyb3I+Ojpl
bmNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFdlYkNvcmU6OlBsYXliYWNr
RXJyb3ImIGlucHV0KQp7CiAgICBlbmNvZGVkVmFsdWUucHV0PFN0cmluZz4oQVNDSUlMaXRlcmFs
KCJlcnJvck1lc3NhZ2UiKSwgaW5wdXQuZXJyb3JNZXNzYWdlKCkpOwp9Cgpib29sIElucHV0VHJh
aXRzPFdlYkNvcmU6OlBsYXliYWNrRXJyb3I+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVk
VmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQbGF5YmFja0Vycm9yPiYgaW5wdXQpCnsK
ICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8U3RyaW5n
PihBU0NJSUxpdGVyYWwoImVycm9yTWVzc2FnZSIpLCBlcnJvck1lc3NhZ2UpKQogICAgICAgIHJl
dHVybiBmYWxzZTsKCiAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UGxheWJh
Y2tFcnJvcj4oZXJyb3JNZXNzYWdlKTsKICAgIHJldHVybiB0cnVlOwp9Cgpjb25zdCBBdG9taWNT
dHJpbmcmIElucHV0VHJhaXRzPFdlYkNvcmU6OkluaXRpYWxpemVGb2N1cz46OnR5cGUoKQp7CiAg
ICByZXR1cm4gV2ViQ29yZTo6aW5wdXRUeXBlcygpLkluaXRpYWxpemVGb2N1czsKfQoKdm9pZCBJ
bnB1dFRyYWl0czxXZWJDb3JlOjpJbml0aWFsaXplRm9jdXM+OjplbmNvZGUoRW5jb2RlZFZhbHVl
JiBlbmNvZGVkVmFsdWUsIGNvbnN0IFdlYkNvcmU6OkluaXRpYWxpemVGb2N1cyYgaW5wdXQpCnsK
ICAgIGVuY29kZWRWYWx1ZS5wdXQ8Ym9vbD4oQVNDSUlMaXRlcmFsKCJpc0ZvY3VzZWQiKSwgaW5w
dXQuaXNGb2N1c2VkKCkpOwogICAgZW5jb2RlZFZhbHVlLnB1dDxib29sPihBU0NJSUxpdGVyYWwo
ImlzQWN0aXZlIiksIGlucHV0LmlzQWN0aXZlKCkpOwogICAgZW5jb2RlZFZhbHVlLnB1dDxpbnQ+
KEFTQ0lJTGl0ZXJhbCgiZm9jdXNlZEZyYW1lSW5kZXgiKSwgaW5wdXQuZm9jdXNlZEZyYW1lSW5k
ZXgoKSk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6SW5pdGlhbGl6ZUZvY3VzPjo6ZGVj
b2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW5pdGlhbGl6ZUZvY3VzPiYgaW5wdXQpCnsKICAgIGJvb2wgaXNGb2N1c2VkOwogICAgaWYgKCFl
bmNvZGVkVmFsdWUuZ2V0PGJvb2w+KEFTQ0lJTGl0ZXJhbCgiaXNGb2N1c2VkIiksIGlzRm9jdXNl
ZCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGJvb2wgaXNBY3RpdmU7CiAgICBpZiAoIWVu
Y29kZWRWYWx1ZS5nZXQ8Ym9vbD4oQVNDSUlMaXRlcmFsKCJpc0FjdGl2ZSIpLCBpc0FjdGl2ZSkp
CiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGludCBmb2N1c2VkRnJhbWVJbmRleDsKICAgIGlm
ICghZW5jb2RlZFZhbHVlLmdldDxpbnQ+KEFTQ0lJTGl0ZXJhbCgiZm9jdXNlZEZyYW1lSW5kZXgi
KSwgZm9jdXNlZEZyYW1lSW5kZXgpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpbnB1dCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6SW5pdGlhbGl6ZUZvY3VzPihpc0ZvY3VzZWQsIGlz
QWN0aXZlLCBmb2N1c2VkRnJhbWVJbmRleCk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKY29uc3QgQXRv
bWljU3RyaW5nJiBJbnB1dFRyYWl0czxXZWJDb3JlOjpJbml0aWFsaXplV2luZG93Pjo6dHlwZSgp
CnsKICAgIHJldHVybiBXZWJDb3JlOjppbnB1dFR5cGVzKCkuSW5pdGlhbGl6ZVdpbmRvdzsKfQoK
dm9pZCBJbnB1dFRyYWl0czxXZWJDb3JlOjpJbml0aWFsaXplV2luZG93Pjo6ZW5jb2RlKEVuY29k
ZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBXZWJDb3JlOjpJbml0aWFsaXplV2luZG93JiBp
bnB1dCkKewogICAgZW5jb2RlZFZhbHVlLnB1dDxpbnQ+KEFTQ0lJTGl0ZXJhbCgid2lkdGgiKSwg
aW5wdXQud2lkdGgoKSk7CiAgICBlbmNvZGVkVmFsdWUucHV0PGludD4oQVNDSUlMaXRlcmFsKCJo
ZWlnaHQiKSwgaW5wdXQuaGVpZ2h0KCkpOwp9Cgpib29sIElucHV0VHJhaXRzPFdlYkNvcmU6Oklu
aXRpYWxpemVXaW5kb3c+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJbml0aWFsaXplV2luZG93PiYgaW5wdXQpCnsKICAgIGludCB3
aWR0aDsKICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxpbnQ+KEFTQ0lJTGl0ZXJhbCgid2lkdGgi
KSwgd2lkdGgpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpbnQgaGVpZ2h0OwogICAgaWYg
KCFlbmNvZGVkVmFsdWUuZ2V0PGludD4oQVNDSUlMaXRlcmFsKCJoZWlnaHQiKSwgaGVpZ2h0KSkK
ICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OkluaXRpYWxpemVXaW5kb3c+KHdpZHRoLCBoZWlnaHQpOwogICAgcmV0dXJuIHRydWU7Cn0K
CmNvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6SW5pdGlhbE5hdmlnYXRp
b24+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5Jbml0aWFsTmF2
aWdhdGlvbjsKfQoKdm9pZCBJbnB1dFRyYWl0czxXZWJDb3JlOjpJbml0aWFsTmF2aWdhdGlvbj46
OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6SW5pdGlh
bE5hdmlnYXRpb24mIGlucHV0KQp7CiAgICBlbmNvZGVkVmFsdWUucHV0PFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPihBU0NJSUxpdGVyYWwoInNlY3VyaXR5T3JpZ2luIiksIGlucHV0LnNlY3VyaXR5
T3JpZ2luKCkpOwogICAgZW5jb2RlZFZhbHVlLnB1dDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgidXJs
IiksIGlucHV0LnVybCgpKTsKICAgIGVuY29kZWRWYWx1ZS5wdXQ8U3RyaW5nPihBU0NJSUxpdGVy
YWwoInJlZmVycmVyIiksIGlucHV0LnJlZmVycmVyKCkpOwp9Cgpib29sIElucHV0VHJhaXRzPFdl
YkNvcmU6OkluaXRpYWxOYXZpZ2F0aW9uPjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZh
bHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5pdGlhbE5hdmlnYXRpb24+JiBpbnB1dCkK
ewogICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKICAg
IGlmICghZW5jb2RlZFZhbHVlLmdldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4oQVNDSUlMaXRl
cmFsKCJzZWN1cml0eU9yaWdpbiIpLCBzZWN1cml0eU9yaWdpbikpCiAgICAgICAgcmV0dXJuIGZh
bHNlOwoKICAgIFN0cmluZyB1cmw7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8U3RyaW5nPihB
U0NJSUxpdGVyYWwoInVybCIpLCB1cmwpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBTdHJp
bmcgcmVmZXJyZXI7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8U3RyaW5nPihBU0NJSUxpdGVy
YWwoInJlZmVycmVyIiksIHJlZmVycmVyKSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW5w
dXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkluaXRpYWxOYXZpZ2F0aW9uPihzZWN1cml0
eU9yaWdpbiwgdXJsLCByZWZlcnJlcik7CiAgICByZXR1cm4gdHJ1ZTsKfQoKY29uc3QgQXRvbWlj
U3RyaW5nJiBJbnB1dFRyYWl0czxXZWJDb3JlOjpGb2N1c1NldEFjdGl2ZT46OnR5cGUoKQp7CiAg
ICByZXR1cm4gV2ViQ29yZTo6aW5wdXRUeXBlcygpLkZvY3VzU2V0QWN0aXZlOwp9Cgp2b2lkIElu
cHV0VHJhaXRzPFdlYkNvcmU6OkZvY3VzU2V0QWN0aXZlPjo6ZW5jb2RlKEVuY29kZWRWYWx1ZSYg
ZW5jb2RlZFZhbHVlLCBjb25zdCBXZWJDb3JlOjpGb2N1c1NldEFjdGl2ZSYgaW5wdXQpCnsKICAg
IGVuY29kZWRWYWx1ZS5wdXQ8Ym9vbD4oQVNDSUlMaXRlcmFsKCJ0b1N0YXRlIiksIGlucHV0LnRv
U3RhdGUoKSk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6Rm9jdXNTZXRBY3RpdmU+Ojpk
ZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpGb2N1c1NldEFjdGl2ZT4mIGlucHV0KQp7CiAgICBib29sIHRvU3RhdGU7CiAgICBpZiAoIWVu
Y29kZWRWYWx1ZS5nZXQ8Ym9vbD4oQVNDSUlMaXRlcmFsKCJ0b1N0YXRlIiksIHRvU3RhdGUpKQog
ICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29y
ZTo6Rm9jdXNTZXRBY3RpdmU+KHRvU3RhdGUpOwogICAgcmV0dXJuIHRydWU7Cn0KCmNvbnN0IEF0
b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6Rm9jdXNTZXRGb2N1c2VkPjo6dHlwZSgp
CnsKICAgIHJldHVybiBXZWJDb3JlOjppbnB1dFR5cGVzKCkuRm9jdXNTZXRGb2N1c2VkOwp9Cgp2
b2lkIElucHV0VHJhaXRzPFdlYkNvcmU6OkZvY3VzU2V0Rm9jdXNlZD46OmVuY29kZShFbmNvZGVk
VmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6Rm9jdXNTZXRGb2N1c2VkJiBpbnB1
dCkKewogICAgZW5jb2RlZFZhbHVlLnB1dDxib29sPihBU0NJSUxpdGVyYWwoInRvU3RhdGUiKSwg
aW5wdXQudG9TdGF0ZSgpKTsKfQoKYm9vbCBJbnB1dFRyYWl0czxXZWJDb3JlOjpGb2N1c1NldEZv
Y3VzZWQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpGb2N1c1NldEZvY3VzZWQ+JiBpbnB1dCkKewogICAgYm9vbCB0b1N0YXRlOwog
ICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PGJvb2w+KEFTQ0lJTGl0ZXJhbCgidG9TdGF0ZSIpLCB0
b1N0YXRlKSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OkZvY3VzU2V0Rm9jdXNlZD4odG9TdGF0ZSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dFRyYWl0czxXZWJDb3JlOjpTZW5kUmVzaXplRXZl
bnQ+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5TZW5kUmVzaXpl
RXZlbnQ7Cn0KCnZvaWQgSW5wdXRUcmFpdHM8V2ViQ29yZTo6U2VuZFJlc2l6ZUV2ZW50Pjo6ZW5j
b2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBXZWJDb3JlOjpTZW5kUmVzaXpl
RXZlbnQmIGlucHV0KQp7CiAgICBlbmNvZGVkVmFsdWUucHV0PGludD4oQVNDSUlMaXRlcmFsKCJ3
aWR0aCIpLCBpbnB1dC53aWR0aCgpKTsKICAgIGVuY29kZWRWYWx1ZS5wdXQ8aW50PihBU0NJSUxp
dGVyYWwoImhlaWdodCIpLCBpbnB1dC5oZWlnaHQoKSk7CiAgICBlbmNvZGVkVmFsdWUucHV0PGlu
dD4oQVNDSUlMaXRlcmFsKCJmcmFtZUluZGV4IiksIGlucHV0LmZyYW1lSW5kZXgoKSk7Cn0KCmJv
b2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6U2VuZFJlc2l6ZUV2ZW50Pjo6ZGVjb2RlKEVuY29kZWRW
YWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U2VuZFJlc2l6ZUV2
ZW50PiYgaW5wdXQpCnsKICAgIGludCB3aWR0aDsKICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxp
bnQ+KEFTQ0lJTGl0ZXJhbCgid2lkdGgiKSwgd2lkdGgpKQogICAgICAgIHJldHVybiBmYWxzZTsK
CiAgICBpbnQgaGVpZ2h0OwogICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PGludD4oQVNDSUlMaXRl
cmFsKCJoZWlnaHQiKSwgaGVpZ2h0KSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW50IGZy
YW1lSW5kZXg7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8aW50PihBU0NJSUxpdGVyYWwoImZy
YW1lSW5kZXgiKSwgZnJhbWVJbmRleCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlucHV0
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpTZW5kUmVzaXplRXZlbnQ+KHdpZHRoLCBoZWln
aHQsIGZyYW1lSW5kZXgpOwogICAgcmV0dXJuIHRydWU7Cn0KCmNvbnN0IEF0b21pY1N0cmluZyYg
SW5wdXRUcmFpdHM8V2ViQ29yZTo6SGFuZGxlQ29udGV4dE1lbnU+Ojp0eXBlKCkKewogICAgcmV0
dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5IYW5kbGVDb250ZXh0TWVudTsKfQoKdm9pZCBJbnB1
dFRyYWl0czxXZWJDb3JlOjpIYW5kbGVDb250ZXh0TWVudT46OmVuY29kZShFbmNvZGVkVmFsdWUm
IGVuY29kZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6SGFuZGxlQ29udGV4dE1lbnUmIGlucHV0KQp7
CiAgICBlbmNvZGVkVmFsdWUucHV0PFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudD4oQVNDSUlM
aXRlcmFsKCJwbGF0Zm9ybUV2ZW50IiksIGlucHV0LnBsYXRmb3JtRXZlbnQoKSk7CiAgICBlbmNv
ZGVkVmFsdWUucHV0PGludD4oQVNDSUlMaXRlcmFsKCJmcmFtZUluZGV4IiksIGlucHV0LmZyYW1l
SW5kZXgoKSk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6SGFuZGxlQ29udGV4dE1lbnU+
OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpIYW5kbGVDb250ZXh0TWVudT4mIGlucHV0KQp7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50PiBwbGF0Zm9ybUV2ZW50OwogICAgaWYgKCFlbmNvZGVk
VmFsdWUuZ2V0PFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudD4oQVNDSUlMaXRlcmFsKCJwbGF0
Zm9ybUV2ZW50IiksIHBsYXRmb3JtRXZlbnQpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBp
bnQgZnJhbWVJbmRleDsKICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxpbnQ+KEFTQ0lJTGl0ZXJh
bCgiZnJhbWVJbmRleCIpLCBmcmFtZUluZGV4KSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAg
aW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkhhbmRsZUNvbnRleHRNZW51PihzdGQ6
Om1vdmUocGxhdGZvcm1FdmVudCksIGZyYW1lSW5kZXgpOwogICAgcmV0dXJuIHRydWU7Cn0KCmNv
bnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6SGFuZGxlS2V5UHJlc3M+Ojp0
eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5IYW5kbGVLZXlQcmVzczsK
fQoKdm9pZCBJbnB1dFRyYWl0czxXZWJDb3JlOjpIYW5kbGVLZXlQcmVzcz46OmVuY29kZShFbmNv
ZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6SGFuZGxlS2V5UHJlc3MmIGlu
cHV0KQp7CiAgICBlbmNvZGVkVmFsdWUucHV0PFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dD4oQVNDSUlMaXRlcmFsKCJwbGF0Zm9ybUV2ZW50IiksIGlucHV0LnBsYXRmb3JtRXZlbnQoKSk7
Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6SGFuZGxlS2V5UHJlc3M+OjpkZWNvZGUoRW5j
b2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpIYW5kbGVL
ZXlQcmVzcz4mIGlucHV0KQp7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50PiBwbGF0Zm9ybUV2ZW50OwogICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PFdl
YkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oQVNDSUlMaXRlcmFsKCJwbGF0Zm9ybUV2ZW50
IiksIHBsYXRmb3JtRXZlbnQpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpbnB1dCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6SGFuZGxlS2V5UHJlc3M+KHN0ZDo6bW92ZShwbGF0Zm9y
bUV2ZW50KSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dFRy
YWl0czxXZWJDb3JlOjpIYW5kbGVNb3VzZU1vdmU+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdlYkNv
cmU6OmlucHV0VHlwZXMoKS5IYW5kbGVNb3VzZU1vdmU7Cn0KCnZvaWQgSW5wdXRUcmFpdHM8V2Vi
Q29yZTo6SGFuZGxlTW91c2VNb3ZlPjo6ZW5jb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVl
LCBjb25zdCBXZWJDb3JlOjpIYW5kbGVNb3VzZU1vdmUmIGlucHV0KQp7CiAgICBlbmNvZGVkVmFs
dWUucHV0PFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudD4oQVNDSUlMaXRlcmFsKCJwbGF0Zm9y
bUV2ZW50IiksIGlucHV0LnBsYXRmb3JtRXZlbnQoKSk7CiAgICBlbmNvZGVkVmFsdWUucHV0PGJv
b2w+KEFTQ0lJTGl0ZXJhbCgic2Nyb2xsYmFyVGFyZ2V0ZWQiKSwgaW5wdXQuc2Nyb2xsYmFyVGFy
Z2V0ZWQoKSk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6SGFuZGxlTW91c2VNb3ZlPjo6
ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SGFuZGxlTW91c2VNb3ZlPiYgaW5wdXQpCnsKICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpQbGF0Zm9ybU1vdXNlRXZlbnQ+IHBsYXRmb3JtRXZlbnQ7CiAgICBpZiAoIWVuY29kZWRWYWx1
ZS5nZXQ8V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50PihBU0NJSUxpdGVyYWwoInBsYXRmb3Jt
RXZlbnQiKSwgcGxhdGZvcm1FdmVudCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGJvb2wg
c2Nyb2xsYmFyVGFyZ2V0ZWQ7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8Ym9vbD4oQVNDSUlM
aXRlcmFsKCJzY3JvbGxiYXJUYXJnZXRlZCIpLCBzY3JvbGxiYXJUYXJnZXRlZCkpCiAgICAgICAg
cmV0dXJuIGZhbHNlOwoKICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpIYW5k
bGVNb3VzZU1vdmU+KHN0ZDo6bW92ZShwbGF0Zm9ybUV2ZW50KSwgc2Nyb2xsYmFyVGFyZ2V0ZWQp
OwogICAgcmV0dXJuIHRydWU7Cn0KCmNvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8V2Vi
Q29yZTo6SGFuZGxlTW91c2VQcmVzcz46OnR5cGUoKQp7CiAgICByZXR1cm4gV2ViQ29yZTo6aW5w
dXRUeXBlcygpLkhhbmRsZU1vdXNlUHJlc3M7Cn0KCnZvaWQgSW5wdXRUcmFpdHM8V2ViQ29yZTo6
SGFuZGxlTW91c2VQcmVzcz46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29u
c3QgV2ViQ29yZTo6SGFuZGxlTW91c2VQcmVzcyYgaW5wdXQpCnsKICAgIGVuY29kZWRWYWx1ZS5w
dXQ8V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50PihBU0NJSUxpdGVyYWwoInBsYXRmb3JtRXZl
bnQiKSwgaW5wdXQucGxhdGZvcm1FdmVudCgpKTsKfQoKYm9vbCBJbnB1dFRyYWl0czxXZWJDb3Jl
OjpIYW5kbGVNb3VzZVByZXNzPjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SGFuZGxlTW91c2VQcmVzcz4mIGlucHV0KQp7CiAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50PiBwbGF0Zm9ybUV2ZW50
OwogICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudD4o
QVNDSUlMaXRlcmFsKCJwbGF0Zm9ybUV2ZW50IiksIHBsYXRmb3JtRXZlbnQpKQogICAgICAgIHJl
dHVybiBmYWxzZTsKCiAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6SGFuZGxl
TW91c2VQcmVzcz4oc3RkOjptb3ZlKHBsYXRmb3JtRXZlbnQpKTsKICAgIHJldHVybiB0cnVlOwp9
Cgpjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFdlYkNvcmU6OkhhbmRsZU1vdXNlUmVs
ZWFzZT46OnR5cGUoKQp7CiAgICByZXR1cm4gV2ViQ29yZTo6aW5wdXRUeXBlcygpLkhhbmRsZU1v
dXNlUmVsZWFzZTsKfQoKdm9pZCBJbnB1dFRyYWl0czxXZWJDb3JlOjpIYW5kbGVNb3VzZVJlbGVh
c2U+OjplbmNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFdlYkNvcmU6Okhh
bmRsZU1vdXNlUmVsZWFzZSYgaW5wdXQpCnsKICAgIGVuY29kZWRWYWx1ZS5wdXQ8V2ViQ29yZTo6
UGxhdGZvcm1Nb3VzZUV2ZW50PihBU0NJSUxpdGVyYWwoInBsYXRmb3JtRXZlbnQiKSwgaW5wdXQu
cGxhdGZvcm1FdmVudCgpKTsKfQoKYm9vbCBJbnB1dFRyYWl0czxXZWJDb3JlOjpIYW5kbGVNb3Vz
ZVJlbGVhc2U+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpIYW5kbGVNb3VzZVJlbGVhc2U+JiBpbnB1dCkKewogICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudD4gcGxhdGZvcm1FdmVudDsKICAgIGlm
ICghZW5jb2RlZFZhbHVlLmdldDxXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ+KEFTQ0lJTGl0
ZXJhbCgicGxhdGZvcm1FdmVudCIpLCBwbGF0Zm9ybUV2ZW50KSkKICAgICAgICByZXR1cm4gZmFs
c2U7CgogICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkhhbmRsZU1vdXNlUmVs
ZWFzZT4oc3RkOjptb3ZlKHBsYXRmb3JtRXZlbnQpKTsKICAgIHJldHVybiB0cnVlOwp9Cgpjb25z
dCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFdlYkNvcmU6OkhhbmRsZVdoZWVsRXZlbnQ+Ojp0
eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5IYW5kbGVXaGVlbEV2ZW50
Owp9Cgp2b2lkIElucHV0VHJhaXRzPFdlYkNvcmU6OkhhbmRsZVdoZWVsRXZlbnQ+OjplbmNvZGUo
RW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFdlYkNvcmU6OkhhbmRsZVdoZWVsRXZl
bnQmIGlucHV0KQp7CiAgICBlbmNvZGVkVmFsdWUucHV0PFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxF
dmVudD4oQVNDSUlMaXRlcmFsKCJwbGF0Zm9ybUV2ZW50IiksIGlucHV0LnBsYXRmb3JtRXZlbnQo
KSk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6SGFuZGxlV2hlZWxFdmVudD46OmRlY29k
ZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okhh
bmRsZVdoZWVsRXZlbnQ+JiBpbnB1dCkKewogICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBs
YXRmb3JtV2hlZWxFdmVudD4gcGxhdGZvcm1FdmVudDsKICAgIGlmICghZW5jb2RlZFZhbHVlLmdl
dDxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ+KEFTQ0lJTGl0ZXJhbCgicGxhdGZvcm1FdmVu
dCIpLCBwbGF0Zm9ybUV2ZW50KSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW5wdXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkhhbmRsZVdoZWVsRXZlbnQ+KHN0ZDo6bW92ZShwbGF0
Zm9ybUV2ZW50KSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1
dFRyYWl0czxXZWJDb3JlOjpTY3JvbGxQYWdlPjo6dHlwZSgpCnsKICAgIHJldHVybiBXZWJDb3Jl
OjppbnB1dFR5cGVzKCkuU2Nyb2xsUGFnZTsKfQoKdm9pZCBJbnB1dFRyYWl0czxXZWJDb3JlOjpT
Y3JvbGxQYWdlPjo6ZW5jb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBXZWJD
b3JlOjpTY3JvbGxQYWdlJiBpbnB1dCkKewogICAgZW5jb2RlZFZhbHVlLnB1dDxXZWJDb3JlOjpT
Y3JvbGxEaXJlY3Rpb24+KEFTQ0lJTGl0ZXJhbCgiZGlyZWN0aW9uIiksIGlucHV0LmRpcmVjdGlv
bigpKTsKICAgIGVuY29kZWRWYWx1ZS5wdXQ8V2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk+KEFT
Q0lJTGl0ZXJhbCgiZ3JhbnVsYXJpdHkiKSwgaW5wdXQuZ3JhbnVsYXJpdHkoKSk7Cn0KCmJvb2wg
SW5wdXRUcmFpdHM8V2ViQ29yZTo6U2Nyb2xsUGFnZT46OmRlY29kZShFbmNvZGVkVmFsdWUmIGVu
Y29kZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNjcm9sbFBhZ2U+JiBpbnB1dCkK
ewogICAgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgIGlmICghZW5jb2Rl
ZFZhbHVlLmdldDxXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24+KEFTQ0lJTGl0ZXJhbCgiZGlyZWN0
aW9uIiksIGRpcmVjdGlvbikpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIFdlYkNvcmU6OlNj
cm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5OwogICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PFdl
YkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5PihBU0NJSUxpdGVyYWwoImdyYW51bGFyaXR5IiksIGdy
YW51bGFyaXR5KSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW5wdXQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6OlNjcm9sbFBhZ2U+KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogICAg
cmV0dXJuIHRydWU7Cn0KCmNvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6
TG9naWNhbFNjcm9sbFBhZ2U+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlw
ZXMoKS5Mb2dpY2FsU2Nyb2xsUGFnZTsKfQoKdm9pZCBJbnB1dFRyYWl0czxXZWJDb3JlOjpMb2dp
Y2FsU2Nyb2xsUGFnZT46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3Qg
V2ViQ29yZTo6TG9naWNhbFNjcm9sbFBhZ2UmIGlucHV0KQp7CiAgICBlbmNvZGVkVmFsdWUucHV0
PFdlYkNvcmU6OlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24+KEFTQ0lJTGl0ZXJhbCgiZGlyZWN0aW9u
IiksIGlucHV0LmRpcmVjdGlvbigpKTsKICAgIGVuY29kZWRWYWx1ZS5wdXQ8V2ViQ29yZTo6U2Ny
b2xsR3JhbnVsYXJpdHk+KEFTQ0lJTGl0ZXJhbCgiZ3JhbnVsYXJpdHkiKSwgaW5wdXQuZ3JhbnVs
YXJpdHkoKSk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6TG9naWNhbFNjcm9sbFBhZ2U+
OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpMb2dpY2FsU2Nyb2xsUGFnZT4mIGlucHV0KQp7CiAgICBXZWJDb3JlOjpTY3JvbGxMb2dp
Y2FsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxXZWJDb3Jl
OjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9uPihBU0NJSUxpdGVyYWwoImRpcmVjdGlvbiIpLCBkaXJl
Y3Rpb24pKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBXZWJDb3JlOjpTY3JvbGxHcmFudWxh
cml0eSBncmFudWxhcml0eTsKICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxXZWJDb3JlOjpTY3Jv
bGxHcmFudWxhcml0eT4oQVNDSUlMaXRlcmFsKCJncmFudWxhcml0eSIpLCBncmFudWxhcml0eSkp
CiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpMb2dpY2FsU2Nyb2xsUGFnZT4oZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKI2lmIFBMQVRGT1JNKE1BQykKY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dFRy
YWl0czxXZWJDb3JlOjpJbnRlcnByZXRlZEtleUNvbW1hbmRzPjo6dHlwZSgpCnsKICAgIHJldHVy
biBXZWJDb3JlOjppbnB1dFR5cGVzKCkuSW50ZXJwcmV0ZWRLZXlDb21tYW5kczsKfQoKdm9pZCBJ
bnB1dFRyYWl0czxXZWJDb3JlOjpJbnRlcnByZXRlZEtleUNvbW1hbmRzPjo6ZW5jb2RlKEVuY29k
ZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBXZWJDb3JlOjpJbnRlcnByZXRlZEtleUNvbW1h
bmRzJiBpbnB1dCkKewogICAgZW5jb2RlZFZhbHVlLnB1dDxWZWN0b3I8V2ViQ29yZTo6S2V5cHJl
c3NDb21tYW5kPj4oQVNDSUlMaXRlcmFsKCJjb21tYW5kcyIpLCBpbnB1dC5jb21tYW5kcygpKTsK
fQoKYm9vbCBJbnB1dFRyYWl0czxXZWJDb3JlOjpJbnRlcnByZXRlZEtleUNvbW1hbmRzPjo6ZGVj
b2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW50ZXJwcmV0ZWRLZXlDb21tYW5kcz4mIGlucHV0KQp7CiAgICBWZWN0b3I8V2ViQ29yZTo6S2V5
cHJlc3NDb21tYW5kPiBjb21tYW5kczsKICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxWZWN0b3I8
V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPj4oQVNDSUlMaXRlcmFsKCJjb21tYW5kcyIpLCBjb21t
YW5kcykpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpJbnRlcnByZXRlZEtleUNvbW1hbmRzPihjb21tYW5kcyk7CiAgICByZXR1cm4g
dHJ1ZTsKfQojZW5kaWYgLy8gUExBVEZPUk0oTUFDKQoKY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1
dFRyYWl0czxXZWJDb3JlOjpET01UaW1lckNyZWF0ZWQ+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdl
YkNvcmU6OmlucHV0VHlwZXMoKS5ET01UaW1lckNyZWF0ZWQ7Cn0KCnZvaWQgSW5wdXRUcmFpdHM8
V2ViQ29yZTo6RE9NVGltZXJDcmVhdGVkPjo6ZW5jb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZh
bHVlLCBjb25zdCBXZWJDb3JlOjpET01UaW1lckNyZWF0ZWQmIGlucHV0KQp7CiAgICBlbmNvZGVk
VmFsdWUucHV0PGludD4oQVNDSUlMaXRlcmFsKCJ0aW1lcklkIiksIGlucHV0LnRpbWVySWQoKSk7
CiAgICBlbmNvZGVkVmFsdWUucHV0PGludD4oQVNDSUlMaXRlcmFsKCJmcmFtZUluZGV4IiksIGlu
cHV0LmZyYW1lSW5kZXgoKSk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6RE9NVGltZXJD
cmVhdGVkPjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6RE9NVGltZXJDcmVhdGVkPiYgaW5wdXQpCnsKICAgIGludCB0aW1lcklkOwog
ICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PGludD4oQVNDSUlMaXRlcmFsKCJ0aW1lcklkIiksIHRp
bWVySWQpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpbnQgZnJhbWVJbmRleDsKICAgIGlm
ICghZW5jb2RlZFZhbHVlLmdldDxpbnQ+KEFTQ0lJTGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBmcmFt
ZUluZGV4KSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OkRPTVRpbWVyQ3JlYXRlZD4odGltZXJJZCwgZnJhbWVJbmRleCk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dFRyYWl0czxXZWJDb3JlOjpE
T01UaW1lckZpcmVkPjo6dHlwZSgpCnsKICAgIHJldHVybiBXZWJDb3JlOjppbnB1dFR5cGVzKCku
RE9NVGltZXJGaXJlZDsKfQoKdm9pZCBJbnB1dFRyYWl0czxXZWJDb3JlOjpET01UaW1lckZpcmVk
Pjo6ZW5jb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBXZWJDb3JlOjpET01U
aW1lckZpcmVkJiBpbnB1dCkKewogICAgZW5jb2RlZFZhbHVlLnB1dDxpbnQ+KEFTQ0lJTGl0ZXJh
bCgidGltZXJJZCIpLCBpbnB1dC50aW1lcklkKCkpOwogICAgZW5jb2RlZFZhbHVlLnB1dDxpbnQ+
KEFTQ0lJTGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBpbnB1dC5mcmFtZUluZGV4KCkpOwp9Cgpib29s
IElucHV0VHJhaXRzPFdlYkNvcmU6OkRPTVRpbWVyRmlyZWQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVl
JiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpET01UaW1lckZpcmVkPiYg
aW5wdXQpCnsKICAgIGludCB0aW1lcklkOwogICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PGludD4o
QVNDSUlMaXRlcmFsKCJ0aW1lcklkIiksIHRpbWVySWQpKQogICAgICAgIHJldHVybiBmYWxzZTsK
CiAgICBpbnQgZnJhbWVJbmRleDsKICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxpbnQ+KEFTQ0lJ
TGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBmcmFtZUluZGV4KSkKICAgICAgICByZXR1cm4gZmFsc2U7
CgogICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkRPTVRpbWVyRmlyZWQ+KHRp
bWVySWQsIGZyYW1lSW5kZXgpOwogICAgcmV0dXJuIHRydWU7Cn0KCmNvbnN0IEF0b21pY1N0cmlu
ZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6QXN5bmNUaW1lckZpcmVkPjo6dHlwZSgpCnsKICAgIHJl
dHVybiBXZWJDb3JlOjppbnB1dFR5cGVzKCkuQXN5bmNUaW1lckZpcmVkOwp9Cgp2b2lkIElucHV0
VHJhaXRzPFdlYkNvcmU6OkFzeW5jVGltZXJGaXJlZD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVu
Y29kZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6QXN5bmNUaW1lckZpcmVkJiBpbnB1dCkKewogICAg
ZW5jb2RlZFZhbHVlLnB1dDxpbnQ+KEFTQ0lJTGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBpbnB1dC5m
cmFtZUluZGV4KCkpOwogICAgZW5jb2RlZFZhbHVlLnB1dDx1bnNpZ25lZCBpbnQ+KEFTQ0lJTGl0
ZXJhbCgiaWRlbnRpZmllciIpLCBpbnB1dC5pZGVudGlmaWVyKCkpOwp9Cgpib29sIElucHV0VHJh
aXRzPFdlYkNvcmU6OkFzeW5jVGltZXJGaXJlZD46OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29k
ZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkFzeW5jVGltZXJGaXJlZD4mIGlucHV0
KQp7CiAgICBpbnQgZnJhbWVJbmRleDsKICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxpbnQ+KEFT
Q0lJTGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBmcmFtZUluZGV4KSkKICAgICAgICByZXR1cm4gZmFs
c2U7CgogICAgdW5zaWduZWQgaW50IGlkZW50aWZpZXI7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5n
ZXQ8dW5zaWduZWQgaW50PihBU0NJSUxpdGVyYWwoImlkZW50aWZpZXIiKSwgaWRlbnRpZmllcikp
CiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpBc3luY1RpbWVyRmlyZWQ+KGZyYW1lSW5kZXgsIGlkZW50aWZpZXIpOwogICAgcmV0dXJu
IHRydWU7Cn0KCmNvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6TG9hZFVS
TFJlcXVlc3Q+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5Mb2Fk
VVJMUmVxdWVzdDsKfQoKdm9pZCBJbnB1dFRyYWl0czxXZWJDb3JlOjpMb2FkVVJMUmVxdWVzdD46
OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6TG9hZFVS
TFJlcXVlc3QmIGlucHV0KQp7CiAgICBlbmNvZGVkVmFsdWUucHV0PFdlYkNvcmU6OkZyYW1lTG9h
ZFJlcXVlc3Q+KEFTQ0lJTGl0ZXJhbCgibG9hZFJlcXVlc3QiKSwgaW5wdXQubG9hZFJlcXVlc3Qo
KSk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6TG9hZFVSTFJlcXVlc3Q+OjpkZWNvZGUo
RW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMb2Fk
VVJMUmVxdWVzdD4mIGlucHV0KQp7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RnJhbWVM
b2FkUmVxdWVzdD4gbG9hZFJlcXVlc3Q7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8V2ViQ29y
ZTo6RnJhbWVMb2FkUmVxdWVzdD4oQVNDSUlMaXRlcmFsKCJsb2FkUmVxdWVzdCIpLCBsb2FkUmVx
dWVzdCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpMb2FkVVJMUmVxdWVzdD4oc3RkOjptb3ZlKGxvYWRSZXF1ZXN0KSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dFRyYWl0czxXZWJDb3JlOjpU
cnlDbG9zZVBhZ2U+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5U
cnlDbG9zZVBhZ2U7Cn0KCnZvaWQgSW5wdXRUcmFpdHM8V2ViQ29yZTo6VHJ5Q2xvc2VQYWdlPjo6
ZW5jb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBXZWJDb3JlOjpUcnlDbG9z
ZVBhZ2UmIGlucHV0KQp7CiAgICBVTlVTRURfUEFSQU0oZW5jb2RlZFZhbHVlKTsKICAgIFVOVVNF
RF9QQVJBTShpbnB1dCk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6VHJ5Q2xvc2VQYWdl
Pjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6VHJ5Q2xvc2VQYWdlPiYgaW5wdXQpCnsKICAgIFVOVVNFRF9QQVJBTShlbmNvZGVkVmFs
dWUpOwogICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyeUNsb3NlUGFnZT4o
KTsKICAgIHJldHVybiB0cnVlOwp9Cgpjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFdl
YkNvcmU6OlJlbG9hZEZyYW1lPjo6dHlwZSgpCnsKICAgIHJldHVybiBXZWJDb3JlOjppbnB1dFR5
cGVzKCkuUmVsb2FkRnJhbWU7Cn0KCnZvaWQgSW5wdXRUcmFpdHM8V2ViQ29yZTo6UmVsb2FkRnJh
bWU+OjplbmNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFdlYkNvcmU6OlJl
bG9hZEZyYW1lJiBpbnB1dCkKewogICAgZW5jb2RlZFZhbHVlLnB1dDxpbnQ+KEFTQ0lJTGl0ZXJh
bCgiZnJhbWVJbmRleCIpLCBpbnB1dC5mcmFtZUluZGV4KCkpOwogICAgZW5jb2RlZFZhbHVlLnB1
dDxib29sPihBU0NJSUxpdGVyYWwoImVuZFRvRW5kUmVsb2FkIiksIGlucHV0LmVuZFRvRW5kUmVs
b2FkKCkpOwp9Cgpib29sIElucHV0VHJhaXRzPFdlYkNvcmU6OlJlbG9hZEZyYW1lPjo6ZGVjb2Rl
KEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVs
b2FkRnJhbWU+JiBpbnB1dCkKewogICAgaW50IGZyYW1lSW5kZXg7CiAgICBpZiAoIWVuY29kZWRW
YWx1ZS5nZXQ8aW50PihBU0NJSUxpdGVyYWwoImZyYW1lSW5kZXgiKSwgZnJhbWVJbmRleCkpCiAg
ICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGJvb2wgZW5kVG9FbmRSZWxvYWQ7CiAgICBpZiAoIWVu
Y29kZWRWYWx1ZS5nZXQ8Ym9vbD4oQVNDSUlMaXRlcmFsKCJlbmRUb0VuZFJlbG9hZCIpLCBlbmRU
b0VuZFJlbG9hZCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlucHV0ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpSZWxvYWRGcmFtZT4oZnJhbWVJbmRleCwgZW5kVG9FbmRSZWxvYWQp
OwogICAgcmV0dXJuIHRydWU7Cn0KCmNvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8V2Vi
Q29yZTo6U3RvcExvYWRpbmdGcmFtZT46OnR5cGUoKQp7CiAgICByZXR1cm4gV2ViQ29yZTo6aW5w
dXRUeXBlcygpLlN0b3BMb2FkaW5nRnJhbWU7Cn0KCnZvaWQgSW5wdXRUcmFpdHM8V2ViQ29yZTo6
U3RvcExvYWRpbmdGcmFtZT46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29u
c3QgV2ViQ29yZTo6U3RvcExvYWRpbmdGcmFtZSYgaW5wdXQpCnsKICAgIGVuY29kZWRWYWx1ZS5w
dXQ8aW50PihBU0NJSUxpdGVyYWwoImZyYW1lSW5kZXgiKSwgaW5wdXQuZnJhbWVJbmRleCgpKTsK
fQoKYm9vbCBJbnB1dFRyYWl0czxXZWJDb3JlOjpTdG9wTG9hZGluZ0ZyYW1lPjo6ZGVjb2RlKEVu
Y29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3RvcExv
YWRpbmdGcmFtZT4mIGlucHV0KQp7CiAgICBpbnQgZnJhbWVJbmRleDsKICAgIGlmICghZW5jb2Rl
ZFZhbHVlLmdldDxpbnQ+KEFTQ0lJTGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBmcmFtZUluZGV4KSkK
ICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OlN0b3BMb2FkaW5nRnJhbWU+KGZyYW1lSW5kZXgpOwogICAgcmV0dXJuIHRydWU7Cn0KCmNv
bnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJEaWRG
YWlsPjo6dHlwZSgpCnsKICAgIHJldHVybiBXZWJDb3JlOjppbnB1dFR5cGVzKCkuUmVzb3VyY2VM
b2FkZXJEaWRGYWlsOwp9Cgp2b2lkIElucHV0VHJhaXRzPFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
RGlkRmFpbD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJEaWRGYWlsJiBpbnB1dCkKewogICAgZW5jb2RlZFZhbHVlLnB1dDx1
bnNpZ25lZCBsb25nPihBU0NJSUxpdGVyYWwoImlkZW50aWZpZXIiKSwgaW5wdXQuaWRlbnRpZmll
cigpKTsKICAgIGVuY29kZWRWYWx1ZS5wdXQ8aW50PihBU0NJSUxpdGVyYWwoImZyYW1lSW5kZXgi
KSwgaW5wdXQuZnJhbWVJbmRleCgpKTsKICAgIGVuY29kZWRWYWx1ZS5wdXQ8V2ViQ29yZTo6UmVz
b3VyY2VFcnJvcj4oQVNDSUlMaXRlcmFsKCJlcnJvciIpLCBpbnB1dC5lcnJvcigpKTsKfQoKYm9v
bCBJbnB1dFRyYWl0czxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlckRpZEZhaWw+OjpkZWNvZGUoRW5j
b2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlckRpZEZhaWw+JiBpbnB1dCkKewogICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyOwog
ICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PHVuc2lnbmVkIGxvbmc+KEFTQ0lJTGl0ZXJhbCgiaWRl
bnRpZmllciIpLCBpZGVudGlmaWVyKSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW50IGZy
YW1lSW5kZXg7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8aW50PihBU0NJSUxpdGVyYWwoImZy
YW1lSW5kZXgiKSwgZnJhbWVJbmRleCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiBlcnJvcjsKICAgIGlmICghZW5jb2Rl
ZFZhbHVlLmdldDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPihBU0NJSUxpdGVyYWwoImVycm9yIiks
IGVycm9yKSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlkRmFpbD4oaWRlbnRpZmllciwgZnJhbWVJbmRl
eCwgc3RkOjptb3ZlKGVycm9yKSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKY29uc3QgQXRvbWljU3Ry
aW5nJiBJbnB1dFRyYWl0czxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlckRpZEZpbmlzaExvYWRpbmc+
Ojp0eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5SZXNvdXJjZUxvYWRl
ckRpZEZpbmlzaExvYWRpbmc7Cn0KCnZvaWQgSW5wdXRUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJEaWRGaW5pc2hMb2FkaW5nPjo6ZW5jb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVl
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlckRpZEZpbmlzaExvYWRpbmcmIGlucHV0KQp7
CiAgICBlbmNvZGVkVmFsdWUucHV0PHVuc2lnbmVkIGxvbmc+KEFTQ0lJTGl0ZXJhbCgiaWRlbnRp
ZmllciIpLCBpbnB1dC5pZGVudGlmaWVyKCkpOwogICAgZW5jb2RlZFZhbHVlLnB1dDxpbnQ+KEFT
Q0lJTGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBpbnB1dC5mcmFtZUluZGV4KCkpOwogICAgZW5jb2Rl
ZFZhbHVlLnB1dDxkb3VibGU+KEFTQ0lJTGl0ZXJhbCgiZmluaXNoVGltZSIpLCBpbnB1dC5maW5p
c2hUaW1lKCkpOwp9Cgpib29sIElucHV0VHJhaXRzPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlk
RmluaXNoTG9hZGluZz46OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlkRmluaXNoTG9hZGluZz4mIGlucHV0
KQp7CiAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXI7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5n
ZXQ8dW5zaWduZWQgbG9uZz4oQVNDSUlMaXRlcmFsKCJpZGVudGlmaWVyIiksIGlkZW50aWZpZXIp
KQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpbnQgZnJhbWVJbmRleDsKICAgIGlmICghZW5j
b2RlZFZhbHVlLmdldDxpbnQ+KEFTQ0lJTGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBmcmFtZUluZGV4
KSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgZG91YmxlIGZpbmlzaFRpbWU7CiAgICBpZiAo
IWVuY29kZWRWYWx1ZS5nZXQ8ZG91YmxlPihBU0NJSUxpdGVyYWwoImZpbmlzaFRpbWUiKSwgZmlu
aXNoVGltZSkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlucHV0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlckRpZEZpbmlzaExvYWRpbmc+KGlkZW50aWZpZXIs
IGZyYW1lSW5kZXgsIGZpbmlzaFRpbWUpOwogICAgcmV0dXJuIHRydWU7Cn0KCmNvbnN0IEF0b21p
Y1N0cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJEaWRSZWNlaXZlUmVz
cG9uc2U+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5SZXNvdXJj
ZUxvYWRlckRpZFJlY2VpdmVSZXNwb25zZTsKfQoKdm9pZCBJbnB1dFRyYWl0czxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlckRpZFJlY2VpdmVSZXNwb25zZT46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVu
Y29kZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJEaWRSZWNlaXZlUmVzcG9u
c2UmIGlucHV0KQp7CiAgICBlbmNvZGVkVmFsdWUucHV0PHVuc2lnbmVkIGxvbmc+KEFTQ0lJTGl0
ZXJhbCgiaWRlbnRpZmllciIpLCBpbnB1dC5pZGVudGlmaWVyKCkpOwogICAgZW5jb2RlZFZhbHVl
LnB1dDxpbnQ+KEFTQ0lJTGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBpbnB1dC5mcmFtZUluZGV4KCkp
OwogICAgZW5jb2RlZFZhbHVlLnB1dDxXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlPihBU0NJSUxp
dGVyYWwoInJlc3BvbnNlIiksIGlucHV0LnJlc3BvbnNlKCkpOwp9Cgpib29sIElucHV0VHJhaXRz
PFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlkUmVjZWl2ZVJlc3BvbnNlPjo6ZGVjb2RlKEVuY29k
ZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJEaWRSZWNlaXZlUmVzcG9uc2U+JiBpbnB1dCkKewogICAgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyOwogICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PHVuc2lnbmVkIGxvbmc+KEFTQ0lJTGl0
ZXJhbCgiaWRlbnRpZmllciIpLCBpZGVudGlmaWVyKSkKICAgICAgICByZXR1cm4gZmFsc2U7Cgog
ICAgaW50IGZyYW1lSW5kZXg7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8aW50PihBU0NJSUxp
dGVyYWwoImZyYW1lSW5kZXgiKSwgZnJhbWVJbmRleCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoK
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZTsK
ICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlPihBU0NJ
SUxpdGVyYWwoInJlc3BvbnNlIiksIHJlc3BvbnNlKSkKICAgICAgICByZXR1cm4gZmFsc2U7Cgog
ICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlkUmVj
ZWl2ZVJlc3BvbnNlPihpZGVudGlmaWVyLCBmcmFtZUluZGV4LCBzdGQ6Om1vdmUocmVzcG9uc2Up
KTsKICAgIHJldHVybiB0cnVlOwp9Cgpjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyRGlkU2VuZERhdGE+Ojp0eXBlKCkKewogICAgcmV0dXJuIFdl
YkNvcmU6OmlucHV0VHlwZXMoKS5SZXNvdXJjZUxvYWRlckRpZFNlbmREYXRhOwp9Cgp2b2lkIElu
cHV0VHJhaXRzPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlkU2VuZERhdGE+OjplbmNvZGUoRW5j
b2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlk
U2VuZERhdGEmIGlucHV0KQp7CiAgICBlbmNvZGVkVmFsdWUucHV0PHVuc2lnbmVkIGxvbmc+KEFT
Q0lJTGl0ZXJhbCgiaWRlbnRpZmllciIpLCBpbnB1dC5pZGVudGlmaWVyKCkpOwogICAgZW5jb2Rl
ZFZhbHVlLnB1dDxpbnQ+KEFTQ0lJTGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBpbnB1dC5mcmFtZUlu
ZGV4KCkpOwogICAgZW5jb2RlZFZhbHVlLnB1dDx1bnNpZ25lZCBsb25nIGxvbmc+KEFTQ0lJTGl0
ZXJhbCgiYnl0ZXNTZW50IiksIGlucHV0LmJ5dGVzU2VudCgpKTsKICAgIGVuY29kZWRWYWx1ZS5w
dXQ8dW5zaWduZWQgbG9uZyBsb25nPihBU0NJSUxpdGVyYWwoInRvdGFsQnl0ZXNUb0JlU2VudCIp
LCBpbnB1dC50b3RhbEJ5dGVzVG9CZVNlbnQoKSk7Cn0KCmJvb2wgSW5wdXRUcmFpdHM8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJEaWRTZW5kRGF0YT46OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29k
ZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlkU2VuZERh
dGE+JiBpbnB1dCkKewogICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyOwogICAgaWYgKCFlbmNv
ZGVkVmFsdWUuZ2V0PHVuc2lnbmVkIGxvbmc+KEFTQ0lJTGl0ZXJhbCgiaWRlbnRpZmllciIpLCBp
ZGVudGlmaWVyKSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaW50IGZyYW1lSW5kZXg7CiAg
ICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8aW50PihBU0NJSUxpdGVyYWwoImZyYW1lSW5kZXgiKSwg
ZnJhbWVJbmRleCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQ7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8dW5zaWduZWQgbG9uZyBsb25n
PihBU0NJSUxpdGVyYWwoImJ5dGVzU2VudCIpLCBieXRlc1NlbnQpKQogICAgICAgIHJldHVybiBm
YWxzZTsKCiAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50OwogICAgaWYg
KCFlbmNvZGVkVmFsdWUuZ2V0PHVuc2lnbmVkIGxvbmcgbG9uZz4oQVNDSUlMaXRlcmFsKCJ0b3Rh
bEJ5dGVzVG9CZVNlbnQiKSwgdG90YWxCeXRlc1RvQmVTZW50KSkKICAgICAgICByZXR1cm4gZmFs
c2U7CgogICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
RGlkU2VuZERhdGE+KGlkZW50aWZpZXIsIGZyYW1lSW5kZXgsIGJ5dGVzU2VudCwgdG90YWxCeXRl
c1RvQmVTZW50KTsKICAgIHJldHVybiB0cnVlOwp9Cgpjb25zdCBBdG9taWNTdHJpbmcmIElucHV0
VHJhaXRzPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlkUmVjZWl2ZURhdGE+Ojp0eXBlKCkKewog
ICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS5SZXNvdXJjZUxvYWRlckRpZFJlY2VpdmVE
YXRhOwp9Cgp2b2lkIElucHV0VHJhaXRzPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlkUmVjZWl2
ZURhdGE+OjplbmNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyRGlkUmVjZWl2ZURhdGEmIGlucHV0KQp7CiAgICBlbmNvZGVkVmFsdWUu
cHV0PHVuc2lnbmVkIGxvbmc+KEFTQ0lJTGl0ZXJhbCgiaWRlbnRpZmllciIpLCBpbnB1dC5pZGVu
dGlmaWVyKCkpOwogICAgZW5jb2RlZFZhbHVlLnB1dDxpbnQ+KEFTQ0lJTGl0ZXJhbCgiZnJhbWVJ
bmRleCIpLCBpbnB1dC5mcmFtZUluZGV4KCkpOwogICAgZW5jb2RlZFZhbHVlLnB1dDxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+KEFTQ0lJTGl0ZXJhbCgiYnVmZmVyIiksIGlucHV0LmJ1ZmZlcigpKTsK
ICAgIGVuY29kZWRWYWx1ZS5wdXQ8aW50PihBU0NJSUxpdGVyYWwoImVuY29kZWRMZW5ndGgiKSwg
aW5wdXQuZW5jb2RlZExlbmd0aCgpKTsKfQoKYm9vbCBJbnB1dFRyYWl0czxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlckRpZFJlY2VpdmVEYXRhPjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZh
bHVlLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJEaWRSZWNlaXZlRGF0
YT4mIGlucHV0KQp7CiAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXI7CiAgICBpZiAoIWVuY29k
ZWRWYWx1ZS5nZXQ8dW5zaWduZWQgbG9uZz4oQVNDSUlMaXRlcmFsKCJpZGVudGlmaWVyIiksIGlk
ZW50aWZpZXIpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpbnQgZnJhbWVJbmRleDsKICAg
IGlmICghZW5jb2RlZFZhbHVlLmdldDxpbnQ+KEFTQ0lJTGl0ZXJhbCgiZnJhbWVJbmRleCIpLCBm
cmFtZUluZGV4KSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4oQVNDSUlMaXRlcmFsKCJidWZmZXIiKSwgYnVmZmVyKSkKICAgICAgICByZXR1
cm4gZmFsc2U7CgogICAgaW50IGVuY29kZWRMZW5ndGg7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5n
ZXQ8aW50PihBU0NJSUxpdGVyYWwoImVuY29kZWRMZW5ndGgiKSwgZW5jb2RlZExlbmd0aCkpCiAg
ICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlckRpZFJlY2VpdmVEYXRhPihpZGVudGlmaWVyLCBmcmFtZUluZGV4LCBi
dWZmZXIsIGVuY29kZWRMZW5ndGgpOwogICAgcmV0dXJuIHRydWU7Cn0KCmNvbnN0IEF0b21pY1N0
cmluZyYgSW5wdXRUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJDcmVhdGVkPjo6dHlwZSgp
CnsKICAgIHJldHVybiBXZWJDb3JlOjppbnB1dFR5cGVzKCkuUmVzb3VyY2VMb2FkZXJDcmVhdGVk
Owp9Cgp2b2lkIElucHV0VHJhaXRzPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyQ3JlYXRlZD46OmVu
Y29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJDcmVhdGVkJiBpbnB1dCkKewogICAgZW5jb2RlZFZhbHVlLnB1dDx1bnNpZ25lZCBsb25n
PihBU0NJSUxpdGVyYWwoImlkZW50aWZpZXIiKSwgaW5wdXQuaWRlbnRpZmllcigpKTsKICAgIGVu
Y29kZWRWYWx1ZS5wdXQ8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PihBU0NJSUxpdGVyYWwoInJl
cXVlc3QiKSwgaW5wdXQucmVxdWVzdCgpKTsKfQoKYm9vbCBJbnB1dFRyYWl0czxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlckNyZWF0ZWQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUs
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlckNyZWF0ZWQ+JiBpbnB1dCkK
ewogICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyOwogICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0
PHVuc2lnbmVkIGxvbmc+KEFTQ0lJTGl0ZXJhbCgiaWRlbnRpZmllciIpLCBpZGVudGlmaWVyKSkK
ICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdD4gcmVxdWVzdDsKICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q+KEFTQ0lJTGl0ZXJhbCgicmVxdWVzdCIpLCByZXF1ZXN0KSkKICAgICAg
ICByZXR1cm4gZmFsc2U7CgogICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyQ3JlYXRlZD4oaWRlbnRpZmllciwgc3RkOjptb3ZlKHJlcXVlc3QpKTsKICAg
IHJldHVybiB0cnVlOwp9Cgpjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFdlYkNvcmU6
OlNhdmVkQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lPjo6dHlwZSgpCnsKICAgIHJldHVybiBXZWJD
b3JlOjppbnB1dFR5cGVzKCkuU2F2ZWRCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWU7Cn0KCnZvaWQg
SW5wdXRUcmFpdHM8V2ViQ29yZTo6U2F2ZWRCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWU+OjplbmNv
ZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFdlYkNvcmU6OlNhdmVkQmVnaW5B
bmltYXRpb25VcGRhdGVUaW1lJiBpbnB1dCkKewogICAgZW5jb2RlZFZhbHVlLnB1dDxkb3VibGU+
KEFTQ0lJTGl0ZXJhbCgiY3VycmVudFRpbWUiKSwgaW5wdXQuY3VycmVudFRpbWUoKSk7Cn0KCmJv
b2wgSW5wdXRUcmFpdHM8V2ViQ29yZTo6U2F2ZWRCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWU+Ojpk
ZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTYXZlZEJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZT4mIGlucHV0KQp7CiAgICBkb3VibGUgY3Vy
cmVudFRpbWU7CiAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8ZG91YmxlPihBU0NJSUxpdGVyYWwo
ImN1cnJlbnRUaW1lIiksIGN1cnJlbnRUaW1lKSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAg
aW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlNhdmVkQmVnaW5BbmltYXRpb25VcGRh
dGVUaW1lPihjdXJyZW50VGltZSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKY29uc3QgQXRvbWljU3Ry
aW5nJiBJbnB1dFRyYWl0czxXZWJDb3JlOjpTYXZlZFRpbWVyTmV4dEZpcmVJbnRlcnZhbD46OnR5
cGUoKQp7CiAgICByZXR1cm4gV2ViQ29yZTo6aW5wdXRUeXBlcygpLlNhdmVkVGltZXJOZXh0Rmly
ZUludGVydmFsOwp9Cgp2b2lkIElucHV0VHJhaXRzPFdlYkNvcmU6OlNhdmVkVGltZXJOZXh0Rmly
ZUludGVydmFsPjo6ZW5jb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBXZWJD
b3JlOjpTYXZlZFRpbWVyTmV4dEZpcmVJbnRlcnZhbCYgaW5wdXQpCnsKICAgIGVuY29kZWRWYWx1
ZS5wdXQ8ZG91YmxlPihBU0NJSUxpdGVyYWwoIm5leHRGaXJlSW50ZXJ2YWwiKSwgaW5wdXQubmV4
dEZpcmVJbnRlcnZhbCgpKTsKfQoKYm9vbCBJbnB1dFRyYWl0czxXZWJDb3JlOjpTYXZlZFRpbWVy
TmV4dEZpcmVJbnRlcnZhbD46OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNhdmVkVGltZXJOZXh0RmlyZUludGVydmFsPiYgaW5wdXQp
CnsKICAgIGRvdWJsZSBuZXh0RmlyZUludGVydmFsOwogICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0
PGRvdWJsZT4oQVNDSUlMaXRlcmFsKCJuZXh0RmlyZUludGVydmFsIiksIG5leHRGaXJlSW50ZXJ2
YWwpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6U2F2ZWRUaW1lck5leHRGaXJlSW50ZXJ2YWw+KG5leHRGaXJlSW50ZXJ2YWwpOwog
ICAgcmV0dXJuIHRydWU7Cn0KU3RyaW5nIEVuY29kaW5nVHJhaXRzPElucHV0UXVldWU+OjplbmNv
ZGVWYWx1ZShjb25zdCBJbnB1dFF1ZXVlJiBlbnVtVmFsdWUpCnsKICAgIHN3aXRjaCAoZW51bVZh
bHVlKSB7CiAgICBjYXNlIElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0OiByZXR1cm4gQVNDSUlM
aXRlcmFsKCJFdmVudExvb3BJbnB1dCIpOwogICAgY2FzZSBJbnB1dFF1ZXVlOjpMb2FkZXJNZW1v
aXplZERhdGE6IHJldHVybiBBU0NJSUxpdGVyYWwoIkxvYWRlck1lbW9pemVkRGF0YSIpOwogICAg
Y2FzZSBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERhdGE6IHJldHVybiBBU0NJSUxpdGVyYWwo
IlNjcmlwdE1lbW9pemVkRGF0YSIpOwogICAgY2FzZSBJbnB1dFF1ZXVlOjpDb3VudDogcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiQ291bnQiKTsKICAgIGRlZmF1bHQ6IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyByZXR1cm4gQVNDSUlMaXRlcmFsKCJFcnJvciEiKTsKICAgIH0KfQoKYm9vbCBFbmNvZGluZ1Ry
YWl0czxJbnB1dFF1ZXVlPjo6ZGVjb2RlVmFsdWUoU3RyaW5nJiBlbmNvZGVkVmFsdWUsIElucHV0
UXVldWUmIGVudW1WYWx1ZSkKewogICAgaWYgKGVuY29kZWRWYWx1ZSA9PSBTdHJpbmcoQVNDSUlM
aXRlcmFsKCJFdmVudExvb3BJbnB1dCIpKSkgewogICAgICAgIGVudW1WYWx1ZSA9IElucHV0UXVl
dWU6OkV2ZW50TG9vcElucHV0OwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKGVu
Y29kZWRWYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJMb2FkZXJNZW1vaXplZERhdGEiKSkp
IHsKICAgICAgICBlbnVtVmFsdWUgPSBJbnB1dFF1ZXVlOjpMb2FkZXJNZW1vaXplZERhdGE7CiAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpZiAoZW5jb2RlZFZhbHVlID09IFN0cmluZyhB
U0NJSUxpdGVyYWwoIlNjcmlwdE1lbW9pemVkRGF0YSIpKSkgewogICAgICAgIGVudW1WYWx1ZSA9
IElucHV0UXVldWU6OlNjcmlwdE1lbW9pemVkRGF0YTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
IH0KICAgIGlmIChlbmNvZGVkVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiQ291bnQiKSkp
IHsKICAgICAgICBlbnVtVmFsdWUgPSBJbnB1dFF1ZXVlOjpDb3VudDsKICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQoKc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRW
YWx1ZT4gRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzPjo6
ZW5jb2RlVmFsdWUoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzJiBlbnVt
VmFsdWUpCnsKICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVuY29kZWRWYWx1ZSA9
IEVuY29kZWRWYWx1ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKTsKICAgIGlmIChlbnVtVmFsdWUgJiBX
ZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpBbHRLZXkpCiAgICAgICAgZW5jb2RlZFZhbHVlLT5hcHBl
bmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIkFsdEtleSIpKTsKICAgIGlmIChlbnVtVmFsdWUgPT0g
V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6QWx0S2V5KQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUo
ZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
OjpDdHJsS2V5KQogICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRl
cmFsKCJDdHJsS2V5IikpOwogICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybUV2
ZW50OjpDdHJsS2V5KQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAg
IGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5KQogICAgICAg
IGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJNZXRhS2V5IikpOwog
ICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5KQogICAg
ICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBX
ZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleSkKICAgICAgICBlbmNvZGVkVmFsdWUtPmFw
cGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiU2hpZnRLZXkiKSk7CiAgICBpZiAoZW51bVZhbHVl
ID09IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5KQogICAgICAgIHJldHVybiBzdGQ6
Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsK
fQoKYm9vbCBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+
OjpkZWNvZGVWYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiYgZW5jb2RlZFZhbHVl
LCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMmIGVudW1WYWx1ZSkKewogICAgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGluc3BlY3RvckFycmF5ID0gZW5jb2RlZFZh
bHVlLT5pbnNwZWN0b3JWYWx1ZSgpLT5hc0FycmF5KCk7CiAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGluc3BlY3RvckFycmF5LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgU3RyaW5nIGVuY29k
ZWRFbnVtVmFsdWU7CiAgICAgICAgaWYgKCFpbnNwZWN0b3JBcnJheS0+Z2V0KGkpLT5hc1N0cmlu
ZygmZW5jb2RlZEVudW1WYWx1ZSkpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICBp
ZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJBbHRLZXkiKSkpCiAg
ICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVycz4oZW51bVZhbHVlIHwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6QWx0S2V5KTsK
ICAgICAgICBpZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJDdHJs
S2V5IikpKQogICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0
Zm9ybUV2ZW50OjpNb2RpZmllcnM+KGVudW1WYWx1ZSB8IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OkN0cmxLZXkpOwogICAgICAgIGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxp
dGVyYWwoIk1ldGFLZXkiKSkpCiAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4oZW51bVZhbHVlIHwgV2ViQ29yZTo6UGxh
dGZvcm1FdmVudDo6TWV0YUtleSk7CiAgICAgICAgaWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgiU2hpZnRLZXkiKSkpCiAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4oZW51bVZhbHVlIHwg
V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6U2hpZnRLZXkpOwogICAgfQoKICAgIHJldHVybiB0cnVl
Owp9CgpzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBFbmNvZGluZ1RyYWl0czxXZWJDb3Jl
OjpNb3VzZUJ1dHRvbj46OmVuY29kZVZhbHVlKGNvbnN0IFdlYkNvcmU6Ok1vdXNlQnV0dG9uJiBl
bnVtVmFsdWUpCnsKICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVuY29kZWRWYWx1
ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKTsKICAgIGlmIChlbnVtVmFsdWUg
JiBXZWJDb3JlOjpOb0J1dHRvbikKICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+
KEFTQ0lJTGl0ZXJhbCgiTm9CdXR0b24iKSk7CiAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6
Ok5vQnV0dG9uKQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlm
IChlbnVtVmFsdWUgJiBXZWJDb3JlOjpMZWZ0QnV0dG9uKQogICAgICAgIGVuY29kZWRWYWx1ZS0+
YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJMZWZ0QnV0dG9uIikpOwogICAgaWYgKGVudW1W
YWx1ZSA9PSBXZWJDb3JlOjpMZWZ0QnV0dG9uKQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5j
b2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpNaWRkbGVCdXR0b24pCiAg
ICAgICAgZW5jb2RlZFZhbHVlLT5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIk1pZGRsZUJ1
dHRvbiIpKTsKICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6TWlkZGxlQnV0dG9uKQogICAg
ICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBX
ZWJDb3JlOjpSaWdodEJ1dHRvbikKICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+
KEFTQ0lJTGl0ZXJhbCgiUmlnaHRCdXR0b24iKSk7CiAgICBpZiAoZW51bVZhbHVlID09IFdlYkNv
cmU6OlJpZ2h0QnV0dG9uKQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsK
ICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKfQoKYm9vbCBFbmNvZGluZ1RyYWl0
czxXZWJDb3JlOjpNb3VzZUJ1dHRvbj46OmRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxFbmNv
ZGVkVmFsdWU+JiBlbmNvZGVkVmFsdWUsIFdlYkNvcmU6Ok1vdXNlQnV0dG9uJiBlbnVtVmFsdWUp
CnsKICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbnNwZWN0b3JBcnJheSA9
IGVuY29kZWRWYWx1ZS0+aW5zcGVjdG9yVmFsdWUoKS0+YXNBcnJheSgpOwogICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBpbnNwZWN0b3JBcnJheS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgIFN0
cmluZyBlbmNvZGVkRW51bVZhbHVlOwogICAgICAgIGlmICghaW5zcGVjdG9yQXJyYXktPmdldChp
KS0+YXNTdHJpbmcoJmVuY29kZWRFbnVtVmFsdWUpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgaWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTm9C
dXR0b24iKSkpCiAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1v
dXNlQnV0dG9uPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpOb0J1dHRvbik7CiAgICAgICAgaWYgKGVu
Y29kZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTGVmdEJ1dHRvbiIpKSkKICAg
ICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TW91c2VCdXR0b24+KGVu
dW1WYWx1ZSB8IFdlYkNvcmU6OkxlZnRCdXR0b24pOwogICAgICAgIGlmIChlbmNvZGVkRW51bVZh
bHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIk1pZGRsZUJ1dHRvbiIpKSkKICAgICAgICAgICAg
ZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TW91c2VCdXR0b24+KGVudW1WYWx1ZSB8
IFdlYkNvcmU6Ok1pZGRsZUJ1dHRvbik7CiAgICAgICAgaWYgKGVuY29kZWRFbnVtVmFsdWUgPT0g
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiUmlnaHRCdXR0b24iKSkpCiAgICAgICAgICAgIGVudW1WYWx1
ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1vdXNlQnV0dG9uPihlbnVtVmFsdWUgfCBXZWJDb3Jl
OjpSaWdodEJ1dHRvbik7CiAgICB9CgogICAgcmV0dXJuIHRydWU7Cn0KClN0cmluZyBFbmNvZGlu
Z1RyYWl0czxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50VHlwZT46OmVuY29kZVZhbHVlKGNvbnN0IFdl
YkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlJiBlbnVtVmFsdWUpCnsKICAgIHN3aXRjaCAoZW51bVZh
bHVlKSB7CiAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlOjpOb1R5cGU6IHJldHVy
biBBU0NJSUxpdGVyYWwoIk5vVHlwZSIpOwogICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
VHlwZTo6S2V5RG93bjogcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiS2V5RG93biIpOwogICAgY2FzZSBX
ZWJDb3JlOjpQbGF0Zm9ybUV2ZW50VHlwZTo6S2V5VXA6IHJldHVybiBBU0NJSUxpdGVyYWwoIktl
eVVwIik7CiAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlOjpSYXdLZXlEb3duOiBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJSYXdLZXlEb3duIik7CiAgICBjYXNlIFdlYkNvcmU6OlBsYXRm
b3JtRXZlbnRUeXBlOjpDaGFyOiByZXR1cm4gQVNDSUlMaXRlcmFsKCJDaGFyIik7CiAgICBjYXNl
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlOjpNb3VzZU1vdmVkOiByZXR1cm4gQVNDSUlMaXRl
cmFsKCJNb3VzZU1vdmVkIik7CiAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlOjpN
b3VzZVByZXNzZWQ6IHJldHVybiBBU0NJSUxpdGVyYWwoIk1vdXNlUHJlc3NlZCIpOwogICAgY2Fz
ZSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50VHlwZTo6TW91c2VSZWxlYXNlZDogcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiTW91c2VSZWxlYXNlZCIpOwogICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
VHlwZTo6TW91c2VTY3JvbGw6IHJldHVybiBBU0NJSUxpdGVyYWwoIk1vdXNlU2Nyb2xsIik7CiAg
ICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlOjpXaGVlbDogcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiV2hlZWwiKTsKI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICBjYXNlIFdlYkNvcmU6
OlBsYXRmb3JtRXZlbnRUeXBlOjpUb3VjaFN0YXJ0OiByZXR1cm4gQVNDSUlMaXRlcmFsKCJUb3Vj
aFN0YXJ0Iik7CiAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlOjpUb3VjaE1vdmU6
IHJldHVybiBBU0NJSUxpdGVyYWwoIlRvdWNoTW92ZSIpOwogICAgY2FzZSBXZWJDb3JlOjpQbGF0
Zm9ybUV2ZW50VHlwZTo6VG91Y2hFbmQ6IHJldHVybiBBU0NJSUxpdGVyYWwoIlRvdWNoRW5kIik7
CiAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlOjpUb3VjaENhbmNlbDogcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiVG91Y2hDYW5jZWwiKTsKI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICBkZWZhdWx0OiBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiRXJyb3IhIik7CiAgICB9Cn0KCmJvb2wgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6UGxhdGZv
cm1FdmVudFR5cGU+OjpkZWNvZGVWYWx1ZShTdHJpbmcmIGVuY29kZWRWYWx1ZSwgV2ViQ29yZTo6
UGxhdGZvcm1FdmVudFR5cGUmIGVudW1WYWx1ZSkKewogICAgaWYgKGVuY29kZWRWYWx1ZSA9PSBT
dHJpbmcoQVNDSUlMaXRlcmFsKCJOb1R5cGUiKSkpIHsKICAgICAgICBlbnVtVmFsdWUgPSBXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50VHlwZTo6Tm9UeXBlOwogICAgICAgIHJldHVybiB0cnVlOwogICAg
fQogICAgaWYgKGVuY29kZWRWYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJLZXlEb3duIikp
KSB7CiAgICAgICAgZW51bVZhbHVlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudFR5cGU6OktleURv
d247CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpZiAoZW5jb2RlZFZhbHVlID09IFN0
cmluZyhBU0NJSUxpdGVyYWwoIktleVVwIikpKSB7CiAgICAgICAgZW51bVZhbHVlID0gV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudFR5cGU6OktleVVwOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQog
ICAgaWYgKGVuY29kZWRWYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJSYXdLZXlEb3duIikp
KSB7CiAgICAgICAgZW51bVZhbHVlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudFR5cGU6OlJhd0tl
eURvd247CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpZiAoZW5jb2RlZFZhbHVlID09
IFN0cmluZyhBU0NJSUxpdGVyYWwoIkNoYXIiKSkpIHsKICAgICAgICBlbnVtVmFsdWUgPSBXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50VHlwZTo6Q2hhcjsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0K
ICAgIGlmIChlbmNvZGVkVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTW91c2VNb3ZlZCIp
KSkgewogICAgICAgIGVudW1WYWx1ZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlOjpNb3Vz
ZU1vdmVkOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKGVuY29kZWRWYWx1ZSA9
PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJNb3VzZVByZXNzZWQiKSkpIHsKICAgICAgICBlbnVtVmFs
dWUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50VHlwZTo6TW91c2VQcmVzc2VkOwogICAgICAgIHJl
dHVybiB0cnVlOwogICAgfQogICAgaWYgKGVuY29kZWRWYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRl
cmFsKCJNb3VzZVJlbGVhc2VkIikpKSB7CiAgICAgICAgZW51bVZhbHVlID0gV2ViQ29yZTo6UGxh
dGZvcm1FdmVudFR5cGU6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9
CiAgICBpZiAoZW5jb2RlZFZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIk1vdXNlU2Nyb2xs
IikpKSB7CiAgICAgICAgZW51bVZhbHVlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudFR5cGU6Ok1v
dXNlU2Nyb2xsOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKGVuY29kZWRWYWx1
ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJXaGVlbCIpKSkgewogICAgICAgIGVudW1WYWx1ZSA9
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlOjpXaGVlbDsKICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgIH0KI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICBpZiAoZW5jb2RlZFZhbHVlID09IFN0
cmluZyhBU0NJSUxpdGVyYWwoIlRvdWNoU3RhcnQiKSkpIHsKICAgICAgICBlbnVtVmFsdWUgPSBX
ZWJDb3JlOjpQbGF0Zm9ybUV2ZW50VHlwZTo6VG91Y2hTdGFydDsKICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgIH0KICAgIGlmIChlbmNvZGVkVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVG91
Y2hNb3ZlIikpKSB7CiAgICAgICAgZW51bVZhbHVlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudFR5
cGU6OlRvdWNoTW92ZTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGlmIChlbmNvZGVk
VmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVG91Y2hFbmQiKSkpIHsKICAgICAgICBlbnVt
VmFsdWUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50VHlwZTo6VG91Y2hFbmQ7CiAgICAgICAgcmV0
dXJuIHRydWU7CiAgICB9CiAgICBpZiAoZW5jb2RlZFZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVy
YWwoIlRvdWNoQ2FuY2VsIikpKSB7CiAgICAgICAgZW51bVZhbHVlID0gV2ViQ29yZTo6UGxhdGZv
cm1FdmVudFR5cGU6OlRvdWNoQ2FuY2VsOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQojZW5k
aWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgIHJldHVybiBmYWxzZTsKfQoKc3RkOjp1bmlx
dWVfcHRyPEVuY29kZWRWYWx1ZT4gRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50R3JhbnVsYXJpdHk+OjplbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnRHcmFudWxhcml0eSYgZW51bVZhbHVlKQp7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5j
b2RlZFZhbHVlPiBlbmNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmNyZWF0ZUVuY29kZWRMaXN0
KCk7CiAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6U2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkK
ICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiU2Nyb2xs
QnlQYWdlV2hlZWxFdmVudCIpKTsKICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6U2Nyb2xs
QnlQYWdlV2hlZWxFdmVudCkKICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7
CiAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQpCiAg
ICAgICAgZW5jb2RlZFZhbHVlLT5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50IikpOwogICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpTY3JvbGxC
eVBpeGVsV2hlZWxFdmVudCkKICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7
CiAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7Cn0KCmJvb2wgRW5jb2RpbmdUcmFp
dHM8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHk+OjpkZWNvZGVWYWx1ZShz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiYgZW5jb2RlZFZhbHVlLCBXZWJDb3JlOjpQbGF0
Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSYgZW51bVZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkgPSBlbmNvZGVkVmFsdWUtPmluc3Bl
Y3RvclZhbHVlKCktPmFzQXJyYXkoKTsKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zcGVj
dG9yQXJyYXktPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICBTdHJpbmcgZW5jb2RlZEVudW1WYWx1
ZTsKICAgICAgICBpZiAoIWluc3BlY3RvckFycmF5LT5nZXQoaSktPmFzU3RyaW5nKCZlbmNvZGVk
RW51bVZhbHVlKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmIChlbmNvZGVk
RW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQi
KSkpCiAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudEdyYW51bGFyaXR5PihlbnVtVmFsdWUgfCBXZWJDb3JlOjpTY3JvbGxCeVBhZ2VX
aGVlbEV2ZW50KTsKICAgICAgICBpZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlM
aXRlcmFsKCJTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCIpKSkKICAgICAgICAgICAgZW51bVZhbHVl
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHk+KGVu
dW1WYWx1ZSB8IFdlYkNvcmU6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KTsKICAgIH0KCiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gRW5jb2RpbmdUcmFp
dHM8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+OjplbmNvZGVWYWx1ZShjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSYgZW51bVZhbHVlKQp7CiAgICBzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBlbmNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmNyZWF0
ZUVuY29kZWRMaXN0KCk7CiAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VOb25lKQogICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVND
SUlMaXRlcmFsKCJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUiKSk7CiAgICBpZiAoZW51bVZh
bHVlID09IFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKICAgICAgICByZXR1
cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CiAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbikKICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVu
ZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbiIpKTsK
ICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdh
bikKICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CiAgICBpZiAoZW51bVZh
bHVlICYgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VTdGF0aW9uYXJ5KQogICAgICAg
IGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZVN0YXRpb25hcnkiKSk7CiAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6OlBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFyeSkKICAgICAgICByZXR1cm4gc3RkOjptb3Zl
KGVuY29kZWRWYWx1ZSk7CiAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VDaGFuZ2VkKQogICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4o
QVNDSUlMaXRlcmFsKCJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQiKSk7CiAgICBpZiAo
ZW51bVZhbHVlID09IFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZCkKICAg
ICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CiAgICBpZiAoZW51bVZhbHVlICYg
V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZCkKICAgICAgICBlbmNvZGVkVmFs
dWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VF
bmRlZCIpKTsKICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50
UGhhc2VFbmRlZCkKICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CiAgICBp
ZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQp
CiAgICAgICAgZW5jb2RlZFZhbHVlLT5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlQ2FuY2VsbGVkIikpOwogICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJD
b3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZCkKICAgICAgICByZXR1cm4gc3Rk
Ojptb3ZlKGVuY29kZWRWYWx1ZSk7CiAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6UGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2VNYXlCZWdpbikKICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxT
dHJpbmc+KEFTQ0lJTGl0ZXJhbCgiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VNYXlCZWdpbiIpKTsK
ICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VNYXlC
ZWdpbikKICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CiAgICByZXR1cm4g
c3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7Cn0KCmJvb2wgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+OjpkZWNvZGVWYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8RW5j
b2RlZFZhbHVlPiYgZW5jb2RlZFZhbHVlLCBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZSYgZW51bVZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5z
cGVjdG9yQXJyYXkgPSBlbmNvZGVkVmFsdWUtPmluc3BlY3RvclZhbHVlKCktPmFzQXJyYXkoKTsK
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zcGVjdG9yQXJyYXktPmxlbmd0aCgpOyArK2kp
IHsKICAgICAgICBTdHJpbmcgZW5jb2RlZEVudW1WYWx1ZTsKICAgICAgICBpZiAoIWluc3BlY3Rv
ckFycmF5LT5nZXQoaSktPmFzU3RyaW5nKCZlbmNvZGVkRW51bVZhbHVlKSkKICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgIGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJ
SUxpdGVyYWwoIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSIpKSkKICAgICAgICAgICAgZW51
bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KGVu
dW1WYWx1ZSB8IFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSk7CiAgICAgICAg
aWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VCZWdhbiIpKSkKICAgICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KGVudW1WYWx1ZSB8IFdlYkNvcmU6OlBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW4pOwogICAgICAgIGlmIChlbmNvZGVkRW51bVZhbHVl
ID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFy
eSIpKSkKICAgICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2U+KGVudW1WYWx1ZSB8IFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlU3RhdGlvbmFyeSk7CiAgICAgICAgaWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkIikpKQogICAgICAg
ICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZT4oZW51bVZhbHVlIHwgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2Vk
KTsKICAgICAgICBpZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkIikpKQogICAgICAgICAgICBlbnVtVmFsdWUgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4oZW51bVZhbHVlIHwg
V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZCk7CiAgICAgICAgaWYgKGVuY29k
ZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2VDYW5jZWxsZWQiKSkpCiAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZCk7CiAgICAgICAgaWYgKGVuY29kZWRFbnVtVmFsdWUg
PT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VNYXlCZWdpbiIp
KSkKICAgICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2U+KGVudW1WYWx1ZSB8IFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlTWF5QmVnaW4pOwogICAgfQoKICAgIHJldHVybiB0cnVlOwp9CgpzdGQ6OnVuaXF1ZV9wdHI8
RW5jb2RlZFZhbHVlPiBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0
eT46OmVuY29kZVZhbHVlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5JiBlbnVt
VmFsdWUpCnsKICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVuY29kZWRWYWx1ZSA9
IEVuY29kZWRWYWx1ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKTsKICAgIGlmIChlbnVtVmFsdWUgJiBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpCiAgICAgICAgZW5jb2RlZFZh
bHVlLT5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlJlc291cmNlTG9hZFByaW9yaXR5VW5y
ZXNvbHZlZCIpKTsKICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJp
b3JpdHlVbnJlc29sdmVkKQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsK
ICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cp
CiAgICAgICAgZW5jb2RlZFZhbHVlLT5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlJlc291
cmNlTG9hZFByaW9yaXR5VmVyeUxvdyIpKTsKICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6
UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93KQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5j
b2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlv
cml0eUxvdykKICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJh
bCgiUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3ciKSk7CiAgICBpZiAoZW51bVZhbHVlID09IFdlYkNv
cmU6OlJlc291cmNlTG9hZFByaW9yaXR5TG93KQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5j
b2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlv
cml0eU1lZGl1bSkKICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0
ZXJhbCgiUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0iKSk7CiAgICBpZiAoZW51bVZhbHVlID09
IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtKQogICAgICAgIHJldHVybiBzdGQ6
Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRQcmlvcml0eUhpZ2gpCiAgICAgICAgZW5jb2RlZFZhbHVlLT5hcHBlbmQ8U3RyaW5nPihB
U0NJSUxpdGVyYWwoIlJlc291cmNlTG9hZFByaW9yaXR5SGlnaCIpKTsKICAgIGlmIChlbnVtVmFs
dWUgPT0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoKQogICAgICAgIHJldHVybiBz
dGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRQcmlvcml0eVZlcnlIaWdoKQogICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0
cmluZz4oQVNDSUlMaXRlcmFsKCJSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlIaWdoIikpOwogICAg
aWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlIaWdoKQog
ICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIHJldHVybiBzdGQ6Om1v
dmUoZW5jb2RlZFZhbHVlKTsKfQoKYm9vbCBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRQcmlvcml0eT46OmRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+
JiBlbmNvZGVkVmFsdWUsIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5JiBlbnVtVmFsdWUp
CnsKICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbnNwZWN0b3JBcnJheSA9
IGVuY29kZWRWYWx1ZS0+aW5zcGVjdG9yVmFsdWUoKS0+YXNBcnJheSgpOwogICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBpbnNwZWN0b3JBcnJheS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgIFN0
cmluZyBlbmNvZGVkRW51bVZhbHVlOwogICAgICAgIGlmICghaW5zcGVjdG9yQXJyYXktPmdldChp
KS0+YXNTdHJpbmcoJmVuY29kZWRFbnVtVmFsdWUpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgaWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiUmVz
b3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkIikpKQogICAgICAgICAgICBlbnVtVmFsdWUgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eT4oZW51bVZhbHVlIHwgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkKTsKICAgICAgICBpZiAoZW5jb2Rl
ZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJSZXNvdXJjZUxvYWRQcmlvcml0eVZl
cnlMb3ciKSkpCiAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJl
c291cmNlTG9hZFByaW9yaXR5PihlbnVtVmFsdWUgfCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlv
cml0eVZlcnlMb3cpOwogICAgICAgIGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJ
SUxpdGVyYWwoIlJlc291cmNlTG9hZFByaW9yaXR5TG93IikpKQogICAgICAgICAgICBlbnVtVmFs
dWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eT4oZW51bVZhbHVl
IHwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cpOwogICAgICAgIGlmIChlbmNvZGVk
RW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlJlc291cmNlTG9hZFByaW9yaXR5TWVk
aXVtIikpKQogICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRQcmlvcml0eT4oZW51bVZhbHVlIHwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3Jp
dHlNZWRpdW0pOwogICAgICAgIGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxp
dGVyYWwoIlJlc291cmNlTG9hZFByaW9yaXR5SGlnaCIpKSkKICAgICAgICAgICAgZW51bVZhbHVl
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHk+KGVudW1WYWx1ZSB8
IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5SGlnaCk7CiAgICAgICAgaWYgKGVuY29kZWRF
bnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5
SGlnaCIpKSkKICAgICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkUHJpb3JpdHk+KGVudW1WYWx1ZSB8IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9y
aXR5VmVyeUhpZ2gpOwogICAgfQoKICAgIHJldHVybiB0cnVlOwp9CgpzdGQ6OnVuaXF1ZV9wdHI8
RW5jb2RlZFZhbHVlPiBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeT46OmVuY29kZVZhbHVlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5JiBlbnVtVmFsdWUpCnsKICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVu
Y29kZWRWYWx1ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKTsKICAgIGlmIChl
bnVtVmFsdWUgJiBXZWJDb3JlOjpVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgIGVuY29k
ZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJVc2VQcm90b2NvbENhY2hlUG9s
aWN5IikpOwogICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpVc2VQcm90b2NvbENhY2hlUG9s
aWN5KQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVt
VmFsdWUgJiBXZWJDb3JlOjpSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSkKICAgICAgICBlbmNvZGVk
VmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiUmVsb2FkSWdub3JpbmdDYWNoZURh
dGEiKSk7CiAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6OlJlbG9hZElnbm9yaW5nQ2FjaGVE
YXRhKQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVt
VmFsdWUgJiBXZWJDb3JlOjpSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCkKICAgICAgICBlbmNvZGVk
VmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiUmV0dXJuQ2FjaGVEYXRhRWxzZUxv
YWQiKSk7CiAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6OlJldHVybkNhY2hlRGF0YUVsc2VM
b2FkKQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVt
VmFsdWUgJiBXZWJDb3JlOjpSZXR1cm5DYWNoZURhdGFEb250TG9hZCkKICAgICAgICBlbmNvZGVk
VmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiUmV0dXJuQ2FjaGVEYXRhRG9udExv
YWQiKSk7CiAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6OlJldHVybkNhY2hlRGF0YURvbnRM
b2FkKQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIHJldHVybiBz
dGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKfQoKYm9vbCBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT46OmRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxF
bmNvZGVkVmFsdWU+JiBlbmNvZGVkVmFsdWUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5JiBlbnVtVmFsdWUpCnsKICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
PiBpbnNwZWN0b3JBcnJheSA9IGVuY29kZWRWYWx1ZS0+aW5zcGVjdG9yVmFsdWUoKS0+YXNBcnJh
eSgpOwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNwZWN0b3JBcnJheS0+bGVuZ3RoKCk7
ICsraSkgewogICAgICAgIFN0cmluZyBlbmNvZGVkRW51bVZhbHVlOwogICAgICAgIGlmICghaW5z
cGVjdG9yQXJyYXktPmdldChpKS0+YXNTdHJpbmcoJmVuY29kZWRFbnVtVmFsdWUpKQogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiVXNlUHJvdG9jb2xDYWNoZVBvbGljeSIpKSkKICAgICAgICAgICAgZW51
bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k+
KGVudW1WYWx1ZSB8IFdlYkNvcmU6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpOwogICAgICAgIGlm
IChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlJlbG9hZElnbm9yaW5n
Q2FjaGVEYXRhIikpKQogICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4oZW51bVZhbHVlIHwgV2ViQ29yZTo6UmVsb2Fk
SWdub3JpbmdDYWNoZURhdGEpOwogICAgICAgIGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmlu
ZyhBU0NJSUxpdGVyYWwoIlJldHVybkNhY2hlRGF0YUVsc2VMb2FkIikpKQogICAgICAgICAgICBl
bnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGlj
eT4oZW51bVZhbHVlIHwgV2ViQ29yZTo6UmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOwogICAgICAg
IGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlJldHVybkNhY2hl
RGF0YURvbnRMb2FkIikpKQogICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4oZW51bVZhbHVlIHwgV2ViQ29yZTo6UmV0
dXJuQ2FjaGVEYXRhRG9udExvYWQpOwogICAgfQoKICAgIHJldHVybiB0cnVlOwp9CgpzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpTY3JvbGxEaXJl
Y3Rpb24+OjplbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24mIGVudW1W
YWx1ZSkKewogICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gZW5jb2RlZFZhbHVlID0g
RW5jb2RlZFZhbHVlOjpjcmVhdGVFbmNvZGVkTGlzdCgpOwogICAgaWYgKGVudW1WYWx1ZSAmIFdl
YkNvcmU6OlNjcm9sbFVwKQogICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVND
SUlMaXRlcmFsKCJTY3JvbGxVcCIpKTsKICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6U2Ny
b2xsVXApCiAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOwogICAgaWYgKGVu
dW1WYWx1ZSAmIFdlYkNvcmU6OlNjcm9sbERvd24pCiAgICAgICAgZW5jb2RlZFZhbHVlLT5hcHBl
bmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlNjcm9sbERvd24iKSk7CiAgICBpZiAoZW51bVZhbHVl
ID09IFdlYkNvcmU6OlNjcm9sbERvd24pCiAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVk
VmFsdWUpOwogICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6OlNjcm9sbExlZnQpCiAgICAgICAg
ZW5jb2RlZFZhbHVlLT5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlNjcm9sbExlZnQiKSk7
CiAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6OlNjcm9sbExlZnQpCiAgICAgICAgcmV0dXJu
IHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOwogICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6OlNj
cm9sbFJpZ2h0KQogICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRl
cmFsKCJTY3JvbGxSaWdodCIpKTsKICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6U2Nyb2xs
UmlnaHQpCiAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOwogICAgcmV0dXJu
IHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOwp9Cgpib29sIEVuY29kaW5nVHJhaXRzPFdlYkNvcmU6
OlNjcm9sbERpcmVjdGlvbj46OmRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFs
dWU+JiBlbmNvZGVkVmFsdWUsIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiYgZW51bVZhbHVlKQp7
CiAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkgPSBl
bmNvZGVkVmFsdWUtPmluc3BlY3RvclZhbHVlKCktPmFzQXJyYXkoKTsKICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW5zcGVjdG9yQXJyYXktPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICBTdHJp
bmcgZW5jb2RlZEVudW1WYWx1ZTsKICAgICAgICBpZiAoIWluc3BlY3RvckFycmF5LT5nZXQoaSkt
PmFzU3RyaW5nKCZlbmNvZGVkRW51bVZhbHVlKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgIGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlNjcm9s
bFVwIikpKQogICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTY3Jv
bGxEaXJlY3Rpb24+KGVudW1WYWx1ZSB8IFdlYkNvcmU6OlNjcm9sbFVwKTsKICAgICAgICBpZiAo
ZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJTY3JvbGxEb3duIikpKQog
ICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTY3JvbGxEaXJlY3Rp
b24+KGVudW1WYWx1ZSB8IFdlYkNvcmU6OlNjcm9sbERvd24pOwogICAgICAgIGlmIChlbmNvZGVk
RW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlNjcm9sbExlZnQiKSkpCiAgICAgICAg
ICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbj4oZW51
bVZhbHVlIHwgV2ViQ29yZTo6U2Nyb2xsTGVmdCk7CiAgICAgICAgaWYgKGVuY29kZWRFbnVtVmFs
dWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiU2Nyb2xsUmlnaHQiKSkpCiAgICAgICAgICAgIGVu
dW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbj4oZW51bVZhbHVl
IHwgV2ViQ29yZTo6U2Nyb2xsUmlnaHQpOwogICAgfQoKICAgIHJldHVybiB0cnVlOwp9CgpzdGQ6
OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpTY3JvbGxH
cmFudWxhcml0eT46OmVuY29kZVZhbHVlKGNvbnN0IFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5
JiBlbnVtVmFsdWUpCnsKICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVuY29kZWRW
YWx1ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKTsKICAgIGlmIChlbnVtVmFs
dWUgJiBXZWJDb3JlOjpTY3JvbGxCeUxpbmUpCiAgICAgICAgZW5jb2RlZFZhbHVlLT5hcHBlbmQ8
U3RyaW5nPihBU0NJSUxpdGVyYWwoIlNjcm9sbEJ5TGluZSIpKTsKICAgIGlmIChlbnVtVmFsdWUg
PT0gV2ViQ29yZTo6U2Nyb2xsQnlMaW5lKQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2Rl
ZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpTY3JvbGxCeVBhZ2UpCiAgICAg
ICAgZW5jb2RlZFZhbHVlLT5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlNjcm9sbEJ5UGFn
ZSIpKTsKICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6U2Nyb2xsQnlQYWdlKQogICAgICAg
IHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJD
b3JlOjpTY3JvbGxCeURvY3VtZW50KQogICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmlu
Zz4oQVNDSUlMaXRlcmFsKCJTY3JvbGxCeURvY3VtZW50IikpOwogICAgaWYgKGVudW1WYWx1ZSA9
PSBXZWJDb3JlOjpTY3JvbGxCeURvY3VtZW50KQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5j
b2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpTY3JvbGxCeVBpeGVsKQog
ICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJTY3JvbGxC
eVBpeGVsIikpOwogICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpTY3JvbGxCeVBpeGVsKQog
ICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUg
JiBXZWJDb3JlOjpTY3JvbGxCeVByZWNpc2VQaXhlbCkKICAgICAgICBlbmNvZGVkVmFsdWUtPmFw
cGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiU2Nyb2xsQnlQcmVjaXNlUGl4ZWwiKSk7CiAgICBp
ZiAoZW51bVZhbHVlID09IFdlYkNvcmU6OlNjcm9sbEJ5UHJlY2lzZVBpeGVsKQogICAgICAgIHJl
dHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2Rl
ZFZhbHVlKTsKfQoKYm9vbCBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0
eT46OmRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+JiBlbmNvZGVkVmFs
dWUsIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5JiBlbnVtVmFsdWUpCnsKICAgIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbnNwZWN0b3JBcnJheSA9IGVuY29kZWRWYWx1ZS0+
aW5zcGVjdG9yVmFsdWUoKS0+YXNBcnJheSgpOwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
bnNwZWN0b3JBcnJheS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgIFN0cmluZyBlbmNvZGVkRW51
bVZhbHVlOwogICAgICAgIGlmICghaW5zcGVjdG9yQXJyYXktPmdldChpKS0+YXNTdHJpbmcoJmVu
Y29kZWRFbnVtVmFsdWUpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYgKGVu
Y29kZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiU2Nyb2xsQnlMaW5lIikpKQog
ICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTY3JvbGxHcmFudWxh
cml0eT4oZW51bVZhbHVlIHwgV2ViQ29yZTo6U2Nyb2xsQnlMaW5lKTsKICAgICAgICBpZiAoZW5j
b2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJTY3JvbGxCeVBhZ2UiKSkpCiAg
ICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNjcm9sbEdyYW51bGFy
aXR5PihlbnVtVmFsdWUgfCBXZWJDb3JlOjpTY3JvbGxCeVBhZ2UpOwogICAgICAgIGlmIChlbmNv
ZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlNjcm9sbEJ5RG9jdW1lbnQiKSkp
CiAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNjcm9sbEdyYW51
bGFyaXR5PihlbnVtVmFsdWUgfCBXZWJDb3JlOjpTY3JvbGxCeURvY3VtZW50KTsKICAgICAgICBp
ZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJTY3JvbGxCeVBpeGVs
IikpKQogICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTY3JvbGxH
cmFudWxhcml0eT4oZW51bVZhbHVlIHwgV2ViQ29yZTo6U2Nyb2xsQnlQaXhlbCk7CiAgICAgICAg
aWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiU2Nyb2xsQnlQcmVj
aXNlUGl4ZWwiKSkpCiAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OlNjcm9sbEdyYW51bGFyaXR5PihlbnVtVmFsdWUgfCBXZWJDb3JlOjpTY3JvbGxCeVByZWNpc2VQ
aXhlbCk7CiAgICB9CgogICAgcmV0dXJuIHRydWU7Cn0KCnN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVk
VmFsdWU+IEVuY29kaW5nVHJhaXRzPFdlYkNvcmU6OlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24+Ojpl
bmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9uJiBlbnVtVmFs
dWUpCnsKICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVuY29kZWRWYWx1ZSA9IEVu
Y29kZWRWYWx1ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJD
b3JlOjpTY3JvbGxCbG9ja0RpcmVjdGlvbkJhY2t3YXJkKQogICAgICAgIGVuY29kZWRWYWx1ZS0+
YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJTY3JvbGxCbG9ja0RpcmVjdGlvbkJhY2t3YXJk
IikpOwogICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpTY3JvbGxCbG9ja0RpcmVjdGlvbkJh
Y2t3YXJkKQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChl
bnVtVmFsdWUgJiBXZWJDb3JlOjpTY3JvbGxCbG9ja0RpcmVjdGlvbkZvcndhcmQpCiAgICAgICAg
ZW5jb2RlZFZhbHVlLT5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlNjcm9sbEJsb2NrRGly
ZWN0aW9uRm9yd2FyZCIpKTsKICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6U2Nyb2xsQmxv
Y2tEaXJlY3Rpb25Gb3J3YXJkKQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVl
KTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpTY3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNr
d2FyZCkKICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgi
U2Nyb2xsSW5saW5lRGlyZWN0aW9uQmFja3dhcmQiKSk7CiAgICBpZiAoZW51bVZhbHVlID09IFdl
YkNvcmU6OlNjcm9sbElubGluZURpcmVjdGlvbkJhY2t3YXJkKQogICAgICAgIHJldHVybiBzdGQ6
Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpTY3JvbGxJ
bmxpbmVEaXJlY3Rpb25Gb3J3YXJkKQogICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmlu
Zz4oQVNDSUlMaXRlcmFsKCJTY3JvbGxJbmxpbmVEaXJlY3Rpb25Gb3J3YXJkIikpOwogICAgaWYg
KGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpTY3JvbGxJbmxpbmVEaXJlY3Rpb25Gb3J3YXJkKQogICAg
ICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIHJldHVybiBzdGQ6Om1vdmUo
ZW5jb2RlZFZhbHVlKTsKfQoKYm9vbCBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpTY3JvbGxMb2dp
Y2FsRGlyZWN0aW9uPjo6ZGVjb2RlVmFsdWUoc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4m
IGVuY29kZWRWYWx1ZSwgV2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbiYgZW51bVZhbHVl
KQp7CiAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkg
PSBlbmNvZGVkVmFsdWUtPmluc3BlY3RvclZhbHVlKCktPmFzQXJyYXkoKTsKICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5zcGVjdG9yQXJyYXktPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICBT
dHJpbmcgZW5jb2RlZEVudW1WYWx1ZTsKICAgICAgICBpZiAoIWluc3BlY3RvckFycmF5LT5nZXQo
aSktPmFzU3RyaW5nKCZlbmNvZGVkRW51bVZhbHVlKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgIGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlNj
cm9sbEJsb2NrRGlyZWN0aW9uQmFja3dhcmQiKSkpCiAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24+KGVudW1WYWx1ZSB8IFdl
YkNvcmU6OlNjcm9sbEJsb2NrRGlyZWN0aW9uQmFja3dhcmQpOwogICAgICAgIGlmIChlbmNvZGVk
RW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlNjcm9sbEJsb2NrRGlyZWN0aW9uRm9y
d2FyZCIpKSkKICAgICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2Ny
b2xsTG9naWNhbERpcmVjdGlvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6U2Nyb2xsQmxvY2tEaXJl
Y3Rpb25Gb3J3YXJkKTsKICAgICAgICBpZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVND
SUlMaXRlcmFsKCJTY3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNrd2FyZCIpKSkKICAgICAgICAgICAg
ZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbj4o
ZW51bVZhbHVlIHwgV2ViQ29yZTo6U2Nyb2xsSW5saW5lRGlyZWN0aW9uQmFja3dhcmQpOwogICAg
ICAgIGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlNjcm9sbElu
bGluZURpcmVjdGlvbkZvcndhcmQiKSkpCiAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24+KGVudW1WYWx1ZSB8IFdlYkNvcmU6
OlNjcm9sbElubGluZURpcmVjdGlvbkZvcndhcmQpOwogICAgfQoKICAgIHJldHVybiB0cnVlOwp9
CgpzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpG
b3JtRGF0YUVsZW1lbnQ6OlR5cGU+OjplbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpGb3JtRGF0
YUVsZW1lbnQ6OlR5cGUmIGVudW1WYWx1ZSkKewogICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRW
YWx1ZT4gZW5jb2RlZFZhbHVlID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVFbmNvZGVkTGlzdCgpOwog
ICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6ZGF0YSkKICAgICAg
ICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiZGF0YSIpKTsKICAg
IGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpkYXRhKQogICAgICAg
IHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKICAgIGlmIChlbnVtVmFsdWUgJiBXZWJD
b3JlOjpGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlKQogICAgICAgIGVuY29kZWRWYWx1ZS0+
YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJlbmNvZGVkRmlsZSIpKTsKICAgIGlmIChlbnVt
VmFsdWUgPT0gV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZSkKICAgICAgICBy
ZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CiNpZiBFTkFCTEUoQkxPQikKICAgIGlmIChl
bnVtVmFsdWUgJiBXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRCbG9iKQogICAgICAg
IGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJlbmNvZGVkQmxvYiIp
KTsKICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjplbmNvZGVk
QmxvYikKICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CiNlbmRpZiAvLyBF
TkFCTEUoQkxPQikKICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKfQoKYm9vbCBF
bmNvZGluZ1RyYWl0czxXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OlR5cGU+OjpkZWNvZGVWYWx1
ZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiYgZW5jb2RlZFZhbHVlLCBXZWJDb3JlOjpG
b3JtRGF0YUVsZW1lbnQ6OlR5cGUmIGVudW1WYWx1ZSkKewogICAgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yQXJyYXk+IGluc3BlY3RvckFycmF5ID0gZW5jb2RlZFZhbHVlLT5pbnNwZWN0b3JW
YWx1ZSgpLT5hc0FycmF5KCk7CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3BlY3RvckFy
cmF5LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgU3RyaW5nIGVuY29kZWRFbnVtVmFsdWU7CiAg
ICAgICAgaWYgKCFpbnNwZWN0b3JBcnJheS0+Z2V0KGkpLT5hc1N0cmluZygmZW5jb2RlZEVudW1W
YWx1ZSkpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAoZW5jb2RlZEVudW1W
YWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJkYXRhIikpKQogICAgICAgICAgICBlbnVtVmFs
dWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OlR5cGU+KGVudW1WYWx1
ZSB8IFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6ZGF0YSk7CiAgICAgICAgaWYgKGVuY29kZWRF
bnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZW5jb2RlZEZpbGUiKSkpCiAgICAgICAg
ICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6VHlw
ZT4oZW51bVZhbHVlIHwgV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZSk7CiNp
ZiBFTkFCTEUoQkxPQikKICAgICAgICBpZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVND
SUlMaXRlcmFsKCJlbmNvZGVkQmxvYiIpKSkKICAgICAgICAgICAgZW51bVZhbHVlID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpUeXBlPihlbnVtVmFsdWUgfCBXZWJDb3Jl
OjpGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRCbG9iKTsKI2VuZGlmIC8vIEVOQUJMRShCTE9CKQog
ICAgfQoKICAgIHJldHVybiB0cnVlOwp9Cn0gLy8gbmFtZXNwYWNlIEpTQwoKI2VuZGlmIC8vIEVO
QUJMRShXRUJfUkVQTEFZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>223188</attachid>
            <date>2014-02-04 17:27:52 -0800</date>
            <delta_ts>2014-02-04 17:27:52 -0800</delta_ts>
            <desc>WebCore generated header file</desc>
            <filename>WebReplayInputs.h</filename>
            <type>text/plain</type>
            <size>37497</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">LyoKICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKgogKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwogKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKICogVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCiAq
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAogKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCiAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQogKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogKi8KCiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gV2ViSW5wdXRzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IEphdmFTY3JpcHRD
b3JlL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKCiNpZm5kZWYg
V2ViUmVwbGF5SW5wdXRzX2gKI2RlZmluZSBXZWJSZXBsYXlJbnB1dHNfaAoKI2lmIEVOQUJMRShX
RUJfUkVQTEFZKQojaW5jbHVkZSAiRXZlbnRMb29wSW5wdXQuaCIKI2luY2x1ZGUgIkZvcm1EYXRh
LmgiCiNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgojaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiNpbmNsdWRlIDxyZXBsYXkvRW5jb2RlZFZhbHVl
Lmg+CiNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KCm5hbWVzcGFjZSBXZWJDb3JlIHsK
Y2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwpjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CmNs
YXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKY2xhc3MgUmVzb3VyY2VFcnJvcjsKY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwpjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpjbGFzcyBTZWN1cml0eU9yaWdpbjsK
Y2xhc3MgU2hhcmVkQnVmZmVyOwplbnVtIE1vdXNlQnV0dG9uIDogaW50OF90OwplbnVtIFBsYXRm
b3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IDogdWludDhfdDsKZW51bSBQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZSA6IHVpbnQ4X3Q7CmVudW0gUmVzb3VyY2VMb2FkUHJpb3JpdHkgOiBpbnQ4X3Q7CmVu
dW0gUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgOiB1aW50OF90OwplbnVtIFNjcm9sbERpcmVj
dGlvbiA6IHVpbnQ4X3Q7CmVudW0gU2Nyb2xsR3JhbnVsYXJpdHkgOiB1aW50OF90OwplbnVtIFNj
cm9sbExvZ2ljYWxEaXJlY3Rpb24gOiB1aW50OF90OwplbnVtIGNsYXNzIFBsYXRmb3JtRXZlbnRU
eXBlOwpzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKc3RydWN0IEtleXByZXNzQ29tbWFuZDsKfQoK
bmFtZXNwYWNlIEpTQyB7CmVudW0gY2xhc3MgSW5wdXRRdWV1ZTsKfQoKCm5hbWVzcGFjZSBXZWJD
b3JlIHsKY2xhc3MgQmVnaW5TZW50aW5lbDsKY2xhc3MgRGlzYWJsZUNhY2hlOwpjbGFzcyBFbmFi
bGVDYWNoZTsKY2xhc3MgRW5kU2VudGluZWw7CmNsYXNzIFBsYXliYWNrRXJyb3I7CmNsYXNzIElu
aXRpYWxpemVGb2N1czsKY2xhc3MgSW5pdGlhbGl6ZVdpbmRvdzsKY2xhc3MgSW5pdGlhbE5hdmln
YXRpb247CmNsYXNzIEZvY3VzU2V0QWN0aXZlOwpjbGFzcyBGb2N1c1NldEZvY3VzZWQ7CmNsYXNz
IFNlbmRSZXNpemVFdmVudDsKY2xhc3MgSGFuZGxlQ29udGV4dE1lbnU7CmNsYXNzIEhhbmRsZUtl
eVByZXNzOwpjbGFzcyBIYW5kbGVNb3VzZU1vdmU7CmNsYXNzIEhhbmRsZU1vdXNlUHJlc3M7CmNs
YXNzIEhhbmRsZU1vdXNlUmVsZWFzZTsKY2xhc3MgSGFuZGxlV2hlZWxFdmVudDsKY2xhc3MgU2Ny
b2xsUGFnZTsKY2xhc3MgTG9naWNhbFNjcm9sbFBhZ2U7CiNpZiBQTEFURk9STShNQUMpCmNsYXNz
IEludGVycHJldGVkS2V5Q29tbWFuZHM7CiNlbmRpZiAvLyBQTEFURk9STShNQUMpCmNsYXNzIERP
TVRpbWVyQ3JlYXRlZDsKY2xhc3MgRE9NVGltZXJGaXJlZDsKY2xhc3MgQXN5bmNUaW1lckZpcmVk
OwpjbGFzcyBMb2FkVVJMUmVxdWVzdDsKY2xhc3MgVHJ5Q2xvc2VQYWdlOwpjbGFzcyBSZWxvYWRG
cmFtZTsKY2xhc3MgU3RvcExvYWRpbmdGcmFtZTsKY2xhc3MgUmVzb3VyY2VMb2FkZXJEaWRGYWls
OwpjbGFzcyBSZXNvdXJjZUxvYWRlckRpZEZpbmlzaExvYWRpbmc7CmNsYXNzIFJlc291cmNlTG9h
ZGVyRGlkUmVjZWl2ZVJlc3BvbnNlOwpjbGFzcyBSZXNvdXJjZUxvYWRlckRpZFNlbmREYXRhOwpj
bGFzcyBSZXNvdXJjZUxvYWRlckRpZFJlY2VpdmVEYXRhOwpjbGFzcyBSZXNvdXJjZUxvYWRlckNy
ZWF0ZWQ7CmNsYXNzIFNhdmVkQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lOwpjbGFzcyBTYXZlZFRp
bWVyTmV4dEZpcmVJbnRlcnZhbDsKfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKbmFtZXNwYWNlIEpT
QyB7CnRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkJlZ2luU2VudGluZWw+
IHsKICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6RXZl
bnRMb29wSW5wdXQ7IH0KICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKCiAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBXZWJDb3JlOjpC
ZWdpblNlbnRpbmVsJik7CiAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUm
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QmVnaW5TZW50aW5lbD4mKTsKfTsKCnRlbXBsYXRl
PD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkRpc2FibGVDYWNoZT4gewogICAgc3RhdGlj
IElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsg
fQogICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOwoKICAgIHN0YXRpYyB2b2lk
IGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6OkRpc2FibGVDYWNoZSYp
OwogICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkRpc2FibGVDYWNoZT4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0
VHJhaXRzPFdlYkNvcmU6OkVuYWJsZUNhY2hlPiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1
ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CiAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CgogICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5j
b2RlZFZhbHVlJiwgY29uc3QgV2ViQ29yZTo6RW5hYmxlQ2FjaGUmKTsKICAgIHN0YXRpYyBib29s
IGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpFbmFi
bGVDYWNoZT4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkVu
ZFNlbnRpbmVsPiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0
UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CiAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlKCk7CgogICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3Qg
V2ViQ29yZTo6RW5kU2VudGluZWwmKTsKICAgIHN0YXRpYyBib29sIGRlY29kZShKU0M6OkVuY29k
ZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpFbmRTZW50aW5lbD4mKTsKfTsKCnRl
bXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OlBsYXliYWNrRXJyb3I+IHsKICAg
IHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6RXZlbnRMb29w
SW5wdXQ7IH0KICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKCiAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBXZWJDb3JlOjpQbGF5YmFj
a0Vycm9yJik7CiAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxheWJhY2tFcnJvcj4mKTsKfTsKCnRlbXBsYXRlPD4gc3Ry
dWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkluaXRpYWxpemVGb2N1cz4gewogICAgc3RhdGljIElu
cHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsgfQog
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOwoKICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6OkluaXRpYWxpemVGb2N1cyYp
OwogICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkluaXRpYWxpemVGb2N1cz4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElu
cHV0VHJhaXRzPFdlYkNvcmU6OkluaXRpYWxpemVXaW5kb3c+IHsKICAgIHN0YXRpYyBJbnB1dFF1
ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6RXZlbnRMb29wSW5wdXQ7IH0KICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKCiAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
SlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBXZWJDb3JlOjpJbml0aWFsaXplV2luZG93Jik7CiAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6SW5pdGlhbGl6ZVdpbmRvdz4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0
VHJhaXRzPFdlYkNvcmU6OkluaXRpYWxOYXZpZ2F0aW9uPiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1
ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CiAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CgogICAgc3RhdGljIHZvaWQgZW5jb2RlKEpT
Qzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgV2ViQ29yZTo6SW5pdGlhbE5hdmlnYXRpb24mKTsKICAg
IHN0YXRpYyBib29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJbml0aWFsTmF2aWdhdGlvbj4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0
VHJhaXRzPFdlYkNvcmU6OkZvY3VzU2V0QWN0aXZlPiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1ZSBx
dWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CiAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CgogICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6
RW5jb2RlZFZhbHVlJiwgY29uc3QgV2ViQ29yZTo6Rm9jdXNTZXRBY3RpdmUmKTsKICAgIHN0YXRp
YyBib29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpGb2N1c1NldEFjdGl2ZT4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdl
YkNvcmU6OkZvY3VzU2V0Rm9jdXNlZD4gewogICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7
IHJldHVybiBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsgfQogICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSgpOwoKICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRW
YWx1ZSYsIGNvbnN0IFdlYkNvcmU6OkZvY3VzU2V0Rm9jdXNlZCYpOwogICAgc3RhdGljIGJvb2wg
ZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkZvY3Vz
U2V0Rm9jdXNlZD4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6
OlNlbmRSZXNpemVFdmVudD4gewogICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7IHJldHVy
biBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsgfQogICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSgpOwoKICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYs
IGNvbnN0IFdlYkNvcmU6OlNlbmRSZXNpemVFdmVudCYpOwogICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNlbmRSZXNpemVF
dmVudD4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkhhbmRs
ZUNvbnRleHRNZW51PiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElu
cHV0UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CiAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlKCk7CgogICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29u
c3QgV2ViQ29yZTo6SGFuZGxlQ29udGV4dE1lbnUmKTsKICAgIHN0YXRpYyBib29sIGRlY29kZShK
U0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpIYW5kbGVDb250ZXh0
TWVudT4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkhhbmRs
ZUtleVByZXNzPiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0
UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CiAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlKCk7CgogICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3Qg
V2ViQ29yZTo6SGFuZGxlS2V5UHJlc3MmKTsKICAgIHN0YXRpYyBib29sIGRlY29kZShKU0M6OkVu
Y29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpIYW5kbGVLZXlQcmVzcz4mKTsK
fTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkhhbmRsZU1vdXNlTW92
ZT4gewogICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpF
dmVudExvb3BJbnB1dDsgfQogICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOwoK
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6
OkhhbmRsZU1vdXNlTW92ZSYpOwogICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZh
bHVlJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkhhbmRsZU1vdXNlTW92ZT4mKTsKfTsKCnRl
bXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkhhbmRsZU1vdXNlUHJlc3M+IHsK
ICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6RXZlbnRM
b29wSW5wdXQ7IH0KICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKCiAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBXZWJDb3JlOjpIYW5k
bGVNb3VzZVByZXNzJik7CiAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUm
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SGFuZGxlTW91c2VQcmVzcz4mKTsKfTsKCnRlbXBs
YXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkhhbmRsZU1vdXNlUmVsZWFzZT4gewog
ICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpFdmVudExv
b3BJbnB1dDsgfQogICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOwoKICAgIHN0
YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6OkhhbmRs
ZU1vdXNlUmVsZWFzZSYpOwogICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVl
Jiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkhhbmRsZU1vdXNlUmVsZWFzZT4mKTsKfTsKCnRl
bXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkhhbmRsZVdoZWVsRXZlbnQ+IHsK
ICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6RXZlbnRM
b29wSW5wdXQ7IH0KICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKCiAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBXZWJDb3JlOjpIYW5k
bGVXaGVlbEV2ZW50Jik7CiAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUm
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SGFuZGxlV2hlZWxFdmVudD4mKTsKfTsKCnRlbXBs
YXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OlNjcm9sbFBhZ2U+IHsKICAgIHN0YXRp
YyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6RXZlbnRMb29wSW5wdXQ7
IH0KICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKCiAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBXZWJDb3JlOjpTY3JvbGxQYWdlJik7
CiAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U2Nyb2xsUGFnZT4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJh
aXRzPFdlYkNvcmU6OkxvZ2ljYWxTY3JvbGxQYWdlPiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1ZSBx
dWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CiAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CgogICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6
RW5jb2RlZFZhbHVlJiwgY29uc3QgV2ViQ29yZTo6TG9naWNhbFNjcm9sbFBhZ2UmKTsKICAgIHN0
YXRpYyBib29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpMb2dpY2FsU2Nyb2xsUGFnZT4mKTsKfTsKCiNpZiBQTEFURk9STShNQUMpCnRlbXBsYXRl
PD4gc3RydWN0IElucHV0VHJhaXRzPFdlYkNvcmU6OkludGVycHJldGVkS2V5Q29tbWFuZHM+IHsK
ICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6U2NyaXB0
TWVtb2l6ZWREYXRhOyB9CiAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7Cgog
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgV2ViQ29yZTo6
SW50ZXJwcmV0ZWRLZXlDb21tYW5kcyYpOwogICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5j
b2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkludGVycHJldGVkS2V5Q29tbWFu
ZHM+Jik7Cn07CiNlbmRpZiAvLyBQTEFURk9STShNQUMpCgp0ZW1wbGF0ZTw+IHN0cnVjdCBJbnB1
dFRyYWl0czxXZWJDb3JlOjpET01UaW1lckNyZWF0ZWQ+IHsKICAgIHN0YXRpYyBJbnB1dFF1ZXVl
IHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6U2NyaXB0TWVtb2l6ZWREYXRhOyB9CiAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CgogICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgV2ViQ29yZTo6RE9NVGltZXJDcmVhdGVkJik7CiAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6RE9NVGltZXJDcmVhdGVkPiYpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRU
cmFpdHM8V2ViQ29yZTo6RE9NVGltZXJGaXJlZD4gewogICAgc3RhdGljIElucHV0UXVldWUgcXVl
dWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsgfQogICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOwoKICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVu
Y29kZWRWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6OkRPTVRpbWVyRmlyZWQmKTsKICAgIHN0YXRpYyBi
b29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpE
T01UaW1lckZpcmVkPiYpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8V2ViQ29y
ZTo6QXN5bmNUaW1lckZpcmVkPiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0
dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CiAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlKCk7CgogICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVl
JiwgY29uc3QgV2ViQ29yZTo6QXN5bmNUaW1lckZpcmVkJik7CiAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXN5bmNUaW1l
ckZpcmVkPiYpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8V2ViQ29yZTo6TG9h
ZFVSTFJlcXVlc3Q+IHsKICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5w
dXRRdWV1ZTo6RXZlbnRMb29wSW5wdXQ7IH0KICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUoKTsKCiAgICBzdGF0aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25z
dCBXZWJDb3JlOjpMb2FkVVJMUmVxdWVzdCYpOwogICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6
RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxvYWRVUkxSZXF1ZXN0PiYp
Owp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8V2ViQ29yZTo6VHJ5Q2xvc2VQYWdl
PiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2
ZW50TG9vcElucHV0OyB9CiAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7Cgog
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgV2ViQ29yZTo6
VHJ5Q2xvc2VQYWdlJik7CiAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUm
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VHJ5Q2xvc2VQYWdlPiYpOwp9OwoKdGVtcGxhdGU8
PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8V2ViQ29yZTo6UmVsb2FkRnJhbWU+IHsKICAgIHN0YXRpYyBJ
bnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6RXZlbnRMb29wSW5wdXQ7IH0K
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKCiAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBXZWJDb3JlOjpSZWxvYWRGcmFtZSYpOwog
ICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlJlbG9hZEZyYW1lPiYpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFp
dHM8V2ViQ29yZTo6U3RvcExvYWRpbmdGcmFtZT4gewogICAgc3RhdGljIElucHV0UXVldWUgcXVl
dWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsgfQogICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOwoKICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVu
Y29kZWRWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6OlN0b3BMb2FkaW5nRnJhbWUmKTsKICAgIHN0YXRp
YyBib29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTdG9wTG9hZGluZ0ZyYW1lPiYpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJEaWRGYWlsPiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1ZSBx
dWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CiAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CgogICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6
RW5jb2RlZFZhbHVlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJEaWRGYWlsJik7CiAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJEaWRGYWlsPiYpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3Qg
SW5wdXRUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJEaWRGaW5pc2hMb2FkaW5nPiB7CiAg
ICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50TG9v
cElucHV0OyB9CiAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CgogICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJEaWRGaW5pc2hMb2FkaW5nJik7CiAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpF
bmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJEaWRG
aW5pc2hMb2FkaW5nPiYpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJEaWRSZWNlaXZlUmVzcG9uc2U+IHsKICAgIHN0YXRpYyBJbnB1dFF1
ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6RXZlbnRMb29wSW5wdXQ7IH0KICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKCiAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
SlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlckRpZFJlY2Vp
dmVSZXNwb25zZSYpOwogICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlkUmVjZWl2ZVJlc3BvbnNl
PiYpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJEaWRTZW5kRGF0YT4gewogICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7IHJldHVy
biBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsgfQogICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSgpOwoKICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyRGlkU2VuZERhdGEmKTsKICAgIHN0YXRpYyBi
b29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlckRpZFNlbmREYXRhPiYpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRU
cmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJEaWRSZWNlaXZlRGF0YT4gewogICAgc3RhdGlj
IElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsg
fQogICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOwoKICAgIHN0YXRpYyB2b2lk
IGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
RGlkUmVjZWl2ZURhdGEmKTsKICAgIHN0YXRpYyBib29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1
ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlckRpZFJlY2VpdmVEYXRh
PiYpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJDcmVhdGVkPiB7CiAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElu
cHV0UXVldWU6OkxvYWRlck1lbW9pemVkRGF0YTsgfQogICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSgpOwoKICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyQ3JlYXRlZCYpOwogICAgc3RhdGljIGJvb2wg
ZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyQ3JlYXRlZD4mKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFdl
YkNvcmU6OlNhdmVkQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lPiB7CiAgICBzdGF0aWMgSW5wdXRR
dWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OlNjcmlwdE1lbW9pemVkRGF0YTsgfQog
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOwoKICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6OlNhdmVkQmVnaW5BbmltYXRp
b25VcGRhdGVUaW1lJik7CiAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUm
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U2F2ZWRCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWU+
Jik7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBJbnB1dFRyYWl0czxXZWJDb3JlOjpTYXZlZFRpbWVy
TmV4dEZpcmVJbnRlcnZhbD4gewogICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7IHJldHVy
biBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERhdGE7IH0KICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUoKTsKCiAgICBzdGF0aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFs
dWUmLCBjb25zdCBXZWJDb3JlOjpTYXZlZFRpbWVyTmV4dEZpcmVJbnRlcnZhbCYpOwogICAgc3Rh
dGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNhdmVkVGltZXJOZXh0RmlyZUludGVydmFsPiYpOwp9Owp0ZW1wbGF0ZTw+IHN0cnVjdCBF
bmNvZGluZ1RyYWl0czxJbnB1dFF1ZXVlPiB7CiAgICB0eXBlZGVmIElucHV0UXVldWUgRGVjb2Rl
ZFR5cGU7CiAgICB0eXBlZGVmIFN0cmluZyBFbmNvZGVkVHlwZTsKICAgIHN0YXRpYyBjb25zdCBF
bmNvZGVkVmFsdWU6OlNoYXBlIFNoYXBlID0gRW5jb2RlZFZhbHVlOjpTaGFwZTo6U2NhbGFyOwoK
ICAgIHN0YXRpYyBTdHJpbmcgZW5jb2RlVmFsdWUoY29uc3QgSW5wdXRRdWV1ZSYgdmFsdWUpOwog
ICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoU3RyaW5nJiwgSW5wdXRRdWV1ZSYgdmFsdWUpOwp9
OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1FdmVu
dDo6TW9kaWZpZXJzPiB7CiAgICB0eXBlZGVmIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlm
aWVycyBEZWNvZGVkVHlwZTsKICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1
ZT4gRW5jb2RlZFR5cGU7CiAgICBzdGF0aWMgY29uc3QgRW5jb2RlZFZhbHVlOjpTaGFwZSBTaGFw
ZSA9IEVuY29kZWRWYWx1ZTo6U2hhcGU6Okxpc3Q7CgogICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVkVmFsdWU+IGVuY29kZVZhbHVlKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVycyYgdmFsdWUpOwogICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoc3RkOjp1bmlx
dWVfcHRyPEVuY29kZWRWYWx1ZT4mLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMm
IHZhbHVlKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPFdlYkNvcmU6Ok1v
dXNlQnV0dG9uPiB7CiAgICB0eXBlZGVmIFdlYkNvcmU6Ok1vdXNlQnV0dG9uIERlY29kZWRUeXBl
OwogICAgdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBFbmNvZGVkVHlwZTsK
ICAgIHN0YXRpYyBjb25zdCBFbmNvZGVkVmFsdWU6OlNoYXBlIFNoYXBlID0gRW5jb2RlZFZhbHVl
OjpTaGFwZTo6TGlzdDsKCiAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4g
ZW5jb2RlVmFsdWUoY29uc3QgV2ViQ29yZTo6TW91c2VCdXR0b24mIHZhbHVlKTsKICAgIHN0YXRp
YyBib29sIGRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+JiwgV2ViQ29y
ZTo6TW91c2VCdXR0b24mIHZhbHVlKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJh
aXRzPFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlPiB7CiAgICB0eXBlZGVmIFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnRUeXBlIERlY29kZWRUeXBlOwogICAgdHlwZWRlZiBTdHJpbmcgRW5jb2RlZFR5
cGU7CiAgICBzdGF0aWMgY29uc3QgRW5jb2RlZFZhbHVlOjpTaGFwZSBTaGFwZSA9IEVuY29kZWRW
YWx1ZTo6U2hhcGU6OlNjYWxhcjsKCiAgICBzdGF0aWMgU3RyaW5nIGVuY29kZVZhbHVlKGNvbnN0
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRUeXBlJiB2YWx1ZSk7CiAgICBzdGF0aWMgYm9vbCBkZWNv
ZGVWYWx1ZShTdHJpbmcmLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50VHlwZSYgdmFsdWUpOwp9OwoK
dGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2
ZW50R3JhbnVsYXJpdHk+IHsKICAgIHR5cGVkZWYgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50
R3JhbnVsYXJpdHkgRGVjb2RlZFR5cGU7CiAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxFbmNv
ZGVkVmFsdWU+IEVuY29kZWRUeXBlOwogICAgc3RhdGljIGNvbnN0IEVuY29kZWRWYWx1ZTo6U2hh
cGUgU2hhcGUgPSBFbmNvZGVkVmFsdWU6OlNoYXBlOjpMaXN0OwoKICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBlbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9y
bVdoZWVsRXZlbnRHcmFudWxhcml0eSYgdmFsdWUpOwogICAgc3RhdGljIGJvb2wgZGVjb2RlVmFs
dWUoc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4mLCBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVs
RXZlbnRHcmFudWxhcml0eSYgdmFsdWUpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdU
cmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+IHsKICAgIHR5cGVkZWYgV2Vi
Q29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgRGVjb2RlZFR5cGU7CiAgICB0eXBlZGVmIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IEVuY29kZWRUeXBlOwogICAgc3RhdGljIGNvbnN0
IEVuY29kZWRWYWx1ZTo6U2hhcGUgU2hhcGUgPSBFbmNvZGVkVmFsdWU6OlNoYXBlOjpMaXN0OwoK
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBlbmNvZGVWYWx1ZShjb25z
dCBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSYgdmFsdWUpOwogICAgc3RhdGljIGJv
b2wgZGVjb2RlVmFsdWUoc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4mLCBXZWJDb3JlOjpQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSYgdmFsdWUpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgRW5j
b2RpbmdUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHk+IHsKICAgIHR5cGVkZWYg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgRGVjb2RlZFR5cGU7CiAgICB0eXBlZGVmIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IEVuY29kZWRUeXBlOwogICAgc3RhdGljIGNvbnN0
IEVuY29kZWRWYWx1ZTo6U2hhcGUgU2hhcGUgPSBFbmNvZGVkVmFsdWU6OlNoYXBlOjpMaXN0OwoK
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBlbmNvZGVWYWx1ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSYgdmFsdWUpOwogICAgc3RhdGljIGJvb2wg
ZGVjb2RlVmFsdWUoc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4mLCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRQcmlvcml0eSYgdmFsdWUpOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdU
cmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k+IHsKICAgIHR5cGVkZWYg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgRGVjb2RlZFR5cGU7CiAgICB0eXBl
ZGVmIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IEVuY29kZWRUeXBlOwogICAgc3RhdGlj
IGNvbnN0IEVuY29kZWRWYWx1ZTo6U2hhcGUgU2hhcGUgPSBFbmNvZGVkVmFsdWU6OlNoYXBlOjpM
aXN0OwoKICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBlbmNvZGVWYWx1
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSYgdmFsdWUpOwogICAg
c3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4mLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSYgdmFsdWUpOwp9OwoKdGVtcGxhdGU8
PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uPiB7CiAgICB0
eXBlZGVmIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiBEZWNvZGVkVHlwZTsKICAgIHR5cGVkZWYg
c3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gRW5jb2RlZFR5cGU7CiAgICBzdGF0aWMgY29u
c3QgRW5jb2RlZFZhbHVlOjpTaGFwZSBTaGFwZSA9IEVuY29kZWRWYWx1ZTo6U2hhcGU6Okxpc3Q7
CgogICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVuY29kZVZhbHVlKGNv
bnN0IFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiYgdmFsdWUpOwogICAgc3RhdGljIGJvb2wgZGVj
b2RlVmFsdWUoc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4mLCBXZWJDb3JlOjpTY3JvbGxE
aXJlY3Rpb24mIHZhbHVlKTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPFdl
YkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5PiB7CiAgICB0eXBlZGVmIFdlYkNvcmU6OlNjcm9sbEdy
YW51bGFyaXR5IERlY29kZWRUeXBlOwogICAgdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rl
ZFZhbHVlPiBFbmNvZGVkVHlwZTsKICAgIHN0YXRpYyBjb25zdCBFbmNvZGVkVmFsdWU6OlNoYXBl
IFNoYXBlID0gRW5jb2RlZFZhbHVlOjpTaGFwZTo6TGlzdDsKCiAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEVuY29kZWRWYWx1ZT4gZW5jb2RlVmFsdWUoY29uc3QgV2ViQ29yZTo6U2Nyb2xsR3Jh
bnVsYXJpdHkmIHZhbHVlKTsKICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVkVmFsdWU+JiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkmIHZhbHVlKTsK
fTsKCnRlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPFdlYkNvcmU6OlNjcm9sbExvZ2lj
YWxEaXJlY3Rpb24+IHsKICAgIHR5cGVkZWYgV2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlv
biBEZWNvZGVkVHlwZTsKICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4g
RW5jb2RlZFR5cGU7CiAgICBzdGF0aWMgY29uc3QgRW5jb2RlZFZhbHVlOjpTaGFwZSBTaGFwZSA9
IEVuY29kZWRWYWx1ZTo6U2hhcGU6Okxpc3Q7CgogICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxF
bmNvZGVkVmFsdWU+IGVuY29kZVZhbHVlKGNvbnN0IFdlYkNvcmU6OlNjcm9sbExvZ2ljYWxEaXJl
Y3Rpb24mIHZhbHVlKTsKICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVkVmFsdWU+JiwgV2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbiYgdmFsdWUp
Owp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6Rm9ybURhdGFF
bGVtZW50OjpUeXBlPiB7CiAgICB0eXBlZGVmIFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6VHlw
ZSBEZWNvZGVkVHlwZTsKICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4g
RW5jb2RlZFR5cGU7CiAgICBzdGF0aWMgY29uc3QgRW5jb2RlZFZhbHVlOjpTaGFwZSBTaGFwZSA9
IEVuY29kZWRWYWx1ZTo6U2hhcGU6Okxpc3Q7CgogICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxF
bmNvZGVkVmFsdWU+IGVuY29kZVZhbHVlKGNvbnN0IFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6
VHlwZSYgdmFsdWUpOwogICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoc3RkOjp1bmlxdWVfcHRy
PEVuY29kZWRWYWx1ZT4mLCBXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OlR5cGUmIHZhbHVlKTsK
fTsKfSAvLyBuYW1lc3BhY2UgSlNDCgpuYW1lc3BhY2UgV2ViQ29yZSB7CmNsYXNzIEJlZ2luU2Vu
dGluZWwgOiBwdWJsaWMgRXZlbnRMb29wSW5wdXQ8QmVnaW5TZW50aW5lbD4gewpwdWJsaWM6CiAg
ICBCZWdpblNlbnRpbmVsKCk7CiAgICB2aXJ0dWFsIH5CZWdpblNlbnRpbmVsKCk7CgogICAgLy8g
RXZlbnRMb29wSW5wdXQgQVBJCiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goUmVwbGF5Q29udHJv
bGxlciYpIG92ZXJyaWRlIGZpbmFsOwogICAgdmlydHVhbCBib29sIGlzVXNlclZpc2libGUoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQoKCn07CgpjbGFzcyBEaXNhYmxl
Q2FjaGUgOiBwdWJsaWMgRXZlbnRMb29wSW5wdXQ8RGlzYWJsZUNhY2hlPiB7CnB1YmxpYzoKICAg
IERpc2FibGVDYWNoZSgpOwogICAgdmlydHVhbCB+RGlzYWJsZUNhY2hlKCk7CgogICAgLy8gRXZl
bnRMb29wSW5wdXQgQVBJCiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goUmVwbGF5Q29udHJvbGxl
ciYpIG92ZXJyaWRlIGZpbmFsOwogICAgdmlydHVhbCBib29sIGlzVXNlclZpc2libGUoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQoKCn07CgpjbGFzcyBFbmFibGVDYWNo
ZSA6IHB1YmxpYyBFdmVudExvb3BJbnB1dDxFbmFibGVDYWNoZT4gewpwdWJsaWM6CiAgICBFbmFi
bGVDYWNoZSgpOwogICAgdmlydHVhbCB+RW5hYmxlQ2FjaGUoKTsKCiAgICAvLyBFdmVudExvb3BJ
bnB1dCBBUEkKICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlDb250cm9sbGVyJikgb3Zl
cnJpZGUgZmluYWw7CiAgICB2aXJ0dWFsIGJvb2wgaXNVc2VyVmlzaWJsZSgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CgoKfTsKCmNsYXNzIEVuZFNlbnRpbmVsIDogcHVi
bGljIEV2ZW50TG9vcElucHV0PEVuZFNlbnRpbmVsPiB7CnB1YmxpYzoKICAgIEVuZFNlbnRpbmVs
KCk7CiAgICB2aXJ0dWFsIH5FbmRTZW50aW5lbCgpOwoKICAgIC8vIEV2ZW50TG9vcElucHV0IEFQ
SQogICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImKSBvdmVycmlkZSBm
aW5hbDsKICAgIHZpcnR1YWwgYm9vbCBpc1VzZXJWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KCgp9OwoKY2xhc3MgUGxheWJhY2tFcnJvciA6IHB1YmxpYyBF
dmVudExvb3BJbnB1dDxQbGF5YmFja0Vycm9yPiB7CnB1YmxpYzoKICAgIFBsYXliYWNrRXJyb3Io
U3RyaW5nIGVycm9yTWVzc2FnZSk7CiAgICB2aXJ0dWFsIH5QbGF5YmFja0Vycm9yKCk7CgogICAg
Ly8gRXZlbnRMb29wSW5wdXQgQVBJCiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goUmVwbGF5Q29u
dHJvbGxlciYpIG92ZXJyaWRlIGZpbmFsOwogICAgU3RyaW5nIGVycm9yTWVzc2FnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZXJyb3JNZXNzYWdlOyB9CnByaXZhdGU6CiAgICBTdHJpbmcgbV9lcnJvck1l
c3NhZ2U7Cn07CgpjbGFzcyBJbml0aWFsaXplRm9jdXMgOiBwdWJsaWMgRXZlbnRMb29wSW5wdXQ8
SW5pdGlhbGl6ZUZvY3VzPiB7CnB1YmxpYzoKICAgIEluaXRpYWxpemVGb2N1cyhib29sIGlzRm9j
dXNlZCwgYm9vbCBpc0FjdGl2ZSwgaW50IGZvY3VzZWRGcmFtZUluZGV4KTsKICAgIHZpcnR1YWwg
fkluaXRpYWxpemVGb2N1cygpOwoKICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQogICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsKICAgIHZp
cnR1YWwgYm9vbCBpc1VzZXJWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW5pdGlhbGl6ZUZvY3VzPiBjcmVh
dGVGcm9tUGFnZShjb25zdCBQYWdlJik7CiAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNGb2N1c2VkOyB9CiAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0FjdGl2ZTsgfQogICAgaW50IGZvY3VzZWRGcmFtZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9m
b2N1c2VkRnJhbWVJbmRleDsgfQpwcml2YXRlOgogICAgYm9vbCBtX2lzRm9jdXNlZDsKICAgIGJv
b2wgbV9pc0FjdGl2ZTsKICAgIGludCBtX2ZvY3VzZWRGcmFtZUluZGV4Owp9OwoKY2xhc3MgSW5p
dGlhbGl6ZVdpbmRvdyA6IHB1YmxpYyBFdmVudExvb3BJbnB1dDxJbml0aWFsaXplV2luZG93PiB7
CnB1YmxpYzoKICAgIEluaXRpYWxpemVXaW5kb3coaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAg
IHZpcnR1YWwgfkluaXRpYWxpemVXaW5kb3coKTsKCiAgICAvLyBFdmVudExvb3BJbnB1dCBBUEkK
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlDb250cm9sbGVyJikgb3ZlcnJpZGUgZmlu
YWw7CiAgICB2aXJ0dWFsIGJvb2wgaXNVc2VyVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEluaXRpYWxpemVX
aW5kb3c+IGNyZWF0ZUZyb21QYWdlKGNvbnN0IFBhZ2UmKTsKICAgIGludCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hl
aWdodDsgfQpwcml2YXRlOgogICAgaW50IG1fd2lkdGg7CiAgICBpbnQgbV9oZWlnaHQ7Cn07Cgpj
bGFzcyBJbml0aWFsTmF2aWdhdGlvbiA6IHB1YmxpYyBFdmVudExvb3BJbnB1dDxJbml0aWFsTmF2
aWdhdGlvbj4gewpwdWJsaWM6CiAgICBJbml0aWFsTmF2aWdhdGlvbihQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgU3RyaW5nIHVybCwgU3RyaW5nIHJlZmVycmVyKTsK
ICAgIHZpcnR1YWwgfkluaXRpYWxOYXZpZ2F0aW9uKCk7CgogICAgLy8gRXZlbnRMb29wSW5wdXQg
QVBJCiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goUmVwbGF5Q29udHJvbGxlciYpIG92ZXJyaWRl
IGZpbmFsOwogICAgdmlydHVhbCBib29sIGlzVXNlclZpc2libGUoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbml0aWFs
TmF2aWdhdGlvbj4gY3JlYXRlRnJvbVBhZ2UoY29uc3QgUGFnZSYpOwogICAgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5
T3JpZ2luOyB9CiAgICBTdHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgIFN0
cmluZyByZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXI7IH0KcHJpdmF0ZToKICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKICAgIFN0cmluZyBtX3Vy
bDsKICAgIFN0cmluZyBtX3JlZmVycmVyOwp9OwoKY2xhc3MgRm9jdXNTZXRBY3RpdmUgOiBwdWJs
aWMgRXZlbnRMb29wSW5wdXQ8Rm9jdXNTZXRBY3RpdmU+IHsKcHVibGljOgogICAgRm9jdXNTZXRB
Y3RpdmUoYm9vbCB0b1N0YXRlKTsKICAgIHZpcnR1YWwgfkZvY3VzU2V0QWN0aXZlKCk7CgogICAg
Ly8gRXZlbnRMb29wSW5wdXQgQVBJCiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goUmVwbGF5Q29u
dHJvbGxlciYpIG92ZXJyaWRlIGZpbmFsOwogICAgYm9vbCB0b1N0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV90b1N0YXRlOyB9CnByaXZhdGU6CiAgICBib29sIG1fdG9TdGF0ZTsKfTsKCmNsYXNzIEZv
Y3VzU2V0Rm9jdXNlZCA6IHB1YmxpYyBFdmVudExvb3BJbnB1dDxGb2N1c1NldEZvY3VzZWQ+IHsK
cHVibGljOgogICAgRm9jdXNTZXRGb2N1c2VkKGJvb2wgdG9TdGF0ZSk7CiAgICB2aXJ0dWFsIH5G
b2N1c1NldEZvY3VzZWQoKTsKCiAgICAvLyBFdmVudExvb3BJbnB1dCBBUEkKICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaChSZXBsYXlDb250cm9sbGVyJikgb3ZlcnJpZGUgZmluYWw7CiAgICBib29s
IHRvU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3RvU3RhdGU7IH0KcHJpdmF0ZToKICAgIGJvb2wg
bV90b1N0YXRlOwp9OwoKY2xhc3MgU2VuZFJlc2l6ZUV2ZW50IDogcHVibGljIEV2ZW50TG9vcElu
cHV0PFNlbmRSZXNpemVFdmVudD4gewpwdWJsaWM6CiAgICBTZW5kUmVzaXplRXZlbnQoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZnJhbWVJbmRleCk7CiAgICB2aXJ0dWFsIH5TZW5kUmVzaXpl
RXZlbnQoKTsKCiAgICAvLyBFdmVudExvb3BJbnB1dCBBUEkKICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaChSZXBsYXlDb250cm9sbGVyJikgb3ZlcnJpZGUgZmluYWw7CiAgICBpbnQgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bV9oZWlnaHQ7IH0KICAgIGludCBmcmFtZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUlu
ZGV4OyB9CnByaXZhdGU6CiAgICBpbnQgbV93aWR0aDsKICAgIGludCBtX2hlaWdodDsKICAgIGlu
dCBtX2ZyYW1lSW5kZXg7Cn07CgpjbGFzcyBIYW5kbGVDb250ZXh0TWVudSA6IHB1YmxpYyBFdmVu
dExvb3BJbnB1dDxIYW5kbGVDb250ZXh0TWVudT4gewpwdWJsaWM6CiAgICBIYW5kbGVDb250ZXh0
TWVudShzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Nb3VzZUV2ZW50PiBwbGF0Zm9ybUV2ZW50LCBp
bnQgZnJhbWVJbmRleCk7CiAgICB2aXJ0dWFsIH5IYW5kbGVDb250ZXh0TWVudSgpOwoKICAgIC8v
IEV2ZW50TG9vcElucHV0IEFQSQogICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKFJlcGxheUNvbnRy
b2xsZXImKSBvdmVycmlkZSBmaW5hbDsKICAgIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxh
dGZvcm1FdmVudCgpIGNvbnN0IHsgcmV0dXJuICptX3BsYXRmb3JtRXZlbnQ7IH0KICAgIGludCBm
cmFtZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUluZGV4OyB9CnByaXZhdGU6CiAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Nb3VzZUV2ZW50PiBtX3BsYXRmb3JtRXZlbnQ7CiAgICBp
bnQgbV9mcmFtZUluZGV4Owp9OwoKY2xhc3MgSGFuZGxlS2V5UHJlc3MgOiBwdWJsaWMgRXZlbnRM
b29wSW5wdXQ8SGFuZGxlS2V5UHJlc3M+IHsKcHVibGljOgogICAgSGFuZGxlS2V5UHJlc3Moc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gcGxhdGZvcm1FdmVudCk7CiAgICB2
aXJ0dWFsIH5IYW5kbGVLZXlQcmVzcygpOwoKICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQogICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsK
ICAgIGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgcGxhdGZvcm1FdmVudCgpIGNvbnN0IHsg
cmV0dXJuICptX3BsYXRmb3JtRXZlbnQ7IH0KcHJpdmF0ZToKICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ+IG1fcGxhdGZvcm1FdmVudDsKfTsKCmNsYXNzIEhhbmRsZU1v
dXNlTW92ZSA6IHB1YmxpYyBFdmVudExvb3BJbnB1dDxIYW5kbGVNb3VzZU1vdmU+IHsKcHVibGlj
OgogICAgSGFuZGxlTW91c2VNb3ZlKHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1vdXNlRXZlbnQ+
IHBsYXRmb3JtRXZlbnQsIGJvb2wgc2Nyb2xsYmFyVGFyZ2V0ZWQpOwogICAgdmlydHVhbCB+SGFu
ZGxlTW91c2VNb3ZlKCk7CgogICAgLy8gRXZlbnRMb29wSW5wdXQgQVBJCiAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2goUmVwbGF5Q29udHJvbGxlciYpIG92ZXJyaWRlIGZpbmFsOwogICAgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybUV2ZW50KCkgY29uc3QgeyByZXR1cm4gKm1fcGxh
dGZvcm1FdmVudDsgfQogICAgYm9vbCBzY3JvbGxiYXJUYXJnZXRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsYmFyVGFyZ2V0ZWQ7IH0KcHJpdmF0ZToKICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybU1vdXNlRXZlbnQ+IG1fcGxhdGZvcm1FdmVudDsKICAgIGJvb2wgbV9zY3JvbGxiYXJUYXJn
ZXRlZDsKfTsKCmNsYXNzIEhhbmRsZU1vdXNlUHJlc3MgOiBwdWJsaWMgRXZlbnRMb29wSW5wdXQ8
SGFuZGxlTW91c2VQcmVzcz4gewpwdWJsaWM6CiAgICBIYW5kbGVNb3VzZVByZXNzKHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybU1vdXNlRXZlbnQ+IHBsYXRmb3JtRXZlbnQpOwogICAgdmlydHVhbCB+
SGFuZGxlTW91c2VQcmVzcygpOwoKICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQogICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsKICAgIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCgpIGNvbnN0IHsgcmV0dXJuICpt
X3BsYXRmb3JtRXZlbnQ7IH0KcHJpdmF0ZToKICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1v
dXNlRXZlbnQ+IG1fcGxhdGZvcm1FdmVudDsKfTsKCmNsYXNzIEhhbmRsZU1vdXNlUmVsZWFzZSA6
IHB1YmxpYyBFdmVudExvb3BJbnB1dDxIYW5kbGVNb3VzZVJlbGVhc2U+IHsKcHVibGljOgogICAg
SGFuZGxlTW91c2VSZWxlYXNlKHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1vdXNlRXZlbnQ+IHBs
YXRmb3JtRXZlbnQpOwogICAgdmlydHVhbCB+SGFuZGxlTW91c2VSZWxlYXNlKCk7CgogICAgLy8g
RXZlbnRMb29wSW5wdXQgQVBJCiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goUmVwbGF5Q29udHJv
bGxlciYpIG92ZXJyaWRlIGZpbmFsOwogICAgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0
Zm9ybUV2ZW50KCkgY29uc3QgeyByZXR1cm4gKm1fcGxhdGZvcm1FdmVudDsgfQpwcml2YXRlOgog
ICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTW91c2VFdmVudD4gbV9wbGF0Zm9ybUV2ZW50Owp9
OwoKY2xhc3MgSGFuZGxlV2hlZWxFdmVudCA6IHB1YmxpYyBFdmVudExvb3BJbnB1dDxIYW5kbGVX
aGVlbEV2ZW50PiB7CnB1YmxpYzoKICAgIEhhbmRsZVdoZWVsRXZlbnQoc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtV2hlZWxFdmVudD4gcGxhdGZvcm1FdmVudCk7CiAgICB2aXJ0dWFsIH5IYW5kbGVX
aGVlbEV2ZW50KCk7CgogICAgLy8gRXZlbnRMb29wSW5wdXQgQVBJCiAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2goUmVwbGF5Q29udHJvbGxlciYpIG92ZXJyaWRlIGZpbmFsOwogICAgY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiBwbGF0Zm9ybUV2ZW50KCkgY29uc3QgeyByZXR1cm4gKm1fcGxhdGZv
cm1FdmVudDsgfQpwcml2YXRlOgogICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtV2hlZWxFdmVu
dD4gbV9wbGF0Zm9ybUV2ZW50Owp9OwoKY2xhc3MgU2Nyb2xsUGFnZSA6IHB1YmxpYyBFdmVudExv
b3BJbnB1dDxTY3JvbGxQYWdlPiB7CnB1YmxpYzoKICAgIFNjcm9sbFBhZ2UoU2Nyb2xsRGlyZWN0
aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpOwogICAgdmlydHVh
bCB+U2Nyb2xsUGFnZSgpOwoKICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQogICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsKICAgIFNjcm9s
bERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQogICAg
U2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkoKSBjb25zdCB7IHJldHVybiBtX2dyYW51bGFy
aXR5OyB9CnByaXZhdGU6CiAgICBTY3JvbGxEaXJlY3Rpb24gbV9kaXJlY3Rpb247CiAgICBTY3Jv
bGxHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5Owp9OwoKY2xhc3MgTG9naWNhbFNjcm9sbFBhZ2Ug
OiBwdWJsaWMgRXZlbnRMb29wSW5wdXQ8TG9naWNhbFNjcm9sbFBhZ2U+IHsKcHVibGljOgogICAg
TG9naWNhbFNjcm9sbFBhZ2UoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9s
bEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KTsKICAgIHZpcnR1YWwgfkxvZ2ljYWxTY3JvbGxQYWdl
KCk7CgogICAgLy8gRXZlbnRMb29wSW5wdXQgQVBJCiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2go
UmVwbGF5Q29udHJvbGxlciYpIG92ZXJyaWRlIGZpbmFsOwogICAgU2Nyb2xsTG9naWNhbERpcmVj
dGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQogICAgU2Nyb2xs
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkoKSBjb25zdCB7IHJldHVybiBtX2dyYW51bGFyaXR5OyB9
CnByaXZhdGU6CiAgICBTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwogICAgU2Ny
b2xsR3JhbnVsYXJpdHkgbV9ncmFudWxhcml0eTsKfTsKCiNpZiBQTEFURk9STShNQUMpCmNsYXNz
IEludGVycHJldGVkS2V5Q29tbWFuZHMgOiBwdWJsaWMgTm9uZGV0ZXJtaW5pc3RpY0lucHV0PElu
dGVycHJldGVkS2V5Q29tbWFuZHM+IHsKcHVibGljOgogICAgSW50ZXJwcmV0ZWRLZXlDb21tYW5k
cyhWZWN0b3I8S2V5cHJlc3NDb21tYW5kPiYgY29tbWFuZHMpOwogICAgdmlydHVhbCB+SW50ZXJw
cmV0ZWRLZXlDb21tYW5kcygpOwoKICAgIGNvbnN0IFZlY3RvcjxLZXlwcmVzc0NvbW1hbmQ+JiBj
b21tYW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZHM7IH0KcHJpdmF0ZToKICAgIFZlY3Rv
cjxLZXlwcmVzc0NvbW1hbmQ+IG1fY29tbWFuZHM7Cn07CiNlbmRpZiAvLyBQTEFURk9STShNQUMp
CgpjbGFzcyBET01UaW1lckNyZWF0ZWQgOiBwdWJsaWMgTm9uZGV0ZXJtaW5pc3RpY0lucHV0PERP
TVRpbWVyQ3JlYXRlZD4gewpwdWJsaWM6CiAgICBET01UaW1lckNyZWF0ZWQoaW50IHRpbWVySWQs
IGludCBmcmFtZUluZGV4KTsKICAgIHZpcnR1YWwgfkRPTVRpbWVyQ3JlYXRlZCgpOwoKICAgIGlu
dCB0aW1lcklkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lcklkOyB9CiAgICBpbnQgZnJhbWVJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJbmRleDsgfQpwcml2YXRlOgogICAgaW50IG1fdGlt
ZXJJZDsKICAgIGludCBtX2ZyYW1lSW5kZXg7Cn07CgpjbGFzcyBET01UaW1lckZpcmVkIDogcHVi
bGljIEV2ZW50TG9vcElucHV0PERPTVRpbWVyRmlyZWQ+IHsKcHVibGljOgogICAgRE9NVGltZXJG
aXJlZChpbnQgdGltZXJJZCwgaW50IGZyYW1lSW5kZXgpOwogICAgdmlydHVhbCB+RE9NVGltZXJG
aXJlZCgpOwoKICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQogICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoKFJlcGxheUNvbnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsKICAgIGludCB0aW1lcklkKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lcklkOyB9CiAgICBpbnQgZnJhbWVJbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWVJbmRleDsgfQpwcml2YXRlOgogICAgaW50IG1fdGltZXJJZDsKICAgIGlu
dCBtX2ZyYW1lSW5kZXg7Cn07CgpjbGFzcyBBc3luY1RpbWVyRmlyZWQgOiBwdWJsaWMgRXZlbnRM
b29wSW5wdXQ8QXN5bmNUaW1lckZpcmVkPiB7CnB1YmxpYzoKICAgIEFzeW5jVGltZXJGaXJlZChp
bnQgZnJhbWVJbmRleCwgdW5zaWduZWQgaW50IGlkZW50aWZpZXIpOwogICAgdmlydHVhbCB+QXN5
bmNUaW1lckZpcmVkKCk7CgogICAgLy8gRXZlbnRMb29wSW5wdXQgQVBJCiAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2goUmVwbGF5Q29udHJvbGxlciYpIG92ZXJyaWRlIGZpbmFsOwogICAgaW50IGZy
YW1lSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSW5kZXg7IH0KICAgIHVuc2lnbmVkIGlu
dCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CnByaXZhdGU6CiAg
ICBpbnQgbV9mcmFtZUluZGV4OwogICAgdW5zaWduZWQgaW50IG1faWRlbnRpZmllcjsKfTsKCmNs
YXNzIExvYWRVUkxSZXF1ZXN0IDogcHVibGljIEV2ZW50TG9vcElucHV0PExvYWRVUkxSZXF1ZXN0
PiB7CnB1YmxpYzoKICAgIExvYWRVUkxSZXF1ZXN0KHN0ZDo6dW5pcXVlX3B0cjxGcmFtZUxvYWRS
ZXF1ZXN0PiBsb2FkUmVxdWVzdCk7CiAgICB2aXJ0dWFsIH5Mb2FkVVJMUmVxdWVzdCgpOwoKICAg
IC8vIEV2ZW50TG9vcElucHV0IEFQSQogICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKFJlcGxheUNv
bnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsKICAgIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGxv
YWRSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gKm1fbG9hZFJlcXVlc3Q7IH0KcHJpdmF0ZToKICAg
IHN0ZDo6dW5pcXVlX3B0cjxGcmFtZUxvYWRSZXF1ZXN0PiBtX2xvYWRSZXF1ZXN0Owp9OwoKY2xh
c3MgVHJ5Q2xvc2VQYWdlIDogcHVibGljIEV2ZW50TG9vcElucHV0PFRyeUNsb3NlUGFnZT4gewpw
dWJsaWM6CiAgICBUcnlDbG9zZVBhZ2UoKTsKICAgIHZpcnR1YWwgflRyeUNsb3NlUGFnZSgpOwoK
ICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQogICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKFJlcGxh
eUNvbnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsKICAgIHZpcnR1YWwgYm9vbCBpc1VzZXJWaXNp
YmxlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KCgp9OwoKY2xhc3Mg
UmVsb2FkRnJhbWUgOiBwdWJsaWMgRXZlbnRMb29wSW5wdXQ8UmVsb2FkRnJhbWU+IHsKcHVibGlj
OgogICAgUmVsb2FkRnJhbWUoaW50IGZyYW1lSW5kZXgsIGJvb2wgZW5kVG9FbmRSZWxvYWQpOwog
ICAgdmlydHVhbCB+UmVsb2FkRnJhbWUoKTsKCiAgICAvLyBFdmVudExvb3BJbnB1dCBBUEkKICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlDb250cm9sbGVyJikgb3ZlcnJpZGUgZmluYWw7
CiAgICBpbnQgZnJhbWVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJbmRleDsgfQogICAg
Ym9vbCBlbmRUb0VuZFJlbG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kVG9FbmRSZWxvYWQ7IH0K
cHJpdmF0ZToKICAgIGludCBtX2ZyYW1lSW5kZXg7CiAgICBib29sIG1fZW5kVG9FbmRSZWxvYWQ7
Cn07CgpjbGFzcyBTdG9wTG9hZGluZ0ZyYW1lIDogcHVibGljIEV2ZW50TG9vcElucHV0PFN0b3BM
b2FkaW5nRnJhbWU+IHsKcHVibGljOgogICAgU3RvcExvYWRpbmdGcmFtZShpbnQgZnJhbWVJbmRl
eCk7CiAgICB2aXJ0dWFsIH5TdG9wTG9hZGluZ0ZyYW1lKCk7CgogICAgLy8gRXZlbnRMb29wSW5w
dXQgQVBJCiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goUmVwbGF5Q29udHJvbGxlciYpIG92ZXJy
aWRlIGZpbmFsOwogICAgaW50IGZyYW1lSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSW5k
ZXg7IH0KcHJpdmF0ZToKICAgIGludCBtX2ZyYW1lSW5kZXg7Cn07CgpjbGFzcyBSZXNvdXJjZUxv
YWRlckRpZEZhaWwgOiBwdWJsaWMgRXZlbnRMb29wSW5wdXQ8UmVzb3VyY2VMb2FkZXJEaWRGYWls
PiB7CnB1YmxpYzoKICAgIFJlc291cmNlTG9hZGVyRGlkRmFpbCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGludCBmcmFtZUluZGV4LCBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VFcnJvcj4gZXJy
b3IpOwogICAgdmlydHVhbCB+UmVzb3VyY2VMb2FkZXJEaWRGYWlsKCk7CgogICAgLy8gRXZlbnRM
b29wSW5wdXQgQVBJCiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goUmVwbGF5Q29udHJvbGxlciYp
IG92ZXJyaWRlIGZpbmFsOwogICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICBpbnQgZnJhbWVJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVJbmRleDsgfQogICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7
IHJldHVybiAqbV9lcnJvcjsgfQpwcml2YXRlOgogICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZp
ZXI7CiAgICBpbnQgbV9mcmFtZUluZGV4OwogICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlRXJy
b3I+IG1fZXJyb3I7Cn07CgpjbGFzcyBSZXNvdXJjZUxvYWRlckRpZEZpbmlzaExvYWRpbmcgOiBw
dWJsaWMgRXZlbnRMb29wSW5wdXQ8UmVzb3VyY2VMb2FkZXJEaWRGaW5pc2hMb2FkaW5nPiB7CnB1
YmxpYzoKICAgIFJlc291cmNlTG9hZGVyRGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGludCBmcmFtZUluZGV4LCBkb3VibGUgZmluaXNoVGltZSk7CiAgICB2aXJ0dWFs
IH5SZXNvdXJjZUxvYWRlckRpZEZpbmlzaExvYWRpbmcoKTsKCiAgICAvLyBFdmVudExvb3BJbnB1
dCBBUEkKICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlDb250cm9sbGVyJikgb3ZlcnJp
ZGUgZmluYWw7CiAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KICAgIGludCBmcmFtZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZUluZGV4OyB9CiAgICBkb3VibGUgZmluaXNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmluaXNo
VGltZTsgfQpwcml2YXRlOgogICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CiAgICBpbnQg
bV9mcmFtZUluZGV4OwogICAgZG91YmxlIG1fZmluaXNoVGltZTsKfTsKCmNsYXNzIFJlc291cmNl
TG9hZGVyRGlkUmVjZWl2ZVJlc3BvbnNlIDogcHVibGljIEV2ZW50TG9vcElucHV0PFJlc291cmNl
TG9hZGVyRGlkUmVjZWl2ZVJlc3BvbnNlPiB7CnB1YmxpYzoKICAgIFJlc291cmNlTG9hZGVyRGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGZyYW1lSW5kZXgs
IHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZSk7CiAgICB2aXJ0dWFs
IH5SZXNvdXJjZUxvYWRlckRpZFJlY2VpdmVSZXNwb25zZSgpOwoKICAgIC8vIEV2ZW50TG9vcElu
cHV0IEFQSQogICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImKSBvdmVy
cmlkZSBmaW5hbDsKICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQogICAgaW50IGZyYW1lSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lSW5kZXg7IH0KICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3Qg
eyByZXR1cm4gKm1fcmVzcG9uc2U7IH0KcHJpdmF0ZToKICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVu
dGlmaWVyOwogICAgaW50IG1fZnJhbWVJbmRleDsKICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJj
ZVJlc3BvbnNlPiBtX3Jlc3BvbnNlOwp9OwoKY2xhc3MgUmVzb3VyY2VMb2FkZXJEaWRTZW5kRGF0
YSA6IHB1YmxpYyBFdmVudExvb3BJbnB1dDxSZXNvdXJjZUxvYWRlckRpZFNlbmREYXRhPiB7CnB1
YmxpYzoKICAgIFJlc291cmNlTG9hZGVyRGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBpbnQgZnJhbWVJbmRleCwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICB2aXJ0dWFsIH5SZXNvdXJjZUxv
YWRlckRpZFNlbmREYXRhKCk7CgogICAgLy8gRXZlbnRMb29wSW5wdXQgQVBJCiAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2goUmVwbGF5Q29udHJvbGxlciYpIG92ZXJyaWRlIGZpbmFsOwogICAgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAg
ICBpbnQgZnJhbWVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJbmRleDsgfQogICAgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZXNTZW50OyB9
CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KCkgY29uc3QgeyByZXR1
cm4gbV90b3RhbEJ5dGVzVG9CZVNlbnQ7IH0KcHJpdmF0ZToKICAgIHVuc2lnbmVkIGxvbmcgbV9p
ZGVudGlmaWVyOwogICAgaW50IG1fZnJhbWVJbmRleDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBt
X2J5dGVzU2VudDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3RvdGFsQnl0ZXNUb0JlU2VudDsK
fTsKCmNsYXNzIFJlc291cmNlTG9hZGVyRGlkUmVjZWl2ZURhdGEgOiBwdWJsaWMgRXZlbnRMb29w
SW5wdXQ8UmVzb3VyY2VMb2FkZXJEaWRSZWNlaXZlRGF0YT4gewpwdWJsaWM6CiAgICBSZXNvdXJj
ZUxvYWRlckRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGZyYW1l
SW5kZXgsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGludCBlbmNvZGVkTGVuZ3Ro
KTsKICAgIHZpcnR1YWwgflJlc291cmNlTG9hZGVyRGlkUmVjZWl2ZURhdGEoKTsKCiAgICAvLyBF
dmVudExvb3BJbnB1dCBBUEkKICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlDb250cm9s
bGVyJikgb3ZlcnJpZGUgZmluYWw7CiAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgIGludCBmcmFtZUluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZUluZGV4OyB9CiAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgIGludCBlbmNvZGVkTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9lbmNvZGVkTGVuZ3RoOyB9CnByaXZhdGU6CiAgICB1bnNpZ25lZCBsb25n
IG1faWRlbnRpZmllcjsKICAgIGludCBtX2ZyYW1lSW5kZXg7CiAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKICAgIGludCBtX2VuY29kZWRMZW5ndGg7Cn07CgpjbGFzcyBSZXNvdXJj
ZUxvYWRlckNyZWF0ZWQgOiBwdWJsaWMgTm9uZGV0ZXJtaW5pc3RpY0lucHV0PFJlc291cmNlTG9h
ZGVyQ3JlYXRlZD4gewpwdWJsaWM6CiAgICBSZXNvdXJjZUxvYWRlckNyZWF0ZWQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0
KTsKICAgIHZpcnR1YWwgflJlc291cmNlTG9hZGVyQ3JlYXRlZCgpOwoKICAgIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gKm1fcmVxdWVzdDsgfQpw
cml2YXRlOgogICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CiAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVzb3VyY2VSZXF1ZXN0PiBtX3JlcXVlc3Q7Cn07CgpjbGFzcyBTYXZlZEJlZ2luQW5pbWF0
aW9uVXBkYXRlVGltZSA6IHB1YmxpYyBOb25kZXRlcm1pbmlzdGljSW5wdXQ8U2F2ZWRCZWdpbkFu
aW1hdGlvblVwZGF0ZVRpbWU+IHsKcHVibGljOgogICAgU2F2ZWRCZWdpbkFuaW1hdGlvblVwZGF0
ZVRpbWUoZG91YmxlIGN1cnJlbnRUaW1lKTsKICAgIHZpcnR1YWwgflNhdmVkQmVnaW5BbmltYXRp
b25VcGRhdGVUaW1lKCk7CgogICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50VGltZTsgfQpwcml2YXRlOgogICAgZG91YmxlIG1fY3VycmVudFRpbWU7Cn07Cgpj
bGFzcyBTYXZlZFRpbWVyTmV4dEZpcmVJbnRlcnZhbCA6IHB1YmxpYyBOb25kZXRlcm1pbmlzdGlj
SW5wdXQ8U2F2ZWRUaW1lck5leHRGaXJlSW50ZXJ2YWw+IHsKcHVibGljOgogICAgU2F2ZWRUaW1l
ck5leHRGaXJlSW50ZXJ2YWwoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwpOwogICAgdmlydHVhbCB+
U2F2ZWRUaW1lck5leHRGaXJlSW50ZXJ2YWwoKTsKCiAgICBkb3VibGUgbmV4dEZpcmVJbnRlcnZh
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEZpcmVJbnRlcnZhbDsgfQpwcml2YXRlOgogICAgZG91
YmxlIG1fbmV4dEZpcmVJbnRlcnZhbDsKfTsKfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKI2RlZmlu
ZSBXRUJfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNIKG1hY3JvKSBcCiAgICBtYWNybyhCZWdp
blNlbnRpbmVsKSBcCiAgICBtYWNybyhEaXNhYmxlQ2FjaGUpIFwKICAgIG1hY3JvKEVuYWJsZUNh
Y2hlKSBcCiAgICBtYWNybyhFbmRTZW50aW5lbCkgXAogICAgbWFjcm8oUGxheWJhY2tFcnJvcikg
XAogICAgbWFjcm8oSW5pdGlhbGl6ZUZvY3VzKSBcCiAgICBtYWNybyhJbml0aWFsaXplV2luZG93
KSBcCiAgICBtYWNybyhJbml0aWFsTmF2aWdhdGlvbikgXAogICAgbWFjcm8oRm9jdXNTZXRBY3Rp
dmUpIFwKICAgIG1hY3JvKEZvY3VzU2V0Rm9jdXNlZCkgXAogICAgbWFjcm8oU2VuZFJlc2l6ZUV2
ZW50KSBcCiAgICBtYWNybyhIYW5kbGVDb250ZXh0TWVudSkgXAogICAgbWFjcm8oSGFuZGxlS2V5
UHJlc3MpIFwKICAgIG1hY3JvKEhhbmRsZU1vdXNlTW92ZSkgXAogICAgbWFjcm8oSGFuZGxlTW91
c2VQcmVzcykgXAogICAgbWFjcm8oSGFuZGxlTW91c2VSZWxlYXNlKSBcCiAgICBtYWNybyhIYW5k
bGVXaGVlbEV2ZW50KSBcCiAgICBtYWNybyhTY3JvbGxQYWdlKSBcCiAgICBtYWNybyhMb2dpY2Fs
U2Nyb2xsUGFnZSkgXAogICAgbWFjcm8oSW50ZXJwcmV0ZWRLZXlDb21tYW5kcykgXAogICAgbWFj
cm8oRE9NVGltZXJDcmVhdGVkKSBcCiAgICBtYWNybyhET01UaW1lckZpcmVkKSBcCiAgICBtYWNy
byhBc3luY1RpbWVyRmlyZWQpIFwKICAgIG1hY3JvKExvYWRVUkxSZXF1ZXN0KSBcCiAgICBtYWNy
byhUcnlDbG9zZVBhZ2UpIFwKICAgIG1hY3JvKFJlbG9hZEZyYW1lKSBcCiAgICBtYWNybyhTdG9w
TG9hZGluZ0ZyYW1lKSBcCiAgICBtYWNybyhSZXNvdXJjZUxvYWRlckRpZEZhaWwpIFwKICAgIG1h
Y3JvKFJlc291cmNlTG9hZGVyRGlkRmluaXNoTG9hZGluZykgXAogICAgbWFjcm8oUmVzb3VyY2VM
b2FkZXJEaWRSZWNlaXZlUmVzcG9uc2UpIFwKICAgIG1hY3JvKFJlc291cmNlTG9hZGVyRGlkU2Vu
ZERhdGEpIFwKICAgIG1hY3JvKFJlc291cmNlTG9hZGVyRGlkUmVjZWl2ZURhdGEpIFwKICAgIG1h
Y3JvKFJlc291cmNlTG9hZGVyQ3JlYXRlZCkgXAogICAgbWFjcm8oU2F2ZWRCZWdpbkFuaW1hdGlv
blVwZGF0ZVRpbWUpIFwKICAgIG1hY3JvKFNhdmVkVGltZXJOZXh0RmlyZUludGVydmFsKSBcCiAg
ICBcCi8vIGVuZCBvZiBXRUJfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNICgojZW5kaWYgLy8g
RU5BQkxFKFdFQl9SRVBMQVkpCgojZW5kaWYgLy8gV2ViUmVwbGF5SW5wdXRzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223361</attachid>
            <date>2014-02-06 12:07:32 -0800</date>
            <delta_ts>2014-02-11 15:34:48 -0800</delta_ts>
            <desc>new patch</desc>
            <filename>bug-128215-20140206120731.patch</filename>
            <type>text/plain</type>
            <size>176052</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MDlhODU4NmQzZTgyMzBiYjk2YWExMDJlYzFlNTdlNzM2ZGUyMWFkLi5jMjI3N2U0ZDhmY2U5YmIy
ZWUxODRhNmM1OTFlOWNhYTc2NmYyMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTQgQEAKKzIwMTQtMDItMDYgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIFJlcGxheTogdXBzdHJlYW0gcmVwbGF5IGlucHV0IGNvZGUgZ2VuZXJhdG9y
IGFuZCBFbmNvZGVkVmFsdWUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyODIxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCB0aGUgcmVwbGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvci4gTW9z
dCBmZWF0dXJlcyBvZiB0aGUgaW5wdXQgZ2VuZXJhdG9yIGFyZQorICAgICAgICBleGVyY2lzZWQg
YnkgaW5jbHVkZWQgZ2VuZXJhdG9yIHJlZ3Jlc3Npb24gdGVzdHMsIHdoaWNoIHByb2R1Y2UgdXNl
ZnVsIGJ1dAorICAgICAgICBub24tY29tcGlsYWJsZSB0ZXN0IHJlcGxheSBpbnB1dHMuCisKKyAg
ICAgICAgQWRkIEVuY29kZWRWYWx1ZSwgdGhlIG1haW4gcmVwbGF5IGlucHV0IHNlcmlhbGl6YXRp
b24gY2xhc3MgdGhhdCBlbmNvZGVzIGFuZAorICAgICAgICBkZWNvZGVzIGlucHV0cyBhbmQgdGhl
aXIgZGF0YSBiZXR3ZWVuIEMrKyB0eXBlcyBhbmQgdGhlIEpTT04tYmFzZWQgcmVwbGF5IHJlY29y
ZGluZworICAgICAgICBmb3JtYXQuIEVuY29kZWRWYWx1ZSB1c2VzIEVuY29kaW5nVHJhaXRzIHNw
ZWNpYWxpemF0aW9ucyBmb3IgdHlwZS1zcGVjaWZpYyBlbmNvZGluZy4KKyAgICAgICAgUmVsYXRp
dmUgdG8gb3RoZXIgV2ViS2l0IG1hcnNoYWxsaW5nIG1lY2hhbmlzbXMsIEVuY29kZWRWYWx1ZSBp
cyBrZXkvdmFsdWUgYmFzZWQuCisgICAgICAgIEVuY29kZWRWYWx1ZSB1c2VzIEluc3BlY3RvclZh
bHVlIHN1YmNsYXNzZXMgYXMgaXRzIGJhY2tpbmcgZGF0YSBzdHJ1Y3R1cmUuCisKKyAgICAgICAg
QWRkIHNvbWUgbWlzc2luZyBudW1lcmljYWwgY29udmVyc2lvbnMgdG8gSW5zcGVjdG9yVmFsdWUu
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oOgorICAgICAgICAqIHJlcGxheS9FbmNvZGVkVmFsdWUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjphc09iamVjdCk6CisgICAgICAgIChKU0M6OkVuY29k
ZWRWYWx1ZTo6YXNBcnJheSk6CisgICAgICAgIChKU0M6OlNjYWxhckVuY29kaW5nVHJhaXRzPGJv
b2w+OjplbmNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6OlNjYWxhckVuY29kaW5nVHJhaXRzPGRv
dWJsZT46OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpTQzo6U2NhbGFyRW5jb2RpbmdUcmFpdHM8
ZmxvYXQ+OjplbmNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6OlNjYWxhckVuY29kaW5nVHJhaXRz
PGludDMyX3Q+OjplbmNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6OlNjYWxhckVuY29kaW5nVHJh
aXRzPGludDY0X3Q+OjplbmNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6OlNjYWxhckVuY29kaW5n
VHJhaXRzPHVpbnQzMl90Pjo6ZW5jb2RlVmFsdWUpOgorICAgICAgICAoSlNDOjpTY2FsYXJFbmNv
ZGluZ1RyYWl0czx1aW50NjRfdD46OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpTQzo6bG9uZz46
OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88Ym9v
bD4pOgorICAgICAgICAoSlNDOjpFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxkb3VibGU+KToKKyAg
ICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88ZmxvYXQ+KToKKyAgICAgICAgKEpT
Qzo6RW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88aW50MzJfdD4pOgorICAgICAgICAoSlNDOjpFbmNv
ZGVkVmFsdWU6OmNvbnZlcnRUbzxpbnQ2NF90Pik6CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1
ZTo6Y29udmVydFRvPHVpbnQzMl90Pik6CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6Y29u
dmVydFRvPHVpbnQ2NF90Pik6CisgICAgICAgIChKU0M6Omxvbmc+KToKKyAgICAgICAgKEpTQzo6
RW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88U3RyaW5nPik6CisgICAgICAgIChKU0M6OkVuY29kZWRW
YWx1ZTo6cHV0PEVuY29kZWRWYWx1ZT4pOgorICAgICAgICAoSlNDOjpFbmNvZGVkVmFsdWU6OmFw
cGVuZDxFbmNvZGVkVmFsdWU+KToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpnZXQ8RW5j
b2RlZFZhbHVlPik6CisgICAgICAgICogcmVwbGF5L0VuY29kZWRWYWx1ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpFbmNvZGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpF
bmNvZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6
Y3JlYXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpFbmNvZGVkVmFsdWU6OmNyZWF0ZVN0cmluZyk6
CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6fkVuY29kZWRWYWx1ZSk6CisgICAgICAgIChK
U0M6OlNjYWxhckVuY29kaW5nVHJhaXRzOjpkZWNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6OkVu
Y29kaW5nVHJhaXRzPFN0cmluZz46OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpTQzo6RW5jb2Rl
ZFZhbHVlOjpwdXQpOgorICAgICAgICAoSlNDOjpFbmNvZGVkVmFsdWU6OmFwcGVuZCk6CisgICAg
ICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6Z2V0KToKKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5OiBBZGRlZC4KKyAgICAgICAgKFBhcnNlRXhjZXB0
aW9uKToKKyAgICAgICAgKFR5cGVjaGVja0V4Y2VwdGlvbik6CisgICAgICAgIChGcmFtZXdvcmsp
OgorICAgICAgICAoRnJhbWV3b3JrLl9faW5pdF9fKToKKyAgICAgICAgKEZyYW1ld29yay5zZXR0
aW5nKToKKyAgICAgICAgKEZyYW1ld29yay5mcm9tU3RyaW5nKToKKyAgICAgICAgKEZyYW1ld29y
a3MpOgorICAgICAgICAoSW5wdXRRdWV1ZSk6CisgICAgICAgIChJbnB1dFF1ZXVlLl9faW5pdF9f
KToKKyAgICAgICAgKElucHV0UXVldWUuc2V0dGluZyk6CisgICAgICAgIChJbnB1dFF1ZXVlLmZy
b21TdHJpbmcpOgorICAgICAgICAoSW5wdXRRdWV1ZXMpOgorICAgICAgICAoSW5wdXQpOgorICAg
ICAgICAoSW5wdXQuX19pbml0X18pOgorICAgICAgICAoSW5wdXQuc2V0dGluZyk6CisgICAgICAg
IChJbnB1dE1lbWJlcik6CisgICAgICAgIChJbnB1dE1lbWJlci5fX2luaXRfXyk6CisgICAgICAg
IChJbnB1dE1lbWJlci5oYXNfZmxhZyk6CisgICAgICAgIChUeXBlTW9kZSk6CisgICAgICAgIChU
eXBlTW9kZS5fX2luaXRfXyk6CisgICAgICAgIChUeXBlTW9kZS5mcm9tU3RyaW5nKToKKyAgICAg
ICAgKFR5cGVNb2Rlcyk6CisgICAgICAgIChUeXBlKToKKyAgICAgICAgKFR5cGUuX19pbml0X18p
OgorICAgICAgICAoVHlwZS5fX2VxX18pOgorICAgICAgICAoVHlwZS5fX2hhc2hfXyk6CisgICAg
ICAgIChUeXBlLmhhc19mbGFnKToKKyAgICAgICAgKFR5cGUuaXNfc3RydWN0KToKKyAgICAgICAg
KFR5cGUuaXNfZW51bSk6CisgICAgICAgIChUeXBlLmlzX2VudW1fY2xhc3MpOgorICAgICAgICAo
VHlwZS5kZWNsYXJhdGlvbl9raW5kKToKKyAgICAgICAgKFR5cGUucXVhbGlmaWVkX3ByZWZpeCk6
CisgICAgICAgIChUeXBlLnF1YWxpZmllZF9wcmVmaXguaXMpOgorICAgICAgICAoVHlwZS50eXBl
X25hbWUpOgorICAgICAgICAoVHlwZS5zdG9yYWdlX3R5cGUpOgorICAgICAgICAoVHlwZS5ib3Jy
b3dfdHlwZSk6CisgICAgICAgIChUeXBlLmFyZ3VtZW50X3R5cGUpOgorICAgICAgICAoY2hlY2tf
cHJvcGVydGllcyk6CisgICAgICAgIChWZWN0b3JUeXBlKToKKyAgICAgICAgKFZlY3RvclR5cGUu
X19pbml0X18pOgorICAgICAgICAoVmVjdG9yVHlwZS5oYXNfZmxhZyk6CisgICAgICAgIChWZWN0
b3JUeXBlLmlzX3N0cnVjdCk6CisgICAgICAgIChWZWN0b3JUeXBlLmlzX2VudW0pOgorICAgICAg
ICAoVmVjdG9yVHlwZS5pc19lbnVtX2NsYXNzKToKKyAgICAgICAgKFZlY3RvclR5cGUucXVhbGlm
aWVkX3ByZWZpeCk6CisgICAgICAgIChWZWN0b3JUeXBlLnR5cGVfbmFtZSk6CisgICAgICAgIChW
ZWN0b3JUeXBlLmFyZ3VtZW50X3R5cGUpOgorICAgICAgICAoSW5wdXRzTW9kZWwpOgorICAgICAg
ICAoSW5wdXRzTW9kZWwuX19pbml0X18pOgorICAgICAgICAoSW5wdXRzTW9kZWwuZW51bV90eXBl
cyk6CisgICAgICAgIChJbnB1dHNNb2RlbC5nZXRfdHlwZV9mb3JfbWVtYmVyKToKKyAgICAgICAg
KElucHV0c01vZGVsLnBhcnNlX3RvcGxldmVsKToKKyAgICAgICAgKElucHV0c01vZGVsLnBhcnNl
X3R5cGVfd2l0aF9mcmFtZXdvcmtfbmFtZSk6CisgICAgICAgIChJbnB1dHNNb2RlbC5wYXJzZV9p
bnB1dCk6CisgICAgICAgIChJbnB1dHNNb2RlbC50eXBlY2hlY2spOgorICAgICAgICAoSW5wdXRz
TW9kZWwudHlwZWNoZWNrX3R5cGUpOgorICAgICAgICAoSW5wdXRzTW9kZWwudHlwZWNoZWNrX2lu
cHV0KToKKyAgICAgICAgKElucHV0c01vZGVsLnR5cGVjaGVja19pbnB1dF9tZW1iZXIpOgorICAg
ICAgICAoSW5jcmVtZW50YWxGaWxlV3JpdGVyKToKKyAgICAgICAgKEluY3JlbWVudGFsRmlsZVdy
aXRlci5fX2luaXRfXyk6CisgICAgICAgIChJbmNyZW1lbnRhbEZpbGVXcml0ZXIud3JpdGUpOgor
ICAgICAgICAoSW5jcmVtZW50YWxGaWxlV3JpdGVyLmNsb3NlKToKKyAgICAgICAgKGxjZmlyc3Qp
OgorICAgICAgICAod3JhcF93aXRoX2d1YXJkKToKKyAgICAgICAgKEdlbmVyYXRvcik6CisgICAg
ICAgIChHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoR2VuZXJhdG9yLnNldHRpbmcpOgor
ICAgICAgICAoR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChHZW5lcmF0b3Iu
d3JpdGVfb3V0cHV0X2ZpbGVzKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9oZWFkZXIp
OgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2ltcGxlbWVudGF0aW9uKToKKyAgICAgICAg
KEdlbmVyYXRvci5nZW5lcmF0ZV9saWNlbnNlKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0
ZV9pbmNsdWRlcyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfaW5jbHVkZXMuZGVjbGFy
YXRpb24pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2luY2x1ZGVzLmRlY2xhcmF0aW9u
LmlzKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV90eXBlX2ZvcndhcmRfZGVjbGFyYXRp
b25zKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV90eXBlX2ZvcndhcmRfZGVjbGFyYXRp
b25zLmlzKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9jbGFzc19kZWNsYXJhdGlvbik6
CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfaW5wdXRfY29uc3RydWN0b3JfZGVjbGFyYXRp
b24pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2lucHV0X2Rlc3RydWN0b3JfZGVjbGFy
YXRpb24pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2lucHV0X21lbWJlcl9nZXR0ZXIp
OgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2lucHV0X21lbWJlcl9kZWNsYXJhdGlvbik6
CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfaW5wdXRfbWVtYmVyX3R1cGxlcyk6CisgICAg
ICAgIChHZW5lcmF0b3IucXVhbGlmaWVkX2lucHV0X25hbWUpOgorICAgICAgICAoR2VuZXJhdG9y
LmdlbmVyYXRlX2lucHV0X3RyYWl0X2RlY2xhcmF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5n
ZW5lcmF0ZV9lbnVtX3RyYWl0X2RlY2xhcmF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5l
cmF0ZV9mb3JfZWFjaF9tYWNybyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfY2xhc3Nf
aW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2VudW1fdHJhaXRf
aW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2VudW1fdHJhaXRf
aW1wbGVtZW50YXRpb24uaXMpOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2lucHV0X3Ry
YWl0X2ltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF9l
bmNvZGVfaW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2lucHV0
X2RlY29kZV9pbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfY29u
c3RydWN0b3JfaW5pdGlhbGl6ZXJfbGlzdCk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVf
Y29uc3RydWN0b3JfZm9ybWFsc19saXN0KToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9t
ZW1iZXJfYm9ycm93X2V4cHJlc3Npb24pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX21l
bWJlcl9tb3ZlX2V4cHJlc3Npb24pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2NvbnN0
cnVjdG9yX2FyZ3VtZW50c19saXN0KToKKyAgICAgICAgKGdlbmVyYXRlX2Zyb21fc3BlY2lmaWNh
dGlvbik6CisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0
c1RlbXBsYXRlcy5weTogQWRkZWQuCisgICAgICAgIChUZW1wbGF0ZXMpOgorICAgICAgICAqIHJl
cGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL0pTSW5wdXRzLmpzb24tVGVzdFJlcGxheUlucHV0
cy5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL0pT
SW5wdXRzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLWMtc3R5bGUtZW51bS1uby1zdG9yYWdlLmpz
b24tZXJyb3I6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2ZhaWwtb24tZHVwbGljYXRlLWlucHV0LW5hbWVzLmpzb24tZXJyb3I6IEFkZGVkLgorICAgICAg
ICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tZHVwbGljYXRlLXR5cGUt
bmFtZXMuanNvbi1lcnJvcjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZmFpbC1vbi1lbnVtLXR5cGUtbWlzc2luZy12YWx1ZXMuanNvbi1lcnJvcjogQWRk
ZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNz
aW5nLWlucHV0LW1lbWJlci1uYW1lLmpzb24tZXJyb3I6IEFkZGVkLgorICAgICAgICAqIHJlcGxh
eS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tbWlzc2luZy1pbnB1dC1uYW1lLmpzb24t
ZXJyb3I6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Zh
aWwtb24tbWlzc2luZy1pbnB1dC1xdWV1ZS5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiBy
ZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctdHlwZS1tb2RlLmpz
b24tZXJyb3I6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2ZhaWwtb24tbWlzc2luZy10eXBlLW5hbWUuanNvbi1lcnJvcjogQWRkZWQuCisgICAgICAgICog
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1uby1pbnB1dHMuanNvbi1lcnJv
cjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1v
bi1uby10eXBlcy5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9mYWlsLW9uLXVua25vd24taW5wdXQtcXVldWUuanNvbi1lcnJvcjogQWRk
ZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi11bmtu
b3duLW1lbWJlci10eXBlLmpzb24tZXJyb3I6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tdW5rbm93bi10eXBlLW1vZGUuanNvbi1lcnJvcjog
QWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
ZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5
SW5wdXRzLmNwcDogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNv
bi1UZXN0UmVwbGF5SW5wdXRzLmg6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uLVRlc3RSZXBs
YXlJbnB1dHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRz
Lmg6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVy
YXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiBy
ZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1ldmVudC1sb29wLXNoYXBlLXR5
cGVzLmpzb24tZXJyb3I6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2dlbmVyYXRlLWlucHV0LXdpdGgtZ3VhcmQuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNw
cDogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaDogQWRkZWQuCisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC12
ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLXZlY3Rv
ci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oOiBBZGRlZC4KKyAgICAgICAgKiByZXBs
YXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dHMtd2l0aC1mbGFncy5qc29u
LWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9n
ZW5lcmF0ZS1tZW1vaXplZC10eXBlLW1vZGVzLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHA6IEFk
ZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLW1l
bW9pemVkLXR5cGUtbW9kZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmg6IEFkZGVkLgorICAgICAg
ICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tYy1zdHlsZS1lbnVtLW5vLXN0b3JhZ2Uu
anNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1kdXBs
aWNhdGUtaW5wdXQtbmFtZXMuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZmFpbC1vbi1kdXBsaWNhdGUtdHlwZS1uYW1lcy5qc29uOiBBZGRlZC4KKyAgICAgICAg
KiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWVudW0tdHlwZS1taXNzaW5nLXZhbHVlcy5q
c29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3Np
bmctaW5wdXQtbWVtYmVyLW5hbWUuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3Njcmlw
dHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLWlucHV0LW5hbWUuanNvbjogQWRkZWQuCisgICAgICAg
ICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLWlucHV0LXF1ZXVlLmpzb246
IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tbWlzc2luZy10
eXBlLW1vZGUuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFp
bC1vbi1taXNzaW5nLXR5cGUtbmFtZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2Ny
aXB0cy90ZXN0cy9mYWlsLW9uLW5vLWlucHV0cy5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBs
YXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW5vLXR5cGVzLmpzb246IEFkZGVkLgorICAgICAgICAq
IHJlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi1pbnB1dC1xdWV1ZS5qc29uOiBB
ZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLXVua25vd24tbWVt
YmVyLXR5cGUuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFp
bC1vbi11bmtub3duLXR5cGUtbW9kZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2Ny
aXB0cy90ZXN0cy9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZh
bHVlcy5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0
ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBlcy5qc29uOiBBZGRlZC4K
KyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1dC13aXRoLWd1YXJk
Lmpzb246IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWlu
cHV0LXdpdGgtdmVjdG9yLW1lbWJlcnMuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZ2VuZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbjogQWRkZWQuCisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtbWVtb2l6ZWQtdHlwZS1tb2Rlcy5q
c29uOiBBZGRlZC4KKwogMjAxNC0wMi0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTdHJpbmdJbXBsOjpnZXRDaGFyYWN0ZXJzIHRvIFN0
cmluZ0ltcGw6OmNoYXJhY3RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTVm
MTNmYjgzMGE2Zjg2MzgxYWJjNTYyY2JlYTMxYjI1NDMxNzVkNy4uNjFjMTAyMDIwNTdkYzE3Mjc5
M2NmZjExYzQzNTM4ZjBmNTg0MTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTkxOCw5ICs5MTgsMTEgQEAKIAkJOTY5QTA3OUIwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3OTUw
RUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTk3ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVN
YXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
ODhGQzIyMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmNwcCAqLzsgfTsKIAkJOTc4ODAx
NDExNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIzMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0Rh
dGVNYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJOTlFNDVBMTAxOEEwMUYzNTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTBEMThBMDFGMzUw
MDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTlFNDVBMTExOEEwMUYzNTAwMjZEODhGIC8qIElucHV0
Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OUU0NUEwRTE4QTAxRjM1MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5OUU0NUExMjE4QTAxRjM1MDAyNkQ4
OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEwRjE4QTAxRjM1MDAyNkQ4OEYgLyogTm9uZGV0ZXJt
aW5pc3RpY0lucHV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTlFNDVBMjQxOEExQjI1OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTFGMThB
MUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlFNDVBMjUxOEExQjI1OTAwMjZEODhGIC8q
IEVuY29kZWRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OUU0NUEyMDE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmNwcCAqLzsg
fTsKKwkJOTlFNDVBMjYxOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMjExOEExQjI1OTAw
MjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5RTQ1QTI3MThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVB
MjIxOEExQjI1OTAwMjZEODhGIC8qIElucHV0Q3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8q
IE5vbmRldGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTlFNDVBMjMxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0
aWNJbnB1dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkIzQTExQzdCMjEyMDA3
QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovOyB9OwogCQlBMTcxMkIzRjExQzdCMjI4MDA3QTUz
MTUgLyogUmVnRXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNzEyQjQxMTFD
N0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjM1
OSw5ICsyMzYxLDEzIEBACiAJCTk2OUEwOTIyMEVEMUUwOUMwMEYxRjY4MSAvKiBDb21wbGV0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Nzg4RkMyMjE0NzFBRDBDMDA2OENFMkQg
LyogSlNEYXRlTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RhdGVNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc4OEZDMjMxNDcx
QUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNEYXRlTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OUU0NUEw
RDE4QTAxRjM1MDAyNkQ4OEYgLyogRW1wdHlJbnB1dEN1cnNvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBFbXB0eUlucHV0Q3Vyc29yLmg7IHBhdGggPSByZXBsYXkvRW1wdHlJ
bnB1dEN1cnNvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OUU0NUEwRTE4QTAx
RjM1MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSW5wdXRDdXJzb3IuaDsgcGF0aCA9IHJlcGxheS9JbnB1dEN1cnNvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk5OUU0NUEwRjE4QTAxRjM1MDAyNkQ4OEYgLyogTm9uZGV0
ZXJtaW5pc3RpY0lucHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vbmRl
dGVybWluaXN0aWNJbnB1dC5oOyBwYXRoID0gcmVwbGF5L05vbmRldGVybWluaXN0aWNJbnB1dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUU0NUExRDE4QTFCMUU3MDAyNkQ4OEYg
LyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHk7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk5RTQ1QTFFMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9y
UmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBw
YXRoID0gQ29kZUdlbmVyYXRvclJlcGxheUlucHV0c1RlbXBsYXRlcy5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTlFNDVBMUYxOEExQjI1OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRD
dXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW1wdHlJbnB1dEN1cnNv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUU0NUEyMDE4QTFCMjU5MDAyNkQ4
OEYgLyogRW5jb2RlZFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEVuY29kZWRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5RTQ1
QTIxMThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRW5jb2RlZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk5RTQ1QTIyMThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnB1dEN1cnNvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OUU0NUEyMzE4QTFCMjU5MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lu
cHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmRldGVybWluaXN0aWNJ
bnB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkIzQTExQzdCMjEyMDA3
QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcx
MkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ0NjgsMTEgKzQ0NzQsMjMgQEAKIAkJOTlFNDVBMEMxOEEwMUU5MzAwMjZEODhGIC8q
IHJlcGxheSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
OTlFNDVBMEQxOEEwMUYzNTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCAqLywKLQkJCQk5
OUU0NUEwRTE4QTAxRjM1MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCAqLywKLQkJCQk5OUU0NUEw
RjE4QTAxRjM1MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggKi8sCisJCQkJOTlF
NDVBMUMxOEExQjFCODAwMjZEODhGIC8qIHNjcmlwdHMgKi8sCisJCQkJOTlFNDVBMjAxOEExQjI1
OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5jcHAgKi8sCisJCQkJOTlFNDVBMjExOEExQjI1OTAw
MjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oICovLAorCQkJCTk5RTQ1QTFGMThBMUIyNTkwMDI2RDg4
RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggKi8sCisJCQkJOTlFNDVBMjIxOEExQjI1OTAwMjZEODhG
IC8qIElucHV0Q3Vyc29yLmggKi8sCisJCQkJOTlFNDVBMjMxOEExQjI1OTAwMjZEODhGIC8qIE5v
bmRldGVybWluaXN0aWNJbnB1dC5oICovLAorCQkJKTsKKwkJCXBhdGggPSByZXBsYXk7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk5OUU0NUExQzE4QTFCMUI4MDAyNkQ4OEYg
Lyogc2NyaXB0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJOTlFNDVBMUQxOEExQjFFNzAwMjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMu
cHkgKi8sCisJCQkJOTlFNDVBMUUxOEExQjFFNzAwMjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBs
YXlJbnB1dHNUZW1wbGF0ZXMucHkgKi8sCiAJCQkpOwotCQkJbmFtZSA9IHJlcGxheTsKKwkJCXBh
dGggPSBzY3JpcHRzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJQTUxM0U1
Q0MxODVGQjk5MjAwN0U5NUFEIC8qIGFnZW50cyAqLyA9IHsKQEAgLTQ2ODAsNiArNDY5OCw3IEBA
CiAJCQkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFRDBFMTZGNUNEMDBCMzQ0NjAgLyogQ2FsbERhdGEu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk5RTQ1QTI2MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVk
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjlEOERFMEVEMjIwNUIwMEI4OTYxOSAvKiBD
YWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUVGMTc5ODdBQjYwMDI5OURCMiAv
KiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NUUzQkMwNTBFMUFFNjgy
MDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDg0MSw2ICs0
ODYwLDcgQEAKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQ
bGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUUxNzE3OEU3MzAwNjkwQzdG
IC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMx
NEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUU0NUEy
NzE4QTFCMjU5MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
OEE5NzdCMTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkJFMEY3NTE2QzFEQjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDkyNCw3ICs0OTQ0LDYg
QEAKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0xMVk0uaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVk
Tm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAg
LyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLAotCQkJCTk5RTQ1QTExMThBMDFGMzUwMDI2
RDg4RiAvKiBJbnB1dEN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREQxNzE3OEUx
QzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkRFMTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJFMDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQ5NDUsNiArNDk2NCw3IEBACiAJCQkJRERGN0FCRDQxMUY2MEVE
MjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNC
RTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTlFNDVBMjQxOEExQjI1OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRD
dXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBH
Q0luY29taW5nUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUQxN0I2QjU0
NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyQjY2QUUxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0
LmggaW4gSGVhZGVycyAqLywKQEAgLTUwOTUsNyArNTExNSw2IEBACiAJCQkJQkMxOEM0NUUwRTE2
RjVDRDAwQjM0NDYwIC8qIEpTU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUYwMTc5
ODdBQjYwMDI5OURCMiAvKiBKU1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MjcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKLQkJCQk5
OUU0NUExMjE4QTAxRjM1MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NkU4NTUzOTExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI4MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU1N0cmluZ1JlZi5oIGluIEhlYWRlcnMgKi8sCkBAIC01MjQ0LDYgKzUyNjMsNyBAQAogCQkJ
CTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDU0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3BlcnR5T2Zm
c2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYgLyogTm9u
ZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NTBFMTZGNUNE
MDBCMzQ0NjAgLyogUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QzE1
RUQ4RTQ2MDBGMTY3QjIgLyogUHJvcGVydHlTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMu
aCBpbiBIZWFkZXJzICovLApAQCAtNTI5Niw3ICs1MzE2LDYgQEAKIAkJCQlFNDlEQzE2RDEyRUYy
OTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRU
aHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTlFNDVBMTAxOEEwMUYzNTAwMjZEODhGIC8q
IEVtcHR5SW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTU0MUIyMTYxM0MxRkIw
MENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFNTQx
NDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0MxRUFGMjE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmggaW4gSGVhZGVycyAqLywK
QEAgLTYxMjAsNiArNjEzOSw3IEBACiAJCQkJMTQ4MkI3NEUwQTQzMDMyODAwNTE3Q0ZDIC8qIEpT
U3RyaW5nUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NkFBQjM4MEI2NkE5NDQwMEU1NUYx
NiAvKiBKU1N0cmluZ1JlZkNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTE5RDBDMTU3RUUw
OUYwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTk5RTQ1QTI1MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyQjY2RkExN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVj
dG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyog
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjY2RkMx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5jcHAKaW5kZXggNGNkZjcxZTkyZmJkNTlkZTJhN2JjNzhmMjhjNDRhZmFkODllNGFmNC4u
MTJiMTFmNzVmNjdjNzU2YzMzNTFkYTIyYjRlMDYzNWY1YjkyZDlhNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtNDky
LDcgKzQ5Miw3IEBAIGJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKGRvdWJsZSopIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcihs
b25nKikgY29uc3QKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKGZsb2F0KikgY29uc3QK
IHsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01MDIsMTIgKzUwMiwyNyBAQCBib29sIEluc3Bl
Y3RvclZhbHVlOjphc051bWJlcihpbnQqKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
Ym9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQqKSBjb25zdAoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIobG9uZyopIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3RvclZhbHVlOjphc051
bWJlcihsb25nIGxvbmcqKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBJ
bnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgbG9uZyopIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcih1bnNpZ25lZCBp
bnQqKSBjb25zdAorYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgbG9uZyBs
b25nKikgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01ODQsMTEgKzU5OSwxMSBA
QCBib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGRvdWJsZSogb3V0cHV0KSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVt
YmVyKGxvbmcqIG91dHB1dCkgY29uc3QKK2Jvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1i
ZXIoZmxvYXQqIG91dHB1dCkgY29uc3QKIHsKICAgICBpZiAodHlwZSgpICE9IFR5cGVOdW1iZXIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8bG9uZz4o
bV9kb3VibGVWYWx1ZSk7CisgICAgKm91dHB1dCA9IHN0YXRpY19jYXN0PGZsb2F0PihtX2RvdWJs
ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjAwLDYgKzYxNSwzMCBAQCBib29s
IEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGludCogb3V0cHV0KSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCitib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKHVuc2ln
bmVkKiBvdXRwdXQpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSAhPSBUeXBlTnVtYmVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgKm91dHB1dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2RvdWJsZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnNwZWN0b3JCYXNp
Y1ZhbHVlOjphc051bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSAh
PSBUeXBlTnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgKm91dHB1dCA9IHN0YXRp
Y19jYXN0PGxvbmc+KG1fZG91YmxlVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGxvbmcgbG9uZyogb3V0cHV0KSBjb25zdAor
eworICAgIGlmICh0eXBlKCkgIT0gVHlwZU51bWJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxsb25nPihtX2RvdWJsZVZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNpZ25l
ZCBsb25nKiBvdXRwdXQpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlTnVtYmVyKQpA
QCAtNjA4LDExICs2NDcsMTEgQEAgYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1
bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
SW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgaW50KiBvdXRwdXQpIGNvbnN0
Citib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyog
b3V0cHV0KSBjb25zdAogewogICAgIGlmICh0eXBlKCkgIT0gVHlwZU51bWJlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1f
ZG91YmxlVmFsdWUpOworICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxv
bmc+KG1fZG91YmxlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCAwNmM1ZGZl
OTc3NWJkYWVjOGQ2OTg0OWU5ZjYxMGFiZTlmODM4MmI1Li4zYjg2MTY2NGRhMzM3OWRlYjU2ODli
YzAwMTM0ZGUyNmViYTY3M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTY3LDEwICs2NywxMyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgYXNCb29sZWFuKGJvb2wqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGFzTnVtYmVyKGRvdWJsZSogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIobG9uZyogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIo
ZmxvYXQqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGludCogb3V0
cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQqIG91dHB1dCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGxvbmcqIG91dHB1dCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGxvbmcgbG9uZyogb3V0cHV0KSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQgbG9uZyogb3V0cHV0KSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQgaW50KiBvdXRwdXQpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGFzU3RyaW5nKFN0cmluZyogb3V0cHV0KSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgYXNWYWx1ZShSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBvdXRwdXQpOwogICAgIHZp
cnR1YWwgYm9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KTsKQEAg
LTk5LDEwICsxMDIsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGFzQm9vbGVhbihi
b29sKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihk
b3VibGUqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVy
KGxvbmcqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFzTnVtYmVy
KGZsb2F0KiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBhc051bWJl
cihpbnQqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVy
KHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IGFzTnVtYmVyKHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBhc051bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBhc051bWJlcihsb25nIGxvbmcqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIGFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyogb3V0cHV0KSBj
b25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRl
ciogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Jl
cGxheS9FbmNvZGVkVmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxOTFkNDE0OGVmYmY0ZGZmOTY2M2Nj
ZDk5ZTZhYzYxNTI1YzNjYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHAKQEAgLTAsMCArMSwyMDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRW5jb2RlZFZhbHVlLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKworI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgor
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgSlNDIHsKKworUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEVuY29kZWRWYWx1ZTo6YXNPYmplY3QoKQoreworICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdDsKKyAgICBib29sIGNhc3RTdWNjZWVkZWQgPSBt
X3ZhbHVlLT5hc09iamVjdCgmcmVzdWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVk
ZWQsIGNhc3RTdWNjZWVkZWQpOworCisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Cit9CisK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEVuY29kZWRWYWx1ZTo6YXNBcnJheSgpCit7Cisg
ICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiByZXN1bHQ7CisgICAgYm9vbCBjYXN0U3VjY2VlZGVk
ID0gbV92YWx1ZS0+YXNBcnJheSgmcmVzdWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNj
ZWVkZWQsIGNhc3RTdWNjZWVkZWQpOworCisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Cit9
CisKK3RlbXBsYXRlPD4gRW5jb2RlZFZhbHVlIFNjYWxhckVuY29kaW5nVHJhaXRzPGJvb2w+Ojpl
bmNvZGVWYWx1ZShjb25zdCBib29sJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gRW5jb2RlZFZhbHVl
KEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOworfQorCit0ZW1wbGF0ZTw+IEVu
Y29kZWRWYWx1ZSBTY2FsYXJFbmNvZGluZ1RyYWl0czxkb3VibGU+OjplbmNvZGVWYWx1ZShjb25z
dCBkb3VibGUmIHZhbHVlKQoreworICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yQmFz
aWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPD4gRW5jb2RlZFZhbHVlIFNj
YWxhckVuY29kaW5nVHJhaXRzPGZsb2F0Pjo6ZW5jb2RlVmFsdWUoY29uc3QgZmxvYXQmIHZhbHVl
KQoreworICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRl
KChkb3VibGUpdmFsdWUpKTsKK30KKwordGVtcGxhdGU8PiBFbmNvZGVkVmFsdWUgU2NhbGFyRW5j
b2RpbmdUcmFpdHM8aW50MzJfdD46OmVuY29kZVZhbHVlKGNvbnN0IGludDMyX3QmIHZhbHVlKQor
eworICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKChk
b3VibGUpdmFsdWUpKTsKK30KKwordGVtcGxhdGU8PiBFbmNvZGVkVmFsdWUgU2NhbGFyRW5jb2Rp
bmdUcmFpdHM8aW50NjRfdD46OmVuY29kZVZhbHVlKGNvbnN0IGludDY0X3QmIHZhbHVlKQorewor
ICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKChkb3Vi
bGUpdmFsdWUpKTsKK30KKwordGVtcGxhdGU8PiBFbmNvZGVkVmFsdWUgU2NhbGFyRW5jb2RpbmdU
cmFpdHM8dWludDMyX3Q+OjplbmNvZGVWYWx1ZShjb25zdCB1aW50MzJfdCYgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUoKGRvdWJs
ZSl2YWx1ZSkpOworfQorCit0ZW1wbGF0ZTw+IEVuY29kZWRWYWx1ZSBTY2FsYXJFbmNvZGluZ1Ry
YWl0czx1aW50NjRfdD46OmVuY29kZVZhbHVlKGNvbnN0IHVpbnQ2NF90JiB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSgoZG91Ymxl
KXZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPD4gRW5jb2RlZFZhbHVlIFNjYWxhckVuY29kaW5nVHJh
aXRzPHVuc2lnbmVkIGxvbmc+OjplbmNvZGVWYWx1ZShjb25zdCB1bnNpZ25lZCBsb25nJiB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0
ZSgoZG91YmxlKXZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPD4gYm9vbCBFbmNvZGVkVmFsdWU6OmNv
bnZlcnRUbzxib29sPigpCit7CisgICAgYm9vbCByZXN1bHQ7CisgICAgYm9vbCBjYXN0U3VjY2Vl
ZGVkID0gbV92YWx1ZS0+YXNCb29sZWFuKCZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0
ZW1wbGF0ZTw+IGRvdWJsZSBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxkb3VibGU+KCkKK3sKKyAg
ICBkb3VibGUgcmVzdWx0OworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzTnVt
YmVyKCZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2Nl
ZWRlZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTw+IGZsb2F0IEVuY29k
ZWRWYWx1ZTo6Y29udmVydFRvPGZsb2F0PigpCit7CisgICAgZmxvYXQgcmVzdWx0OworICAgIGJv
b2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzTnVtYmVyKCZyZXN1bHQpOworICAgIEFTU0VS
VF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit0ZW1wbGF0ZTw+IGludDMyX3QgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88aW50
MzJfdD4oKQoreworICAgIGludDMyX3QgcmVzdWx0OworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9
IG1fdmFsdWUtPmFzTnVtYmVyKCZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2Nl
ZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0
ZTw+IGludDY0X3QgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88aW50NjRfdD4oKQoreworICAgIGlu
dDY0X3QgcmVzdWx0OworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzTnVtYmVy
KCZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRl
ZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTw+IHVpbnQzMl90IEVuY29k
ZWRWYWx1ZTo6Y29udmVydFRvPHVpbnQzMl90PigpCit7CisgICAgdWludDMyX3QgcmVzdWx0Owor
ICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzTnVtYmVyKCZyZXN1bHQpOworICAg
IEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTw+IHVpbnQ2NF90IEVuY29kZWRWYWx1ZTo6Y29udmVy
dFRvPHVpbnQ2NF90PigpCit7CisgICAgdWludDY0X3QgcmVzdWx0OworICAgIGJvb2wgY2FzdFN1
Y2NlZWRlZCA9IG1fdmFsdWUtPmFzTnVtYmVyKCZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQo
Y2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit0ZW1wbGF0ZTw+IHVuc2lnbmVkIGxvbmcgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88dW5zaWdu
ZWQgbG9uZz4oKQoreworICAgIHVuc2lnbmVkIGxvbmcgcmVzdWx0OworICAgIGJvb2wgY2FzdFN1
Y2NlZWRlZCA9IG1fdmFsdWUtPmFzTnVtYmVyKCZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQo
Y2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit0ZW1wbGF0ZTw+IFN0cmluZyBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxTdHJpbmc+KCkKK3sK
KyAgICBTdHJpbmcgcmVzdWx0OworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFz
U3RyaW5nKCZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1
Y2NlZWRlZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTw+Cit2b2lkIEVu
Y29kZWRWYWx1ZTo6cHV0PEVuY29kZWRWYWx1ZT4oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHR5
cGVuYW1lIEVuY29kaW5nVHJhaXRzPEVuY29kZWRWYWx1ZT46OkRlY29kZWRUeXBlJiB2YWx1ZSkK
K3sKKyAgICBhc09iamVjdCgpLT5zZXRWYWx1ZShrZXksIHZhbHVlLm1fdmFsdWUpOworfQorCit0
ZW1wbGF0ZTw+Cit2b2lkIEVuY29kZWRWYWx1ZTo6YXBwZW5kPEVuY29kZWRWYWx1ZT4oY29uc3Qg
dHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8RW5jb2RlZFZhbHVlPjo6RGVjb2RlZFR5cGUmIHZhbHVl
KQoreworICAgIGFzQXJyYXkoKS0+cHVzaFZhbHVlKHZhbHVlLm1fdmFsdWUpOworfQorCit0ZW1w
bGF0ZTw+Citib29sIEVuY29kZWRWYWx1ZTo6Z2V0PEVuY29kZWRWYWx1ZT4oY29uc3QgU3RyaW5n
JiBrZXksIHR5cGVuYW1lIEVuY29kaW5nVHJhaXRzPEVuY29kZWRWYWx1ZT46OkRlY29kZWRUeXBl
JiBkZWNvZGVkVmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+
IGluc3BlY3RvclZhbHVlKGFzT2JqZWN0KCktPmdldChrZXkpKTsKKyAgICBpZiAoIWluc3BlY3Rv
clZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkZWNvZGVkVmFsdWUgPSBFbmNv
ZGVkVmFsdWUoaW5zcGVjdG9yVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCisKK307IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUyMDI4YzBj
ZWVkY2MzNmQ2ZDcxYzI1MzNjZmVlMGQ4NzU5ZWE0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmgKQEAgLTAsMCArMSwyMjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwor
ICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVu
Y29kZWRWYWx1ZV9oCisjZGVmaW5lIEVuY29kZWRWYWx1ZV9oCisKKyNpZiBFTkFCTEUoV0VCX1JF
UExBWSkKKworI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgTm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBFbmNvZGluZ1RyYWl0czsKKworY2xhc3MgRW5jb2RlZFZhbHVlIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBFbmNvZGVkVmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
PiB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKSB7IH0KKworICAgIEVuY29kZWRWYWx1
ZSgpCisgICAgICAgIDogbV92YWx1ZShudWxscHRyKSB7IH0KKworICAgIHN0YXRpYyBFbmNvZGVk
VmFsdWUgY3JlYXRlT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBFbmNvZGVkVmFsdWUo
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgRW5jb2RlZFZhbHVlIGNyZWF0ZUFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBFbmNv
ZGVkVmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBFbmNvZGVkVmFsdWUgY3JlYXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
CisgICAgeworICAgICAgICByZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9y
U3RyaW5nOjpjcmVhdGUodmFsdWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRW5jb2RlZFZhbHVl
IGNyZWF0ZVN0cmluZyhjb25zdCBjaGFyKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBF
bmNvZGVkVmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2YWx1ZSkpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgfkVuY29kZWRWYWx1ZSgpIHsgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICB2b2lkIHB1dChjb25zdCBTdHJpbmcmLCBjb25zdCB0eXBlbmFtZSBF
bmNvZGluZ1RyYWl0czxUPjo6RGVjb2RlZFR5cGUmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkRl
Y29kZWRUeXBlJik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGdldChjb25zdCBT
dHJpbmcmLCB0eXBlbmFtZSBFbmNvZGluZ1RyYWl0czxUPjo6RGVjb2RlZFR5cGUmKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGdldChjb25zdCBTdHJpbmcmLCBzdGQ6OnVuaXF1ZV9w
dHI8dHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkRlY29kZWRUeXBlPiYpOworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0VG8oKTsKKworICAgIEpTX0VYUE9SVF9QUklWQVRF
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGFzT2JqZWN0KCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBh
c0FycmF5KCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+IG1fdmFsdWU7Cit9OworCit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgRW5j
b2RlZFZhbHVlOjpjb252ZXJ0VG88Ym9vbD4oKTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZB
VEUgZG91YmxlIEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGRvdWJsZT4oKTsKK3RlbXBsYXRlPD4g
SlNfRVhQT1JUX1BSSVZBVEUgZmxvYXQgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88ZmxvYXQ+KCk7
Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGludDMyX3QgRW5jb2RlZFZhbHVlOjpjb252
ZXJ0VG88aW50MzJfdD4oKTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCBF
bmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxpbnQ2NF90PigpOwordGVtcGxhdGU8PiBKU19FWFBPUlRf
UFJJVkFURSB1aW50MzJfdCBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzx1aW50MzJfdD4oKTsKK3Rl
bXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgdWludDY0X3QgRW5jb2RlZFZhbHVlOjpjb252ZXJ0
VG88dWludDY0X3Q+KCk7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGxv
bmcgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88dW5zaWduZWQgbG9uZz4oKTsKK3RlbXBsYXRlPD4g
SlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPFN0cmluZz4o
KTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBFbmNvZGluZ1RyYWl0cyB7CisgICAg
dHlwZWRlZiBUIERlY29kZWRUeXBlOworCisgICAgc3RhdGljIEVuY29kZWRWYWx1ZSBlbmNvZGVW
YWx1ZShEZWNvZGVkVHlwZSk7CisgICAgc3RhdGljIEVuY29kZWRWYWx1ZSBlbmNvZGVWYWx1ZShj
b25zdCBEZWNvZGVkVHlwZSYpOworCisgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5jb2Rl
ZFZhbHVlJiwgRGVjb2RlZFR5cGUmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVWYWx1ZShFbmNv
ZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2RlZFR5cGU+Jik7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlcj4KK3N0cnVjdCBFbmNvZGluZ1RyYWl0czxWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlcj4+IHsKKyAgICB0eXBlZGVmIFZlY3Rvcjx0eXBlbmFtZSBFbmNvZGluZ1Ry
YWl0czxUPjo6RGVjb2RlZFR5cGUsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+IERl
Y29kZWRUeXBlOworCisgICAgc3RhdGljIEVuY29kZWRWYWx1ZSBlbmNvZGVWYWx1ZShjb25zdCBE
ZWNvZGVkVHlwZSYgdmVjdG9yT2ZWYWx1ZXMpCisgICAgeworICAgICAgICBFbmNvZGVkVmFsdWUg
ZW5jb2RlZFZlY3RvciA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlQXJyYXkoKTsKKyAgICAgICAgZm9y
IChjb25zdCB0eXBlbmFtZSBFbmNvZGluZ1RyYWl0czxUPjo6RGVjb2RlZFR5cGUmIHZhbHVlIDog
dmVjdG9yT2ZWYWx1ZXMpCisgICAgICAgICAgICBlbmNvZGVkVmVjdG9yLmFwcGVuZDx0eXBlbmFt
ZSBFbmNvZGluZ1RyYWl0czxUPjo6RGVjb2RlZFR5cGU+KHZhbHVlKTsKKworICAgICAgICByZXR1
cm4gc3RkOjptb3ZlKGVuY29kZWRWZWN0b3IpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGRl
Y29kZVZhbHVlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZlY3RvciwgRGVjb2RlZFR5cGUmIGRlY29k
ZWRWYWx1ZSkKKyAgICB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
PiBpbnNwZWN0b3JBcnJheSA9IGVuY29kZWRWZWN0b3IuYXNBcnJheSgpOworICAgICAgICBkZWNv
ZGVkVmFsdWUgPSBWZWN0b3I8dHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkRlY29kZWRUeXBl
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPihpbnNwZWN0b3JBcnJheS0+bGVuZ3Ro
KCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3BlY3RvckFycmF5LT5sZW5n
dGgoKTsgKytpKSB7CisgICAgICAgICAgICBFbmNvZGVkVmFsdWUgZW5jb2RlZEVsZW1lbnQoaW5z
cGVjdG9yQXJyYXktPmdldChpKSk7CisgICAgICAgICAgICBpZiAoIUVuY29kaW5nVHJhaXRzPFQ+
OjpkZWNvZGVWYWx1ZShlbmNvZGVkRWxlbWVudCwgZGVjb2RlZFZhbHVlLmF0KGkpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8RW5jb2RlZFZh
bHVlPiB7CisgICAgdHlwZWRlZiBFbmNvZGVkVmFsdWUgRGVjb2RlZFR5cGU7CisgICAgLy8gV2Ug
c2hvdWxkIG5ldmVyIGF0dGVtcHQgdG8gZGVjb2RlIG9yIGVuY29kZSBhbiBlbmNvZGVkIHZhbHVl
LAorICAgIC8vIHNvIGVuY29kZVZhbHVlIGFuZCBkZWNvZGVWYWx1ZSBhcmUgaW50ZW50aW9uYWxs
eSBvbWl0dGVkIGhlcmUuCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFNjYWxh
ckVuY29kaW5nVHJhaXRzIHsKKyAgICB0eXBlZGVmIFQgRGVjb2RlZFR5cGU7CisKKyAgICBzdGF0
aWMgSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZFZhbHVlIGVuY29kZVZhbHVlKGNvbnN0IERlY29k
ZWRUeXBlJiBkZWNvZGVkVmFsdWUpOworICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKEVuY29k
ZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBEZWNvZGVkVHlwZSYgZGVjb2RlZFZhbHVlKQorICAgIHsK
KyAgICAgICAgZGVjb2RlZFZhbHVlID0gZW5jb2RlZFZhbHVlLmNvbnZlcnRUbzxEZWNvZGVkVHlw
ZT4oKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW5jb2RpbmdUcmFpdHM8Ym9vbD4gOiBwdWJsaWMgU2NhbGFyRW5jb2RpbmdUcmFpdHM8Ym9v
bD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8ZG91YmxlPiA6IHB1Ymxp
YyBTY2FsYXJFbmNvZGluZ1RyYWl0czxkb3VibGU+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEVu
Y29kaW5nVHJhaXRzPGZsb2F0PiA6IHB1YmxpYyBTY2FsYXJFbmNvZGluZ1RyYWl0czxmbG9hdD4g
eyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8aW50MzJfdD4gOiBwdWJsaWMg
U2NhbGFyRW5jb2RpbmdUcmFpdHM8aW50MzJfdD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5j
b2RpbmdUcmFpdHM8aW50NjRfdD4gOiBwdWJsaWMgU2NhbGFyRW5jb2RpbmdUcmFpdHM8aW50NjRf
dD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8dWludDMyX3Q+IDogcHVi
bGljIFNjYWxhckVuY29kaW5nVHJhaXRzPHVpbnQzMl90PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbmNvZGluZ1RyYWl0czx1aW50NjRfdD4gOiBwdWJsaWMgU2NhbGFyRW5jb2RpbmdUcmFpdHM8
dWludDY0X3Q+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPHVuc2lnbmVk
IGxvbmc+IDogcHVibGljIFNjYWxhckVuY29kaW5nVHJhaXRzPHVuc2lnbmVkIGxvbmc+IHsgfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8U3RyaW5nPiA6IHB1YmxpYyBTY2Fs
YXJFbmNvZGluZ1RyYWl0czxTdHJpbmc+IHsKKyAgICBzdGF0aWMgRW5jb2RlZFZhbHVlIGVuY29k
ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gRW5jb2Rl
ZFZhbHVlOjpjcmVhdGVTdHJpbmcodmFsdWUpOworICAgIH0KK307CisKKy8vIEJhc2UgY2FzZXMg
Zm9yIGxvYWRpbmcgYW5kIHN0b3JpbmcgdmFsdWVzLgordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJ
VkFURQordm9pZCBFbmNvZGVkVmFsdWU6OnB1dDxFbmNvZGVkVmFsdWU+KGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB0eXBlbmFtZSBFbmNvZGluZ1RyYWl0czxFbmNvZGVkVmFsdWU+OjpEZWNvZGVk
VHlwZSYpOworCit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFCit2b2lkIEVuY29kZWRWYWx1
ZTo6YXBwZW5kPEVuY29kZWRWYWx1ZT4oY29uc3QgdHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8RW5j
b2RlZFZhbHVlPjo6RGVjb2RlZFR5cGUmKTsKKwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFU
RQorYm9vbCBFbmNvZGVkVmFsdWU6OmdldDxFbmNvZGVkVmFsdWU+KGNvbnN0IFN0cmluZyYga2V5
LCB0eXBlbmFtZSBFbmNvZGluZ1RyYWl0czxFbmNvZGVkVmFsdWU+OjpEZWNvZGVkVHlwZSYpOwor
CisvLyBMb2FkIGFuZCBzdG9yZSB0eXBlcyB3aXRoIGFuIGFjY29tcGFueWluZyBFbmNvZGluZ1Ry
YWl0cyBpbXBsZW1lbnRhdGlvbi4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIEVuY29kZWRW
YWx1ZTo6cHV0KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB0eXBlbmFtZSBFbmNvZGluZ1RyYWl0
czxUPjo6RGVjb2RlZFR5cGUmIHZhbHVlKQoreworICAgIEVuY29kZWRWYWx1ZSBlbmNvZGVkVmFs
dWUgPSBFbmNvZGluZ1RyYWl0czxUPjo6ZW5jb2RlVmFsdWUodmFsdWUpOworICAgIHB1dDxFbmNv
ZGVkVmFsdWU+KGtleSwgZW5jb2RlZFZhbHVlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3ZvaWQgRW5jb2RlZFZhbHVlOjphcHBlbmQoY29uc3QgdHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8
VD46OkRlY29kZWRUeXBlJiB2YWx1ZSkKK3sKKyAgICBFbmNvZGVkVmFsdWUgZW5jb2RlZFZhbHVl
ID0gRW5jb2RpbmdUcmFpdHM8VD46OmVuY29kZVZhbHVlKHZhbHVlKTsKKyAgICBhcHBlbmQ8RW5j
b2RlZFZhbHVlPihlbmNvZGVkVmFsdWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9v
bCBFbmNvZGVkVmFsdWU6OmdldChjb25zdCBTdHJpbmcmIGtleSwgdHlwZW5hbWUgRW5jb2RpbmdU
cmFpdHM8VD46OkRlY29kZWRUeXBlJiBkZWNvZGVkVmFsdWUpCit7CisgICAgRW5jb2RlZFZhbHVl
IGVuY29kZWRWYWx1ZTsKKyAgICBpZiAoIWdldDxFbmNvZGVkVmFsdWU+KGtleSwgZW5jb2RlZFZh
bHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIEVuY29kaW5nVHJhaXRz
PFQ+OjpkZWNvZGVWYWx1ZShlbmNvZGVkVmFsdWUsIGRlY29kZWRWYWx1ZSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Citib29sIEVuY29kZWRWYWx1ZTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5
LCBzdGQ6OnVuaXF1ZV9wdHI8dHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkRlY29kZWRUeXBl
PiYgZGVjb2RlZFZhbHVlKQoreworICAgIEVuY29kZWRWYWx1ZSBlbmNvZGVkVmFsdWU7CisgICAg
aWYgKCFnZXQ8RW5jb2RlZFZhbHVlPihrZXksIGVuY29kZWRWYWx1ZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBFbmNvZGluZ1RyYWl0czxUPjo6ZGVjb2RlVmFsdWUoZW5j
b2RlZFZhbHVlLCBkZWNvZGVkVmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNp
bmcgSlNDOjpFbmNvZGVkVmFsdWU7Cit1c2luZyBKU0M6OkVuY29kaW5nVHJhaXRzOworCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCisKKyNlbmRpZiAvLyBFbmNvZGVkVmFsdWVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JSZXBsYXlJbnB1dHMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
Q29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWVhNTE5NDYzY2Q4YzUw
MmNiOTdhOTEyM2FlMmEwMTY1NmMzMDExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKQEAg
LTAsMCArMSw5ODEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQg
cmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0
ZQoraW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgbG9nZ2luZworZnJvbSBDb2RlR2VuZXJhdG9yUmVw
bGF5SW5wdXRzVGVtcGxhdGVzIGltcG9ydCBUZW1wbGF0ZXMKKwordHJ5OgorICAgIGltcG9ydCBq
c29uCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgor
CisjIENvbmZpZ3VyYXRpb24gdmFsdWVzIGFyZSBmaXJzdCBsb29rZWQgdXAgaW4gdGhlIGZyYW1l
d29yayBjb25maWd1cmF0aW9uLAorIyBhbmQgdGhlbiBpbiB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRp
b24gaWYgdGhlcmUgaXMgbm8gZnJhbWV3b3JrLXNwZWNpZmljIHZhbHVlLgorR0xPQkFMX0NPTkZJ
RyA9IHsKKyAgICAiYmFzZUZpbGVuYW1lIjogIlJlcGxheUlucHV0cyIsCisgICAgImd1YXJkQ29u
ZGl0aW9uIjogIkVOQUJMRShXRUJfUkVQTEFZKSIsCisgICAgInRyYWl0c0ZyYW1ld29ya05hbWUi
OiAiSmF2YVNjcmlwdENvcmUiLAorCisgICAgIyBUaGVzZSBhcmUgZm9ybWF0dGVkIGFzIChbYWxs
b3dlZF9mcmFtZXdvcmtzXSwgKGZyYW1ld29yaywgaGVhZGVyX3BhdGgpKS4KKyAgICAjIFRoZSBn
ZW5lcmF0b3IgY2FuIGZpZ3VyZSBvdXQgaG93IHRvIGZvcm1hdCB0aGUgaW5jbHVkZXMuCisgICAg
ImhlYWRlckluY2x1ZGVzIjogWworICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAo
IldlYkNvcmUiLCAicmVwbGF5L0V2ZW50TG9vcElucHV0LmgiKQorICAgICAgICApLAorICAgICAg
ICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAoIkphdmFTY3Jp
cHRDb3JlIiwgInJlcGxheS9FbmNvZGVkVmFsdWUuaCIpCisgICAgICAgICksCisgICAgICAgIChb
IkphdmFTY3JpcHRDb3JlIl0sCisgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJlcGxh
eS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaCIpCisgICAgICAgICksCisgICAgICAgIChbIldlYkNv
cmUiXSwKKyAgICAgICAgICAgICgiV1RGIiwgInd0Zi90ZXh0L1dURlN0cmluZy5oIikKKyAgICAg
ICAgKSwKKworICAgICAgICAjIFRlc3RpbmcgZml4dHVyZXMuCisgICAgICAgIChbIlRlc3QiXSwK
KyAgICAgICAgICAgICgiV2ViQ29yZSIsICJwbGF0Zm9ybS9FeHRlcm5hbE5hbWVzcGFjZUhlYWRl
ckluY2x1ZGVEdW1teS5oIikKKyAgICAgICAgKSwKKyAgICAgICAgKFsiVGVzdCJdLAorICAgICAg
ICAgICAgKCJUZXN0IiwgInBsYXRmb3JtL0ludGVybmFsTmFtZXNwYWNlSGVhZGVySW5jbHVkZUR1
bW15LmgiKQorICAgICAgICApCisgICAgXSwKKworICAgICJpbXBsSW5jbHVkZXMiOiBbCisgICAg
ICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICgiV2ViQ29yZSIsICJyZXBsYXkvUmVwbGF5
SW5wdXRUeXBlcy5oIikKKyAgICAgICAgKSwKKyAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAg
ICAgICAgKCJXZWJDb3JlIiwgInJlcGxheS9TZXJpYWxpemF0aW9uTWV0aG9kcy5oIikKKyAgICAg
ICAgKSwKKyAgICAgICAgKFsiV2ViQ29yZSIsICJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAg
ICAgKCJKYXZhU2NyaXB0Q29yZSIsICJpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgiKQorICAg
ICAgICApLAorICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAgICAgKCJXVEYi
LCAid3RmL05ldmVyRGVzdHJveWVkLmgiKQorICAgICAgICApLAorICAgICAgICAoWyJKYXZhU2Ny
aXB0Q29yZSJdLAorICAgICAgICAgICAgKCJXVEYiLCAid3RmL3RleHQvQXRvbWljU3RyaW5nLmgi
KQorICAgICAgICApLAorCisgICAgICAgICMgVGVzdGluZyBmaXh0dXJlcy4KKyAgICAgICAgKFsi
VGVzdCJdLAorICAgICAgICAgICAgKCJXZWJDb3JlIiwgInBsYXRmb3JtL0V4dGVybmFsTmFtZXNw
YWNlSW1wbEluY2x1ZGVEdW1teS5oIikKKyAgICAgICAgKSwKKyAgICAgICAgKFsiVGVzdCJdLAor
ICAgICAgICAgICAgKCJUZXN0IiwgInBsYXRmb3JtL0ludGVybmFsTmFtZXNwYWNlSW1wbEluY2x1
ZGVEdW1teS5oIikKKyAgICAgICAgKQorICAgIF0sCit9CisKK0ZSQU1FV09SS19DT05GSUdfTUFQ
ID0geworICAgICJHbG9iYWwiOiB7CisgICAgICAgICJwcmVmaXgiOiAiIiwKKyAgICAgICAgIm5h
bWVzcGFjZSI6ICIiCisgICAgfSwKKworICAgICJKYXZhU2NyaXB0Q29yZSI6IHsKKyAgICAgICAg
InByZWZpeCI6ICJKUyIsCisgICAgICAgICJuYW1lc3BhY2UiOiAiSlNDIiwKKyAgICAgICAgImV4
cG9ydE1hY3JvIjogIkpTX0VYUE9SVF9QUklWQVRFIiwKKyAgICAgICAgImlucHV0VHlwZVRlbXBs
YXRlIjogVGVtcGxhdGVzLklucHV0VHlwZUZyb21TdGF0aWNMb2NhbCwKKyAgICB9LAorICAgICJX
ZWJDb3JlIjogeworICAgICAgICAicHJlZml4IjogIldlYiIsCisgICAgICAgICJuYW1lc3BhY2Ui
OiAiV2ViQ29yZSIsCisgICAgICAgICJpbnB1dFR5cGVUZW1wbGF0ZSI6IFRlbXBsYXRlcy5JbnB1
dFR5cGVGcm9tVGhyZWFkTG9jYWwsCisgICAgfSwKKyAgICAjIFVzZWQgZm9yIGJpbmRpbmdzIHRl
c3RzLgorICAgICJUZXN0IjogeworICAgICAgICAicHJlZml4IjogIlRlc3QiLAorICAgICAgICAi
bmFtZXNwYWNlIjogIlRlc3QiLAorICAgICAgICAiaW5wdXRUeXBlVGVtcGxhdGUiOiBUZW1wbGF0
ZXMuSW5wdXRUeXBlRnJvbVN0YXRpY0xvY2FsLAorICAgIH0KK30KKworIyBUaGVzZSBzZXR0aW5n
cyBhcmUgc3BlY2lmaWMgdG8gYW4gaW5wdXQgcXVldWUuCitRVUVVRV9DT05GSUdfTUFQID0gewor
ICAgICJTQ1JJUFRfTUVNT0laRUQiOiB7CisgICAgICAgICJlbnVtVmFsdWUiOiAiU2NyaXB0TWVt
b2l6ZWREYXRhIiwKKyAgICAgICAgImJhc2VDbGFzcyI6ICJOb25kZXRlcm1pbmlzdGljSW5wdXQ8
JXM+IiwKKyAgICB9LAorICAgICJMT0FERVJfTUVNT0laRUQiOiB7CisgICAgICAgICJlbnVtVmFs
dWUiOiAiTG9hZGVyTWVtb2l6ZWREYXRhIiwKKyAgICAgICAgImJhc2VDbGFzcyI6ICJOb25kZXRl
cm1pbmlzdGljSW5wdXQ8JXM+IiwKKyAgICB9LAorICAgICJFVkVOVF9MT09QIjogeworICAgICAg
ICAiZW51bVZhbHVlIjogIkV2ZW50TG9vcElucHV0IiwKKyAgICAgICAgImJhc2VDbGFzcyI6ICJF
dmVudExvb3BJbnB1dDwlcz4iLAorICAgIH0sCit9CisKKyMgVXNlIGEgZ2xvYmFsIGxvZ2dlciwg
d2hpY2ggbm9ybWFsbHkgb25seSBsb2dzIGVycm9ycy4KKyMgSXQgY2FuIGJlIGNvbmZpZ3VyZWQg
dG8gbG9nIGRlYnVnIG1lc3NhZ2VzIGZyb20gdGhlIENMSS4KK2xvZ2dpbmcuYmFzaWNDb25maWco
Zm9ybWF0PSclKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcycsIGxldmVsPWxvZ2dpbmcuRVJST1Ip
Citsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCisjIE1vZGVsIGNsYXNzZXMs
IHdoaWNoIHRyYW5zbGl0ZXJhdGUgSlNPTiBpbnB1dC4KK2NsYXNzIFBhcnNlRXhjZXB0aW9uKEV4
Y2VwdGlvbik6CisgICAgcGFzcworCisKK2NsYXNzIFR5cGVjaGVja0V4Y2VwdGlvbihFeGNlcHRp
b24pOgorICAgIHBhc3MKKworCitjbGFzcyBGcmFtZXdvcms6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIG5hbWUpOgorICAgICAgICBzZWxmLl9zZXR0aW5ncyA9IEZSQU1FV09SS19DT05GSUdfTUFQ
W25hbWVdCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBzZXR0aW5nKHNlbGYs
IGtleSwgZGVmYXVsdD0nJyk6CisgICAgICAgIHJldHVybiBzZWxmLl9zZXR0aW5ncy5nZXQoa2V5
LCBkZWZhdWx0KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmcm9tU3RyaW5nKGZyYW1l
d29ya1N0cmluZyk6CisgICAgICAgIGlmIGZyYW1ld29ya1N0cmluZyA9PSAiR2xvYmFsIjoKKyAg
ICAgICAgICAgIHJldHVybiBGcmFtZXdvcmtzLkdsb2JhbAorCisgICAgICAgIGlmIGZyYW1ld29y
a1N0cmluZyA9PSAiSmF2YVNjcmlwdENvcmUiOgorICAgICAgICAgICAgcmV0dXJuIEZyYW1ld29y
a3MuSmF2YVNjcmlwdENvcmUKKworICAgICAgICBpZiBmcmFtZXdvcmtTdHJpbmcgPT0gIldlYkNv
cmUiOgorICAgICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3MuV2ViQ29yZQorCisgICAgICAgIGlm
IGZyYW1ld29ya1N0cmluZyA9PSAiVGVzdCI6CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jr
cy5UZXN0CisKKyAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIlVua25vd24gZnJhbWV3b3Jr
OiAiICsgZnJhbWV3b3JrU3RyaW5nKQorCisKK2NsYXNzIEZyYW1ld29ya3M6CisgICAgR2xvYmFs
ID0gRnJhbWV3b3JrKCJHbG9iYWwiKQorICAgIEphdmFTY3JpcHRDb3JlID0gRnJhbWV3b3JrKCJK
YXZhU2NyaXB0Q29yZSIpCisgICAgV2ViQ29yZSA9IEZyYW1ld29yaygiV2ViQ29yZSIpCisgICAg
VGVzdCA9IEZyYW1ld29yaygiVGVzdCIpCisKKworY2xhc3MgSW5wdXRRdWV1ZToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgc2V0dGluZ3MpOgorICAgICAgICBzZWxmLl9zZXR0aW5ncyA9IHNldHRp
bmdzCisKKyAgICBkZWYgc2V0dGluZyhzZWxmLCBrZXksIGRlZmF1bHQ9JycpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fc2V0dGluZ3MuZ2V0KGtleSwgZGVmYXVsdCkKKworICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgZnJvbVN0cmluZyhxdWV1ZVN0cmluZyk6CisgICAgICAgIGlmIHF1ZXVlU3Ry
aW5nID09ICJTQ1JJUFRfTUVNT0laRUQiOgorICAgICAgICAgICAgcmV0dXJuIElucHV0UXVldWVz
LlNDUklQVF9NRU1PSVpFRAorCisgICAgICAgIGlmIHF1ZXVlU3RyaW5nID09ICJMT0FERVJfTUVN
T0laRUQiOgorICAgICAgICAgICAgcmV0dXJuIElucHV0UXVldWVzLkxPQURFUl9NRU1PSVpFRAor
CisgICAgICAgIGlmIHF1ZXVlU3RyaW5nID09ICJFVkVOVF9MT09QIjoKKyAgICAgICAgICAgIHJl
dHVybiBJbnB1dFF1ZXVlcy5FVkVOVF9MT09QCisKKyAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRp
b24oIlVua25vd24gaW5wdXQgcXVldWU6ICIgKyBxdWV1ZVN0cmluZykKKworCitjbGFzcyBJbnB1
dFF1ZXVlczoKKyAgICBTQ1JJUFRfTUVNT0laRUQgPSBJbnB1dFF1ZXVlKFFVRVVFX0NPTkZJR19N
QVBbIlNDUklQVF9NRU1PSVpFRCJdKQorICAgIExPQURFUl9NRU1PSVpFRCA9IElucHV0UXVldWUo
UVVFVUVfQ09ORklHX01BUFsiTE9BREVSX01FTU9JWkVEIl0pCisgICAgRVZFTlRfTE9PUCA9IElu
cHV0UXVldWUoUVVFVUVfQ09ORklHX01BUFsiRVZFTlRfTE9PUCJdKQorCisKK2NsYXNzIElucHV0
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkZXNjcmlwdGlvbiwgcXVldWVTdHJpbmcs
IGZsYWdzLCBndWFyZD1Ob25lKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBz
ZWxmLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KKyAgICAgICAgc2VsZi5xdWV1ZSA9IElucHV0
UXVldWUuZnJvbVN0cmluZyhxdWV1ZVN0cmluZykKKyAgICAgICAgc2VsZi5fZmxhZ3MgPSBmbGFn
cworICAgICAgICBzZWxmLmd1YXJkID0gZ3VhcmQKKyAgICAgICAgc2VsZi5tZW1iZXJzID0gW10g
ICMgbmFtZXMgc2hvdWxkIGJlIHVuaXF1ZSwgYnV0IG9yZGVyZWQuCisKKyAgICBkZWYgc2V0dGlu
ZyhzZWxmLCBrZXksIGRlZmF1bHQ9JycpOgorICAgICAgICBpZiBrZXkgaW4gc2VsZi5fZmxhZ3M6
CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHJldHVybiBzZWxmLnF1ZXVlLnNl
dHRpbmcoa2V5LCBkZWZhdWx0KQorCisKK2NsYXNzIElucHV0TWVtYmVyOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtZW1iZXJOYW1lLCB0eXBlTmFtZSwgZmxhZ3M9W10pOgorICAgICAgICBzZWxm
Lm1lbWJlck5hbWUgPSBtZW1iZXJOYW1lCisgICAgICAgIHNlbGYudHlwZU5hbWUgPSB0eXBlTmFt
ZQorICAgICAgICBzZWxmLl9mbGFncyA9IGZsYWdzCisKKyAgICBkZWYgaGFzX2ZsYWcoc2VsZiwg
a2V5LCBkZWZhdWx0PScnKToKKyAgICAgICAgcmV0dXJuIGtleSBpbiBzZWxmLl9mbGFncworCisK
K2NsYXNzIFR5cGVNb2RlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAg
c2VsZi5fbmFtZSA9IG5hbWUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZnJvbVN0cmlu
Zyhtb2RlU3RyaW5nKToKKyAgICAgICAgbW9kZVN0cmluZyA9IG1vZGVTdHJpbmcudXBwZXIoKQor
ICAgICAgICBpZiBtb2RlU3RyaW5nID09ICdTQ0FMQVInOgorICAgICAgICAgICAgcmV0dXJuIFR5
cGVNb2Rlcy5TQ0FMQVIKKyAgICAgICAgaWYgbW9kZVN0cmluZyA9PSAnSEVBVllfU0NBTEFSJzoK
KyAgICAgICAgICAgIHJldHVybiBUeXBlTW9kZXMuSEVBVllfU0NBTEFSCisgICAgICAgIGlmIG1v
ZGVTdHJpbmcgPT0gJ09XTkVEJzoKKyAgICAgICAgICAgIHJldHVybiBUeXBlTW9kZXMuT1dORUQK
KyAgICAgICAgaWYgbW9kZVN0cmluZyA9PSAnU0hBUkVEJzoKKyAgICAgICAgICAgIHJldHVybiBU
eXBlTW9kZXMuU0hBUkVECisgICAgICAgIGlmIG1vZGVTdHJpbmcgPT0gJ1ZFQ1RPUic6CisgICAg
ICAgICAgICByZXR1cm4gVHlwZU1vZGVzLlZFQ1RPUgorCisgICAgICAgIHJhaXNlIFBhcnNlRXhj
ZXB0aW9uKCJVbmtub3duIHR5cGUgbW9kZTogIiArIG1vZGVTdHJpbmcpCisKKworY2xhc3MgVHlw
ZU1vZGVzOgorICAgICMgQ29weSBmb3IgYXNzaWdubWVudCBhbmQgZm9yIGdldHRlcgorICAgIFND
QUxBUiA9IFR5cGVNb2RlKCJTQ0FMQVIiKQorICAgICMgQ29weSBmb3IgYXNzaWdubWVudCwgcGFz
cyBieSByZWZlcmVuY2UgZm9yIGdldHRlcgorICAgIEhFQVZZX1NDQUxBUiA9IFR5cGVNb2RlKCJI
RUFWWV9TQ0FMQVIiKQorICAgICMgTW92ZSBmb3IgYXNzaWdubWVudCwgcGFzcyBieSByZWZlcmVu
Y2UgZm9yIGdldHRlcgorICAgIE9XTkVEID0gVHlwZU1vZGUoIk9XTkVEIikKKyAgICAjIENvcHkg
YSBSZWZQdHIgZm9yIGFzc2lnbm1lbnQgYW5kIGdldHRlcgorICAgIFNIQVJFRCA9IFR5cGVNb2Rl
KCJTSEFSRUQiKQorICAgICMgTW92ZSBvcGVyYXRvciBmb3IgYXNzaWdubWVudCwgcGFzcyBieSBy
ZWZlcmVuY2UgZm9yIGdldHRlcgorICAgIFZFQ1RPUiA9IFR5cGVNb2RlKCJWRUNUT1IiKQorCisK
K2NsYXNzIFR5cGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIG1vZGUsIGZyYW1ld29y
aywgaGVhZGVyLCBlbmNsb3NpbmdfY2xhc3MsIHZhbHVlcywgZ3VhcmRfdmFsdWVzX21hcCwgdW5k
ZXJseWluZ19zdG9yYWdlLCBmbGFncyk6CisgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAg
ICAgIHNlbGYubW9kZSA9IG1vZGUKKyAgICAgICAgc2VsZi5mcmFtZXdvcmsgPSBmcmFtZXdvcmsK
KyAgICAgICAgc2VsZi5oZWFkZXIgPSBoZWFkZXIKKyAgICAgICAgc2VsZi5lbmNsb3NpbmdfY2xh
c3MgPSBlbmNsb3NpbmdfY2xhc3MKKyAgICAgICAgc2VsZi52YWx1ZXMgPSB2YWx1ZXMKKyAgICAg
ICAgc2VsZi5ndWFyZF92YWx1ZXNfbWFwID0gZ3VhcmRfdmFsdWVzX21hcAorICAgICAgICBzZWxm
LnVuZGVybHlpbmdfc3RvcmFnZSA9IHVuZGVybHlpbmdfc3RvcmFnZQorICAgICAgICBzZWxmLl9m
bGFncyA9IGZsYWdzCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0
dXJuIHNlbGYudHlwZV9uYW1lKCkgPT0gb3RoZXIudHlwZV9uYW1lKCkgYW5kIHNlbGYubW9kZSA9
PSBvdGhlci5tb2RlCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9uYW1lLl9faGFzaF9fKCkKKworICAgIGRlZiBoYXNfZmxhZyhzZWxmLCBmbGFnU3RyaW5n
KToKKyAgICAgICAgcmV0dXJuIGZsYWdTdHJpbmcgaW4gc2VsZi5fZmxhZ3MKKworICAgIGRlZiBp
c19zdHJ1Y3Qoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmhhc19mbGFnKCJTVFJVQ1QiKQor
CisgICAgZGVmIGlzX2VudW0oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmhhc19mbGFnKCJF
TlVNIikKKworICAgIGRlZiBpc19lbnVtX2NsYXNzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5oYXNfZmxhZygiRU5VTV9DTEFTUyIpCisKKyAgICBkZWYgZGVjbGFyYXRpb25fa2luZChzZWxm
KToKKyAgICAgICAgaWYgc2VsZi5pc19lbnVtKCk6CisgICAgICAgICAgICByZXR1cm4gImVudW0i
CisgICAgICAgIGVsaWYgc2VsZi5pc19lbnVtX2NsYXNzKCk6CisgICAgICAgICAgICByZXR1cm4g
ImVudW0gY2xhc3MiCisgICAgICAgIGVsaWYgc2VsZi5pc19zdHJ1Y3QoKToKKyAgICAgICAgICAg
IHJldHVybiAic3RydWN0IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICJjbGFz
cyIKKworICAgIGRlZiBxdWFsaWZpZWRfcHJlZml4KHNlbGYpOgorICAgICAgICBjb21wb25lbnRz
ID0gW10KKyAgICAgICAgaWYgc2VsZi5mcmFtZXdvcmsgIT0gRnJhbWV3b3Jrcy5HbG9iYWw6Cisg
ICAgICAgICAgICBjb21wb25lbnRzLmFwcGVuZChzZWxmLmZyYW1ld29yay5zZXR0aW5nKCduYW1l
c3BhY2UnKSkKKyAgICAgICAgaWYgc2VsZi5lbmNsb3NpbmdfY2xhc3MgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBjb21wb25lbnRzLmFwcGVuZChzZWxmLmVuY2xvc2luZ19jbGFzcykKKyAgICAg
ICAgY29tcG9uZW50cy5hcHBlbmQoIiIpCisgICAgICAgIHJldHVybiAiOjoiLmpvaW4oY29tcG9u
ZW50cykKKworICAgIGRlZiB0eXBlX25hbWUoc2VsZiwgcXVhbGlmaWVkPUZhbHNlKToKKyAgICAg
ICAgcmV0dXJuICIlcyVzIiAlIChzZWxmLnF1YWxpZmllZF9wcmVmaXgoKSwgc2VsZi5fbmFtZSkg
aWYgcXVhbGlmaWVkIGVsc2Ugc2VsZi5fbmFtZQorCisgICAgZGVmIHN0b3JhZ2VfdHlwZShzZWxm
LCBxdWFsaWZpZWQ9RmFsc2UpOgorICAgICAgICBpZiBzZWxmLm1vZGUgPT0gVHlwZU1vZGVzLk9X
TkVEOgorICAgICAgICAgICAgcmV0dXJuICJzdGQ6OnVuaXF1ZV9wdHI8JXM+IiAlIHNlbGYudHlw
ZV9uYW1lKHF1YWxpZmllZCkKKyAgICAgICAgZWxpZiBzZWxmLm1vZGUgPT0gVHlwZU1vZGVzLlNI
QVJFRDoKKyAgICAgICAgICAgIHJldHVybiAiUmVmUHRyPCVzPiIgJSBzZWxmLnR5cGVfbmFtZShx
dWFsaWZpZWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50eXBlX25h
bWUocXVhbGlmaWVkKQorCisgICAgZGVmIGJvcnJvd190eXBlKHNlbGYsIHF1YWxpZmllZD1GYWxz
ZSk6CisgICAgICAgIGlmIHNlbGYubW9kZSA9PSBUeXBlTW9kZXMuU0NBTEFSOgorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lKHF1YWxpZmllZCkKKyAgICAgICAgZWxpZiBzZWxmLm1v
ZGUgPT0gVHlwZU1vZGVzLlNIQVJFRDoKKyAgICAgICAgICAgIHJldHVybiAiUGFzc1JlZlB0cjwl
cz4iICUgc2VsZi50eXBlX25hbWUocXVhbGlmaWVkKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmV0dXJuICJjb25zdCAlcyYiICUgc2VsZi50eXBlX25hbWUocXVhbGlmaWVkKQorCisgICAg
ZGVmIGFyZ3VtZW50X3R5cGUoc2VsZiwgcXVhbGlmaWVkPUZhbHNlKToKKyAgICAgICAgaWYgc2Vs
Zi5tb2RlID09IFR5cGVNb2Rlcy5TSEFSRUQ6CisgICAgICAgICAgICByZXR1cm4gIlBhc3NSZWZQ
dHI8JXM+IiAlIHNlbGYudHlwZV9uYW1lKHF1YWxpZmllZCkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLnN0b3JhZ2VfdHlwZSgpCisKKworZGVmIGNoZWNrX3Byb3BlcnRp
ZXMocHJvcHMsIG9iaiwgd2hhdCk6CisgICAgZm9yIHByb3AgaW4gcHJvcHM6CisgICAgICAgIGlm
IHByb3Agbm90IGluIG9iajoKKyAgICAgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJXaGVu
IHBhcnNpbmcgJXMsIHJlcXVpcmVkIHByb3BlcnR5IG1pc3Npbmc6ICVzIiAlICh3aGF0LCBwcm9w
KSkKKworCitjbGFzcyBWZWN0b3JUeXBlKFR5cGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBl
bGVtZW50X3R5cGUpOgorICAgICAgICBzZWxmLl9lbGVtZW50X3R5cGUgPSBlbGVtZW50X3R5cGUK
KyAgICAgICAgc2VsZi5tb2RlID0gVHlwZU1vZGVzLlZFQ1RPUgorICAgICAgICBzZWxmLmZyYW1l
d29yayA9IGVsZW1lbnRfdHlwZS5mcmFtZXdvcmsKKyAgICAgICAgc2VsZi5lbmNsb3NpbmdfY2xh
c3MgPSBOb25lCisKKyAgICBkZWYgaGFzX2ZsYWcoc2VsZik6CisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIGlzX3N0cnVjdChzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAg
ICBkZWYgaXNfZW51bShzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNf
ZW51bV9jbGFzcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgcXVhbGlm
aWVkX3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuICIiCisKKyAgICBkZWYgdHlwZV9uYW1l
KHNlbGYsIHF1YWxpZmllZD1GYWxzZSk6CisgICAgICAgIHJldHVybiAiVmVjdG9yPCVzPiIgJSBz
ZWxmLl9lbGVtZW50X3R5cGUudHlwZV9uYW1lKHF1YWxpZmllZD1xdWFsaWZpZWQpCisKKyAgICBk
ZWYgYXJndW1lbnRfdHlwZShzZWxmLCBxdWFsaWZpZWQ9RmFsc2UpOgorICAgICAgICByZXR1cm4g
c2VsZi50eXBlX25hbWUocXVhbGlmaWVkPXF1YWxpZmllZCkgKyAiJiIKKworCitjbGFzcyBJbnB1
dHNNb2RlbDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VkX2pzb24pOgorICAgICAgICBz
ZWxmLmlucHV0cyA9IFtdCisgICAgICAgIHNlbGYudHlwZXMgPSBbXQorCisgICAgICAgICMgVHlw
ZXMgaGF2ZSBhc3NvY2lhdGVkIGZyYW1ld29ya3MgYW5kIGFyZSBpbiB0aGVpciBuYW1lc3BhY2Us
IGJ1dCB3aXRoaW4gdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgIyBmaWxlIHR5cGVzIGFyZSBp
biBhIGZsYXQgbmFtZXNwYWNlLiBUeXBlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXJlIG5vdCBhbGxv
d2VkLgorICAgICAgICBzZWxmLnR5cGVzX2J5X25hbWUgPSB7fQorICAgICAgICBzZWxmLmlucHV0
c19ieV9uYW1lID0ge30KKworICAgICAgICBzZWxmLnBhcnNlX3RvcGxldmVsKHBhcnNlZF9qc29u
KQorCisgICAgZGVmIGVudW1fdHlwZXMoc2VsZik6CisgICAgICAgIF9lbnVtcyA9IGZpbHRlcihs
YW1iZGEgeDogeC5pc19lbnVtKCkgb3IgeC5pc19lbnVtX2NsYXNzKCksIHNlbGYudHlwZXMpCisg
ICAgICAgIHJldHVybiBzb3J0ZWQoX2VudW1zLCBrZXk9bGFtYmRhIF9lbnVtOiBfZW51bS50eXBl
X25hbWUoKSkKKworICAgIGRlZiBnZXRfdHlwZV9mb3JfbWVtYmVyKHNlbGYsIG1lbWJlcik6Cisg
ICAgICAgIGlmIG1lbWJlci5oYXNfZmxhZygiVkVDVE9SIik6CisgICAgICAgICAgICByZXR1cm4g
VmVjdG9yVHlwZShzZWxmLnR5cGVzX2J5X25hbWUuZ2V0KG1lbWJlci50eXBlTmFtZSkpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50eXBlc19ieV9uYW1lLmdldChtZW1i
ZXIudHlwZU5hbWUpCisKKyAgICBkZWYgcGFyc2VfdG9wbGV2ZWwoc2VsZiwganNvbik6CisgICAg
ICAgIGNoZWNrX3Byb3BlcnRpZXMoWyd0eXBlcycsICdpbnB1dHMnXSwganNvbiwgJ3RvcGxldmVs
JykKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoanNvblsndHlwZXMnXSwgZGljdCk6CisgICAg
ICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiTWFsZm9ybWVkIHNwZWNpZmljYXRpb246IHR5
cGVzIGlzIG5vdCBhIGRpY3Qgb2YgZnJhbWV3b3JrLT50eXBlIGxpc3QiKQorCisgICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKGpzb25bJ2lucHV0cyddLCBsaXN0KToKKyAgICAgICAgICAgIHJhaXNl
IFBhcnNlRXhjZXB0aW9uKCJNYWxmb3JtZWQgc3BlY2lmaWNhdGlvbjogaW5wdXRzIGlzIG5vdCBh
biBhcnJheSIpCisKKyAgICAgICAgZm9yIHR5X2ZyYW1ld29ya19uYW1lLCB0eV9saXN0IGluIGpz
b25bJ3R5cGVzJ10uaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0
eV9saXN0LCBsaXN0KToKKyAgICAgICAgICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiTWFs
Zm9ybWVkIHNwZWNpZmljYXRpb246IHR5cGUgbGlzdCBmb3IgZnJhbWV3b3JrICVzIGlzIG5vdCBh
IGxpc3QiICUgdHlfZnJhbWV3b3JrX25hbWUpCisKKyAgICAgICAgICAgIGZvciBfdHkgaW4gdHlf
bGlzdDoKKyAgICAgICAgICAgICAgICBzZWxmLnBhcnNlX3R5cGVfd2l0aF9mcmFtZXdvcmtfbmFt
ZShfdHksIHR5X2ZyYW1ld29ya19uYW1lKQorCisgICAgICAgIGZvciB2YWwgaW4ganNvblsnaW5w
dXRzJ106CisgICAgICAgICAgICBzZWxmLnBhcnNlX2lucHV0KHZhbCkKKworICAgIGRlZiBwYXJz
ZV90eXBlX3dpdGhfZnJhbWV3b3JrX25hbWUoc2VsZiwganNvbiwgZnJhbWV3b3JrX25hbWUpOgor
ICAgICAgICBjaGVja19wcm9wZXJ0aWVzKFsnbmFtZScsICdtb2RlJ10sIGpzb24sICd0eXBlJykK
KyAgICAgICAgZnJhbWV3b3JrID0gRnJhbWV3b3JrLmZyb21TdHJpbmcoZnJhbWV3b3JrX25hbWUp
CisgICAgICAgIGlmIGZyYW1ld29yayBpcyBub3QgRnJhbWV3b3Jrcy5HbG9iYWw6CisgICAgICAg
ICAgICBjaGVja19wcm9wZXJ0aWVzKFsnaGVhZGVyJ10sIGpzb24sICdub24tZ2xvYmFsIHR5cGUn
KQorCisgICAgICAgIF90eXBlID0gVHlwZShqc29uWyduYW1lJ10sIFR5cGVNb2RlLmZyb21TdHJp
bmcoanNvblsnbW9kZSddKSwgZnJhbWV3b3JrLCBqc29uLmdldCgnaGVhZGVyJywgTm9uZSksIGpz
b24uZ2V0KCdlbmNsb3NpbmdfY2xhc3MnLCBOb25lKSwganNvbi5nZXQoJ3ZhbHVlcycpLCBqc29u
LmdldCgnZ3VhcmRlZF92YWx1ZXMnLCB7fSksIGpzb24uZ2V0KCdzdG9yYWdlJyksIGpzb24uZ2V0
KCdmbGFncycsIFtdKSkKKyAgICAgICAgaWYgX3R5cGUuaXNfZW51bSgpIG9yIF90eXBlLmlzX2Vu
dW1fY2xhc3MoKToKKyAgICAgICAgICAgIGNoZWNrX3Byb3BlcnRpZXMoWyd2YWx1ZXMnXSwganNv
biwgJ2VudW0nKQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoanNvblsndmFsdWVzJ10s
IGxpc3QpIG9yIGxlbihfdHlwZS52YWx1ZXMpID09IDA6CisgICAgICAgICAgICAgICAgcmFpc2Ug
UGFyc2VFeGNlcHRpb24oIk1hbGZvcm1lZCBzcGVjaWZpY2F0aW9uOiBlbnVtIHR5cGUgZG9lcyBu
b3Qgc3VwcGx5IGEgbGlzdCBvZiB2YWx1ZXMiKQorCisgICAgICAgICAgICBpZiBfdHlwZS5pc19l
bnVtKCkgYW5kICJzdG9yYWdlIiBub3QgaW4ganNvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBQ
YXJzZUV4Y2VwdGlvbigiQy1zdHlsZSBlbnVtcyBtdXN0IGFsc28gc3BlY2lmeSB0aGVpciBzdG9y
YWdlIHR5cGUgc28gdGhleSBjYW4gYmUgZm9yd2FyZCBkZWNsYXJlZC4iKQorCisgICAgICAgIHNl
bGYudHlwZXMuYXBwZW5kKF90eXBlKQorCisgICAgZGVmIHBhcnNlX2lucHV0KHNlbGYsIGpzb24p
OgorICAgICAgICBjaGVja19wcm9wZXJ0aWVzKFsnbmFtZScsICdkZXNjcmlwdGlvbicsICdxdWV1
ZScsICdtZW1iZXJzJ10sIGpzb24sICdpbnB1dCcpCisgICAgICAgIF9pbnB1dCA9IElucHV0KGpz
b25bJ25hbWUnXSwganNvblsnZGVzY3JpcHRpb24nXSwganNvblsncXVldWUnXSwganNvbi5nZXQo
J2ZsYWdzJywgW10pLCBqc29uLmdldCgnZ3VhcmQnLCBOb25lKSkKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShqc29uWydtZW1iZXJzJ10sIGxpc3QpOgorICAgICAgICAgICAgZm9yIG1lbWJlciBpbiBq
c29uWydtZW1iZXJzJ106CisgICAgICAgICAgICAgICAgY2hlY2tfcHJvcGVydGllcyhbJ25hbWUn
LCAndHlwZSddLCBtZW1iZXIsICdtZW1iZXInKQorICAgICAgICAgICAgICAgIF9pbnB1dC5tZW1i
ZXJzLmFwcGVuZChJbnB1dE1lbWJlcihtZW1iZXJbJ25hbWUnXSwgbWVtYmVyWyd0eXBlJ10sIG1l
bWJlci5nZXQoJ2ZsYWdzJywgW10pKSkKKworICAgICAgICBzZWxmLmlucHV0cy5hcHBlbmQoX2lu
cHV0KQorCisgICAgIyBUeXBlcyBjYW5ub3QgKHlldCkgcmVmZXJlbmNlIG90aGVyIHR5cGVzLAor
ICAgICMgc28gd2UgY2FuIGNoZWNrIHJlZmVyZW5jZXMgaW4gb25lIHBhc3MuCisgICAgZGVmIHR5
cGVjaGVjayhzZWxmKToKKyAgICAgICAgZm9yIF90eXBlIGluIHNlbGYudHlwZXM6CisgICAgICAg
ICAgICBzZWxmLnR5cGVjaGVja190eXBlKF90eXBlKQorCisgICAgICAgIGZvciBfaW5wdXQgaW4g
c2VsZi5pbnB1dHM6CisgICAgICAgICAgICBzZWxmLnR5cGVjaGVja19pbnB1dChfaW5wdXQpCisK
KyAgICBkZWYgdHlwZWNoZWNrX3R5cGUoc2VsZiwgX3R5cGUpOgorICAgICAgICBsb2cuZGVidWco
InR5cGVjaGVjayB0eXBlICIgKyBfdHlwZS50eXBlX25hbWUoKSkKKworICAgICAgICBpZiBfdHlw
ZS50eXBlX25hbWUoKSBpbiBzZWxmLnR5cGVzX2J5X25hbWU6CisgICAgICAgICAgICByYWlzZSBU
eXBlY2hlY2tFeGNlcHRpb24oIkR1cGxpY2F0ZSB0eXBlIHdpdGggbmFtZTogIiArIF90eXBlLnR5
cGVfbmFtZSgpKQorCisgICAgICAgIHNlbGYudHlwZXNfYnlfbmFtZVtfdHlwZS50eXBlX25hbWUo
KV0gPSBfdHlwZQorCisgICAgZGVmIHR5cGVjaGVja19pbnB1dChzZWxmLCBfaW5wdXQpOgorICAg
ICAgICBsb2cuZGVidWcoInR5cGVjaGVjayBpbnB1dCAiICsgX2lucHV0Lm5hbWUpCisKKyAgICAg
ICAgaWYgX2lucHV0Lm5hbWUgaW4gc2VsZi5pbnB1dHNfYnlfbmFtZToKKyAgICAgICAgICAgIHJh
aXNlIFR5cGVjaGVja0V4Y2VwdGlvbigiRHVwbGljYXRlIGlucHV0IHdpdGggbmFtZTogIiArIF9p
bnB1dC5uYW1lKQorCisgICAgICAgIHNlZW5fbWVtYmVycyA9IHt9CisKKyAgICAgICAgZm9yIG1l
bWJlciBpbiBfaW5wdXQubWVtYmVyczoKKyAgICAgICAgICAgIGlmIG1lbWJlci5tZW1iZXJOYW1l
IGluIHNlZW5fbWVtYmVyczoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlY2hlY2tFeGNlcHRp
b24oIkR1cGxpY2F0ZSBpbnB1dCBtZW1iZXIgd2l0aCBuYW1lOiAiICsgbWVtYmVyLm1lbWJlck5h
bWUpCisKKyAgICAgICAgICAgIHNlbGYudHlwZWNoZWNrX2lucHV0X21lbWJlcihtZW1iZXIpCisg
ICAgICAgICAgICBzZWVuX21lbWJlcnNbbWVtYmVyLm1lbWJlck5hbWVdID0gbWVtYmVyCisKKyAg
ICAgICAgc2VsZi5pbnB1dHNfYnlfbmFtZVtfaW5wdXQubmFtZV0gPSBfaW5wdXQKKworICAgIGRl
ZiB0eXBlY2hlY2tfaW5wdXRfbWVtYmVyKHNlbGYsIGlucHV0X21lbWJlcik6CisgICAgICAgIGxv
Zy5kZWJ1ZygidHlwZWNoZWNrIG1lbWJlciAiICsgaW5wdXRfbWVtYmVyLm1lbWJlck5hbWUpCisK
KyAgICAgICAgaWYgbm90IGlucHV0X21lbWJlci50eXBlTmFtZSBpbiBzZWxmLnR5cGVzX2J5X25h
bWU6CisgICAgICAgICAgICByYWlzZSBUeXBlY2hlY2tFeGNlcHRpb24oIlVua25vd24gdHlwZSAl
cyByZWZlcmVuY2VkIGluIG1lbWJlciAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
IChpbnB1dF9tZW1iZXIudHlwZU5hbWUsIGlucHV0X21lbWJlci5tZW1iZXJOYW1lKSkKKworCisj
IEEgd3JpdGVyIHRoYXQgb25seSB1cGRhdGVzIGZpbGUgaWYgaXQgYWN0dWFsbHkgY2hhbmdlZC4K
K2NsYXNzIEluY3JlbWVudGFsRmlsZVdyaXRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmls
ZXBhdGgsIGZvcmNlX291dHB1dCk6CisgICAgICAgIHNlbGYuX2ZpbGVwYXRoID0gZmlsZXBhdGgK
KyAgICAgICAgc2VsZi5fb3V0cHV0ID0gIiIKKyAgICAgICAgc2VsZi5mb3JjZV9vdXRwdXQgPSBm
b3JjZV9vdXRwdXQKKworICAgIGRlZiB3cml0ZShzZWxmLCB0ZXh0KToKKyAgICAgICAgc2VsZi5f
b3V0cHV0ICs9IHRleHQKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgdGV4dF9jaGFu
Z2VkID0gVHJ1ZQorICAgICAgICBzZWxmLl9vdXRwdXQgPSBzZWxmLl9vdXRwdXQucnN0cmlwKCkg
KyAiXG4iCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVhZF9maWxlID0gb3BlbihzZWxm
Ll9maWxlcGF0aCwgInIiKQorICAgICAgICAgICAgb2xkX3RleHQgPSByZWFkX2ZpbGUucmVhZCgp
CisgICAgICAgICAgICByZWFkX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgdGV4dF9jaGFuZ2Vk
ID0gb2xkX3RleHQgIT0gc2VsZi5fb3V0cHV0CisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAg
ICMgSWdub3JlLCBqdXN0IG92ZXJ3cml0ZSBieSBkZWZhdWx0CisgICAgICAgICAgICBwYXNzCisK
KyAgICAgICAgaWYgdGV4dF9jaGFuZ2VkIG9yIHNlbGYuZm9yY2Vfb3V0cHV0OgorICAgICAgICAg
ICAgb3V0X2ZpbGUgPSBvcGVuKHNlbGYuX2ZpbGVwYXRoLCAidyIpCisgICAgICAgICAgICBvdXRf
ZmlsZS53cml0ZShzZWxmLl9vdXRwdXQpCisgICAgICAgICAgICBvdXRfZmlsZS5jbG9zZSgpCisK
KworZGVmIGxjZmlyc3Qocyk6CisgICAgcmV0dXJuIHNbMF0ubG93ZXIoKSArIHNbMTpdCisKKwor
ZGVmIHdyYXBfd2l0aF9ndWFyZChjb250ZW50cywgY29uZGl0aW9uPU5vbmUpOgorICAgIGlmIGNv
bmRpdGlvbiBpcyBOb25lOgorICAgICAgICByZXR1cm4gY29udGVudHMKKworICAgIHJldHVybiAi
XG4iLmpvaW4oWworICAgICAgICAiI2lmICVzIiAlIGNvbmRpdGlvbiwKKyAgICAgICAgY29udGVu
dHMsCisgICAgICAgICIjZW5kaWYgLy8gJXMiICUgY29uZGl0aW9uCisgICAgXSkKKworCitjbGFz
cyBHZW5lcmF0b3I6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsLCB0YXJnZXRfZnJhbWV3
b3JrX25hbWUsIGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRfcHJlZml4KToKKyAgICAgICAgc2VsZi5f
bW9kZWwgPSBtb2RlbAorICAgICAgICBzZWxmLnRhcmdldF9mcmFtZXdvcmsgPSBGcmFtZXdvcmsu
ZnJvbVN0cmluZyh0YXJnZXRfZnJhbWV3b3JrX25hbWUpCisgICAgICAgIHNlbGYudHJhaXRzX2Zy
YW1ld29yayA9IEZyYW1ld29yay5mcm9tU3RyaW5nKHNlbGYuc2V0dGluZygndHJhaXRzRnJhbWV3
b3JrTmFtZScpKQorICAgICAgICBzZWxmLl9pbnB1dF9maWxlcGF0aCA9IGlucHV0X2ZpbGVwYXRo
CisgICAgICAgIHNlbGYuX291dHB1dF9wcmVmaXggPSBvdXRwdXRfcHJlZml4CisKKyAgICBkZWYg
c2V0dGluZyhzZWxmLCBrZXksIGRlZmF1bHQ9JycpOgorICAgICAgICByZXR1cm4gc2VsZi50YXJn
ZXRfZnJhbWV3b3JrLnNldHRpbmcoa2V5LCBHTE9CQUxfQ09ORklHLmdldChrZXksIGRlZmF1bHQp
KQorCisgICAgIyBUaGlzIGRvZXMgbm90IGFjY291bnQgZm9yIGFueSBmaWxlbmFtZSBtYW5nbGlu
ZyBwZXJmb3JtZWQgb24gYmVoYWxmIG9mIHRoZSB0ZXN0IGhhcm5lc3MuCisgICAgZGVmIG91dHB1
dF9maWxlbmFtZShzZWxmLCBleHRlbnNpb249Tm9uZSk6CisgICAgICAgIGNvbXBvbmVudHMgPSBb
XQorICAgICAgICBpZiBsZW4oc2VsZi5fb3V0cHV0X3ByZWZpeCkgPiAwOgorICAgICAgICAgICAg
Y29tcG9uZW50cy5leHRlbmQoW3NlbGYuX291dHB1dF9wcmVmaXgsICctJ10pCisKKyAgICAgICAg
Y29tcG9uZW50cy5leHRlbmQoW3NlbGYuc2V0dGluZygncHJlZml4JyksIHNlbGYuc2V0dGluZygn
YmFzZUZpbGVuYW1lJyldKQorCisgICAgICAgIGlmIGV4dGVuc2lvbiBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGNvbXBvbmVudHMuZXh0ZW5kKFsnLicsIGV4dGVuc2lvbl0pCisKKyAgICAgICAg
cmV0dXJuICIiLmpvaW4oY29tcG9uZW50cykKKworICAgIGRlZiB3cml0ZV9vdXRwdXRfZmlsZXMo
c2VsZiwgX2RpciwgZm9yY2U9RmFsc2UpOgorICAgICAgICBoZWFkX2ZpbGUgPSBJbmNyZW1lbnRh
bEZpbGVXcml0ZXIob3MucGF0aC5qb2luKF9kaXIsIHNlbGYub3V0cHV0X2ZpbGVuYW1lKCdoJykp
LCBmb3JjZSkKKyAgICAgICAgaW1wbF9maWxlID0gSW5jcmVtZW50YWxGaWxlV3JpdGVyKG9zLnBh
dGguam9pbihfZGlyLCBzZWxmLm91dHB1dF9maWxlbmFtZSgnY3BwJykpLCBmb3JjZSkKKworICAg
ICAgICBoZWFkX2ZpbGUud3JpdGUoc2VsZi5nZW5lcmF0ZV9oZWFkZXIoKSkKKyAgICAgICAgaW1w
bF9maWxlLndyaXRlKHNlbGYuZ2VuZXJhdGVfaW1wbGVtZW50YXRpb24oKSkKKworICAgICAgICBo
ZWFkX2ZpbGUuY2xvc2UoKQorICAgICAgICBpbXBsX2ZpbGUuY2xvc2UoKQorCisgICAgZGVmIGdl
bmVyYXRlX2hlYWRlcihzZWxmKToKKyAgICAgICAgdGVtcGxhdGVfYXJndW1lbnRzID0geworICAg
ICAgICAgICAgJ2xpY2Vuc2VCbG9jayc6IHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpLAorICAgICAg
ICAgICAgJ2hlYWRlckd1YXJkJzogcmUuc3ViKCdbLS4vXScsICdfJywgc2VsZi5vdXRwdXRfZmls
ZW5hbWUoKSArICIuaCIpLAorICAgICAgICAgICAgJ2ZpbGVuYW1lJzogc2VsZi5vdXRwdXRfZmls
ZW5hbWUoKSwKKyAgICAgICAgICAgICdndWFyZENvbmRpdGlvbic6IHNlbGYuc2V0dGluZygnZ3Vh
cmRDb25kaXRpb24nKSwKKyAgICAgICAgICAgICd0cmFpdHNOYW1lc3BhY2UnOiBzZWxmLnRyYWl0
c19mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAnaW5wdXRzTmFt
ZXNwYWNlJzogc2VsZi50YXJnZXRfZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAg
ICAgICAgICAgJ2luY2x1ZGVzJzogc2VsZi5nZW5lcmF0ZV9pbmNsdWRlcyhkZWZhdWx0cz1zZWxm
LnNldHRpbmcoJ2hlYWRlckluY2x1ZGVzJykpLAorICAgICAgICAgICAgJ3R5cGVGb3J3YXJkRGVj
bGFyYXRpb25zJzogc2VsZi5nZW5lcmF0ZV90eXBlX2ZvcndhcmRfZGVjbGFyYXRpb25zKCksCisg
ICAgICAgICAgICAnaW5wdXRGb3J3YXJkRGVjbGFyYXRpb25zJzogIlxuIi5qb2luKFt3cmFwX3dp
dGhfZ3VhcmQoImNsYXNzICVzOyIsIF9pbnB1dC5ndWFyZCkgJSBfaW5wdXQubmFtZSBmb3IgX2lu
cHV0IGluIHNlbGYuX21vZGVsLmlucHV0c10pLAorICAgICAgICAgICAgJ2lucHV0Q2xhc3NEZWNs
YXJhdGlvbnMnOiAiXG5cbiIuam9pbihbc2VsZi5nZW5lcmF0ZV9jbGFzc19kZWNsYXJhdGlvbihf
aW5wdXQpIGZvciBfaW5wdXQgaW4gc2VsZi5fbW9kZWwuaW5wdXRzXSksCisgICAgICAgICAgICAn
aW5wdXRUcmFpdERlY2xhcmF0aW9ucyc6ICJcblxuIi5qb2luKFtzZWxmLmdlbmVyYXRlX2lucHV0
X3RyYWl0X2RlY2xhcmF0aW9uKF9pbnB1dCkgZm9yIF9pbnB1dCBpbiBzZWxmLl9tb2RlbC5pbnB1
dHNdKSwKKyAgICAgICAgICAgICdlbnVtVHJhaXREZWNsYXJhdGlvbnMnOiAiXG5cbiIuam9pbihb
c2VsZi5nZW5lcmF0ZV9lbnVtX3RyYWl0X2RlY2xhcmF0aW9uKF90eXBlKSBmb3IgX3R5cGUgaW4g
c2VsZi5fbW9kZWwuZW51bV90eXBlcygpXSksCisgICAgICAgICAgICAnZm9yRWFjaE1hY3JvJzog
c2VsZi5nZW5lcmF0ZV9mb3JfZWFjaF9tYWNybygpLAorICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJTa2VsZXRvbikuc3Vic3RpdHV0ZSh0ZW1wbGF0
ZV9hcmd1bWVudHMpCisKKyAgICBkZWYgZ2VuZXJhdGVfaW1wbGVtZW50YXRpb24oc2VsZik6Cisg
ICAgICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgICdsaWNlbnNlQmxvY2sn
OiBzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSwKKyAgICAgICAgICAgICdmaWxlbmFtZSc6IHNlbGYu
b3V0cHV0X2ZpbGVuYW1lKCksCisgICAgICAgICAgICAnZ3VhcmRDb25kaXRpb24nOiBzZWxmLnNl
dHRpbmcoJ2d1YXJkQ29uZGl0aW9uJyksCisgICAgICAgICAgICAndHJhaXRzTmFtZXNwYWNlJzog
c2VsZi50cmFpdHNfZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAg
J2lucHV0c05hbWVzcGFjZSc6IHNlbGYudGFyZ2V0X2ZyYW1ld29yay5zZXR0aW5nKCduYW1lc3Bh
Y2UnKSwKKyAgICAgICAgICAgICdpbmNsdWRlcyc6IHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXMoZGVm
YXVsdHM9c2VsZi5zZXR0aW5nKCdpbXBsSW5jbHVkZXMnKSwgaW5jbHVkZXNfZm9yX3R5cGVzPVRy
dWUpLAorICAgICAgICAgICAgJ2lucHV0Q2xhc3NJbXBsZW1lbnRhdGlvbnMnOiAiXG5cbiIuam9p
bihbc2VsZi5nZW5lcmF0ZV9jbGFzc19pbXBsZW1lbnRhdGlvbihfaW5wdXQpIGZvciBfaW5wdXQg
aW4gc2VsZi5fbW9kZWwuaW5wdXRzXSksCisgICAgICAgICAgICAnaW5wdXRUcmFpdEltcGxlbWVu
dGF0aW9ucyc6ICJcblxuIi5qb2luKFtzZWxmLmdlbmVyYXRlX2lucHV0X3RyYWl0X2ltcGxlbWVu
dGF0aW9uKF9pbnB1dCkgZm9yIF9pbnB1dCBpbiBzZWxmLl9tb2RlbC5pbnB1dHNdKSwKKyAgICAg
ICAgICAgICdlbnVtVHJhaXRJbXBsZW1lbnRhdGlvbnMnOiAiXG5cbiIuam9pbihbc2VsZi5nZW5l
cmF0ZV9lbnVtX3RyYWl0X2ltcGxlbWVudGF0aW9uKF90eXBlKSBmb3IgX3R5cGUgaW4gc2VsZi5f
bW9kZWwuZW51bV90eXBlcygpXSksCisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gVGVtcGxh
dGUoVGVtcGxhdGVzLkltcGxlbWVudGF0aW9uU2tlbGV0b24pLnN1YnN0aXR1dGUodGVtcGxhdGVf
YXJndW1lbnRzKQorCisgICAgZGVmIGdlbmVyYXRlX2xpY2Vuc2Uoc2VsZik6CisgICAgICAgIHJl
dHVybiBUZW1wbGF0ZShUZW1wbGF0ZXMuQ29weXJpZ2h0QmxvY2spLnN1YnN0aXR1dGUoTm9uZSwg
aW5wdXRGaWxlbmFtZT1vcy5wYXRoLmJhc2VuYW1lKHNlbGYuX2lucHV0X2ZpbGVwYXRoKSkKKwor
ICAgIGRlZiBnZW5lcmF0ZV9pbmNsdWRlcyhzZWxmLCBkZWZhdWx0cz1bXSwgaW5jbHVkZXNfZm9y
X3R5cGVzPUZhbHNlKToKKyAgICAgICAgbGluZXMgPSBzZXQoKQorCisgICAgICAgIGZvciBfdHlw
ZSBpbiBzZWxmLl9tb2RlbC50eXBlczoKKyAgICAgICAgICAgICMgVHlwZXMgaW4gdGhlICJnbG9i
YWwiIGZyYW1ld29yayBhcmUgaW1wbGljaXRseSBkZWNsYXJlZCBhbmQgYXZhaWxhYmxlIGluIGFs
bCBuYW1lc3BhY2VzLgorICAgICAgICAgICAgaWYgX3R5cGUuZnJhbWV3b3JrIGlzIEZyYW1ld29y
a3MuR2xvYmFsOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEZvciBS
ZWZDb3VudGVkIHR5cGVzLCB3ZSByZXZlcnNlIHdoZW4gdG8gaW5jbHVkZSB0aGUgaGVhZGVyIHNv
IHRoYXQgdGhlIGRlc3RydWN0b3IgY2FuIGJlCisgICAgICAgICAgICAjIHVzZWQgaW4gdGhlIGhl
YWRlciBmaWxlLiBFbnVtcyB3aXRoaW4gY2xhc3NlcyBjYW5ub3QgYmUgZm9yd2FyZCBkZWNsYXJl
ZCwgc28gd2UgaW5jbHVkZQorICAgICAgICAgICAgIyBoZWFkZXJzIHdpdGggdGhlIHJlbGV2YW50
IGNsYXNzIGRlY2xhcmF0aW9uLgorICAgICAgICAgICAgaW5jbHVkZV9mb3JfZGVzdHJ1Y3RvciA9
IF90eXBlLm1vZGUgaXMgVHlwZU1vZGVzLlNIQVJFRAorICAgICAgICAgICAgaW5jbHVkZV9mb3Jf
ZW5jbG9zaW5nX2NsYXNzID0gX3R5cGUuaXNfZW51bSgpIGFuZCBfdHlwZS5lbmNsb3NpbmdfY2xh
c3MgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGlmIChub3QgaW5jbHVkZXNfZm9yX3R5cGVzKSBe
IChpbmNsdWRlX2Zvcl9kZXN0cnVjdG9yIG9yIGluY2x1ZGVfZm9yX2VuY2xvc2luZ19jbGFzcyk6
CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgc2VsZi50YXJnZXRf
ZnJhbWV3b3JrICE9IF90eXBlLmZyYW1ld29yazoKKyAgICAgICAgICAgICAgICBsaW5lcy5hZGQo
IiNpbmNsdWRlIDwlcz4iICUgX3R5cGUuaGVhZGVyKQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBsaW5lcy5hZGQoIiNpbmNsdWRlIFwiJXNcIiIgJSBvcy5wYXRoLmJhc2VuYW1l
KF90eXBlLmhlYWRlcikpCisKKyAgICAgICAgZm9yIGVudHJ5IGluIGRlZmF1bHRzOgorICAgICAg
ICAgICAgKGFsbG93ZWRfZnJhbWV3b3JrX25hbWVzLCBkYXRhKSA9IGVudHJ5CisgICAgICAgICAg
ICAoZnJhbWV3b3JrX25hbWUsIGhlYWRlcl9wYXRoKSA9IGRhdGEKKworICAgICAgICAgICAgaWYg
c2VsZi50YXJnZXRfZnJhbWV3b3JrLm5hbWUgbm90IGluIGFsbG93ZWRfZnJhbWV3b3JrX25hbWVz
OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBzZWxmLnRhcmdldF9m
cmFtZXdvcmsubmFtZSAhPSBmcmFtZXdvcmtfbmFtZToKKyAgICAgICAgICAgICAgICBsaW5lcy5h
ZGQoIiNpbmNsdWRlIDwlcz4iICUgaGVhZGVyX3BhdGgpCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGxpbmVzLmFkZCgiI2luY2x1ZGUgXCIlc1wiIiAlIG9zLnBhdGguYmFzZW5h
bWUoaGVhZGVyX3BhdGgpKQorCisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc29ydGVkKGxpc3Qo
bGluZXMpKSkKKworICAgIGRlZiBnZW5lcmF0ZV90eXBlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNl
bGYpOgorICAgICAgICBsaW5lcyA9IFtdCisKKyAgICAgICAgZGVjbHNfYnlfZnJhbWV3b3JrID0g
e30KKyAgICAgICAgZnJhbWV3b3JrcyA9IFtGcmFtZXdvcmsuZnJvbVN0cmluZyhzKSBmb3IgcyBp
biBGUkFNRVdPUktfQ09ORklHX01BUC5rZXlzKCkgaWYgcyAhPSBGcmFtZXdvcmtzLkdsb2JhbC5u
YW1lXQorICAgICAgICBmb3IgZnJhbWV3b3JrIGluIGZyYW1ld29ya3M6CisgICAgICAgICAgICBk
ZWNsc19ieV9mcmFtZXdvcmtbZnJhbWV3b3JrXSA9IFtdCisKKyAgICAgICAgZm9yIF90eXBlIGlu
IHNlbGYuX21vZGVsLnR5cGVzOgorICAgICAgICAgICAgaWYgX3R5cGUuZnJhbWV3b3JrIG5vdCBp
biBmcmFtZXdvcmtzOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBf
dHlwZS5lbmNsb3NpbmdfY2xhc3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIGlmIF90eXBlLmlzX2VudW0oKToKKyAgICAgICAgICAgICAgICBkZWNs
YXJhdGlvbiA9ICJlbnVtICVzIDogJXM7IiAlIChfdHlwZS50eXBlX25hbWUoKSwgX3R5cGUudW5k
ZXJseWluZ19zdG9yYWdlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWNs
YXJhdGlvbiA9ICIlcyAlczsiICUgKF90eXBlLmRlY2xhcmF0aW9uX2tpbmQoKSwgX3R5cGUudHlw
ZV9uYW1lKCkpCisgICAgICAgICAgICBkZWNsc19ieV9mcmFtZXdvcmtbX3R5cGUuZnJhbWV3b3Jr
XS5hcHBlbmQoZGVjbGFyYXRpb24pCisKKyAgICAgICAgIyBEZWNsYXJlIGFsbCBuYW1lc3BhY2Vz
IGV4cGxpY2l0bHksIGV2ZW4gaWYgaXQncyB0aGUgbWFpbiBuYW1lc3BhY2UuCisgICAgICAgIGZv
ciBmcmFtZXdvcmsgaW4gZnJhbWV3b3JrczoKKyAgICAgICAgICAgIGlmIGxlbihkZWNsc19ieV9m
cmFtZXdvcmtbZnJhbWV3b3JrXSkgPT0gMDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisg
ICAgICAgICAgICBkZWNsc19ieV9mcmFtZXdvcmtbZnJhbWV3b3JrXS5zb3J0KCkKKyAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgibmFtZXNwYWNlICVzIHsiICUgZnJhbWV3b3JrLnNldHRpbmcoJ25h
bWVzcGFjZScpKQorICAgICAgICAgICAgbGluZXMuZXh0ZW5kKGRlY2xzX2J5X2ZyYW1ld29ya1tm
cmFtZXdvcmtdKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJ9IikKKyAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgiIikKKworICAgICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzKQorCisgICAg
ZGVmIGdlbmVyYXRlX2NsYXNzX2RlY2xhcmF0aW9uKHNlbGYsIF9pbnB1dCk6CisKKyAgICAgICAg
ZXh0cmFfZGVjbGFyYXRpb25zID0gW10KKyAgICAgICAgaWYgX2lucHV0LnF1ZXVlID09IElucHV0
UXVldWVzLkVWRU5UX0xPT1A6CisgICAgICAgICAgICBleHRyYV9kZWNsYXJhdGlvbnMuZXh0ZW5k
KFsKKyAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAiICAgIC8vIEV2ZW50TG9v
cElucHV0IEFQSSIsCisgICAgICAgICAgICAgICAgIiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2go
UmVwbGF5Q29udHJvbGxlciYpIG92ZXJyaWRlIGZpbmFsOyIsCisgICAgICAgICAgICBdKQorCisg
ICAgICAgICAgICBpZiBfaW5wdXQuc2V0dGluZygnQ1JFQVRFX0ZST01fUEFHRScpOgorICAgICAg
ICAgICAgICAgIGV4dHJhX2RlY2xhcmF0aW9ucy5leHRlbmQoWworICAgICAgICAgICAgICAgICAg
ICAiICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8JXM+IGNyZWF0ZUZyb21QYWdlKGNvbnN0IFBh
Z2UmKTsiICUgX2lucHV0Lm5hbWUKKyAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIG1lbWJl
cl9nZXR0ZXJzID0gW3NlbGYuZ2VuZXJhdGVfaW5wdXRfbWVtYmVyX2dldHRlcihfbWVtYmVyKSBm
b3IgX21lbWJlciBpbiBfaW5wdXQubWVtYmVyc10KKworICAgICAgICBtZW1iZXJfZGVjbGFyYXRp
b25zID0gW3NlbGYuZ2VuZXJhdGVfaW5wdXRfbWVtYmVyX2RlY2xhcmF0aW9uKF9tZW1iZXIpIGZv
ciBfbWVtYmVyIGluIF9pbnB1dC5tZW1iZXJzXQorICAgICAgICBpZiBsZW4obWVtYmVyX2RlY2xh
cmF0aW9ucykgPiAwOgorICAgICAgICAgICAgbWVtYmVyX2RlY2xhcmF0aW9ucy5pbnNlcnQoMCwg
InByaXZhdGU6IikKKworICAgICAgICB0ZW1wbGF0ZV9hcmd1bWVudHMgPSB7CisgICAgICAgICAg
ICAnaW5wdXRDb25zdHJ1Y3Rvcic6IHNlbGYuZ2VuZXJhdGVfaW5wdXRfY29uc3RydWN0b3JfZGVj
bGFyYXRpb24oX2lucHV0KSwKKyAgICAgICAgICAgICdpbnB1dERlc3RydWN0b3InOiBzZWxmLmdl
bmVyYXRlX2lucHV0X2Rlc3RydWN0b3JfZGVjbGFyYXRpb24oX2lucHV0KSwKKyAgICAgICAgICAg
ICdpbnB1dE5hbWUnOiBfaW5wdXQubmFtZSwKKyAgICAgICAgICAgICdpbnB1dFF1ZXVlJzogX2lu
cHV0LnNldHRpbmcoJ2VudW1WYWx1ZScpLAorICAgICAgICAgICAgJ2Jhc2VDbGFzcyc6IF9pbnB1
dC5zZXR0aW5nKCdiYXNlQ2xhc3MnKSAlIF9pbnB1dC5uYW1lLAorICAgICAgICAgICAgJ2V4dHJh
RGVjbGFyYXRpb25zJzogIlxuIi5qb2luKGV4dHJhX2RlY2xhcmF0aW9ucyksCisgICAgICAgICAg
ICAnbWVtYmVyR2V0dGVycyc6ICJcbiIuam9pbihtZW1iZXJfZ2V0dGVycyksCisgICAgICAgICAg
ICAnbWVtYmVyRGVjbGFyYXRpb25zJzogIlxuIi5qb2luKG1lbWJlcl9kZWNsYXJhdGlvbnMpLAor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHdyYXBfd2l0aF9ndWFyZChUZW1wbGF0ZShUZW1w
bGF0ZXMuSW5wdXRDbGFzc0RlY2xhcmF0aW9uKS5zdWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50
cyksIF9pbnB1dC5ndWFyZCkKKworICAgIGRlZiBnZW5lcmF0ZV9pbnB1dF9jb25zdHJ1Y3Rvcl9k
ZWNsYXJhdGlvbihzZWxmLCBfaW5wdXQpOgorICAgICAgICBmb3JtYWxzX2xpc3QgPSBzZWxmLmdl
bmVyYXRlX2NvbnN0cnVjdG9yX2Zvcm1hbHNfbGlzdChfaW5wdXQpCisgICAgICAgIHRlcm1zID0g
W10KKyAgICAgICAgaWYgc2VsZi5zZXR0aW5nKCdleHBvcnRNYWNybycpOgorICAgICAgICAgICAg
dGVybXMuYXBwZW5kKHNlbGYuc2V0dGluZygnZXhwb3J0TWFjcm8nKSkKKyAgICAgICAgdGVybXMu
YXBwZW5kKCIlcyglcykiICUgKF9pbnB1dC5uYW1lLCBmb3JtYWxzX2xpc3QpKQorICAgICAgICBy
ZXR1cm4gIiAgICAlczsiICUgIiAiLmpvaW4odGVybXMpCisKKyAgICBkZWYgZ2VuZXJhdGVfaW5w
dXRfZGVzdHJ1Y3Rvcl9kZWNsYXJhdGlvbihzZWxmLCBfaW5wdXQpOgorICAgICAgICByZXR1cm4g
IiAgICB2aXJ0dWFsIH4lcygpOyIgJSBfaW5wdXQubmFtZQorCisgICAgZGVmIGdlbmVyYXRlX2lu
cHV0X21lbWJlcl9nZXR0ZXIoc2VsZiwgX21lbWJlcik6CisgICAgICAgIG1lbWJlcl90eXBlID0g
c2VsZi5fbW9kZWwuZ2V0X3R5cGVfZm9yX21lbWJlcihfbWVtYmVyKQorICAgICAgICByZXR1cm4g
IiAgICAlcyAlcygpIGNvbnN0IHsgcmV0dXJuICVzOyB9IiAlIChtZW1iZXJfdHlwZS5ib3Jyb3df
dHlwZSgpLCBfbWVtYmVyLm1lbWJlck5hbWUsIHNlbGYuZ2VuZXJhdGVfbWVtYmVyX2JvcnJvd19l
eHByZXNzaW9uKF9tZW1iZXIpKQorCisgICAgZGVmIGdlbmVyYXRlX2lucHV0X21lbWJlcl9kZWNs
YXJhdGlvbihzZWxmLCBfbWVtYmVyKToKKyAgICAgICAgbWVtYmVyX3R5cGUgPSBzZWxmLl9tb2Rl
bC5nZXRfdHlwZV9mb3JfbWVtYmVyKF9tZW1iZXIpCisgICAgICAgIHJldHVybiAiICAgICVzIG1f
JXM7IiAlIChtZW1iZXJfdHlwZS5zdG9yYWdlX3R5cGUoKSwgX21lbWJlci5tZW1iZXJOYW1lKQor
CisgICAgZGVmIGdlbmVyYXRlX2lucHV0X21lbWJlcl90dXBsZXMoc2VsZiwgX2lucHV0KToKKyAg
ICAgICAgcmV0dXJuIFsoX21lbWJlciwgc2VsZi5fbW9kZWwuZ2V0X3R5cGVfZm9yX21lbWJlcihf
bWVtYmVyKSkgZm9yIF9tZW1iZXIgaW4gX2lucHV0Lm1lbWJlcnNdCisKKyAgICBkZWYgcXVhbGlm
aWVkX2lucHV0X25hbWUoc2VsZiwgX2lucHV0KToKKyAgICAgICAgaWYgc2VsZi50YXJnZXRfZnJh
bWV3b3JrID09IHNlbGYudHJhaXRzX2ZyYW1ld29yazoKKyAgICAgICAgICAgIHJldHVybiBfaW5w
dXQubmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICIlczo6JXMiICUgKHNl
bGYudGFyZ2V0X2ZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwgX2lucHV0Lm5hbWUpCisK
KyAgICBkZWYgZ2VuZXJhdGVfaW5wdXRfdHJhaXRfZGVjbGFyYXRpb24oc2VsZiwgX2lucHV0KToK
KyAgICAgICAgZGVjbF90eXBlID0gWydzdHJ1Y3QnXQorICAgICAgICBpZiBsZW4oc2VsZi5zZXR0
aW5nKCdleHBvcnRNYWNybycpKSA+IDA6CisgICAgICAgICAgICBkZWNsX3R5cGUuYXBwZW5kKHNl
bGYuc2V0dGluZygnZXhwb3J0TWFjcm8nKSkKKworICAgICAgICB0ZW1wbGF0ZV9hcmd1bWVudHMg
PSB7CisgICAgICAgICAgICAnc3RydWN0T3JDbGFzcyc6ICIgIi5qb2luKGRlY2xfdHlwZSksCisg
ICAgICAgICAgICAncXVldWVUeXBlJzogX2lucHV0LnF1ZXVlLnNldHRpbmcoJ2VudW1WYWx1ZScp
LAorICAgICAgICAgICAgJ3F1YWxpZmllZElucHV0TmFtZSc6IHNlbGYucXVhbGlmaWVkX2lucHV0
X25hbWUoX2lucHV0KSwKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB3cmFwX3dpdGhfZ3Vh
cmQoVGVtcGxhdGUoVGVtcGxhdGVzLklucHV0VHJhaXRzRGVjbGFyYXRpb24pLnN1YnN0aXR1dGUo
dGVtcGxhdGVfYXJndW1lbnRzKSwgX2lucHV0Lmd1YXJkKQorCisgICAgZGVmIGdlbmVyYXRlX2Vu
dW1fdHJhaXRfZGVjbGFyYXRpb24oc2VsZiwgX3R5cGUpOgorICAgICAgICBzaG91bGRfcXVhbGlm
eV90eXBlID0gX3R5cGUuZnJhbWV3b3JrICE9IHNlbGYudHJhaXRzX2ZyYW1ld29yaworICAgICAg
ICB0ZW1wbGF0ZSA9IFRlbXBsYXRlcy5FbnVtVHJhaXREZWNsYXJhdGlvbiBpZiBfdHlwZS5pc19l
bnVtKCkgZWxzZSBUZW1wbGF0ZXMuRW51bUNsYXNzVHJhaXREZWNsYXJhdGlvbgorICAgICAgICB0
ZW1wbGF0ZV9hcmd1bWVudHMgPSB7CisgICAgICAgICAgICAnZW51bU5hbWUnOiBfdHlwZS50eXBl
X25hbWUocXVhbGlmaWVkPXNob3VsZF9xdWFsaWZ5X3R5cGUpLAorICAgICAgICB9CisgICAgICAg
IHJldHVybiBUZW1wbGF0ZSh0ZW1wbGF0ZSkuc3Vic3RpdHV0ZSh0ZW1wbGF0ZV9hcmd1bWVudHMp
CisKKyAgICBkZWYgZ2VuZXJhdGVfZm9yX2VhY2hfbWFjcm8oc2VsZik6CisgICAgICAgIG1hY3Jv
X25hbWUgPSAiJXNfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNIIiAlIHNlbGYuc2V0dGluZygn
cHJlZml4JykudXBwZXIoKQorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVu
ZCgiI2RlZmluZSAlcyhtYWNybykgXFwiICUgbWFjcm9fbmFtZSkKKyAgICAgICAgbGluZXMuZXh0
ZW5kKFsiICAgIG1hY3JvKCVzKSBcXCIgJSBfaW5wdXQubmFtZSBmb3IgX2lucHV0IGluIHNlbGYu
X21vZGVsLmlucHV0c10pCisgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIFxcIikKKyAgICAgICAg
bGluZXMuYXBwZW5kKCIvLyBlbmQgb2YgJXMiICUgbWFjcm9fbmFtZSkKKyAgICAgICAgcmV0dXJu
ICJcbiIuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9jbGFzc19pbXBsZW1lbnRhdGlv
bihzZWxmLCBfaW5wdXQpOgorICAgICAgICB0ZW1wbGF0ZV9hcmd1bWVudHMgPSB7CisgICAgICAg
ICAgICAnaW5wdXROYW1lJzogX2lucHV0Lm5hbWUsCisgICAgICAgICAgICAnaW5wdXRzTmFtZXNw
YWNlJzogc2VsZi50YXJnZXRfZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAg
ICAgICAgJ2luaXRpYWxpemVyTGlzdCc6IHNlbGYuZ2VuZXJhdGVfY29uc3RydWN0b3JfaW5pdGlh
bGl6ZXJfbGlzdChfaW5wdXQpLAorICAgICAgICAgICAgJ2NvbnN0cnVjdG9yRm9ybWFsc0xpc3Qn
OiBzZWxmLmdlbmVyYXRlX2NvbnN0cnVjdG9yX2Zvcm1hbHNfbGlzdChfaW5wdXQpLAorICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHdyYXBfd2l0aF9ndWFyZChUZW1wbGF0ZShUZW1wbGF0ZXMu
SW5wdXRDbGFzc0ltcGxlbWVudGF0aW9uKS5zdWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50cyks
IF9pbnB1dC5ndWFyZCkKKworICAgIGRlZiBnZW5lcmF0ZV9lbnVtX3RyYWl0X2ltcGxlbWVudGF0
aW9uKHNlbGYsIF90eXBlKToKKyAgICAgICAgc2hvdWxkX3F1YWxpZnlfdHlwZSA9IF90eXBlLmZy
YW1ld29yayAhPSBzZWxmLnRyYWl0c19mcmFtZXdvcmsKKyAgICAgICAgcHJlZml4X2NvbXBvbmVu
dHMgPSBbXQorICAgICAgICBpZiBzaG91bGRfcXVhbGlmeV90eXBlOgorICAgICAgICAgICAgcHJl
Zml4X2NvbXBvbmVudHMuYXBwZW5kKF90eXBlLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2Un
KSkKKyAgICAgICAgaWYgX3R5cGUuaXNfZW51bV9jbGFzcygpOgorICAgICAgICAgICAgcHJlZml4
X2NvbXBvbmVudHMuYXBwZW5kKF90eXBlLnR5cGVfbmFtZSgpKQorICAgICAgICBpZiBfdHlwZS5l
bmNsb3NpbmdfY2xhc3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwcmVmaXhfY29tcG9uZW50
cy5hcHBlbmQoX3R5cGUuZW5jbG9zaW5nX2NsYXNzKQorICAgICAgICBwcmVmaXhfY29tcG9uZW50
cy5hcHBlbmQoIiIpCisgICAgICAgIGVudW1fcHJlZml4ID0gIjo6Ii5qb2luKHByZWZpeF9jb21w
b25lbnRzKQorICAgICAgICBlbmNvZGVMaW5lcyA9IFtdCisKKyAgICAgICAgaWYgX3R5cGUuaXNf
ZW51bSgpOgorICAgICAgICAgICAgZW5jb2RlX3RlbXBsYXRlID0gVGVtcGxhdGVzLkVudW1FbmNv
ZGVDYXNlCisgICAgICAgICAgICBkZWNvZGVfdGVtcGxhdGUgPSBUZW1wbGF0ZXMuRW51bURlY29k
ZUNhc2UKKyAgICAgICAgICAgIGVudW1fdHJhaXRfdGVtcGxhdGUgPSBUZW1wbGF0ZXMuRW51bVRy
YWl0SW1wbGVtZW50YXRpb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVuY29kZV90ZW1w
bGF0ZSA9IFRlbXBsYXRlcy5FbnVtQ2xhc3NFbmNvZGVDYXNlCisgICAgICAgICAgICBkZWNvZGVf
dGVtcGxhdGUgPSBUZW1wbGF0ZXMuRW51bUNsYXNzRGVjb2RlQ2FzZQorICAgICAgICAgICAgZW51
bV90cmFpdF90ZW1wbGF0ZSA9IFRlbXBsYXRlcy5FbnVtQ2xhc3NUcmFpdEltcGxlbWVudGF0aW9u
CisKKyAgICAgICAgIyBHZW5lcmF0ZSBib2R5IGZvciBlbmNvZGUuCisgICAgICAgIGZvciBfdmFs
dWUgaW4gX3R5cGUudmFsdWVzOgorICAgICAgICAgICAgdGVtcGxhdGVfYXJndW1lbnRzID0gewor
ICAgICAgICAgICAgICAgICdlbnVtU3RyaW5nVmFsdWUnOiBfdmFsdWUsCisgICAgICAgICAgICAg
ICAgJ3F1YWxpZmllZEVudW1WYWx1ZSc6ICIlcyVzIiAlIChlbnVtX3ByZWZpeCwgX3ZhbHVlKSwK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVuY29kZUxpbmVzLmFwcGVuZChUZW1wbGF0ZShl
bmNvZGVfdGVtcGxhdGUpLnN1YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKSkKKworICAgICAg
ICBmb3IgZ3VhcmQsIGd1YXJkX3ZhbHVlcyBpbiBfdHlwZS5ndWFyZF92YWx1ZXNfbWFwLml0ZXJp
dGVtcygpOgorICAgICAgICAgICAgZ3VhcmRlZExpbmVzID0gW10KKyAgICAgICAgICAgIGZvciBn
dWFyZF92YWx1ZSBpbiBndWFyZF92YWx1ZXM6CisgICAgICAgICAgICAgICAgdGVtcGxhdGVfYXJn
dW1lbnRzID0geworICAgICAgICAgICAgICAgICAgICAnZW51bVN0cmluZ1ZhbHVlJzogZ3VhcmRf
dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICdxdWFsaWZpZWRFbnVtVmFsdWUnOiAiJXMlcyIg
JSAoZW51bV9wcmVmaXgsIGd1YXJkX3ZhbHVlKSwKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZ3VhcmRlZExpbmVzLmFwcGVuZChUZW1wbGF0ZShlbmNvZGVfdGVtcGxhdGUpLnN1
YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKSkKKyAgICAgICAgICAgIGVuY29kZUxpbmVzLmFw
cGVuZCh3cmFwX3dpdGhfZ3VhcmQoIlxuIi5qb2luKGd1YXJkZWRMaW5lcyksIGd1YXJkKSkKKwor
ICAgICAgICAjIEdlbmVyYXRlIGJvZHkgZm9yIGRlY29kZS4KKyAgICAgICAgZGVjb2RlTGluZXMg
PSBbXQorICAgICAgICBmb3IgX3ZhbHVlIGluIF90eXBlLnZhbHVlczoKKyAgICAgICAgICAgIHRl
bXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgICAgICAnZW51bVN0cmluZ1ZhbHVlJzog
X3ZhbHVlLAorICAgICAgICAgICAgICAgICdxdWFsaWZpZWRFbnVtVmFsdWUnOiAiJXMlcyIgJSAo
ZW51bV9wcmVmaXgsIF92YWx1ZSksCisgICAgICAgICAgICAgICAgJ3F1YWxpZmllZEVudW1OYW1l
JzogX3R5cGUudHlwZV9uYW1lKHF1YWxpZmllZD1zaG91bGRfcXVhbGlmeV90eXBlKQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZGVjb2RlTGluZXMuYXBwZW5kKFRlbXBsYXRlKGRlY29kZV90
ZW1wbGF0ZSkuc3Vic3RpdHV0ZSh0ZW1wbGF0ZV9hcmd1bWVudHMpKQorCisgICAgICAgIGZvciBn
dWFyZCwgZ3VhcmRfdmFsdWVzIGluIF90eXBlLmd1YXJkX3ZhbHVlc19tYXAuaXRlcml0ZW1zKCk6
CisgICAgICAgICAgICBndWFyZGVkTGluZXMgPSBbXQorICAgICAgICAgICAgZm9yIGd1YXJkX3Zh
bHVlIGluIGd1YXJkX3ZhbHVlczoKKyAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9hcmd1bWVudHMg
PSB7CisgICAgICAgICAgICAgICAgICAgICdlbnVtU3RyaW5nVmFsdWUnOiBndWFyZF92YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgJ3F1YWxpZmllZEVudW1WYWx1ZSc6ICIlcyVzIiAlIChlbnVt
X3ByZWZpeCwgZ3VhcmRfdmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAncXVhbGlmaWVkRW51
bU5hbWUnOiBfdHlwZS50eXBlX25hbWUocXVhbGlmaWVkPXNob3VsZF9xdWFsaWZ5X3R5cGUpCisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGd1YXJkZWRMaW5lcy5hcHBlbmQoVGVt
cGxhdGUoZGVjb2RlX3RlbXBsYXRlKS5zdWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50cykpCisg
ICAgICAgICAgICBkZWNvZGVMaW5lcy5hcHBlbmQod3JhcF93aXRoX2d1YXJkKCJcbiIuam9pbihn
dWFyZGVkTGluZXMpLCBndWFyZCkpCisKKyAgICAgICAgdGVtcGxhdGVfYXJndW1lbnRzID0gewor
ICAgICAgICAgICAgJ2VudW1OYW1lJzogX3R5cGUudHlwZV9uYW1lKHF1YWxpZmllZD1zaG91bGRf
cXVhbGlmeV90eXBlKSwKKyAgICAgICAgICAgICdlbmNvZGVDYXNlcyc6ICJcbiIuam9pbihlbmNv
ZGVMaW5lcyksCisgICAgICAgICAgICAnZGVjb2RlQ2FzZXMnOiAiXG4iLmpvaW4oZGVjb2RlTGlu
ZXMpCisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gVGVtcGxhdGUoZW51bV90cmFpdF90ZW1w
bGF0ZSkuc3Vic3RpdHV0ZSh0ZW1wbGF0ZV9hcmd1bWVudHMpCisKKyAgICBkZWYgZ2VuZXJhdGVf
aW5wdXRfdHJhaXRfaW1wbGVtZW50YXRpb24oc2VsZiwgX2lucHV0KToKKyAgICAgICAgdGVtcGxh
dGVfYXJndW1lbnRzID0geworICAgICAgICAgICAgJ2lucHV0c05hbWVzcGFjZSc6IHNlbGYudGFy
Z2V0X2ZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdpbnB1dFR5
cGVJbXBsZW1lbnRhdGlvbic6IFRlbXBsYXRlKHNlbGYuc2V0dGluZygnaW5wdXRUeXBlVGVtcGxh
dGUnKSkuc3Vic3RpdHV0ZShOb25lLCBpbnB1dE5hbWU9X2lucHV0Lm5hbWUpLAorICAgICAgICAg
ICAgJ3F1YWxpZmllZElucHV0TmFtZSc6IHNlbGYucXVhbGlmaWVkX2lucHV0X25hbWUoX2lucHV0
KSwKKyAgICAgICAgICAgICdjb25zdHJ1Y3RvckFyZ3VtZW50cyc6IHNlbGYuZ2VuZXJhdGVfY29u
c3RydWN0b3JfYXJndW1lbnRzX2xpc3QoX2lucHV0KSwKKyAgICAgICAgICAgICdjb25zdHJ1Y3Rv
ckZvcm1hbHNMaXN0Jzogc2VsZi5nZW5lcmF0ZV9jb25zdHJ1Y3Rvcl9mb3JtYWxzX2xpc3QoX2lu
cHV0KSwKKyAgICAgICAgICAgICdlbmNvZGVTdGVwcyc6IHNlbGYuZ2VuZXJhdGVfaW5wdXRfZW5j
b2RlX2ltcGxlbWVudGF0aW9uKF9pbnB1dCksCisgICAgICAgICAgICAnZGVjb2RlU3RlcHMnOiBz
ZWxmLmdlbmVyYXRlX2lucHV0X2RlY29kZV9pbXBsZW1lbnRhdGlvbihfaW5wdXQpLAorICAgICAg
ICB9CisgICAgICAgIHJldHVybiB3cmFwX3dpdGhfZ3VhcmQoVGVtcGxhdGUoVGVtcGxhdGVzLklu
cHV0VHJhaXRzSW1wbGVtZW50YXRpb24pLnN1YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKSwg
X2lucHV0Lmd1YXJkKQorCisgICAgZGVmIGdlbmVyYXRlX2lucHV0X2VuY29kZV9pbXBsZW1lbnRh
dGlvbihzZWxmLCBfaW5wdXQpOgorICAgICAgICBzdGVwcyA9IFtdCisgICAgICAgIGZvciAoX21l
bWJlciwgX3R5cGUpIGluIHNlbGYuZ2VuZXJhdGVfaW5wdXRfbWVtYmVyX3R1cGxlcyhfaW5wdXQp
OgorICAgICAgICAgICAgc2hvdWxkX3F1YWxpZnlfdHlwZSA9IF90eXBlLmZyYW1ld29yayAhPSBz
ZWxmLnRyYWl0c19mcmFtZXdvcmsKKyAgICAgICAgICAgIHB1dF9tZXRob2QgPSAicHV0PCVzPiIg
JSBfdHlwZS50eXBlX25hbWUocXVhbGlmaWVkPXNob3VsZF9xdWFsaWZ5X3R5cGUpCisKKyAgICAg
ICAgICAgIHN0ZXBzLmV4dGVuZChbCisgICAgICAgICAgICAgICAgIiAgICBlbmNvZGVkVmFsdWUu
JXMoQVNDSUlMaXRlcmFsKFwiJXNcIiksIGlucHV0LiVzKCkpOyIgJSAocHV0X21ldGhvZCwgX21l
bWJlci5tZW1iZXJOYW1lLCBfbWVtYmVyLm1lbWJlck5hbWUpCisgICAgICAgICAgICBdKQorCisg
ICAgICAgIGlmIGxlbihzdGVwcykgPT0gMDoKKyAgICAgICAgICAgIHN0ZXBzLmV4dGVuZChbCisg
ICAgICAgICAgICAgICAgIiAgICBVTlVTRURfUEFSQU0oZW5jb2RlZFZhbHVlKTsiLAorICAgICAg
ICAgICAgICAgICIgICAgVU5VU0VEX1BBUkFNKGlucHV0KTsiLAorICAgICAgICAgICAgXSkKKwor
ICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0ZXBzKQorCisgICAgZGVmIGdlbmVyYXRlX2lucHV0
X2RlY29kZV9pbXBsZW1lbnRhdGlvbihzZWxmLCBfaW5wdXQpOgorICAgICAgICBzdGVwcyA9IFtd
CisgICAgICAgIGZvciAoX21lbWJlciwgX3R5cGUpIGluIHNlbGYuZ2VuZXJhdGVfaW5wdXRfbWVt
YmVyX3R1cGxlcyhfaW5wdXQpOgorICAgICAgICAgICAgc2hvdWxkX3F1YWxpZnlfdHlwZSA9IF90
eXBlLmZyYW1ld29yayAhPSBzZWxmLnRyYWl0c19mcmFtZXdvcmsKKyAgICAgICAgICAgIGdldF9t
ZXRob2QgPSAiZ2V0PCVzPiIgJSBfdHlwZS50eXBlX25hbWUocXVhbGlmaWVkPXNob3VsZF9xdWFs
aWZ5X3R5cGUpCisKKyAgICAgICAgICAgIGxpbmVzID0gWworICAgICAgICAgICAgICAgICIgICAg
JXMgJXM7IiAlIChfdHlwZS5zdG9yYWdlX3R5cGUocXVhbGlmaWVkPXNob3VsZF9xdWFsaWZ5X3R5
cGUpLCBfbWVtYmVyLm1lbWJlck5hbWUpLAorICAgICAgICAgICAgICAgICIgICAgaWYgKCFlbmNv
ZGVkVmFsdWUuJXMoQVNDSUlMaXRlcmFsKFwiJXNcIiksICVzKSkiICUgKGdldF9tZXRob2QsIF9t
ZW1iZXIubWVtYmVyTmFtZSwgX21lbWJlci5tZW1iZXJOYW1lKSwKKyAgICAgICAgICAgICAgICAi
ICAgICAgICByZXR1cm4gZmFsc2U7IiwKKyAgICAgICAgICAgICAgICAiIgorICAgICAgICAgICAg
XQorCisgICAgICAgICAgICBzdGVwcy5hcHBlbmQoIlxuIi5qb2luKGxpbmVzKSkKKworICAgICAg
ICBpZiBsZW4oc3RlcHMpID09IDA6CisgICAgICAgICAgICBzdGVwcy5leHRlbmQoWworICAgICAg
ICAgICAgICAgICIgICAgVU5VU0VEX1BBUkFNKGVuY29kZWRWYWx1ZSk7IiwKKyAgICAgICAgICAg
IF0pCisKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdGVwcykKKworICAgIGRlZiBnZW5lcmF0
ZV9jb25zdHJ1Y3Rvcl9pbml0aWFsaXplcl9saXN0KHNlbGYsIF9pbnB1dCk6CisgICAgICAgIGlu
aXRpYWxpemVycyA9IFtdCisgICAgICAgIGluaXRpYWxpemVycy5hcHBlbmQoIiAgICA6ICVzKCki
ICUgKF9pbnB1dC5zZXR0aW5nKCdiYXNlQ2xhc3MnKSAlIF9pbnB1dC5uYW1lKSkKKyAgICAgICAg
Zm9yIF9tZW1iZXIgaW4gX2lucHV0Lm1lbWJlcnM6CisgICAgICAgICAgICBpbml0aWFsaXplcnMu
YXBwZW5kKCIgICAgLCBtXyVzKCVzKSIgJSAoX21lbWJlci5tZW1iZXJOYW1lLCBzZWxmLmdlbmVy
YXRlX21lbWJlcl9tb3ZlX2V4cHJlc3Npb24oX21lbWJlcikpKQorCisgICAgICAgIHJldHVybiAi
XG4iLmpvaW4oaW5pdGlhbGl6ZXJzKQorCisgICAgZGVmIGdlbmVyYXRlX2NvbnN0cnVjdG9yX2Zv
cm1hbHNfbGlzdChzZWxmLCBfaW5wdXQpOgorICAgICAgICBtZW1iZXJfdHVwbGVzID0gc2VsZi5n
ZW5lcmF0ZV9pbnB1dF9tZW1iZXJfdHVwbGVzKF9pbnB1dCkKKyAgICAgICAgcmV0dXJuICIsICIu
am9pbihbIiVzICVzIiAlIChfdHlwZS5hcmd1bWVudF90eXBlKCksIF9tZW1iZXIubWVtYmVyTmFt
ZSkgZm9yIChfbWVtYmVyLCBfdHlwZSkgaW4gbWVtYmVyX3R1cGxlc10pCisKKyAgICBkZWYgZ2Vu
ZXJhdGVfbWVtYmVyX2JvcnJvd19leHByZXNzaW9uKHNlbGYsIF9tZW1iZXIpOgorICAgICAgICBf
dHlwZSA9IHNlbGYuX21vZGVsLmdldF90eXBlX2Zvcl9tZW1iZXIoX21lbWJlcikKKyAgICAgICAg
ZXhwcmVzc2lvbiA9ICJtXyVzIiAlIF9tZW1iZXIubWVtYmVyTmFtZQorICAgICAgICBpZiBfdHlw
ZS5tb2RlID09IFR5cGVNb2Rlcy5PV05FRDoKKyAgICAgICAgICAgIGV4cHJlc3Npb24gPSAiKiIg
KyBleHByZXNzaW9uCisKKyAgICAgICAgcmV0dXJuIGV4cHJlc3Npb24KKworICAgIGRlZiBnZW5l
cmF0ZV9tZW1iZXJfbW92ZV9leHByZXNzaW9uKHNlbGYsIF9tZW1iZXIpOgorICAgICAgICBfdHlw
ZSA9IHNlbGYuX21vZGVsLmdldF90eXBlX2Zvcl9tZW1iZXIoX21lbWJlcikKKyAgICAgICAgaWYg
X3R5cGUubW9kZSA9PSBUeXBlTW9kZXMuT1dORUQ6CisgICAgICAgICAgICByZXR1cm4gInN0ZDo6
bW92ZSglcykiICUgX21lbWJlci5tZW1iZXJOYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICByZXR1cm4gX21lbWJlci5tZW1iZXJOYW1lCisKKyAgICBkZWYgZ2VuZXJhdGVfY29uc3RydWN0
b3JfYXJndW1lbnRzX2xpc3Qoc2VsZiwgX2lucHV0KToKKyAgICAgICAgcmV0dXJuICIsICIuam9p
bihbc2VsZi5nZW5lcmF0ZV9tZW1iZXJfbW92ZV9leHByZXNzaW9uKF9tZW1iZXIpIGZvciBfbWVt
YmVyIGluIF9pbnB1dC5tZW1iZXJzXSkKKworCitkZWYgZ2VuZXJhdGVfZnJvbV9zcGVjaWZpY2F0
aW9uKGlucHV0X2ZpbGVwYXRoPU5vbmUsIG91dHB1dF9wcmVmaXg9IiIsIG91dHB1dF9kaXJwYXRo
PU5vbmUsIGZyYW1ld29ya19uYW1lPU5vbmUsIGZvcmNlX291dHB1dD1GYWxzZSk6CisgICAgdHJ5
OgorICAgICAgICB3aXRoIG9wZW4oaW5wdXRfZmlsZXBhdGgsICJyIikgYXMgaW5wdXRfZmlsZToK
KyAgICAgICAgICAgIHBhcnNlZF9qc29uID0ganNvbi5sb2FkKGlucHV0X2ZpbGUpCisgICAgZXhj
ZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFcnJvciBwYXJz
aW5nIHZhbGlkIEpTT04gaW4gZmlsZTogIiArIGlucHV0X2ZpbGVwYXRoKQorCisgICAgaWYgbm90
IGZyYW1ld29ya19uYW1lIGluIEZSQU1FV09SS19DT05GSUdfTUFQOgorICAgICAgICByYWlzZSBQ
YXJzZUV4Y2VwdGlvbigiVW5rbm93biBvciB1bnN1cHBvcnRlZCBmcmFtZXdvcmsgbmFtZSBzdXBw
bGllZDogIiArIGZyYW1ld29ya19uYW1lKQorCisgICAgbW9kZWwgPSBJbnB1dHNNb2RlbChwYXJz
ZWRfanNvbikKKyAgICBtb2RlbC50eXBlY2hlY2soKQorICAgIGdlbmVyYXRvciA9IEdlbmVyYXRv
cihtb2RlbCwgZnJhbWV3b3JrX25hbWUsIGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRfcHJlZml4KQor
CisgICAgZ2VuZXJhdG9yLndyaXRlX291dHB1dF9maWxlcyhvdXRwdXRfZGlycGF0aCwgZm9yY2Vf
b3V0cHV0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgYWxsb3dlZF9mcmFt
ZXdvcmtfbmFtZXMgPSBGUkFNRVdPUktfQ09ORklHX01BUC5rZXlzKCkKKworICAgIGNsaV9wYXJz
ZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9InVzYWdlOiAlcHJvZyBbb3B0aW9uc10g
PElucHV0cy5qc29uPiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItbyIsICItLW91dHB1
dERpciIsIGhlbHA9IkRpcmVjdG9yeSB3aGVyZSBnZW5lcmF0ZWQgZmlsZXMgc2hvdWxkIGJlIHdy
aXR0ZW4uIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi0tZnJhbWV3b3JrIiwgdHlwZT0i
Y2hvaWNlIiwgY2hvaWNlcz1hbGxvd2VkX2ZyYW1ld29ya19uYW1lcywgaGVscD0iVGhlIGZyYW1l
d29yayB0aGVzZSBpbnB1dHMgYmVsb25nIHRvLiIpICAjIEphdmFTY3JpcHRDb3JlLCBXZWJDb3Jl
CisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItLWZvcmNlIiwgYWN0aW9uPSJzdG9yZV90cnVl
IiwgaGVscD0iRm9yY2Ugb3V0cHV0IG9mIGdlbmVyYXRlZCBzY3JpcHRzLCBldmVuIGlmIG5vdGhp
bmcgY2hhbmdlZC4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXYiLCAiLS1kZWJ1ZyIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkxvZyBleHRyYSBvdXRwdXQgZm9yIGRlYnVnZ2lu
ZyB0aGUgZ2VuZXJhdG9yIGl0c2VsZi4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXQi
LCAiLS10ZXN0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iRW5hYmxlIHRlc3QgbW9kZS4g
VXNlIHVuaXF1ZSBvdXRwdXQgZmlsZW5hbWVzIGNyZWF0ZWQgYnkgcHJlcGVuZGluZyB0aGUgaW5w
dXQgZmlsZW5hbWUuIikKKworICAgIG9wdGlvbnMgPSBOb25lCisKKyAgICBhcmdfb3B0aW9ucywg
YXJnX3ZhbHVlcyA9IGNsaV9wYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgKGxlbihhcmdfdmFs
dWVzKSA8IDEpOgorICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiQXQgbGVhc3Qgb25lIHBs
YWluIGFyZ3VtZW50IGV4cGVjdGVkIikKKworICAgIGlmIG5vdCBhcmdfb3B0aW9ucy5vdXRwdXRE
aXI6CisgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJNaXNzaW5nIG91dHB1dCBkaXJlY3Rv
cnkiKQorCisgICAgaWYgYXJnX29wdGlvbnMuZGVidWc6CisgICAgICAgIGxvZy5zZXRMZXZlbChs
b2dnaW5nLkRFQlVHKQorCisgICAgb3B0aW9ucyA9IHsKKyAgICAgICAgJ2lucHV0X2ZpbGVwYXRo
JzogYXJnX3ZhbHVlc1swXSwKKyAgICAgICAgJ291dHB1dF9kaXJwYXRoJzogYXJnX29wdGlvbnMu
b3V0cHV0RGlyLAorICAgICAgICAnb3V0cHV0X3ByZWZpeCc6IG9zLnBhdGguYmFzZW5hbWUoYXJn
X3ZhbHVlc1swXSkgaWYgYXJnX29wdGlvbnMudGVzdCBlbHNlICIiLAorICAgICAgICAnZnJhbWV3
b3JrX25hbWUnOiBhcmdfb3B0aW9ucy5mcmFtZXdvcmssCisgICAgICAgICdmb3JjZV9vdXRwdXQn
OiBhcmdfb3B0aW9ucy5mb3JjZQorICAgIH0KKworICAgIHRyeToKKyAgICAgICAgZ2VuZXJhdGVf
ZnJvbV9zcGVjaWZpY2F0aW9uKCoqb3B0aW9ucykKKyAgICBleGNlcHQgKFBhcnNlRXhjZXB0aW9u
LCBUeXBlY2hlY2tFeGNlcHRpb24pIGFzIGU6CisgICAgICAgIGlmIGFyZ19vcHRpb25zLnRlc3Q6
CisgICAgICAgICAgICBsb2cuZXJyb3IoZS5tZXNzYWdlKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgcmFpc2UgZSAgIyBGb3JjZSB0aGUgYnVpbGQgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5w
dXRzVGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg0ODViYTk4
ZDBlNmRiNWNhODBiMTU3NzEwMjUwNmNmNmFhMmE4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRz
VGVtcGxhdGVzLnB5CkBAIC0wLDAgKzEsMjI2IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMg
Q29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoYykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBHZW5lcmF0b3IgdGVtcGxhdGVzLCB3aGljaCBj
YW4gYmUgZmlsbGVkIHdpdGggc3RyaW5nLlRlbXBsYXRlLgorIyBGb2xsb3dpbmcgYXJlIGNsYXNz
ZXMgdGhhdCBmaWxsIHRoZSB0ZW1wbGF0ZXMgZnJvbSB0aGUgdHlwZWNoZWNrZWQgbW9kZWwuCisK
K2NsYXNzIFRlbXBsYXRlczoKKyAgICBDb3B5cmlnaHRCbG9jayA9ICIiIi8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQor
ICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSAke2lucHV0RmlsZW5hbWV9CisvLyBieSB0aGUgc2NyaXB0
OiBKYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRz
LnB5IiIiCisKKyAgICBIZWFkZXJTa2VsZXRvbiA9ICIiIiR7bGljZW5zZUJsb2NrfQorCisjaWZu
ZGVmICR7aGVhZGVyR3VhcmR9CisjZGVmaW5lICR7aGVhZGVyR3VhcmR9CisKKyNpZiAke2d1YXJk
Q29uZGl0aW9ufQorJHtpbmNsdWRlc30KKworJHt0eXBlRm9yd2FyZERlY2xhcmF0aW9uc30KKwor
bmFtZXNwYWNlICR7aW5wdXRzTmFtZXNwYWNlfSB7Ciske2lucHV0Rm9yd2FyZERlY2xhcmF0aW9u
c30KK30gLy8gbmFtZXNwYWNlICR7aW5wdXRzTmFtZXNwYWNlfQorCituYW1lc3BhY2UgJHt0cmFp
dHNOYW1lc3BhY2V9IHsKKyR7aW5wdXRUcmFpdERlY2xhcmF0aW9uc30KKyR7ZW51bVRyYWl0RGVj
bGFyYXRpb25zfQorfSAvLyBuYW1lc3BhY2UgJHt0cmFpdHNOYW1lc3BhY2V9CisKK25hbWVzcGFj
ZSAke2lucHV0c05hbWVzcGFjZX0geworJHtpbnB1dENsYXNzRGVjbGFyYXRpb25zfQorfSAvLyBu
YW1lc3BhY2UgJHtpbnB1dHNOYW1lc3BhY2V9CisKKyR7Zm9yRWFjaE1hY3JvfQorCisjZW5kaWYg
Ly8gJHtndWFyZENvbmRpdGlvbn0KKworI2VuZGlmIC8vICR7ZmlsZW5hbWV9X2gKKyIiIgorCisg
ICAgSW5wdXRUcmFpdHNEZWNsYXJhdGlvbiA9ICIiInRlbXBsYXRlPD4gJHtzdHJ1Y3RPckNsYXNz
fSBJbnB1dFRyYWl0czwke3F1YWxpZmllZElucHV0TmFtZX0+IHsKKyAgICBzdGF0aWMgSW5wdXRR
dWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OiR7cXVldWVUeXBlfTsgfQorICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0ICR7cXVhbGlmaWVkSW5wdXROYW1lfSYpOworICAg
IHN0YXRpYyBib29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjwk
e3F1YWxpZmllZElucHV0TmFtZX0+Jik7Cit9OyIiIgorCisgICAgRW51bVRyYWl0RGVjbGFyYXRp
b24gPSAiIiJ0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0czwke2VudW1OYW1lfT4gewor
ICAgIHR5cGVkZWYgJHtlbnVtTmFtZX0gRGVjb2RlZFR5cGU7CisKKyAgICBzdGF0aWMgRW5jb2Rl
ZFZhbHVlIGVuY29kZVZhbHVlKGNvbnN0ICR7ZW51bU5hbWV9JiB2YWx1ZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiwgJHtlbnVtTmFtZX0mIHZhbHVlKTsKK307
IiIiCisKKyAgICBFbnVtQ2xhc3NUcmFpdERlY2xhcmF0aW9uID0gIiIidGVtcGxhdGU8PiBzdHJ1
Y3QgRW5jb2RpbmdUcmFpdHM8JHtlbnVtTmFtZX0+IHsKKyAgICB0eXBlZGVmICR7ZW51bU5hbWV9
IERlY29kZWRUeXBlOworCisgICAgc3RhdGljIEVuY29kZWRWYWx1ZSBlbmNvZGVWYWx1ZShjb25z
dCAke2VudW1OYW1lfSYgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKEVuY29k
ZWRWYWx1ZSYsICR7ZW51bU5hbWV9JiB2YWx1ZSk7Cit9OyIiIgorCisgICAgSW5wdXRDbGFzc0Rl
Y2xhcmF0aW9uID0gIiIiY2xhc3MgJHtpbnB1dE5hbWV9IDogcHVibGljICR7YmFzZUNsYXNzfSB7
CitwdWJsaWM6Ciske2lucHV0Q29uc3RydWN0b3J9Ciske2lucHV0RGVzdHJ1Y3Rvcn0KKyR7ZXh0
cmFEZWNsYXJhdGlvbnN9Ciske21lbWJlckdldHRlcnN9Ciske21lbWJlckRlY2xhcmF0aW9uc30K
K307IiIiCisKKyAgICBJbXBsZW1lbnRhdGlvblNrZWxldG9uID0gIiIiJHtsaWNlbnNlQmxvY2t9
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICIke2ZpbGVuYW1lfS5oIgorCisjaWYg
JHtndWFyZENvbmRpdGlvbn0KKyR7aW5jbHVkZXN9CisKK25hbWVzcGFjZSAke2lucHV0c05hbWVz
cGFjZX0geworJHtpbnB1dENsYXNzSW1wbGVtZW50YXRpb25zfQorfSAvLyBuYW1lc3BhY2UgJHtp
bnB1dHNOYW1lc3BhY2V9CisKK25hbWVzcGFjZSAke3RyYWl0c05hbWVzcGFjZX0geworJHtpbnB1
dFRyYWl0SW1wbGVtZW50YXRpb25zfQorJHtlbnVtVHJhaXRJbXBsZW1lbnRhdGlvbnN9Cit9IC8v
IG5hbWVzcGFjZSAke3RyYWl0c05hbWVzcGFjZX0KKworI2VuZGlmIC8vICR7Z3VhcmRDb25kaXRp
b259CisiIiIKKworICAgIElucHV0VHJhaXRzSW1wbGVtZW50YXRpb24gPSAiIiJjb25zdCBBdG9t
aWNTdHJpbmcmIElucHV0VHJhaXRzPCR7cXVhbGlmaWVkSW5wdXROYW1lfT46OnR5cGUoKQorewor
JGlucHV0VHlwZUltcGxlbWVudGF0aW9uCit9CisKK3ZvaWQgSW5wdXRUcmFpdHM8JHtxdWFsaWZp
ZWRJbnB1dE5hbWV9Pjo6ZW5jb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCAk
e3F1YWxpZmllZElucHV0TmFtZX0mIGlucHV0KQoreworJHtlbmNvZGVTdGVwc30KK30KKworYm9v
bCBJbnB1dFRyYWl0czwke3F1YWxpZmllZElucHV0TmFtZX0+OjpkZWNvZGUoRW5jb2RlZFZhbHVl
JiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjwke3F1YWxpZmllZElucHV0TmFtZX0+JiBp
bnB1dCkKK3sKKyR7ZGVjb2RlU3RlcHN9CisgICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPCR7
cXVhbGlmaWVkSW5wdXROYW1lfT4oJHtjb25zdHJ1Y3RvckFyZ3VtZW50c30pOworICAgIHJldHVy
biB0cnVlOworfSIiIgorCisgICAgRW51bUNsYXNzVHJhaXRJbXBsZW1lbnRhdGlvbiA9ICIiIkVu
Y29kZWRWYWx1ZSBFbmNvZGluZ1RyYWl0czwke2VudW1OYW1lfT46OmVuY29kZVZhbHVlKGNvbnN0
ICR7ZW51bU5hbWV9JiBlbnVtVmFsdWUpCit7CisgICAgc3dpdGNoIChlbnVtVmFsdWUpIHsKKyR7
ZW5jb2RlQ2FzZXN9CisgICAgZGVmYXVsdDogQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBF
bmNvZGVkVmFsdWU6OmNyZWF0ZVN0cmluZygiRXJyb3IhIik7CisgICAgfQorfQorCitib29sIEVu
Y29kaW5nVHJhaXRzPCR7ZW51bU5hbWV9Pjo6ZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiBlbmNv
ZGVkVmFsdWUsICR7ZW51bU5hbWV9JiBlbnVtVmFsdWUpCit7CisgICAgU3RyaW5nIGVudW1TdHJp
bmcgPSBlbmNvZGVkVmFsdWUuY29udmVydFRvPFN0cmluZz4oKTsKKyR7ZGVjb2RlQ2FzZXN9Cisg
ICAgcmV0dXJuIGZhbHNlOworfSIiIgorCisgICAgRW51bUNsYXNzRW5jb2RlQ2FzZSA9ICIiIiAg
ICBjYXNlICR7cXVhbGlmaWVkRW51bVZhbHVlfTogcmV0dXJuIEVuY29kZWRWYWx1ZTo6Y3JlYXRl
U3RyaW5nKCIke2VudW1TdHJpbmdWYWx1ZX0iKTsiIiIKKworICAgIEVudW1DbGFzc0RlY29kZUNh
c2UgPSAiIiIgICAgaWYgKGVudW1TdHJpbmcgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiJHtlbnVt
U3RyaW5nVmFsdWV9IikpKSB7CisgICAgICAgIGVudW1WYWx1ZSA9ICR7cXVhbGlmaWVkRW51bVZh
bHVlfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSIiIgorCisgICAgRW51bVRyYWl0SW1w
bGVtZW50YXRpb24gPSAiIiJFbmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8JHtlbnVtTmFtZX0+
OjplbmNvZGVWYWx1ZShjb25zdCAke2VudW1OYW1lfSYgZW51bVZhbHVlKQoreworICAgIEVuY29k
ZWRWYWx1ZSBlbmNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmNyZWF0ZUFycmF5KCk7Ciske2Vu
Y29kZUNhc2VzfQorICAgIHJldHVybiBlbmNvZGVkVmFsdWU7Cit9CisKK2Jvb2wgRW5jb2RpbmdU
cmFpdHM8JHtlbnVtTmFtZX0+OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1
ZSwgJHtlbnVtTmFtZX0mIGVudW1WYWx1ZSkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnVtU3Ry
aW5nczsKKyAgICBpZiAoIUVuY29kaW5nVHJhaXRzPFZlY3RvcjxTdHJpbmc+Pjo6ZGVjb2RlVmFs
dWUoZW5jb2RlZFZhbHVlLCBlbnVtU3RyaW5ncykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGZvciAoU3RyaW5nIGVudW1TdHJpbmcgOiBlbnVtU3RyaW5ncykgeworJHtkZWNvZGVDYXNl
c30KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30iIiIKKworICAgIEVudW1FbmNvZGVDYXNl
ID0gIiIiICAgIGlmIChlbnVtVmFsdWUgJiAke3F1YWxpZmllZEVudW1WYWx1ZX0pCisgICAgICAg
IGVuY29kZWRWYWx1ZS5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIiR7ZW51bVN0cmluZ1Zh
bHVlfSIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09ICR7cXVhbGlmaWVkRW51bVZhbHVlfSkKKyAg
ICAgICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsiIiIKKworICAgIEVudW1EZWNvZGVDYXNlID0gIiIi
ICAgICAgICBpZiAoZW51bVN0cmluZyA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCIke2VudW1TdHJp
bmdWYWx1ZX0iKSkpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDwke3F1YWxp
ZmllZEVudW1OYW1lfT4oZW51bVZhbHVlIHwgJHtxdWFsaWZpZWRFbnVtVmFsdWV9KTsiIiIKKwor
ICAgIElucHV0VHlwZUZyb21TdGF0aWNMb2NhbCA9ICIiIiAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0eXBlKCIke2lucHV0TmFtZX0iLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gdHlwZTsiIiIKKworICAgIElucHV0
VHlwZUZyb21UaHJlYWRMb2NhbCA9ICIgICAgcmV0dXJuIFdlYkNvcmU6OmlucHV0VHlwZXMoKS4k
e2lucHV0TmFtZX07IgorCisgICAgSW5wdXRDbGFzc0ltcGxlbWVudGF0aW9uID0gIiIiJHtpbnB1
dE5hbWV9Ojoke2lucHV0TmFtZX0oJHtjb25zdHJ1Y3RvckZvcm1hbHNMaXN0fSkKKyR7aW5pdGlh
bGl6ZXJMaXN0fQoreworfQorCiske2lucHV0TmFtZX06On4ke2lucHV0TmFtZX0oKQoreworfSIi
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2ZhaWwtb24tYy1zdHlsZS1lbnVtLW5vLXN0b3JhZ2UuanNvbi1lcnJvciBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9u
LWMtc3R5bGUtZW51bS1uby1zdG9yYWdlLmpzb24tZXJyb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ2MTczMjhl
ODA4YTEzNDE1NGQyYzViNDQwZTkxOGFkMzA4OTU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLWMt
c3R5bGUtZW51bS1uby1zdG9yYWdlLmpzb24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IEMt
c3R5bGUgZW51bXMgbXVzdCBhbHNvIHNwZWNpZnkgdGhlaXIgc3RvcmFnZSB0eXBlIHNvIHRoZXkg
Y2FuIGJlIGZvcndhcmQgZGVjbGFyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1kdXBsaWNhdGUtaW5wdXQt
bmFtZXMuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9mYWlsLW9uLWR1cGxpY2F0ZS1pbnB1dC1uYW1lcy5qc29uLWVycm9yCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQzMWVjODAyMzY1MmNjMzkxNDc1MDA2ZjkxNDBlNGVlOTEwYWMxOTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZmFpbC1vbi1kdXBsaWNhdGUtaW5wdXQtbmFtZXMuanNvbi1lcnJvcgpAQCAtMCww
ICsxIEBACitFUlJPUjogRHVwbGljYXRlIGlucHV0IHdpdGggbmFtZTogR2V0Q3VycmVudFRpbWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9mYWlsLW9uLWR1cGxpY2F0ZS10eXBlLW5hbWVzLmpzb24tZXJyb3IgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1kdXBs
aWNhdGUtdHlwZS1uYW1lcy5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxZTRjNDdiYmY5NjgyODZm
Zjk4MTkxNWRjZDI0ODQxZmQ3NWRlMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1kdXBsaWNhdGUt
dHlwZS1uYW1lcy5qc29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBEdXBsaWNhdGUgdHlw
ZSB3aXRoIG5hbWU6IHVpbnQ2NF90CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1lbnVtLXR5cGUtbWlzc2luZy12
YWx1ZXMuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9mYWlsLW9uLWVudW0tdHlwZS1taXNzaW5nLXZhbHVlcy5qc29uLWVycm9y
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI0YTM0OGNmNmU5MzdkYmMxMjVlNjIxYWFlZTc5NjM1NWE3OTBmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZmFpbC1vbi1lbnVtLXR5cGUtbWlzc2luZy12YWx1ZXMuanNvbi1lcnJvcgpA
QCAtMCwwICsxIEBACitFUlJPUjogV2hlbiBwYXJzaW5nIGVudW0sIHJlcXVpcmVkIHByb3BlcnR5
IG1pc3Npbmc6IHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tbWlzc2luZy1pbnB1dC1tZW1iZXItbmFt
ZS5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2ZhaWwtb24tbWlzc2luZy1pbnB1dC1tZW1iZXItbmFtZS5qc29uLWVycm9yCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBiYjI4NjlkMmFlYjdmNmQ5NTk2NzM5Yzg0ZjU0MWUzZDI4ZGFhODIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LW1lbWJlci1uYW1lLmpzb24tZXJyb3IKQEAg
LTAsMCArMSBAQAorRVJST1I6IFdoZW4gcGFyc2luZyBtZW1iZXIsIHJlcXVpcmVkIHByb3BlcnR5
IG1pc3Npbmc6IG5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbmFtZS5qc29uLWVy
cm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2ZhaWwtb24tbWlzc2luZy1pbnB1dC1uYW1lLmpzb24tZXJyb3IKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU5OTYw
N2E3OTY2ODZmYTJkMDBkOGQ4ZDgzNjM1YjhkOTBlZGQ5NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9u
LW1pc3NpbmctaW5wdXQtbmFtZS5qc29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBXaGVu
IHBhcnNpbmcgaW5wdXQsIHJlcXVpcmVkIHByb3BlcnR5IG1pc3Npbmc6IG5hbWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9m
YWlsLW9uLW1pc3NpbmctaW5wdXQtcXVldWUuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctaW5wdXQt
cXVldWUuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzkxOWFiNTUxYzIxYzhiYmY2MjAxNDIzZTFm
MGZjNmFlODA3ZjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Jl
cGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tbWlzc2luZy1pbnB1dC1xdWV1ZS5q
c29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBXaGVuIHBhcnNpbmcgaW5wdXQsIHJlcXVp
cmVkIHByb3BlcnR5IG1pc3Npbmc6IHF1ZXVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLXR5cGUt
bW9kZS5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2ZhaWwtb24tbWlzc2luZy10eXBlLW1vZGUuanNvbi1lcnJvcgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42OTI5ZjRmOGE4NWY0ODk5NWQ3MjdiMjdlMWY3ZWVjN2ZkNGE0NjE2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2ZhaWwtb24tbWlzc2luZy10eXBlLW1vZGUuanNvbi1lcnJvcgpAQCAtMCwwICsxIEBACitF
UlJPUjogV2hlbiBwYXJzaW5nIHR5cGUsIHJlcXVpcmVkIHByb3BlcnR5IG1pc3Npbmc6IG1vZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctdHlwZS1uYW1lLmpzb24tZXJyb3IgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5n
LXR5cGUtbmFtZS5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhYWQ5MDAxOTVlZDYzMmI1ZjdiNjRj
YmM1MTk2YmYwNzQ5MTMzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLXR5cGUtbmFt
ZS5qc29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBXaGVuIHBhcnNpbmcgdHlwZSwgcmVx
dWlyZWQgcHJvcGVydHkgbWlzc2luZzogbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tbm8taW5wdXRzLmpz
b24tZXJyb3IgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZmFpbC1vbi1uby1pbnB1dHMuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTVhY2U3Njhj
ZGU3MmJlYzFhNmMwMzMyNzUxMWVkMmU3OTc5ZjM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tbm8t
aW5wdXRzLmpzb24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IFdoZW4gcGFyc2luZyB0b3Bs
ZXZlbCwgcmVxdWlyZWQgcHJvcGVydHkgbWlzc2luZzogaW5wdXRzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1u
by10eXBlcy5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tbm8tdHlwZXMuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MjMxYzhkNWQxZDYxNDUyNDhiZjNmYmEwMzdjY2ZjZWM4NjczYmMwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Zh
aWwtb24tbm8tdHlwZXMuanNvbi1lcnJvcgpAQCAtMCwwICsxIEBACitFUlJPUjogV2hlbiBwYXJz
aW5nIHRvcGxldmVsLCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiB0eXBlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Zh
aWwtb24tdW5rbm93bi1pbnB1dC1xdWV1ZS5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tdW5rbm93bi1pbnB1dC1x
dWV1ZS5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjZjQ2OWI2ODYwZjdiZDBjY2FlMzA5NzNmYzUz
MDIwYzk2YTI1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi11bmtub3duLWlucHV0LXF1ZXVlLmpz
b24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IFVua25vd24gaW5wdXQgcXVldWU6IFNDUklQ
VF9NRU9JWkVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi11bmtub3duLW1lbWJlci10eXBlLmpzb24tZXJyb3Ig
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFp
bC1vbi11bmtub3duLW1lbWJlci10eXBlLmpzb24tZXJyb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFjMmViOGIy
NTcxY2M3MTQwNDRiZWQ4YzJiZTIyZDRhMWYxZmRmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLXVu
a25vd24tbWVtYmVyLXR5cGUuanNvbi1lcnJvcgpAQCAtMCwwICsxIEBACitFUlJPUjogVW5rbm93
biB0eXBlIGRvdWJsZSByZWZlcmVuY2VkIGluIG1lbWJlciByYW5kb21TZWVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFp
bC1vbi11bmtub3duLXR5cGUtbW9kZS5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tdW5rbm93bi10eXBlLW1vZGUu
anNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTJjNjllYzhmOTYxNDY3NDhlNjJlYmRlZWM0OTdmYjcz
MDE3OTA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tdW5rbm93bi10eXBlLW1vZGUuanNvbi1lcnJv
cgpAQCAtMCwwICsxIEBACitFUlJPUjogVW5rbm93biB0eXBlIG1vZGU6IEJPTktFUlMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29u
LVRlc3RSZXBsYXlJbnB1dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy13aXRoLWd1
YXJkZWQtdmFsdWVzLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRiYWUw
ZmUxOTdhNWRiNjRmNjk1YzI2M2Y1M2VkNmMxNmQ3Y2VhNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0
ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uLVRlc3RSZXBs
YXlJbnB1dHMuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12
YWx1ZXMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Njcmlw
dHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1
ZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNp
bmNsdWRlICJJbnRlcm5hbE5hbWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaCIKKyNpbmNsdWRlIDxw
bGF0Zm9ybS9FeHRlcm5hbE5hbWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaD4KKyNpbmNsdWRlIDxw
bGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KKworbmFtZXNwYWNlIFRlc3QgeworU2F2ZWRN
b3VzZUJ1dHRvbjo6U2F2ZWRNb3VzZUJ1dHRvbihNb3VzZUJ1dHRvbiBidXR0b24pCisgICAgOiBO
b25kZXRlcm1pbmlzdGljSW5wdXQ8U2F2ZWRNb3VzZUJ1dHRvbj4oKQorICAgICwgbV9idXR0b24o
YnV0dG9uKQoreworfQorCitTYXZlZE1vdXNlQnV0dG9uOjp+U2F2ZWRNb3VzZUJ1dHRvbigpCit7
Cit9Cit9IC8vIG5hbWVzcGFjZSBUZXN0CisKK25hbWVzcGFjZSBKU0MgeworY29uc3QgQXRvbWlj
U3RyaW5nJiBJbnB1dFRyYWl0czxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPjo6dHlwZSgpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHlwZSgiU2F2ZWRN
b3VzZUJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJl
dHVybiB0eXBlOworfQorCit2b2lkIElucHV0VHJhaXRzPFRlc3Q6OlNhdmVkTW91c2VCdXR0b24+
OjplbmNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFRlc3Q6OlNhdmVkTW91
c2VCdXR0b24mIGlucHV0KQoreworICAgIGVuY29kZWRWYWx1ZS5wdXQ8V2ViQ29yZTo6TW91c2VC
dXR0b24+KEFTQ0lJTGl0ZXJhbCgiYnV0dG9uIiksIGlucHV0LmJ1dHRvbigpKTsKK30KKworYm9v
bCBJbnB1dFRyYWl0czxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPjo6ZGVjb2RlKEVuY29kZWRWYWx1
ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj4m
IGlucHV0KQoreworICAgIFdlYkNvcmU6Ok1vdXNlQnV0dG9uIGJ1dHRvbjsKKyAgICBpZiAoIWVu
Y29kZWRWYWx1ZS5nZXQ8V2ViQ29yZTo6TW91c2VCdXR0b24+KEFTQ0lJTGl0ZXJhbCgiYnV0dG9u
IiksIGJ1dHRvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlucHV0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPihidXR0b24pOworICAgIHJldHVybiB0
cnVlOworfQorRW5jb2RlZFZhbHVlIEVuY29kaW5nVHJhaXRzPFdlYkNvcmU6Ok1vdXNlQnV0dG9u
Pjo6ZW5jb2RlVmFsdWUoY29uc3QgV2ViQ29yZTo6TW91c2VCdXR0b24mIGVudW1WYWx1ZSkKK3sK
KyAgICBFbmNvZGVkVmFsdWUgZW5jb2RlZFZhbHVlID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVBcnJh
eSgpOworICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpOb0J1dHRvbikKKyAgICAgICAgZW5j
b2RlZFZhbHVlLmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiTm9CdXR0b24iKSk7CisgICAg
aWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpOb0J1dHRvbikKKyAgICAgICAgcmV0dXJuIGVuY29k
ZWRWYWx1ZTsKKyAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6TGVmdEJ1dHRvbikKKyAgICAg
ICAgZW5jb2RlZFZhbHVlLmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiTGVmdEJ1dHRvbiIp
KTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6OkxlZnRCdXR0b24pCisgICAgICAgIHJl
dHVybiBlbmNvZGVkVmFsdWU7CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6Ok1pZGRsZUJ1
dHRvbikKKyAgICAgICAgZW5jb2RlZFZhbHVlLmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgi
TWlkZGxlQnV0dG9uIikpOworICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6TWlkZGxlQnV0
dG9uKQorICAgICAgICByZXR1cm4gZW5jb2RlZFZhbHVlOworICAgIGlmIChlbnVtVmFsdWUgJiBX
ZWJDb3JlOjpSaWdodEJ1dHRvbikKKyAgICAgICAgZW5jb2RlZFZhbHVlLmFwcGVuZDxTdHJpbmc+
KEFTQ0lJTGl0ZXJhbCgiUmlnaHRCdXR0b24iKSk7CisgICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJD
b3JlOjpSaWdodEJ1dHRvbikKKyAgICAgICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKKyNpZiBFTkFC
TEUoU0lERV9CVVRUT05TKQorICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpMZWZ0U2lkZUJ1
dHRvbikKKyAgICAgICAgZW5jb2RlZFZhbHVlLmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgi
TGVmdFNpZGVCdXR0b24iKSk7CisgICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpMZWZ0U2lk
ZUJ1dHRvbikKKyAgICAgICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKKyAgICBpZiAoZW51bVZhbHVl
ICYgV2ViQ29yZTo6UmlnaHRTaWRlQnV0dG9uKQorICAgICAgICBlbmNvZGVkVmFsdWUuYXBwZW5k
PFN0cmluZz4oQVNDSUlMaXRlcmFsKCJSaWdodFNpZGVCdXR0b24iKSk7CisgICAgaWYgKGVudW1W
YWx1ZSA9PSBXZWJDb3JlOjpSaWdodFNpZGVCdXR0b24pCisgICAgICAgIHJldHVybiBlbmNvZGVk
VmFsdWU7CisjZW5kaWYgLy8gRU5BQkxFKFNJREVfQlVUVE9OUykKKyNpZiBQTEFURk9STShXSU5E
T1dTKQorICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpXaW5kb3dzQnV0dG9uKQorICAgICAg
ICBlbmNvZGVkVmFsdWUuYXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJXaW5kb3dzQnV0dG9u
IikpOworICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6V2luZG93c0J1dHRvbikKKyAgICAg
ICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKKyNlbmRpZiAvLyBQTEFURk9STShXSU5ET1dTKQorICAg
IHJldHVybiBlbmNvZGVkVmFsdWU7Cit9CisKK2Jvb2wgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6
TW91c2VCdXR0b24+OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgV2Vi
Q29yZTo6TW91c2VCdXR0b24mIGVudW1WYWx1ZSkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnVt
U3RyaW5nczsKKyAgICBpZiAoIUVuY29kaW5nVHJhaXRzPFZlY3RvcjxTdHJpbmc+Pjo6ZGVjb2Rl
VmFsdWUoZW5jb2RlZFZhbHVlLCBlbnVtU3RyaW5ncykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGZvciAoU3RyaW5nIGVudW1TdHJpbmcgOiBlbnVtU3RyaW5ncykgeworICAgICAgICBp
ZiAoZW51bVN0cmluZyA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJOb0J1dHRvbiIpKSkKKyAgICAg
ICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1vdXNlQnV0dG9uPihlbnVt
VmFsdWUgfCBXZWJDb3JlOjpOb0J1dHRvbik7CisgICAgICAgIGlmIChlbnVtU3RyaW5nID09IFN0
cmluZyhBU0NJSUxpdGVyYWwoIkxlZnRCdXR0b24iKSkpCisgICAgICAgICAgICBlbnVtVmFsdWUg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUJ1dHRvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6
TGVmdEJ1dHRvbik7CisgICAgICAgIGlmIChlbnVtU3RyaW5nID09IFN0cmluZyhBU0NJSUxpdGVy
YWwoIk1pZGRsZUJ1dHRvbiIpKSkKKyAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6Ok1vdXNlQnV0dG9uPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpNaWRkbGVCdXR0b24p
OworICAgICAgICBpZiAoZW51bVN0cmluZyA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJSaWdodEJ1
dHRvbiIpKSkKKyAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1v
dXNlQnV0dG9uPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpSaWdodEJ1dHRvbik7CisjaWYgRU5BQkxF
KFNJREVfQlVUVE9OUykKKyAgICAgICAgaWYgKGVudW1TdHJpbmcgPT0gU3RyaW5nKEFTQ0lJTGl0
ZXJhbCgiTGVmdFNpZGVCdXR0b24iKSkpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpNb3VzZUJ1dHRvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6TGVmdFNpZGVC
dXR0b24pOworICAgICAgICBpZiAoZW51bVN0cmluZyA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJS
aWdodFNpZGVCdXR0b24iKSkpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpNb3VzZUJ1dHRvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6UmlnaHRTaWRlQnV0dG9u
KTsKKyNlbmRpZiAvLyBFTkFCTEUoU0lERV9CVVRUT05TKQorI2lmIFBMQVRGT1JNKFdJTkRPV1Mp
CisgICAgICAgIGlmIChlbnVtU3RyaW5nID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIldpbmRvd3NC
dXR0b24iKSkpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpN
b3VzZUJ1dHRvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6V2luZG93c0J1dHRvbik7CisjZW5kaWYg
Ly8gUExBVEZPUk0oV0lORE9XUykKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0
UmVwbGF5SW5wdXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12
YWx1ZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ5MzdjZDYyNDc4MjJi
YzM0ZDk3MWJlYzBjMDg4MWZmZDIwZTM2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVu
Y29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMu
aApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
ICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
Z2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbgor
Ly8gYnkgdGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVy
YXRvclJlcGxheUlucHV0cy5weQorCisjaWZuZGVmIGdlbmVyYXRlX2VudW1fZW5jb2RpbmdfaGVs
cGVyc193aXRoX2d1YXJkZWRfdmFsdWVzX2pzb25fVGVzdFJlcGxheUlucHV0c19oCisjZGVmaW5l
IGdlbmVyYXRlX2VudW1fZW5jb2RpbmdfaGVscGVyc193aXRoX2d1YXJkZWRfdmFsdWVzX2pzb25f
VGVzdFJlcGxheUlucHV0c19oCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJ
bnRlcm5hbE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3Jt
L0V4dGVybmFsTmFtZXNwYWNlSGVhZGVySW5jbHVkZUR1bW15Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2VudW0gTW91c2VCdXR0b24gOiB1bnNpZ25lZDsKK30KKworCituYW1lc3BhY2UgVGVz
dCB7CitjbGFzcyBTYXZlZE1vdXNlQnV0dG9uOworfSAvLyBuYW1lc3BhY2UgVGVzdAorCituYW1l
c3BhY2UgSlNDIHsKK3RlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRlc3Q6OlNhdmVkTW91
c2VCdXR0b24+IHsKKyAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0
UXVldWU6OlNjcmlwdE1lbW9pemVkRGF0YTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYs
IGNvbnN0IFRlc3Q6OlNhdmVkTW91c2VCdXR0b24mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
SlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRv
bj4mKTsKK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpNb3Vz
ZUJ1dHRvbj4geworICAgIHR5cGVkZWYgV2ViQ29yZTo6TW91c2VCdXR0b24gRGVjb2RlZFR5cGU7
CisKKyAgICBzdGF0aWMgRW5jb2RlZFZhbHVlIGVuY29kZVZhbHVlKGNvbnN0IFdlYkNvcmU6Ok1v
dXNlQnV0dG9uJiB2YWx1ZSk7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5jb2RlZFZh
bHVlJiwgV2ViQ29yZTo6TW91c2VCdXR0b24mIHZhbHVlKTsKK307Cit9IC8vIG5hbWVzcGFjZSBK
U0MKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3MgU2F2ZWRNb3VzZUJ1dHRvbiA6IHB1YmxpYyBO
b25kZXRlcm1pbmlzdGljSW5wdXQ8U2F2ZWRNb3VzZUJ1dHRvbj4geworcHVibGljOgorICAgIFNh
dmVkTW91c2VCdXR0b24oTW91c2VCdXR0b24gYnV0dG9uKTsKKyAgICB2aXJ0dWFsIH5TYXZlZE1v
dXNlQnV0dG9uKCk7CisKKyAgICBNb3VzZUJ1dHRvbiBidXR0b24oKSBjb25zdCB7IHJldHVybiBt
X2J1dHRvbjsgfQorcHJpdmF0ZToKKyAgICBNb3VzZUJ1dHRvbiBtX2J1dHRvbjsKK307Cit9IC8v
IG5hbWVzcGFjZSBUZXN0CisKKyNkZWZpbmUgVEVTVF9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VB
Q0gobWFjcm8pIFwKKyAgICBtYWNybyhTYXZlZE1vdXNlQnV0dG9uKSBcCisgICAgXAorLy8gZW5k
IG9mIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNICisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX1JFUExBWSkKKworI2VuZGlmIC8vIGdlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy13
aXRoLWd1YXJkZWQtdmFsdWVzLmpzb24tVGVzdFJlcGxheUlucHV0c19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
ZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDQxNjgxMjRmNWIzMGM3ZGQ5NzVlZjk0ZDRlYzAxOGZhYzEzMzY3YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNw
cApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IGdlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBK
YXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJnZW5lcmF0ZS1lbnVtLWVuY29kaW5n
LWhlbHBlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JFUExB
WSkKKyNpbmNsdWRlICJJbnRlcm5hbE5hbWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaCIKKyNpbmNs
dWRlIDxwbGF0Zm9ybS9FeHRlcm5hbE5hbWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaD4KKyNpbmNs
dWRlIDxwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KKyNpbmNsdWRlIDxyZXBsYXkvTm9u
ZGV0ZXJtaW5pc3RpY0lucHV0Lmg+CisKK25hbWVzcGFjZSBUZXN0IHsKK1NhdmVkTW91c2VCdXR0
b246OlNhdmVkTW91c2VCdXR0b24oTW91c2VCdXR0b24gYnV0dG9uKQorICAgIDogTm9uZGV0ZXJt
aW5pc3RpY0lucHV0PFNhdmVkTW91c2VCdXR0b24+KCkKKyAgICAsIG1fYnV0dG9uKGJ1dHRvbikK
K3sKK30KKworU2F2ZWRNb3VzZUJ1dHRvbjo6flNhdmVkTW91c2VCdXR0b24oKQoreworfQorfSAv
LyBuYW1lc3BhY2UgVGVzdAorCituYW1lc3BhY2UgSlNDIHsKK2NvbnN0IEF0b21pY1N0cmluZyYg
SW5wdXRUcmFpdHM8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj46OnR5cGUoKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHR5cGUoIlNhdmVkTW91c2VCdXR0
b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gdHlw
ZTsKK30KKwordm9pZCBJbnB1dFRyYWl0czxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPjo6ZW5jb2Rl
KEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBUZXN0OjpTYXZlZE1vdXNlQnV0dG9u
JiBpbnB1dCkKK3sKKyAgICBlbmNvZGVkVmFsdWUucHV0PFdlYkNvcmU6Ok1vdXNlQnV0dG9uPihB
U0NJSUxpdGVyYWwoImJ1dHRvbiIpLCBpbnB1dC5idXR0b24oKSk7Cit9CisKK2Jvb2wgSW5wdXRU
cmFpdHM8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj46OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29k
ZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6OlNhdmVkTW91c2VCdXR0b24+JiBpbnB1dCkK
K3sKKyAgICBXZWJDb3JlOjpNb3VzZUJ1dHRvbiBidXR0b247CisgICAgaWYgKCFlbmNvZGVkVmFs
dWUuZ2V0PFdlYkNvcmU6Ok1vdXNlQnV0dG9uPihBU0NJSUxpdGVyYWwoImJ1dHRvbiIpLCBidXR0
b24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlx
dWU8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj4oYnV0dG9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
K0VuY29kZWRWYWx1ZSBFbmNvZGluZ1RyYWl0czxJbnB1dFF1ZXVlPjo6ZW5jb2RlVmFsdWUoY29u
c3QgSW5wdXRRdWV1ZSYgZW51bVZhbHVlKQoreworICAgIHN3aXRjaCAoZW51bVZhbHVlKSB7Cisg
ICAgY2FzZSBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDogcmV0dXJuIEVuY29kZWRWYWx1ZTo6
Y3JlYXRlU3RyaW5nKCJFdmVudExvb3BJbnB1dCIpOworICAgIGNhc2UgSW5wdXRRdWV1ZTo6TG9h
ZGVyTWVtb2l6ZWREYXRhOiByZXR1cm4gRW5jb2RlZFZhbHVlOjpjcmVhdGVTdHJpbmcoIkxvYWRl
ck1lbW9pemVkRGF0YSIpOworICAgIGNhc2UgSW5wdXRRdWV1ZTo6U2NyaXB0TWVtb2l6ZWREYXRh
OiByZXR1cm4gRW5jb2RlZFZhbHVlOjpjcmVhdGVTdHJpbmcoIlNjcmlwdE1lbW9pemVkRGF0YSIp
OworICAgIGRlZmF1bHQ6IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gRW5jb2RlZFZhbHVl
OjpjcmVhdGVTdHJpbmcoIkVycm9yISIpOworICAgIH0KK30KKworYm9vbCBFbmNvZGluZ1RyYWl0
czxJbnB1dFF1ZXVlPjo6ZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIElu
cHV0UXVldWUmIGVudW1WYWx1ZSkKK3sKKyAgICBTdHJpbmcgZW51bVN0cmluZyA9IGVuY29kZWRW
YWx1ZS5jb252ZXJ0VG88U3RyaW5nPigpOworICAgIGlmIChlbnVtU3RyaW5nID09IFN0cmluZyhB
U0NJSUxpdGVyYWwoIkV2ZW50TG9vcElucHV0IikpKSB7CisgICAgICAgIGVudW1WYWx1ZSA9IElu
cHV0UXVldWU6OkV2ZW50TG9vcElucHV0OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgaWYgKGVudW1TdHJpbmcgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTG9hZGVyTWVtb2l6ZWRE
YXRhIikpKSB7CisgICAgICAgIGVudW1WYWx1ZSA9IElucHV0UXVldWU6OkxvYWRlck1lbW9pemVk
RGF0YTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChlbnVtU3RyaW5nID09
IFN0cmluZyhBU0NJSUxpdGVyYWwoIlNjcmlwdE1lbW9pemVkRGF0YSIpKSkgeworICAgICAgICBl
bnVtVmFsdWUgPSBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERhdGE7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0VuY29kZWRWYWx1ZSBFbmNv
ZGluZ1RyYWl0czxXZWJDb3JlOjpNb3VzZUJ1dHRvbj46OmVuY29kZVZhbHVlKGNvbnN0IFdlYkNv
cmU6Ok1vdXNlQnV0dG9uJiBlbnVtVmFsdWUpCit7CisgICAgRW5jb2RlZFZhbHVlIGVuY29kZWRW
YWx1ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlQXJyYXkoKTsKKyAgICBpZiAoZW51bVZhbHVlICYg
V2ViQ29yZTo6Tm9CdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1ZS5hcHBlbmQ8U3RyaW5nPihB
U0NJSUxpdGVyYWwoIk5vQnV0dG9uIikpOworICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6
Tm9CdXR0b24pCisgICAgICAgIHJldHVybiBlbmNvZGVkVmFsdWU7CisgICAgaWYgKGVudW1WYWx1
ZSAmIFdlYkNvcmU6OkxlZnRCdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1ZS5hcHBlbmQ8U3Ry
aW5nPihBU0NJSUxpdGVyYWwoIkxlZnRCdXR0b24iKSk7CisgICAgaWYgKGVudW1WYWx1ZSA9PSBX
ZWJDb3JlOjpMZWZ0QnV0dG9uKQorICAgICAgICByZXR1cm4gZW5jb2RlZFZhbHVlOworICAgIGlm
IChlbnVtVmFsdWUgJiBXZWJDb3JlOjpNaWRkbGVCdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1
ZS5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIk1pZGRsZUJ1dHRvbiIpKTsKKyAgICBpZiAo
ZW51bVZhbHVlID09IFdlYkNvcmU6Ok1pZGRsZUJ1dHRvbikKKyAgICAgICAgcmV0dXJuIGVuY29k
ZWRWYWx1ZTsKKyAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6UmlnaHRCdXR0b24pCisgICAg
ICAgIGVuY29kZWRWYWx1ZS5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlJpZ2h0QnV0dG9u
IikpOworICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6UmlnaHRCdXR0b24pCisgICAgICAg
IHJldHVybiBlbmNvZGVkVmFsdWU7CisgICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKK30KKworYm9v
bCBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpNb3VzZUJ1dHRvbj46OmRlY29kZVZhbHVlKEVuY29k
ZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBXZWJDb3JlOjpNb3VzZUJ1dHRvbiYgZW51bVZhbHVlKQor
eworICAgIFZlY3RvcjxTdHJpbmc+IGVudW1TdHJpbmdzOworICAgIGlmICghRW5jb2RpbmdUcmFp
dHM8VmVjdG9yPFN0cmluZz4+OjpkZWNvZGVWYWx1ZShlbmNvZGVkVmFsdWUsIGVudW1TdHJpbmdz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChTdHJpbmcgZW51bVN0cmluZyA6
IGVudW1TdHJpbmdzKSB7CisgICAgICAgIGlmIChlbnVtU3RyaW5nID09IFN0cmluZyhBU0NJSUxp
dGVyYWwoIk5vQnV0dG9uIikpKQorICAgICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6TW91c2VCdXR0b24+KGVudW1WYWx1ZSB8IFdlYkNvcmU6Ok5vQnV0dG9uKTsKKyAg
ICAgICAgaWYgKGVudW1TdHJpbmcgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTGVmdEJ1dHRvbiIp
KSkKKyAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1vdXNlQnV0
dG9uPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpMZWZ0QnV0dG9uKTsKKyAgICAgICAgaWYgKGVudW1T
dHJpbmcgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTWlkZGxlQnV0dG9uIikpKQorICAgICAgICAg
ICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TW91c2VCdXR0b24+KGVudW1WYWx1
ZSB8IFdlYkNvcmU6Ok1pZGRsZUJ1dHRvbik7CisgICAgICAgIGlmIChlbnVtU3RyaW5nID09IFN0
cmluZyhBU0NJSUxpdGVyYWwoIlJpZ2h0QnV0dG9uIikpKQorICAgICAgICAgICAgZW51bVZhbHVl
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TW91c2VCdXR0b24+KGVudW1WYWx1ZSB8IFdlYkNvcmU6
OlJpZ2h0QnV0dG9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
ZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0t
ZW5jb2RpbmctaGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjRi
YjkzNTM0YjQ0MmE3NDBkYzBlZWYwOTlhYjMzMjU5ZGZkZjY5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVy
YXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaApAQCAtMCww
ICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworICog
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZ2VuZXJhdGUt
ZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IEphdmFTY3JpcHRD
b3JlL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKKworI2lmbmRl
ZiBnZW5lcmF0ZV9lbnVtX2VuY29kaW5nX2hlbHBlcnNfanNvbl9UZXN0UmVwbGF5SW5wdXRzX2gK
KyNkZWZpbmUgZ2VuZXJhdGVfZW51bV9lbmNvZGluZ19oZWxwZXJzX2pzb25fVGVzdFJlcGxheUlu
cHV0c19oCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJbnRlcm5hbE5hbWVz
cGFjZUhlYWRlckluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3JtL0V4dGVybmFsTmFt
ZXNwYWNlSGVhZGVySW5jbHVkZUR1bW15Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2VudW0g
TW91c2VCdXR0b24gOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNlIEpTQyB7CitlbnVtIGNsYXNz
IElucHV0UXVldWU7Cit9CisKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3MgU2F2ZWRNb3VzZUJ1
dHRvbjsKK30gLy8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNlIEpTQyB7Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPiB7CisgICAgc3RhdGlj
IElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERh
dGE7IH0KKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CisKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBUZXN0OjpTYXZlZE1vdXNl
QnV0dG9uJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3Rk
Ojp1bmlxdWVfcHRyPFRlc3Q6OlNhdmVkTW91c2VCdXR0b24+Jik7Cit9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgRW5jb2RpbmdUcmFpdHM8SW5wdXRRdWV1ZT4geworICAgIHR5cGVkZWYgSW5wdXRRdWV1
ZSBEZWNvZGVkVHlwZTsKKworICAgIHN0YXRpYyBFbmNvZGVkVmFsdWUgZW5jb2RlVmFsdWUoY29u
c3QgSW5wdXRRdWV1ZSYgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKEVuY29k
ZWRWYWx1ZSYsIElucHV0UXVldWUmIHZhbHVlKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVu
Y29kaW5nVHJhaXRzPFdlYkNvcmU6Ok1vdXNlQnV0dG9uPiB7CisgICAgdHlwZWRlZiBXZWJDb3Jl
OjpNb3VzZUJ1dHRvbiBEZWNvZGVkVHlwZTsKKworICAgIHN0YXRpYyBFbmNvZGVkVmFsdWUgZW5j
b2RlVmFsdWUoY29uc3QgV2ViQ29yZTo6TW91c2VCdXR0b24mIHZhbHVlKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmLCBXZWJDb3JlOjpNb3VzZUJ1dHRvbiYgdmFs
dWUpOworfTsKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgVGVzdCB7CitjbGFzcyBT
YXZlZE1vdXNlQnV0dG9uIDogcHVibGljIE5vbmRldGVybWluaXN0aWNJbnB1dDxTYXZlZE1vdXNl
QnV0dG9uPiB7CitwdWJsaWM6CisgICAgU2F2ZWRNb3VzZUJ1dHRvbihNb3VzZUJ1dHRvbiBidXR0
b24pOworICAgIHZpcnR1YWwgflNhdmVkTW91c2VCdXR0b24oKTsKKworICAgIE1vdXNlQnV0dG9u
IGJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uOyB9Citwcml2YXRlOgorICAgIE1vdXNl
QnV0dG9uIG1fYnV0dG9uOworfTsKK30gLy8gbmFtZXNwYWNlIFRlc3QKKworI2RlZmluZSBURVNU
X1JFUExBWV9JTlBVVF9OQU1FU19GT1JfRUFDSChtYWNybykgXAorICAgIG1hY3JvKFNhdmVkTW91
c2VCdXR0b24pIFwKKyAgICBcCisvLyBlbmQgb2YgVEVTVF9SRVBMQVlfSU5QVVRfTkFNRVNfRk9S
X0VBQ0gKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQorCisjZW5kaWYgLy8gZ2VuZXJh
dGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24tVGVzdFJlcGxheUlucHV0c19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
Z2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24tZXJyb3IgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNv
ZGluZy1oZWxwZXJzLmpzb24tZXJyb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU2MmU0Y2UyYTJhNDUwNDFmYWUz
Nzg4YTViYTExZjdhOTI5MmIwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVuY29kaW5n
LWhlbHBlcnMuanNvbi1lcnJvcgpAQCAtMCwwICsxIEBACitFUlJPUjogV2hlbiBwYXJzaW5nIHR5
cGUsIHJlcXVpcmVkIHByb3BlcnR5IG1pc3Npbmc6IHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1l
dmVudC1sb29wLXNoYXBlLXR5cGVzLmpzb24tZXJyb3IgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10
eXBlcy5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwYTQxNzZiZjRhMzk3NTg2YzY2MjM4MWVmZDM2
ZTY2OTlhYmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBl
cy5qc29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBVbmtub3duIHR5cGUgbW9kZTogTUFQ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJbnB1dHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2dlbmVyYXRlLWlucHV0LXdpdGgtZ3VhcmQuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMzA2ZjIxMmUwYWFhNmMwZTY3NDdmMGMxOGJlYmNjOTM3NWVjZDBhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2dlbmVyYXRlLWlucHV0LXdpdGgtZ3VhcmQuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNw
cApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IGdlbmVyYXRlLWlucHV0LXdpdGgtZ3VhcmQuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQorCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5q
c29uLVRlc3RSZXBsYXlJbnB1dHMuaCIKKworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorI2luY2x1
ZGUgIkludGVybmFsTmFtZXNwYWNlSW1wbEluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRm
b3JtL0V4dGVybmFsTmFtZXNwYWNlSW1wbEluY2x1ZGVEdW1teS5oPgorCituYW1lc3BhY2UgVGVz
dCB7CisjaWYgRU5BQkxFKERVTU1ZX0ZFQVRVUkUpCitHZXRDdXJyZW50VGltZTo6R2V0Q3VycmVu
dFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lKQorICAgIDogTm9uZGV0ZXJtaW5pc3RpY0lucHV0PEdl
dEN1cnJlbnRUaW1lPigpCisgICAgLCBtX2N1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKQoreworfQor
CitHZXRDdXJyZW50VGltZTo6fkdldEN1cnJlbnRUaW1lKCkKK3sKK30KKyNlbmRpZiAvLyBFTkFC
TEUoRFVNTVlfRkVBVFVSRSkKKworU2V0UmFuZG9tU2VlZDo6U2V0UmFuZG9tU2VlZCh1aW50NjRf
dCByYW5kb21TZWVkKQorICAgIDogTm9uZGV0ZXJtaW5pc3RpY0lucHV0PFNldFJhbmRvbVNlZWQ+
KCkKKyAgICAsIG1fcmFuZG9tU2VlZChyYW5kb21TZWVkKQoreworfQorCitTZXRSYW5kb21TZWVk
Ojp+U2V0UmFuZG9tU2VlZCgpCit7Cit9Cit9IC8vIG5hbWVzcGFjZSBUZXN0CisKK25hbWVzcGFj
ZSBKU0MgeworI2lmIEVOQUJMRShEVU1NWV9GRUFUVVJFKQorY29uc3QgQXRvbWljU3RyaW5nJiBJ
bnB1dFRyYWl0czxUZXN0OjpHZXRDdXJyZW50VGltZT46OnR5cGUoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHR5cGUoIkdldEN1cnJlbnRUaW1lIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHR5cGU7Cit9
CisKK3ZvaWQgSW5wdXRUcmFpdHM8VGVzdDo6R2V0Q3VycmVudFRpbWU+OjplbmNvZGUoRW5jb2Rl
ZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFRlc3Q6OkdldEN1cnJlbnRUaW1lJiBpbnB1dCkK
K3sKKyAgICBlbmNvZGVkVmFsdWUucHV0PGRvdWJsZT4oQVNDSUlMaXRlcmFsKCJjdXJyZW50VGlt
ZSIpLCBpbnB1dC5jdXJyZW50VGltZSgpKTsKK30KKworYm9vbCBJbnB1dFRyYWl0czxUZXN0OjpH
ZXRDdXJyZW50VGltZT46OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1
bmlxdWVfcHRyPFRlc3Q6OkdldEN1cnJlbnRUaW1lPiYgaW5wdXQpCit7CisgICAgZG91YmxlIGN1
cnJlbnRUaW1lOworICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxkb3VibGU+KEFTQ0lJTGl0ZXJh
bCgiY3VycmVudFRpbWUiKSwgY3VycmVudFRpbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdDo6R2V0Q3VycmVudFRpbWU+KGN1cnJl
bnRUaW1lKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoRFVNTVlfRkVB
VFVSRSkKKworY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dFRyYWl0czxUZXN0OjpTZXRSYW5kb21T
ZWVkPjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gdHlwZSgiU2V0UmFuZG9tU2VlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHJldHVybiB0eXBlOworfQorCit2b2lkIElucHV0VHJhaXRzPFRlc3Q6OlNl
dFJhbmRvbVNlZWQ+OjplbmNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFRl
c3Q6OlNldFJhbmRvbVNlZWQmIGlucHV0KQoreworICAgIGVuY29kZWRWYWx1ZS5wdXQ8dWludDY0
X3Q+KEFTQ0lJTGl0ZXJhbCgicmFuZG9tU2VlZCIpLCBpbnB1dC5yYW5kb21TZWVkKCkpOworfQor
Citib29sIElucHV0VHJhaXRzPFRlc3Q6OlNldFJhbmRvbVNlZWQ+OjpkZWNvZGUoRW5jb2RlZFZh
bHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpTZXRSYW5kb21TZWVkPiYg
aW5wdXQpCit7CisgICAgdWludDY0X3QgcmFuZG9tU2VlZDsKKyAgICBpZiAoIWVuY29kZWRWYWx1
ZS5nZXQ8dWludDY0X3Q+KEFTQ0lJTGl0ZXJhbCgicmFuZG9tU2VlZCIpLCByYW5kb21TZWVkKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
c3Q6OlNldFJhbmRvbVNlZWQ+KHJhbmRvbVNlZWQpOworICAgIHJldHVybiB0cnVlOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2dlbmVyYXRlLWlucHV0LXdpdGgtZ3VhcmQuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
aW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMGQ3
ZDM5MzY3MGMyYjZmNjFhYzhjMTBkN2Y2NzE5MmI1OWFiNzlhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVy
YXRlLWlucHV0LXdpdGgtZ3VhcmQuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgKQEAgLTAsMCArMSw5
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRlLWlucHV0
LXdpdGgtZ3VhcmQuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQorCisjaWZuZGVmIGdlbmVyYXRl
X2lucHV0X3dpdGhfZ3VhcmRfanNvbl9UZXN0UmVwbGF5SW5wdXRzX2gKKyNkZWZpbmUgZ2VuZXJh
dGVfaW5wdXRfd2l0aF9ndWFyZF9qc29uX1Rlc3RSZXBsYXlJbnB1dHNfaAorCisjaWYgRU5BQkxF
KFdFQl9SRVBMQVkpCisjaW5jbHVkZSAiSW50ZXJuYWxOYW1lc3BhY2VIZWFkZXJJbmNsdWRlRHVt
bXkuaCIKKyNpbmNsdWRlIDxwbGF0Zm9ybS9FeHRlcm5hbE5hbWVzcGFjZUhlYWRlckluY2x1ZGVE
dW1teS5oPgorCisKKworbmFtZXNwYWNlIFRlc3QgeworI2lmIEVOQUJMRShEVU1NWV9GRUFUVVJF
KQorY2xhc3MgR2V0Q3VycmVudFRpbWU7CisjZW5kaWYgLy8gRU5BQkxFKERVTU1ZX0ZFQVRVUkUp
CitjbGFzcyBTZXRSYW5kb21TZWVkOworfSAvLyBuYW1lc3BhY2UgVGVzdAorCituYW1lc3BhY2Ug
SlNDIHsKKyNpZiBFTkFCTEUoRFVNTVlfRkVBVFVSRSkKK3RlbXBsYXRlPD4gc3RydWN0IElucHV0
VHJhaXRzPFRlc3Q6OkdldEN1cnJlbnRUaW1lPiB7CisgICAgc3RhdGljIElucHV0UXVldWUgcXVl
dWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERhdGE7IH0KKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CisKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
SlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBUZXN0OjpHZXRDdXJyZW50VGltZSYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0
OjpHZXRDdXJyZW50VGltZT4mKTsKK307CisjZW5kaWYgLy8gRU5BQkxFKERVTU1ZX0ZFQVRVUkUp
CisKK3RlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRlc3Q6OlNldFJhbmRvbVNlZWQ+IHsK
KyAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OlNjcmlw
dE1lbW9pemVkRGF0YTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsK
KworICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFRlc3Q6
OlNldFJhbmRvbVNlZWQmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFs
dWUmLCBzdGQ6OnVuaXF1ZV9wdHI8VGVzdDo6U2V0UmFuZG9tU2VlZD4mKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgVGVzdCB7CisjaWYgRU5BQkxFKERVTU1ZX0ZFQVRV
UkUpCitjbGFzcyBHZXRDdXJyZW50VGltZSA6IHB1YmxpYyBOb25kZXRlcm1pbmlzdGljSW5wdXQ8
R2V0Q3VycmVudFRpbWU+IHsKK3B1YmxpYzoKKyAgICBHZXRDdXJyZW50VGltZShkb3VibGUgY3Vy
cmVudFRpbWUpOworICAgIHZpcnR1YWwgfkdldEN1cnJlbnRUaW1lKCk7CisKKyAgICBkb3VibGUg
Y3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUaW1lOyB9Citwcml2YXRlOgor
ICAgIGRvdWJsZSBtX2N1cnJlbnRUaW1lOworfTsKKyNlbmRpZiAvLyBFTkFCTEUoRFVNTVlfRkVB
VFVSRSkKKworY2xhc3MgU2V0UmFuZG9tU2VlZCA6IHB1YmxpYyBOb25kZXRlcm1pbmlzdGljSW5w
dXQ8U2V0UmFuZG9tU2VlZD4geworcHVibGljOgorICAgIFNldFJhbmRvbVNlZWQodWludDY0X3Qg
cmFuZG9tU2VlZCk7CisgICAgdmlydHVhbCB+U2V0UmFuZG9tU2VlZCgpOworCisgICAgdWludDY0
X3QgcmFuZG9tU2VlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZG9tU2VlZDsgfQorcHJpdmF0ZToK
KyAgICB1aW50NjRfdCBtX3JhbmRvbVNlZWQ7Cit9OworfSAvLyBuYW1lc3BhY2UgVGVzdAorCisj
ZGVmaW5lIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNIKG1hY3JvKSBcCisgICAgbWFj
cm8oR2V0Q3VycmVudFRpbWUpIFwKKyAgICBtYWNybyhTZXRSYW5kb21TZWVkKSBcCisgICAgXAor
Ly8gZW5kIG9mIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNICisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JFUExBWSkKKworI2VuZGlmIC8vIGdlbmVyYXRlLWlucHV0LXdpdGgtZ3VhcmQu
anNvbi1UZXN0UmVwbGF5SW5wdXRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLXZlY3Rv
ci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC12ZWN0
b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYmI1NmI1
MjVjNDQ2YjBkYjExMzhiZGU3ZDVmMmRjNWNmOTYyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
aW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCkBAIC0w
LDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisg
KiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBF
RElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBnZW5lcmF0
ZS1pbnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IEphdmFT
Y3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImdlbmVyYXRlLWlucHV0LXdpdGgtdmVjdG9y
LW1lbWJlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JFUExB
WSkKKyNpbmNsdWRlICJJbnRlcm5hbE5hbWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaCIKKyNpbmNs
dWRlIDxwbGF0Zm9ybS9FeHRlcm5hbE5hbWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaD4KKyNpbmNs
dWRlIDx0aGluZ3MvSlNUaGluZy5oPgorI2luY2x1ZGUgPHRoaW5ncy9XZWJUaGluZy5oPgorCitu
YW1lc3BhY2UgVGVzdCB7CitBcnJheU9mVGhpbmdzOjpBcnJheU9mVGhpbmdzKFZlY3Rvcjxkb3Vi
bGU+JiBkb3VibGVzLCBWZWN0b3I8SlNUaGluZz4mIGpzdGhpbmdzLCBWZWN0b3I8V2ViVGhpbmc+
JiB3ZWJ0aGluZ3MpCisgICAgOiBOb25kZXRlcm1pbmlzdGljSW5wdXQ8QXJyYXlPZlRoaW5ncz4o
KQorICAgICwgbV9kb3VibGVzKGRvdWJsZXMpCisgICAgLCBtX2pzdGhpbmdzKGpzdGhpbmdzKQor
ICAgICwgbV93ZWJ0aGluZ3Mod2VidGhpbmdzKQoreworfQorCitBcnJheU9mVGhpbmdzOjp+QXJy
YXlPZlRoaW5ncygpCit7Cit9Cit9IC8vIG5hbWVzcGFjZSBUZXN0CisKK25hbWVzcGFjZSBKU0Mg
eworY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dFRyYWl0czxUZXN0OjpBcnJheU9mVGhpbmdzPjo6
dHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4g
dHlwZSgiQXJyYXlPZlRoaW5ncyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHJldHVybiB0eXBlOworfQorCit2b2lkIElucHV0VHJhaXRzPFRlc3Q6OkFycmF5T2ZU
aGluZ3M+OjplbmNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFRlc3Q6OkFy
cmF5T2ZUaGluZ3MmIGlucHV0KQoreworICAgIGVuY29kZWRWYWx1ZS5wdXQ8VmVjdG9yPGRvdWJs
ZT4+KEFTQ0lJTGl0ZXJhbCgiZG91YmxlcyIpLCBpbnB1dC5kb3VibGVzKCkpOworICAgIGVuY29k
ZWRWYWx1ZS5wdXQ8VmVjdG9yPEpTVGhpbmc+PihBU0NJSUxpdGVyYWwoImpzdGhpbmdzIiksIGlu
cHV0LmpzdGhpbmdzKCkpOworICAgIGVuY29kZWRWYWx1ZS5wdXQ8VmVjdG9yPFdlYkNvcmU6Oldl
YlRoaW5nPj4oQVNDSUlMaXRlcmFsKCJ3ZWJ0aGluZ3MiKSwgaW5wdXQud2VidGhpbmdzKCkpOwor
fQorCitib29sIElucHV0VHJhaXRzPFRlc3Q6OkFycmF5T2ZUaGluZ3M+OjpkZWNvZGUoRW5jb2Rl
ZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpBcnJheU9mVGhpbmdz
PiYgaW5wdXQpCit7CisgICAgVmVjdG9yPGRvdWJsZT4gZG91YmxlczsKKyAgICBpZiAoIWVuY29k
ZWRWYWx1ZS5nZXQ8VmVjdG9yPGRvdWJsZT4+KEFTQ0lJTGl0ZXJhbCgiZG91YmxlcyIpLCBkb3Vi
bGVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPEpTVGhpbmc+IGpzdGhp
bmdzOworICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxWZWN0b3I8SlNUaGluZz4+KEFTQ0lJTGl0
ZXJhbCgianN0aGluZ3MiKSwganN0aGluZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6V2ViVGhpbmc+IHdlYnRoaW5nczsKKyAgICBpZiAoIWVuY29kZWRW
YWx1ZS5nZXQ8VmVjdG9yPFdlYkNvcmU6OldlYlRoaW5nPj4oQVNDSUlMaXRlcmFsKCJ3ZWJ0aGlu
Z3MiKSwgd2VidGhpbmdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW5wdXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRlc3Q6OkFycmF5T2ZUaGluZ3M+KGRvdWJsZXMsIGpzdGhpbmdzLCB3
ZWJ0aGluZ3MpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWlucHV0LXdpdGgt
dmVjdG9yLW1lbWJlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC12
ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzg4MGNi
Y2FmNzZhZTU0NTIyNGZkMTgyYzc3MzMzOTY5ZmM2OWI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRl
LWlucHV0LXdpdGgtdmVjdG9yLW1lbWJlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgKQEAgLTAs
MCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAq
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRl
LWlucHV0LXdpdGgtdmVjdG9yLW1lbWJlcnMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQorCisj
aWZuZGVmIGdlbmVyYXRlX2lucHV0X3dpdGhfdmVjdG9yX21lbWJlcnNfanNvbl9UZXN0UmVwbGF5
SW5wdXRzX2gKKyNkZWZpbmUgZ2VuZXJhdGVfaW5wdXRfd2l0aF92ZWN0b3JfbWVtYmVyc19qc29u
X1Rlc3RSZXBsYXlJbnB1dHNfaAorCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisjaW5jbHVkZSAi
SW50ZXJuYWxOYW1lc3BhY2VIZWFkZXJJbmNsdWRlRHVtbXkuaCIKKyNpbmNsdWRlIDxwbGF0Zm9y
bS9FeHRlcm5hbE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBXZWJUaGluZzsKK30KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU1Ro
aW5nOworfQorCisKK25hbWVzcGFjZSBUZXN0IHsKK2NsYXNzIEFycmF5T2ZUaGluZ3M7Cit9IC8v
IG5hbWVzcGFjZSBUZXN0CisKK25hbWVzcGFjZSBKU0MgewordGVtcGxhdGU8PiBzdHJ1Y3QgSW5w
dXRUcmFpdHM8VGVzdDo6QXJyYXlPZlRoaW5ncz4geworICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1
ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6U2NyaXB0TWVtb2l6ZWREYXRhOyB9CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOworCisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgVGVzdDo6QXJyYXlPZlRoaW5ncyYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0
OjpBcnJheU9mVGhpbmdzPiYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFj
ZSBUZXN0IHsKK2NsYXNzIEFycmF5T2ZUaGluZ3MgOiBwdWJsaWMgTm9uZGV0ZXJtaW5pc3RpY0lu
cHV0PEFycmF5T2ZUaGluZ3M+IHsKK3B1YmxpYzoKKyAgICBBcnJheU9mVGhpbmdzKFZlY3Rvcjxk
b3VibGU+JiBkb3VibGVzLCBWZWN0b3I8SlNUaGluZz4mIGpzdGhpbmdzLCBWZWN0b3I8V2ViVGhp
bmc+JiB3ZWJ0aGluZ3MpOworICAgIHZpcnR1YWwgfkFycmF5T2ZUaGluZ3MoKTsKKworICAgIGNv
bnN0IFZlY3Rvcjxkb3VibGU+JiBkb3VibGVzKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVzOyB9
CisgICAgY29uc3QgVmVjdG9yPEpTVGhpbmc+JiBqc3RoaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1f
anN0aGluZ3M7IH0KKyAgICBjb25zdCBWZWN0b3I8V2ViVGhpbmc+JiB3ZWJ0aGluZ3MoKSBjb25z
dCB7IHJldHVybiBtX3dlYnRoaW5nczsgfQorcHJpdmF0ZToKKyAgICBWZWN0b3I8ZG91YmxlPiBt
X2RvdWJsZXM7CisgICAgVmVjdG9yPEpTVGhpbmc+IG1fanN0aGluZ3M7CisgICAgVmVjdG9yPFdl
YlRoaW5nPiBtX3dlYnRoaW5nczsKK307Cit9IC8vIG5hbWVzcGFjZSBUZXN0CisKKyNkZWZpbmUg
VEVTVF9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VBQ0gobWFjcm8pIFwKKyAgICBtYWNybyhBcnJh
eU9mVGhpbmdzKSBcCisgICAgXAorLy8gZW5kIG9mIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZP
Ul9FQUNICisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExBWSkKKworI2VuZGlmIC8vIGdlbmVy
YXRlLWlucHV0LXdpdGgtdmVjdG9yLW1lbWJlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1pbnB1dHMtd2l0aC1mbGFncy5qc29uLWVycm9yIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWlucHV0cy13
aXRoLWZsYWdzLmpzb24tZXJyb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTExYjg2YmE3ZjUzMzUwY2ZlNThjNTM3
OWIzMDg3N2ZmZmMwYTRhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dHMtd2l0aC1mbGFn
cy5qc29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBEdXBsaWNhdGUgaW5wdXQgd2l0aCBu
YW1lOiBTY2FsYXJJbnB1dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLW1lbW9pemVkLXR5cGUtbW9kZXMuanNv
bi1UZXN0UmVwbGF5SW5wdXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLW1vZGVzLmpzb24tVGVz
dFJlcGxheUlucHV0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2UzMDJmMjVmYjhmOGI1YmRmOGY4YWUyYWI5
NTM0YWJlOGJiMzI0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
ZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLW1vZGVz
Lmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBnZW5lcmF0ZS1tZW1vaXplZC10eXBlLW1vZGVzLmpz
b24KKy8vIGJ5IHRoZSBzY3JpcHQ6IEphdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
ImdlbmVyYXRlLW1lbW9pemVkLXR5cGUtbW9kZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgiCisK
KyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJbnRlcm5hbE5hbWVzcGFjZUltcGxJ
bmNsdWRlRHVtbXkuaCIKKyNpbmNsdWRlIDxwbGF0Zm9ybS9FeHRlcm5hbE5hbWVzcGFjZUltcGxJ
bmNsdWRlRHVtbXkuaD4KKworbmFtZXNwYWNlIFRlc3QgeworU2NhbGFySW5wdXQ6OlNjYWxhcklu
cHV0KFNjYWxhclR5cGUgZGF0YSkKKyAgICA6IE5vbmRldGVybWluaXN0aWNJbnB1dDxTY2FsYXJJ
bnB1dD4oKQorICAgICwgbV9kYXRhKGRhdGEpCit7Cit9CisKK1NjYWxhcklucHV0Ojp+U2NhbGFy
SW5wdXQoKQoreworfQorCitNYXBJbnB1dDo6TWFwSW5wdXQoc3RkOjp1bmlxdWVfcHRyPE1hcFR5
cGU+IGRhdGEpCisgICAgOiBOb25kZXRlcm1pbmlzdGljSW5wdXQ8TWFwSW5wdXQ+KCkKKyAgICAs
IG1fZGF0YShzdGQ6Om1vdmUoZGF0YSkpCit7Cit9CisKK01hcElucHV0Ojp+TWFwSW5wdXQoKQor
eworfQorfSAvLyBuYW1lc3BhY2UgVGVzdAorCituYW1lc3BhY2UgSlNDIHsKK2NvbnN0IEF0b21p
Y1N0cmluZyYgSW5wdXRUcmFpdHM8VGVzdDo6U2NhbGFySW5wdXQ+Ojp0eXBlKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0eXBlKCJTY2FsYXJJbnB1
dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB0eXBl
OworfQorCit2b2lkIElucHV0VHJhaXRzPFRlc3Q6OlNjYWxhcklucHV0Pjo6ZW5jb2RlKEVuY29k
ZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBUZXN0OjpTY2FsYXJJbnB1dCYgaW5wdXQpCit7
CisgICAgZW5jb2RlZFZhbHVlLnB1dDxTY2FsYXJUeXBlPihBU0NJSUxpdGVyYWwoImRhdGEiKSwg
aW5wdXQuZGF0YSgpKTsKK30KKworYm9vbCBJbnB1dFRyYWl0czxUZXN0OjpTY2FsYXJJbnB1dD46
OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6
OlNjYWxhcklucHV0PiYgaW5wdXQpCit7CisgICAgU2NhbGFyVHlwZSBkYXRhOworICAgIGlmICgh
ZW5jb2RlZFZhbHVlLmdldDxTY2FsYXJUeXBlPihBU0NJSUxpdGVyYWwoImRhdGEiKSwgZGF0YSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXN0OjpTY2FsYXJJbnB1dD4oZGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IEF0
b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8VGVzdDo6TWFwSW5wdXQ+Ojp0eXBlKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0eXBlKCJNYXBJbnB1dCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB0eXBlOwor
fQorCit2b2lkIElucHV0VHJhaXRzPFRlc3Q6Ok1hcElucHV0Pjo6ZW5jb2RlKEVuY29kZWRWYWx1
ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBUZXN0OjpNYXBJbnB1dCYgaW5wdXQpCit7CisgICAgZW5j
b2RlZFZhbHVlLnB1dDxNYXBUeXBlPihBU0NJSUxpdGVyYWwoImRhdGEiKSwgaW5wdXQuZGF0YSgp
KTsKK30KKworYm9vbCBJbnB1dFRyYWl0czxUZXN0OjpNYXBJbnB1dD46OmRlY29kZShFbmNvZGVk
VmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6Ok1hcElucHV0PiYgaW5w
dXQpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1hcFR5cGU+IGRhdGE7CisgICAgaWYgKCFlbmNv
ZGVkVmFsdWUuZ2V0PE1hcFR5cGU+KEFTQ0lJTGl0ZXJhbCgiZGF0YSIpLCBkYXRhKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3Q6Ok1h
cElucHV0PihzdGQ6Om1vdmUoZGF0YSkpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVy
YXRlLW1lbW9pemVkLXR5cGUtbW9kZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtbWVt
b2l6ZWQtdHlwZS1tb2Rlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDhi
MGM0ZDhiZTYwNWE0ZWYyYTgwM2IxZjY1MTI0OTJiM2RkYjRmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVy
YXRlLW1lbW9pemVkLXR5cGUtbW9kZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgKQEAgLTAsMCAr
MSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRlLW1l
bW9pemVkLXR5cGUtbW9kZXMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQorCisjaWZuZGVmIGdl
bmVyYXRlX21lbW9pemVkX3R5cGVfbW9kZXNfanNvbl9UZXN0UmVwbGF5SW5wdXRzX2gKKyNkZWZp
bmUgZ2VuZXJhdGVfbWVtb2l6ZWRfdHlwZV9tb2Rlc19qc29uX1Rlc3RSZXBsYXlJbnB1dHNfaAor
CisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisjaW5jbHVkZSAiSW50ZXJuYWxOYW1lc3BhY2VIZWFk
ZXJJbmNsdWRlRHVtbXkuaCIKKyNpbmNsdWRlIDxwbGF0Zm9ybS9FeHRlcm5hbE5hbWVzcGFjZUhl
YWRlckluY2x1ZGVEdW1teS5oPgorCisKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3MgU2NhbGFy
SW5wdXQ7CitjbGFzcyBNYXBJbnB1dDsKK30gLy8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNl
IEpTQyB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpTY2FsYXJJbnB1dD4g
eworICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6U2Ny
aXB0TWVtb2l6ZWREYXRhOyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgp
OworCisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgVGVz
dDo6U2NhbGFySW5wdXQmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFs
dWUmLCBzdGQ6OnVuaXF1ZV9wdHI8VGVzdDo6U2NhbGFySW5wdXQ+Jik7Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpNYXBJbnB1dD4geworICAgIHN0YXRpYyBJbnB1
dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6U2NyaXB0TWVtb2l6ZWREYXRhOyB9
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOworCisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgVGVzdDo6TWFwSW5wdXQmKTsKKyAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8
VGVzdDo6TWFwSW5wdXQ+Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNl
IFRlc3QgeworY2xhc3MgU2NhbGFySW5wdXQgOiBwdWJsaWMgTm9uZGV0ZXJtaW5pc3RpY0lucHV0
PFNjYWxhcklucHV0PiB7CitwdWJsaWM6CisgICAgU2NhbGFySW5wdXQoU2NhbGFyVHlwZSBkYXRh
KTsKKyAgICB2aXJ0dWFsIH5TY2FsYXJJbnB1dCgpOworCisgICAgU2NhbGFyVHlwZSBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Citwcml2YXRlOgorICAgIFNjYWxhclR5cGUgbV9kYXRh
OworfTsKKworY2xhc3MgTWFwSW5wdXQgOiBwdWJsaWMgTm9uZGV0ZXJtaW5pc3RpY0lucHV0PE1h
cElucHV0PiB7CitwdWJsaWM6CisgICAgTWFwSW5wdXQoc3RkOjp1bmlxdWVfcHRyPE1hcFR5cGU+
IGRhdGEpOworICAgIHZpcnR1YWwgfk1hcElucHV0KCk7CisKKyAgICBjb25zdCBNYXBUeXBlJiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gKm1fZGF0YTsgfQorcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWFwVHlwZT4gbV9kYXRhOworfTsKK30gLy8gbmFtZXNwYWNlIFRlc3QKKworI2RlZmlu
ZSBURVNUX1JFUExBWV9JTlBVVF9OQU1FU19GT1JfRUFDSChtYWNybykgXAorICAgIG1hY3JvKFNj
YWxhcklucHV0KSBcCisgICAgbWFjcm8oTWFwSW5wdXQpIFwKKyAgICBcCisvLyBlbmQgb2YgVEVT
VF9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VBQ0gKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQ
TEFZKQorCisjZW5kaWYgLy8gZ2VuZXJhdGUtbWVtb2l6ZWQtdHlwZS1tb2Rlcy5qc29uLVRlc3RS
ZXBsYXlJbnB1dHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9z
Y3JpcHRzL3Rlc3RzL2ZhaWwtb24tYy1zdHlsZS1lbnVtLW5vLXN0b3JhZ2UuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWMtc3R5bGUtZW51
bS1uby1zdG9yYWdlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNiNjhlNGQ3MzFkZDkzMmY2NzQ5YjcyZTI5
OTEzYTQxMWQ4ODlmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
ZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWMtc3R5bGUtZW51bS1uby1zdG9yYWdlLmpzb24K
QEAgLTAsMCArMSwyMyBAQAoreworICAgICJ0eXBlcyI6IHsKKyAgICAgICAgIldlYkNvcmUiOiBb
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiTW91c2VCdXR0b24iLCAi
bW9kZSI6ICJTQ0FMQVIiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAg
ICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIk5vQnV0dG9uIiwgIkxlZnRCdXR0b24iLCAiTWlkZGxl
QnV0dG9uIiwgIlJpZ2h0QnV0dG9uIl0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwYXRo
L3RvL01vdXNlQnV0dG9uLmgiCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9LAorCisg
ICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU2F2ZWRNb3Vz
ZUJ1dHRvbiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgYSBtb3VzZSBi
dXR0b24gZW51bSB2YWx1ZS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpF
RCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImJ1dHRvbiIsICJ0eXBlIjogIk1vdXNlQnV0dG9uIiB9CisgICAgICAgICAgICBdCisgICAgICAg
IH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZmFpbC1vbi1kdXBsaWNhdGUtaW5wdXQtbmFtZXMuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWR1cGxpY2F0ZS1pbnB1
dC1uYW1lcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZTYzNGFjZmU5YTllMjczN2ZlN2Q3OTA0MDhkMDc0
MTY3MWEyZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1kdXBsaWNhdGUtaW5wdXQtbmFtZXMuanNvbgpAQCAtMCww
ICsxLDI3IEBACit7CisgICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAg
ICAgICAgeyAibmFtZSI6ICJkb3VibGUiLCAibW9kZSI6ICJTQ0FMQVIiIH0sCisgICAgICAgICAg
ICB7ICJuYW1lIjogInVpbnQ2NF90IiwgIm1vZGUiOiAiU0NBTEFSIiB9CisgICAgICAgIF0KKyAg
ICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
R2V0Q3VycmVudFRpbWUiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN1cHBsaWVzIHRo
ZSBzeXN0ZW0gdGltZSB0byBEYXRlLm5vdygpIGFuZCBuZXcgRGF0ZSgpLiIsCisgICAgICAgICAg
ICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWwor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY3VycmVudFRpbWUiLCAidHlwZSI6ICJkb3VibGUi
IH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAiR2V0Q3VycmVudFRpbWUiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNldHMg
dGhlIFBSTkcgc2VlZCB1c2VkIGJ5IE1hdGgucmFuZG9tKCkuIiwKKyAgICAgICAgICAgICJxdWV1
ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyYW5kb21TZWVkIiwgInR5cGUiOiAidWludDY0X3QiIH0KKyAg
ICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWR1cGxpY2F0ZS10eXBlLW5h
bWVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFp
bC1vbi1kdXBsaWNhdGUtdHlwZS1uYW1lcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjYTQ3M2U1ZWQ5OGM5
ODQ0ZTU0Y2MwNjg0ZWFjMjRjMDIwYjM0MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1kdXBsaWNhdGUtdHlwZS1u
YW1lcy5qc29uCkBAIC0wLDAgKzEsMjIgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJH
bG9iYWwiOiBbCisgICAgICAgICAgICB7ICJuYW1lIjogInVpbnQ2NF90IiwgIm1vZGUiOiAiU0NB
TEFSIiB9LAorICAgICAgICAgICAgeyAibmFtZSI6ICJ1aW50NjRfdCIsICJtb2RlIjogIlNDQUxB
UiIgfQorICAgICAgICBdCisgICAgfSwKKworICAgICJpbnB1dHMiOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJuYW1lIjogIlNldFJhbmRvbVNlZWQiLAorICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlNldHMgdGhlIFBSTkcgc2VlZCB1c2VkIGJ5IE1hdGgucmFuZG9tKCkuIiwKKyAgICAg
ICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMi
OiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJyYW5k
b21TZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAidWludDY0X3QiCisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tZW51
bS10eXBlLW1pc3NpbmctdmFsdWVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1lbnVtLXR5cGUtbWlzc2luZy12YWx1ZXMuanNvbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMWI1ZDFkZWI4MDBkN2RkNWFiYjA4MTYwNzhiMzAwMGFhM2JlMTI1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2Zh
aWwtb24tZW51bS10eXBlLW1pc3NpbmctdmFsdWVzLmpzb24KQEAgLTAsMCArMSwyMSBAQAorewor
ICAgICJ0eXBlcyI6IHsKKyAgICAgICAgIkdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAibmFtZSI6ICJNb3VzZUJ1dHRvbiIsICJtb2RlIjogIlNDQUxBUiIsCisgICAg
ICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXQor
ICAgIH0sCisKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6
ICJTYXZlZE1vdXNlQnV0dG9uIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdXBwbGll
cyBhIG1vdXNlIGJ1dHRvbiBlbnVtIHZhbHVlLiIsCisgICAgICAgICAgICAicXVldWUiOiAiU0NS
SVBUX01FTU9JWkVEIiwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiY3VycmVudFRpbWUiLCAidHlwZSI6ICJNb3VzZUJ1dHRvbiIgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tbWlzc2luZy1pbnB1dC1tZW1iZXIt
bmFtZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2Zh
aWwtb24tbWlzc2luZy1pbnB1dC1tZW1iZXItbmFtZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjMTZlMDY3
NmY3ZTc3MTY1NmE0MDE3YTBlNGFkZmE0NDU4NWZjYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLWlu
cHV0LW1lbWJlci1uYW1lLmpzb24KQEAgLTAsMCArMSwyMCBAQAoreworICAgICJ0eXBlcyI6IHsK
KyAgICAgICAgIkdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91YmxlIiwgIm1v
ZGUiOiAiU0NBTEFSIiB9CisgICAgICAgIF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAg
ICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiR2V0Q3VycmVudFRpbWUiLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlN1cHBsaWVzIHRoZSBzeXN0ZW0gdGltZSB0byBEYXRlLm5vdygp
IGFuZCBuZXcgRGF0ZSgpLiIsCisgICAgICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVE
IiwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgInR5cGUiOiAiZG91YmxlIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbmFtZS5qc29u
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tbWlz
c2luZy1pbnB1dC1uYW1lLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmVlZDhiODJmOWMyNGYzMzNhZDhmNWM3
YjYzNWU3ZDQ5MDM2M2NmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbmFtZS5qc29uCkBA
IC0wLDAgKzEsMjAgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisg
ICAgICAgICAgICB7ICJuYW1lIjogImRvdWJsZSIsICJtb2RlIjogIlNDQUxBUiIgfQorICAgICAg
ICBdCisgICAgfSwKKworICAgICJpbnB1dHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJTdXBwbGllcyB0aGUgc3lzdGVtIHRpbWUgdG8gRGF0ZS5ub3coKSBhbmQg
bmV3IERhdGUoKS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisg
ICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICJuYW1lIjogImN1cnJlbnRUaW1lIiwKKyAgICAgICAgICAgICAgICAgICAgInR5cGUi
OiAiZG91YmxlIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQor
ICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0
cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctaW5wdXQtcXVldWUuanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctaW5wdXQtcXVldWUu
anNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NjQyMmMzMzBiZGY3MDA0ODI5ZmI5ODI3ZjQwNDhiNTU4MTlhNDA1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2ZhaWwtb24tbWlzc2luZy1pbnB1dC1xdWV1ZS5qc29uCkBAIC0wLDAgKzEsMjAgQEAK
K3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAgICAgICAgICB7ICJu
YW1lIjogImRvdWJsZSIsICJtb2RlIjogIlNDQUxBUiIgfQorICAgICAgICBdCisgICAgfSwKKwor
ICAgICJpbnB1dHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIkdldEN1cnJl
bnRUaW1lIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdXBwbGllcyB0aGUgc3lzdGVt
IHRpbWUgdG8gRGF0ZS5ub3coKSBhbmQgbmV3IERhdGUoKS4iLAorICAgICAgICAgICAgIm1lbWJl
cnMiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJj
dXJyZW50VGltZSIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1t
aXNzaW5nLXR5cGUtbW9kZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3Jp
cHRzL3Rlc3RzL2ZhaWwtb24tbWlzc2luZy10eXBlLW1vZGUuanNvbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWQz
N2I3MTNhYTdmOTBiMjczMmZiMjU2NGVjOTM1MzY4NmE4MzM3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tbWlzc2lu
Zy10eXBlLW1vZGUuanNvbgpAQCAtMCwwICsxLDIxIEBACit7CisgICAgInR5cGVzIjogeworICAg
ICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibmFtZSI6ICJkb3VibGUiIH0KKyAgICAg
ICAgXQorICAgIH0sCisKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAi
bmFtZSI6ICJHZXRDdXJyZW50VGltZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3Vw
cGxpZXMgdGhlIHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAg
ICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJl
cnMiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJj
dXJyZW50VGltZSIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1t
aXNzaW5nLXR5cGUtbmFtZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3Jp
cHRzL3Rlc3RzL2ZhaWwtb24tbWlzc2luZy10eXBlLW5hbWUuanNvbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTc0
OTVlZWYzOTVkYjJlYTY5NTEyNWYxY2FlZGU2MjBiNzNiN2YxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tbWlzc2lu
Zy10eXBlLW5hbWUuanNvbgpAQCAtMCwwICsxLDIxIEBACit7CisgICAgInR5cGVzIjogeworICAg
ICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibW9kZSI6ICJTQ0FMQVIiIH0KKyAgICAg
ICAgXQorICAgIH0sCisKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAi
bmFtZSI6ICJHZXRDdXJyZW50VGltZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3Vw
cGxpZXMgdGhlIHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAg
ICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJl
cnMiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJj
dXJyZW50VGltZSIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1u
by1pbnB1dHMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0
cy9mYWlsLW9uLW5vLWlucHV0cy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxZjMxZmQyNzQ4YjA5OWZkZjZh
YzlhMGJhNmY0ZDY0YTBhYmMyNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1uby1pbnB1dHMuanNvbgpAQCAtMCww
ICsxLDcgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAgICAg
ICAgICB7ICJuYW1lIjogImRvdWJsZSIsICJtb2RlIjogIlNDQUxBUiIgfQorICAgICAgICBdCisg
ICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2ZhaWwtb24tbm8tdHlwZXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBs
YXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI2MGM1
NWFiZWQ2YTUwOWQyYjEzNDAwNmQyNTAyNjkzZDdjNDg4MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW5vLXR5cGVz
Lmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAgICJpbnB1dHMiOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJuYW1lIjogIkdldEN1cnJlbnRUaW1lIiwKKyAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJTdXBwbGllcyB0aGUgc3lzdGVtIHRpbWUgdG8gRGF0ZS5ub3coKSBhbmQgbmV3IERh
dGUoKS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAg
ICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICJuYW1lIjogImN1cnJlbnRUaW1lIiwKKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZG91
YmxlIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0K
KyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZmFpbC1vbi11bmtub3duLWlucHV0LXF1ZXVlLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi11bmtub3duLWlucHV0LXF1ZXVlLmpzb24K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmY0MGY4MTcxZWQ2MWZkMzU4MTU4YmJlYzhlYjNkZTIwMjljYTc1MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0
cy9mYWlsLW9uLXVua25vd24taW5wdXQtcXVldWUuanNvbgpAQCAtMCwwICsxLDIxIEBACit7Cisg
ICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibmFtZSI6
ICJkb3VibGUiLCAibW9kZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAi
aW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJHZXRDdXJyZW50VGlt
ZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgdGhlIHN5c3RlbSB0aW1l
IHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJT
Q1JJUFRfTUVPSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImN1cnJlbnRUaW1lIiwKKyAgICAgICAg
ICAgICAgICAgICAgInR5cGUiOiAiZG91YmxlIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLXVua25vd24tbWVtYmVyLXR5cGUuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLXVu
a25vd24tbWVtYmVyLXR5cGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTAwZDEyYmVkMzg0OGU3MTA4MmY0
YzRkM2FjZjJiNTU1Mzc2OTBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi1tZW1iZXItdHlwZS5qc29u
CkBAIC0wLDAgKzEsMjEgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBb
CisgICAgICAgICAgICB7ICJuYW1lIjogInVpbnQ2NF90IiwgIm1vZGUiOiAiU0NBTEFSIiB9Cisg
ICAgICAgIF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAg
ICAgIm5hbWUiOiAiU2V0UmFuZG9tU2VlZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
U2V0cyB0aGUgUFJORyBzZWVkIHVzZWQgYnkgTWF0aC5yYW5kb20oKS4iLAorICAgICAgICAgICAg
InF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogInJhbmRvbVNlZWQi
LAorICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJkb3VibGUiCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi10eXBl
LW1vZGUuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9m
YWlsLW9uLXVua25vd24tdHlwZS1tb2RlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM2NTVjYmYxNzBlYmY2
NGEwMzE3ZDkyZmM1YThlNTEzMzZjNGY0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLXVua25vd24tdHlwZS1tb2Rl
Lmpzb24KQEAgLTAsMCArMSwyMSBAQAoreworICAgICJ0eXBlcyI6IHsKKyAgICAgICAgIkdsb2Jh
bCI6IFsKKyAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91YmxlIiwgIm1vZGUiOiAiQk9OS0VSUyIg
fQorICAgICAgICBdCisgICAgfSwKKworICAgICJpbnB1dHMiOiBbCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJuYW1lIjogIkdldEN1cnJlbnRUaW1lIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJTdXBwbGllcyB0aGUgc3lzdGVtIHRpbWUgdG8gRGF0ZS5ub3coKSBhbmQgbmV3IERhdGUo
KS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAg
ICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJu
YW1lIjogImN1cnJlbnRUaW1lIiwKKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZG91Ymxl
IgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0KK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9n
ZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWVudW0t
ZW5jb2RpbmctaGVscGVycy13aXRoLWd1YXJkZWQtdmFsdWVzLmpzb24KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBl
NDk0M2E3ODc2MzI4NWMwMDJmNjgzY2U4OTQxOTYxNTEwYTk4NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1lbnVt
LWVuY29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uCkBAIC0wLDAgKzEsMjcg
QEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJXZWJDb3JlIjogWworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICJuYW1lIjogIk1vdXNlQnV0dG9uIiwgIm1vZGUiOiAiU0NBTEFS
IiwgInN0b3JhZ2UiOiAidW5zaWduZWQiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5V
TSJdLAorICAgICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIk5vQnV0dG9uIiwgIkxlZnRCdXR0b24i
LCAiTWlkZGxlQnV0dG9uIiwgIlJpZ2h0QnV0dG9uIl0sCisgICAgICAgICAgICAgICAgImd1YXJk
ZWRfdmFsdWVzIjogeworICAgICAgICAgICAgICAgICAgICAiRU5BQkxFKFNJREVfQlVUVE9OUyki
OiBbIkxlZnRTaWRlQnV0dG9uIiwgIlJpZ2h0U2lkZUJ1dHRvbiJdLAorICAgICAgICAgICAgICAg
ICAgICAiUExBVEZPUk0oV0lORE9XUykiOiBbIldpbmRvd3NCdXR0b24iXQorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNl
RXZlbnQuaCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAiaW5wdXRz
IjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTYXZlZE1vdXNlQnV0dG9uIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdXBwbGllcyBhIG1vdXNlIGJ1dHRvbiBlbnVt
IHZhbHVlLiIsCisgICAgICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwKKyAgICAg
ICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnV0dG9uIiwg
InR5cGUiOiAiTW91c2VCdXR0b24iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0
cy9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMu
anNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NWQ3MWEzMTdmOGZkM2Q0MTE1ZmE0NmRmMjIzNmJlZDg2MTZlZmM4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uCkBAIC0wLDAgKzEsMzEg
QEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJKYXZhU2NyaXB0Q29yZSI6IFsKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJJbnB1dFF1ZXVlIiwgIm1vZGUiOiAi
U0NBTEFSIiwKKyAgICAgICAgICAgICAgICAiZmxhZ3MiOiBbIkVOVU1fQ0xBU1MiXSwKKyAgICAg
ICAgICAgICAgICAidmFsdWVzIjogWyJFdmVudExvb3BJbnB1dCIsICJMb2FkZXJNZW1vaXplZERh
dGEiLCAiU2NyaXB0TWVtb2l6ZWREYXRhIl0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJy
ZXBsYXkvTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmgiCisgICAgICAgICAgICB9CisgICAgICAgIF0s
CisgICAgICAgICJXZWJDb3JlIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJu
YW1lIjogIk1vdXNlQnV0dG9uIiwgIm1vZGUiOiAiU0NBTEFSIiwgInN0b3JhZ2UiOiAidW5zaWdu
ZWQiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAgICAgICAgICAgICAg
ICJ2YWx1ZXMiOiBbIk5vQnV0dG9uIiwgIkxlZnRCdXR0b24iLCAiTWlkZGxlQnV0dG9uIiwgIlJp
Z2h0QnV0dG9uIl0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9QbGF0Zm9y
bU1vdXNlRXZlbnQuaCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAi
aW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTYXZlZE1vdXNlQnV0
dG9uIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdXBwbGllcyBhIG1vdXNlIGJ1dHRv
biBlbnVtIHZhbHVlLiIsCisgICAgICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwK
KyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnV0
dG9uIiwgInR5cGUiOiAiTW91c2VCdXR0b24iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQor
ICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0
cy90ZXN0cy9nZW5lcmF0ZS1ldmVudC1sb29wLXNoYXBlLXR5cGVzLmpzb24gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFw
ZS10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmNmEyNGU4YjNjMjNjODE2NzY3Mzk1YTY0NjcwMDMz
OGQzNzRlZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBlcy5qc29uCkBAIC0w
LDAgKzEsMzYgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAg
ICAgICAgICB7ICJuYW1lIjogIlNjYWxhclR5cGUiLCAibW9kZSI6ICJTQ0FMQVIiIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIjogIk1hcFR5cGUiLCAibW9kZSI6ICJNQVAiIH0sCisgICAgICAgICAg
ICB7ICJuYW1lIjogIlNoYXJlZE1hcFR5cGUiLCAibW9kZSI6ICJTSEFSRURfTUFQIiB9CisgICAg
ICAgIF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAg
Im5hbWUiOiAiU2NhbGFySW5wdXQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCisg
ICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCisgICAgICAgICAgICAibWVtYmVycyI6
IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGEiLCAidHlwZSI6ICJTY2FsYXJUeXBl
IiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogIk1hcElucHV0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAg
ICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhIiwgInR5cGUiOiAiTWFwVHlwZSIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJT
aGFyZWRNYXBJbnB1dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAg
ICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YSIsICJ0eXBlIjogIlNoYXJlZE1hcFR5cGUiIH0K
KyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1dC13aXRoLWd1
YXJkLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3ODQ2ZDc3ZWI3NTg1OGFi
MzgwOGJhMmNjYTgzZDE4OTZjMzE1YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5q
c29uCkBAIC0wLDAgKzEsMjggQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwi
OiBbCisgICAgICAgICAgICB7ICJuYW1lIjogImRvdWJsZSIsICJtb2RlIjogIlNDQUxBUiIgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiOiAidWludDY0X3QiLCAibW9kZSI6ICJTQ0FMQVIiIH0KKyAg
ICAgICAgXQorICAgIH0sCisKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAg
ICAibmFtZSI6ICJHZXRDdXJyZW50VGltZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
U3VwcGxpZXMgdGhlIHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwK
KyAgICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgImd1
YXJkIjogIkVOQUJMRShEVU1NWV9GRUFUVVJFKSIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImN1cnJlbnRUaW1lIiwgInR5cGUiOiAiZG91Ymxl
IiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogIlNldFJhbmRvbVNlZWQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNldHMg
dGhlIFBSTkcgc2VlZCB1c2VkIGJ5IE1hdGgucmFuZG9tKCkuIiwKKyAgICAgICAgICAgICJxdWV1
ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAg
ICAgICAgICAgeyJuYW1lIjogInJhbmRvbVNlZWQiLCAidHlwZSI6ICJ1aW50NjRfdCIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWlucHV0LXdpdGgtdmVjdG9y
LW1lbWJlcnMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0
cy9nZW5lcmF0ZS1pbnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIz
NDg3YzllM2IwMGM1MWM1NmYwNjkwOTMxODA4NTdjNWFiNjU0YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1
dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24KQEAgLTAsMCArMSwyOCBAQAoreworICAgICJ0eXBl
cyI6IHsKKyAgICAgICAgIkdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91Ymxl
IiwgIm1vZGUiOiAiU0NBTEFSIiB9CisgICAgICAgIF0sCisKKyAgICAgICAgIkphdmFTY3JpcHRD
b3JlIjogWworICAgICAgICAgICAgeyAibmFtZSI6ICJKU1RoaW5nIiwgIm1vZGUiOiAiU0NBTEFS
IiwgImhlYWRlciI6ICJ0aGluZ3MvSlNUaGluZy5oIiB9CisgICAgICAgIF0sCisKKyAgICAgICAg
IldlYkNvcmUiOiBbCisgICAgICAgICAgICB7ICJuYW1lIjogIldlYlRoaW5nIiwgIm1vZGUiOiAi
U0NBTEFSIiwgImhlYWRlciI6ICJ0aGluZ3MvV2ViVGhpbmcuaCIgIH0KKyAgICAgICAgXQorICAg
IH0sCisKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJB
cnJheU9mVGhpbmdzIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdXBwbGllcyBhcnJh
eXMgb2YgdGhpbmdzLiIsCisgICAgICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwK
KyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91
YmxlcyIsICJ0eXBlIjogImRvdWJsZSIsICJmbGFncyI6IFsiVkVDVE9SIl0gfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImpzdGhpbmdzIiwgInR5cGUiOiAiSlNUaGluZyIsICJmbGFncyI6
IFsiVkVDVE9SIl0gfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndlYnRoaW5ncyIsICJ0
eXBlIjogIldlYlRoaW5nIiwgImZsYWdzIjogWyJWRUNUT1IiXSB9CisgICAgICAgICAgICBdCisg
ICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1dHMtd2l0
aC1mbGFncy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3Y2M4MDQxYzNkYzNhOGY4ODhiMTkzNTY5YzI4ZGUx
MTQwZDQ2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbgpAQCAtMCwwICsx
LDM2IEBACit7CisgICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAg
ICAgeyAibmFtZSI6ICJTY2FsYXJUeXBlIiwgIm1vZGUiOiAiU0NBTEFSIiB9CisgICAgICAgIF0K
KyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUi
OiAiU2NhbGFySW5wdXQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCisgICAgICAg
ICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwKKyAgICAgICAgICAgICJtZW1iZXJzIjog
WworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YSIsICJ0eXBlIjogIlNjYWxhclR5cGUi
IH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAiU2NhbGFySW5wdXQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCisgICAg
ICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwKKyAgICAgICAgICAgICJmbGFncyI6
IFsiSElEREVOIl0sCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImRhdGEiLCAidHlwZSI6ICJTY2FsYXJUeXBlIiB9CisgICAgICAgICAgICBdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNjYWxhcklucHV0IiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAgICAgICAgInF1ZXVlIjogIlND
UklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAiZmxhZ3MiOiBbIkNSRUFURV9GUk9NX1BBR0Ui
XSwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
ZGF0YSIsICJ0eXBlIjogIlNjYWxhclR5cGUiIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQor
ICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0
cy90ZXN0cy9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLW1vZGVzLmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtbWVtb2l6ZWQtdHlwZS1tb2Rl
cy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgwZTUwZDYzY2RjMWY3Y2U2NzBlZGY5YzcwYjM2ZDMzZDBlMDlm
YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Njcmlw
dHMvdGVzdHMvZ2VuZXJhdGUtbWVtb2l6ZWQtdHlwZS1tb2Rlcy5qc29uCkBAIC0wLDAgKzEsMjcg
QEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAgICAgICAgICB7
ICJuYW1lIjogIlNjYWxhclR5cGUiLCAibW9kZSI6ICJTQ0FMQVIiIH0sCisgICAgICAgICAgICB7
ICJuYW1lIjogIk1hcFR5cGUiLCAibW9kZSI6ICJPV05FRCIgfQorICAgICAgICBdCisgICAgfSwK
KworICAgICJpbnB1dHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNjYWxh
cklucHV0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAgICAgICAgInF1
ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImRhdGEiLCAidHlwZSI6ICJTY2FsYXJUeXBlIiB9CisgICAg
ICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIk1h
cElucHV0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAgICAgICAgInF1
ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImRhdGEiLCAidHlwZSI6ICJNYXBUeXBlIiB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDFkOWQ1MmIxZmMxOTk1ZThlYzVjMDBhMDM4ZjgzNmEz
YjdkN2U0Zi4uOWFlZjRiMTVmNWM4MmUzMTVhMDVjOGVlYTg0ODA2ZTBlMTQ4ZjRhZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDE0LTAyLTA0ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBSZXBsYXk6IHVwc3RyZWFtIHJlcGxheSBpbnB1dCBjb2RlIGdlbmVyYXRvciBhbmQgRW5j
b2RlZFZhbHVlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjgyMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYW4gZXhlY3V0YWJsZSBzY3JpcHQgdG8gbGF1bmNoIHRoZSByZXBsYXkgaW5w
dXQgZ2VuZXJhdG9yIHRlc3RzLgorICAgICAgICBBZGQgYSB0ZXN0IGhhcm5lc3MgZm9yIHJ1bm5p
bmcgdGhlIGNvZGUgZ2VuZXJhdG9yIHRlc3RzLCBtb3N0bHkgdGFrZW4KKyAgICAgICAgZnJvbSB0
aGUgYmluZGluZ3MgdGVzdCBoYXJuZXNzIChidXQgc2ltcGxpZmllZCkuCisKKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1pbnB1dC1nZW5lcmF0b3ItdGVzdHM6IEFkZGVkLgorICAgICAgICAobWFpbik6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9yZXBsYXkvX19pbml0X18ucHk6IEFkZGVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcmVwbGF5L21haW4ucHk6IEFkZGVkLgorICAgICAg
ICAoSW5wdXRHZW5lcmF0b3JUZXN0cyk6CisgICAgICAgIChJbnB1dEdlbmVyYXRvclRlc3RzLl9f
aW5pdF9fKToKKyAgICAgICAgKElucHV0R2VuZXJhdG9yVGVzdHMuZ2VuZXJhdGVfZnJvbV9qc29u
KToKKyAgICAgICAgKElucHV0R2VuZXJhdG9yVGVzdHMud3JpdGVfZXJyb3JfZmlsZSk6CisgICAg
ICAgIChJbnB1dEdlbmVyYXRvclRlc3RzLmRldGVjdF9jaGFuZ2VzKToKKyAgICAgICAgKElucHV0
R2VuZXJhdG9yVGVzdHMucnVuX3Rlc3RzKToKKyAgICAgICAgKElucHV0R2VuZXJhdG9yVGVzdHMu
bWFpbik6CisKIDIwMTQtMDItMDQgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3Jn
PgogCiAgICAgICAgIFtBdXRvbWFrZV0gQWRkIG1pc3NpbmcgJChmZWF0dXJlX2RlZmluZXMpIHdo
ZW4gZ2VuZXJhdGluZyBJbmplY3RlZEJ1bmRsZSBiaW5kaW5ncwpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9ydW4taW5wdXQtZ2VuZXJhdG9yLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4taW5w
dXQtZ2VuZXJhdG9yLXRlc3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYmM1ZDBkNTlmZmUyYzBmYTg0ZmU0NmZm
Zjk1YTM1NmFiOWJhZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3J1bi1pbnB1
dC1nZW5lcmF0b3ItdGVzdHMKQEAgLTAsMCArMSw0MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisjIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorIyBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworaW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRp
dmUKKworZGVmIG1haW4oYXJndik6CisgICAgIiIiUnVucyByZXBsYXkgaW5wdXQgY29kZSBnZW5l
cmF0b3Igb24gdGVzdCBzcGVjaWZpY2F0aW9uIGZpbGVzIGFuZCBjb21wYXJlcworICAgIHRoZSBy
ZXN1bHRzIHdpdGggcmVmZXJlbmNlIGZpbGVzLgorCisgICAgT3B0aW9uczoKKyAgICAgICAtLXJl
c2V0LXJlc3VsdHM6IE92ZXJ3cml0ZXMgdGhlIHJlZmVyZW5jZSBmaWxlcyB3aXRoIHRoZSBnZW5l
cmF0ZWQgcmVzdWx0cy4KKworICAgICIiIgorICAgIHJlc2V0X3Jlc3VsdHMgPSAiLS1yZXNldC1y
ZXN1bHRzIiBpbiBhcmd2CisKKyAgICBmcm9tIHdlYmtpdHB5LnJlcGxheS5tYWluIGltcG9ydCBJ
bnB1dEdlbmVyYXRvclRlc3RzCisgICAgcmV0dXJuIElucHV0R2VuZXJhdG9yVGVzdHMocmVzZXRf
cmVzdWx0cywgZXhlY3V0aXZlLkV4ZWN1dGl2ZSgpKS5tYWluKCkKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcmVwbGF5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9yZXBsYXkvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY2NWJlZTViYjc3ZTk2ZWJj
N2NkOWM0NzY0MDY5MGZiZGE4YWMxOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcmVwbGF5L19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9y
IFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9yZXBsYXkvbWFpbi5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcmVwbGF5L21haW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDcwNDIxOTZhNDY4MjVlN2Jk
ZGI3YTg4MzM1OTA1N2U4ZWRhZDVmMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcmVwbGF5L21haW4ucHkKQEAgLTAsMCArMSwxMzQgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAiQVMKKyMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVECisjIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBv
cnQgb3MucGF0aAoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rf
c2NtX3N5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQg
U2NyaXB0RXJyb3IKKworCitjbGFzcyBJbnB1dEdlbmVyYXRvclRlc3RzOgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlc2V0X3Jlc3VsdHMsIGV4ZWN1dGl2ZSk6CisgICAgICAgIHNlbGYucmVz
ZXRfcmVzdWx0cyA9IHJlc2V0X3Jlc3VsdHMKKyAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBleGVj
dXRpdmUKKworICAgIGRlZiBnZW5lcmF0ZV9mcm9tX2pzb24oc2VsZiwganNvbl9maWxlLCBvdXRw
dXRfZGlyZWN0b3J5KToKKyAgICAgICAgY21kID0gWydweXRob24nLAorICAgICAgICAgICAgICAg
J0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMu
cHknLAorICAgICAgICAgICAgICAgJy0tb3V0cHV0RGlyJywgb3V0cHV0X2RpcmVjdG9yeSwKKyAg
ICAgICAgICAgICAgICctLWZvcmNlJywKKyAgICAgICAgICAgICAgICctLWZyYW1ld29yaycsICdU
ZXN0JywKKyAgICAgICAgICAgICAgICctLXRlc3QnLAorICAgICAgICAgICAgICAganNvbl9maWxl
XQorCisgICAgICAgIGV4aXRfY29kZSA9IDAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3Rk
ZXJyX291dHB1dCA9IHNlbGYuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGNtZCkKKyAgICAgICAgICAg
IGlmIHN0ZGVycl9vdXRwdXQ6CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9lcnJvcl9maWxl
KGpzb25fZmlsZSwgb3V0cHV0X2RpcmVjdG9yeSwgc3RkZXJyX291dHB1dCkKKyAgICAgICAgZXhj
ZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAgICAgcHJpbnQgZS5vdXRwdXQKKyAgICAgICAg
ICAgIGV4aXRfY29kZSA9IGUuZXhpdF9jb2RlCisgICAgICAgIHJldHVybiBleGl0X2NvZGUKKwor
ICAgIGRlZiB3cml0ZV9lcnJvcl9maWxlKHNlbGYsIGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRfZGly
ZWN0b3J5LCBlcnJvcl9vdXRwdXQpOgorICAgICAgICBvdXRwdXRfZmlsZXBhdGggPSBvcy5wYXRo
LmpvaW4ob3V0cHV0X2RpcmVjdG9yeSwgb3MucGF0aC5iYXNlbmFtZShpbnB1dF9maWxlcGF0aCkg
KyAnLWVycm9yJykKKworICAgICAgICB3aXRoIG9wZW4ob3V0cHV0X2ZpbGVwYXRoLCAidyIpIGFz
IG91dHB1dF9maWxlOgorICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoZXJyb3Jfb3V0cHV0
KQorCisgICAgZGVmIGRldGVjdF9jaGFuZ2VzKHNlbGYsIHdvcmtfZGlyZWN0b3J5LCByZWZlcmVu
Y2VfZGlyZWN0b3J5KToKKyAgICAgICAgY2hhbmdlc19mb3VuZCA9IEZhbHNlCisgICAgICAgIGZv
ciBvdXRwdXRfZmlsZSBpbiBvcy5saXN0ZGlyKHdvcmtfZGlyZWN0b3J5KToKKyAgICAgICAgICAg
IGNtZCA9IFsnZGlmZicsCisgICAgICAgICAgICAgICAgICAgJy11JywKKyAgICAgICAgICAgICAg
ICAgICAnLU4nLAorICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihyZWZlcmVuY2VfZGly
ZWN0b3J5LCBvdXRwdXRfZmlsZSksCisgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHdv
cmtfZGlyZWN0b3J5LCBvdXRwdXRfZmlsZSldCisKKyAgICAgICAgICAgIGV4aXRfY29kZSA9IDAK
KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLmV4ZWN1dGl2
ZS5ydW5fY29tbWFuZChjbWQpCisgICAgICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6Cisg
ICAgICAgICAgICAgICAgb3V0cHV0ID0gZS5vdXRwdXQKKyAgICAgICAgICAgICAgICBleGl0X2Nv
ZGUgPSBlLmV4aXRfY29kZQorCisgICAgICAgICAgICBpZiBleGl0X2NvZGUgb3Igb3V0cHV0Ogor
ICAgICAgICAgICAgICAgIHByaW50ICdGQUlMOiAlcycgJSBvdXRwdXRfZmlsZQorICAgICAgICAg
ICAgICAgIHByaW50IG91dHB1dAorICAgICAgICAgICAgICAgIGNoYW5nZXNfZm91bmQgPSBUcnVl
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50ICdQQVNTOiAlcycgJSBv
dXRwdXRfZmlsZQorICAgICAgICByZXR1cm4gY2hhbmdlc19mb3VuZAorCisgICAgZGVmIHJ1bl90
ZXN0cyhzZWxmLCBpbnB1dF9kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgorICAgICAg
ICB3b3JrX2RpcmVjdG9yeSA9IHJlZmVyZW5jZV9kaXJlY3RvcnkKKworICAgICAgICBwYXNzZWQg
PSBUcnVlCisgICAgICAgIGZvciBpbnB1dF9maWxlIGluIG9zLmxpc3RkaXIoaW5wdXRfZGlyZWN0
b3J5KToKKyAgICAgICAgICAgIChuYW1lLCBleHRlbnNpb24pID0gb3MucGF0aC5zcGxpdGV4dChp
bnB1dF9maWxlKQorICAgICAgICAgICAgaWYgZXh0ZW5zaW9uICE9ICcuanNvbic6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgR2VuZXJhdGUgb3V0cHV0IGludG8gdGhl
IHdvcmsgZGlyZWN0b3J5IChlaXRoZXIgdGhlIGdpdmVuIG9uZSBvciBhCisgICAgICAgICAgICAj
IHRlbXAgb25lIGlmIG5vdCByZXNldF9yZXN1bHRzIGlzIHBlcmZvcm1lZCkKKyAgICAgICAgICAg
IGlmIG5vdCBzZWxmLnJlc2V0X3Jlc3VsdHM6CisgICAgICAgICAgICAgICAgd29ya19kaXJlY3Rv
cnkgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKworICAgICAgICAgICAgaWYgc2VsZi5nZW5lcmF0ZV9m
cm9tX2pzb24ob3MucGF0aC5qb2luKGlucHV0X2RpcmVjdG9yeSwgaW5wdXRfZmlsZSksIHdvcmtf
ZGlyZWN0b3J5KToKKyAgICAgICAgICAgICAgICBwYXNzZWQgPSBGYWxzZQorCisgICAgICAgICAg
ICBpZiBzZWxmLnJlc2V0X3Jlc3VsdHM6CisgICAgICAgICAgICAgICAgcHJpbnQgIlJlc2V0IHJl
c3VsdHMgZm9yIHRlc3Q6ICVzIiAlIChpbnB1dF9maWxlKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgICMgRGV0ZWN0IGNoYW5nZXMKKyAgICAgICAgICAgIGlmIHNlbGYu
ZGV0ZWN0X2NoYW5nZXMod29ya19kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgorICAg
ICAgICAgICAgICAgIHBhc3NlZCA9IEZhbHNlCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHdv
cmtfZGlyZWN0b3J5KQorCisgICAgICAgIHJldHVybiBwYXNzZWQKKworICAgIGRlZiBtYWluKHNl
bGYpOgorICAgICAgICBjdXJyZW50X3NjbSA9IGRldGVjdF9zY21fc3lzdGVtKG9zLmN1cmRpcikK
KyAgICAgICAgb3MuY2hkaXIob3MucGF0aC5qb2luKGN1cnJlbnRfc2NtLmNoZWNrb3V0X3Jvb3Qs
ICdTb3VyY2UnKSkKKworICAgICAgICBhbGxfdGVzdHNfcGFzc2VkID0gVHJ1ZQorCisgICAgICAg
IGlucHV0X2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignSmF2YVNjcmlwdENvcmUnLCAncmVwbGF5
JywgJ3NjcmlwdHMnLCAndGVzdHMnKQorICAgICAgICByZWZlcmVuY2VfZGlyZWN0b3J5ID0gb3Mu
cGF0aC5qb2luKCdKYXZhU2NyaXB0Q29yZScsICdyZXBsYXknLCAnc2NyaXB0cycsICd0ZXN0cycs
ICdleHBlY3RlZCcpCisgICAgICAgIGlmIG5vdCBzZWxmLnJ1bl90ZXN0cyhpbnB1dF9kaXJlY3Rv
cnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgorICAgICAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9
IEZhbHNlCisKKyAgICAgICAgcHJpbnQgJycKKyAgICAgICAgaWYgYWxsX3Rlc3RzX3Bhc3NlZDoK
KyAgICAgICAgICAgIHByaW50ICdBbGwgdGVzdHMgUEFTUyEnCisgICAgICAgICAgICByZXR1cm4g
MAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQgJ1NvbWUgdGVzdHMgRkFJTCEgKFRv
IHVwZGF0ZSB0aGUgcmVmZXJlbmNlIGZpbGVzLCBleGVjdXRlICJydW4taW5wdXQtZ2VuZXJhdG9y
LXRlc3RzIC0tcmVzZXQtcmVzdWx0cyIpJworICAgICAgICAgICAgcmV0dXJuIC0xCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbW9kZWwvcHJvYmUtbWFuYWdlci1h
ZGQtcmVtb3ZlLWFjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9t
b2RlbC9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVi
MzU2MGY5YjcwOTc3NThiOTQzMmJkNzQ1OTQyMjRjN2M2MjhkZTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbW9kZWwvcHJvYmUtbWFuYWdlci1hZGQt
cmVtb3ZlLWFjdGlvbnMuaHRtbApAQCAtMCwwICsxLDU0IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrcG9pbnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3Rv
clRlc3QuaW1wb3J0U2NyaXB0KCIuLi8uLi8uLi8uLi9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3Vy
Y2VzL3Byb2JlLWhlbHBlci5qcyIpOworICAgIEluc3BlY3RvclRlc3QuaW5pdGlhbGl6ZUluc3Bl
Y3Rvck1vZGVscygpOworCisgICAgdmFyIGN1cnJlbnRUaWNrcyA9IDA7CisgICAgY29uc3QgZXhw
ZWN0ZWRUaWNrcyA9IDI7CisKKyAgICBmdW5jdGlvbiBpbmNyZW1lbnRUaWNrKGV2ZW50KQorICAg
IHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkhpdCB0ZXN0IGNoZWNrcG9pbnQgZXZlbnQg
IyIgKyBjdXJyZW50VGlja3MgKyAiIHdpdGggdHlwZTogIiArIGV2ZW50LnR5cGUpOworICAgICAg
ICBpZiAoKytjdXJyZW50VGlja3MgPT09IGV4cGVjdGVkVGlja3MpCisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KKworICAgIFdlYkluc3BlY3Rvci5Qcm9i
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZS5FdmVudC5TYW1wbGVBZGRlZCwg
aW5jcmVtZW50VGljayk7CisKKyAgICBQcm9iZUhlbHBlci5pbnN0YWxsVHJhY2luZ0xpc3RlbmVy
cygpOworCisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0QWRkZWQsIGZ1bmN0aW9u
KGV2ZW50KSB7CisKKyAgICAgICAgdmFyIHNjcmlwdE9iamVjdCA9IGV2ZW50LmRhdGEuc2NyaXB0
OworCisgICAgICAgIGlmICghL3Jlc291cmNlc1wvYnJlYWtwb2ludFwuanMkLy50ZXN0KHNjcmlw
dE9iamVjdC51cmwpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBsb2NhdGlv
biA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oMTgsIDApOworICAgICAg
ICAvLyBGb3IgdGhpcyB0ZXN0LCBmaXJzdCBjcmVhdGUgdGhlIGJyZWFrcG9pbnQgYW5kIGl0cyBh
Y3Rpb25zIGJlZm9yZSBzZW5kaW5nIGFueXRoaW5nIHRvIHRoZSBiYWNrZW5kLgorICAgICAgICB2
YXIgYnJlYWtwb2ludCA9IG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludChsb2NhdGlvbik7Cisg
ICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKKyAgICAgICAgLy8gQ3JlYXRl
IHR3byByZWxhdGVkIGFjdGlvbnMuCisgICAgICAgIGZvciAodmFyIGkgb2YgWzAsIDFdKQorICAg
ICAgICAgICAgdmFyIGFjdGlvbiA9IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUsIG51bGwsICJhIik7CisKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCisg
ICAgICAgIGJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KGJyZWFrcG9pbnQucmVzb2x2ZWQsICJCcmVha3BvaW50IHNo
b3VsZCBiZSByZXNvbHZlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1h
bmQoIlJ1bnRpbWUuZXZhbHVhdGUiLCB7ZXhwcmVzc2lvbjogImJyZWFrcG9pbnRBY3Rpb25zKDEy
LCB7eDoxLHk6Mn0pIn0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RpbmcgdGhhdCB0aGUg
cHJvYmUgbWFuYWdlciBwcm9wZXJseSBoYW5kbGVzIGFkZGl0aW9uIGFuZCByZW1vdmFsIG9mIHJl
bGF0ZWQgcHJvYmVzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="247372"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>