<?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>150333</bug_id>
          
          <creation_ts>2015-10-19 09:54:27 -0700</creation_ts>
          <short_desc>JS Built-ins functions should be able to assert</short_desc>
          <delta_ts>2015-11-09 06:38:17 -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>JavaScriptCore</component>
          <version>WebKit 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>
          
          <blocked>150496</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1134605</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-19 09:54:27 -0700</bug_when>
    <thetext>Currently JS built-ins cannot assert.
It might be good to add this feature, as illustrated by TODOs in Source/WebCore/Modules/streams/ReadableStreamInternals.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134610</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-19 10:20:00 -0700</bug_when>
    <thetext>One potential implementation is to insert in js built-ins code such as @assert(boolean_expression...).

The built-in js generator would remove these lines in release mode.
In debug mode, they might insert lines such as @assert(boolean_expression &quot;boolean_expression&quot;) or if(boolean_expression) @wtfCrash(&quot;boolean_expression&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139586</commentid>
    <comment_count>2</comment_count>
      <attachid>264853</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-05 05:19:38 -0800</bug_when>
    <thetext>Created attachment 264853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139588</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 05:21:43 -0800</bug_when>
    <thetext>Attachment 264853 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:71:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:71:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:76:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateImplementationGenerator&apos;  [pylint/E0602] [5]
Total errors found: 3 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139609</commentid>
    <comment_count>4</comment_count>
      <attachid>264853</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-11-05 06:27:57 -0800</bug_when>
    <thetext>Comment on attachment 264853
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        Updated build system so that Debug CMake builds enable --generate-assertions flag.

Is this going to work only for CMake based builds? Nothing for Mac or Win?

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_model.py:47
&gt; +assertRegExp = re.compile(r&quot;^(\s*)ASSERT\(\&quot;([^\&quot;]+)\&quot;\);\n&quot;, re.MULTILINE | re.S)

I know you can easily do ASSERT(&quot;false&quot;), but it would be cool to be able to do ASSERT_NOT_REACHED() too. I guess this could be done in a follow up patch too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139613</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-05 06:51:48 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 264853 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264853&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:11
&gt; &gt; +        Updated build system so that Debug CMake builds enable --generate-assertions flag.
&gt; 
&gt; Is this going to work only for CMake based builds? Nothing for Mac or Win?

Win is CMake based and Mac is planned to go to CMake at some point IIANM.
To add support for it now, we probably need to touch the scripts using DerivedSources.make.
I would be tempted to just wait but would be glad to see that happening...

&gt; I know you can easily do ASSERT(&quot;false&quot;), but it would be cool to be able to
&gt; do ASSERT_NOT_REACHED() too. I guess this could be done in a follow up patch
&gt; too.

I am not sure how often we will have use for ASSERT_NOT_REACHED in JS built-ins. If that will happen often, we should probably add it at some point.

In the laundry list, it would also be cool to add JS line number in the assert message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139650</commentid>
    <comment_count>6</comment_count>
      <attachid>264853</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-11-05 10:42:21 -0800</bug_when>
    <thetext>Comment on attachment 264853
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        Built-in generator translates ASSERT(&quot;...&quot;) instructions to @assert calls when --generate-assertions flag is set.
&gt; +        Otherwise ASSERT instructions are stripped.

Why not just put &quot;@assert&quot; in the source directly?

&gt; Source/JavaScriptCore/Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Separate-Debug.js-result:119
&gt; +    &quot;    if (@assert) @assert(!!this, \&quot;doSomething\&quot;, \&quot;!!this\&quot;);\n&quot; \

Why do we have to check for presence of @assert, if we only generate this code when it is present?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139661</commentid>
    <comment_count>7</comment_count>
      <attachid>264853</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-05 11:07:08 -0800</bug_when>
    <thetext>Comment on attachment 264853
Patch

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

I think it&apos;s strange to remove ASSERT(...) in release builds.  Is there some other way we could do this?

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt;&gt; +        Updated build system so that Debug CMake builds enable --generate-assertions flag.
&gt;&gt; 
&gt;&gt; Is this going to work only for CMake based builds? Nothing for Mac or Win?
&gt; 
&gt; Win is CMake based and Mac is planned to go to CMake at some point IIANM.
&gt; To add support for it now, we probably need to touch the scripts using DerivedSources.make.
&gt; I would be tempted to just wait but would be glad to see that happening...

There are not official plans to make Mac officially CMake based.  If that does ever happen, it will be a while.

&gt; Source/JavaScriptCore/Scripts/tests/builtins/JavaScriptCore-Builtin.Promise-Separate-Release.js:13
&gt; + * THIS SOFTWARE IS PROVIDED BY Canon INC. ``AS IS&apos;&apos; AND ANY

Canon is not all-caps.  Also, sometimes APPLE is used in this patch.  I&apos;m not sure what the policy about this is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139666</commentid>
    <comment_count>8</comment_count>
      <attachid>264853</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-05 11:17:24 -0800</bug_when>
    <thetext>Comment on attachment 264853
Patch

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

Overall this looks good, but it needs a little more work to be less of a hazard. In particular, the generator should error out on the following cases:

 * assert inside control flow block without braces
 * multi-line assert
 * assert with other statements before/after it on the same line

You can look at the inspector&apos;s assert stripper (Source/WebInspectorUI/Scripts/remove-console-asserts.pl) for inspiration how to do this.

As for DerivedSources.make, you should be able to do something similar to CMake, by doing something like:

ifeq ($(CONFIGURATION),Debug)
ENABLE_JSBUILTIN_ASSERTIONS = --enable-assertions
else
ENABLE_JSBUILTIN_ASSERIONS = 
endif

However, it may be better to just pass the configuration itself (i.e., --configuration debug) and let the generator decide what to do for each. Otherwise, we could end up with a lot of flags.

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:71
&gt; +            sections.append(self.generate_embedded_code_string_section_for_function(function, self._enable_assertions))

See note below.

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_model.py:120
&gt; +    def source(self, enable_assertions):

Please move this code into the BuiltinsGenerator base class. BuiltinFunction is a model object, it shouldn&apos;t be responsible for source transformations during code generation. Then you won&apos;t need to pass any flags either.

&gt; Source/JavaScriptCore/Scripts/generate-js-builtins.py:-63
&gt; -                (_, object_name, _) = file_name.split(&apos;-&apos;)

It would be easier to read this if you added another placeholder destructuring argument instead of slicing it.

&gt; Source/WebCore/Modules/streams/ReadableStreamInternals.js:55
&gt; +    ASSERT(&quot;stream.@state === @streamErrored&quot;);

I don&apos;t like quotes here. It will break syntax highlighting.

&gt; Tools/Scripts/webkitpy/codegen/main.py:41
&gt; +    def generate_from_js_builtins(self, builtins_file, output_directory, framework_name=&quot;&quot;, combined_outputs=False, build_mode=&quot;Release&quot;):

I would call it the &apos;configuration&apos; or &apos;build_type&apos; to match other build script code. On OS X, valid values are Debug, Release, and Production.

&gt; Tools/Scripts/webkitpy/codegen/main.py:111
&gt; +            (framework_name, test_case, output_mode) = parameters[:3]

Please just add another destructuring variable to the LHS. This change is harder to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139674</commentid>
    <comment_count>9</comment_count>
      <attachid>264853</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-05 11:26:14 -0800</bug_when>
    <thetext>Comment on attachment 264853
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        Otherwise ASSERT instructions are stripped.
&gt; 
&gt; Why not just put &quot;@assert&quot; in the source directly?

I agree, it is more consistent to use @assert and just delete the whole line if we need to strip (but see caveats in my other comment). This is what WebInspectorUI does for Production builds.

&gt;&gt; Source/JavaScriptCore/Scripts/tests/builtins/JavaScriptCore-Builtin.Promise-Separate-Release.js:13
&gt;&gt; + * THIS SOFTWARE IS PROVIDED BY Canon INC. ``AS IS&apos;&apos; AND ANY
&gt; 
&gt; Canon is not all-caps.  Also, sometimes APPLE is used in this patch.  I&apos;m not sure what the policy about this is.

Please use the license block checked in here: http://trac.webkit.org/browser/trunk/Source/WebKit/LICENSE (notably, APPLE INC AND ITS CONTRIBUTORS differs here)

You should only need to alter the copyright lines at the top.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139870</commentid>
    <comment_count>10</comment_count>
      <attachid>264853</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-05 20:23:56 -0800</bug_when>
    <thetext>Comment on attachment 264853
Patch

I think adding @assert bytecode instrinsics is better than adding @assert function.
It can completely control the bytecodes emitted by @assert(...);

For example,
+ under the debug build, @assert will emit assertion
+ under the release build, it will emit nothing

See bytecode/BytecodeIntrinsicRegistry.cpp and @putByValDirect implementation for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139958</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-06 08:08:08 -0800</bug_when>
    <thetext>Thanks everybody for your comments.
I will try to prepare a new version of the patch taking into account all comments.

The intrinsic bytecode approach is intriguing to me since I do not know much about this. I will definitely look at it.
It could resolve around creating a new assert bytecode that would only happen in debug mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139987</commentid>
    <comment_count>12</comment_count>
      <attachid>264941</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-06 09:51:01 -0800</bug_when>
    <thetext>Created attachment 264941
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140005</commentid>
    <comment_count>13</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-06 10:59:59 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 264853 [details]
&gt; Patch
&gt; 
&gt; I think adding @assert bytecode instrinsics is better than adding @assert
&gt; function.
&gt; It can completely control the bytecodes emitted by @assert(...);
&gt; 
&gt; For example,
&gt; + under the debug build, @assert will emit assertion
&gt; + under the release build, it will emit nothing
&gt; 
&gt; See bytecode/BytecodeIntrinsicRegistry.cpp and @putByValDirect
&gt; implementation for more details.

This seems like a much cleaner approach with less macro-like magic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140311</commentid>
    <comment_count>14</comment_count>
      <attachid>265035</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-09 02:21:21 -0800</bug_when>
    <thetext>Created attachment 265035
build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140312</commentid>
    <comment_count>15</comment_count>
      <attachid>265036</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-09 02:36:07 -0800</bug_when>
    <thetext>Created attachment 265036
iOS build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140318</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-09 03:14:13 -0800</bug_when>
    <thetext>The above patch would create a trace as follow if an assertion was failing:

WebKitBuild/Debug/layout-test-results/streams/readable-stream-reader-read-stderr.txt ASSERTION FAILED: JS assertion failed at line 25 in:
function (stream)
{
    &quot;use strict&quot;;

    if (!@isReadableStream(stream))
       throw new @TypeError(&quot;ReadableStreamReader needs a ReadableStream&quot;);
    if (@isReadableStreamLocked(stream))
       throw new @TypeError(&quot;ReadableStream is locked&quot;);

    this.@state = stream.@state;
    this.@readRequests = [];
    if (stream.@state === @streamReadable) {
        this.@ownerReadableStream = stream;
        this.@storedError = undefined;
        stream.@reader = this;
        this.@closedPromiseCapability = @newPromiseCapability(@Promise);
        return this;
    }
    if (stream.@state === @streamClosed) {
        this.@ownerReadableStream = null;
        this.@storedError = undefined;
        this.@closedPromiseCapability = { @promise: @Promise.@resolve() };
        return this;
    }
    @assert(stream.@state !== @streamErrored);
    this.@ownerReadableStream = null;
    this.@storedError = stream.@storedError;
    this.@closedPromiseCapability = { @promise: @Promise.@reject(stream.@storedError) };

    return this;
}

OP(1).jsValue().asBoolean()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140319</commentid>
    <comment_count>17</comment_count>
      <attachid>265036</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-09 03:17:54 -0800</bug_when>
    <thetext>Comment on attachment 265036
iOS build fix

Marking patch as r?

I am wondering whether there is a way to test that feature in WebKit. If not, is it worth beefing-up WK test infrastructure?

Also, I am not sure all added code should be under #ifdef NDEBUG?
In the current patch, this is limited to only the bytecode generation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140322</commentid>
    <comment_count>18</comment_count>
      <attachid>265036</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-09 03:38:46 -0800</bug_when>
    <thetext>Comment on attachment 265036
iOS build fix

r=me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140342</commentid>
    <comment_count>19</comment_count>
      <attachid>265036</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-09 06:15:20 -0800</bug_when>
    <thetext>Comment on attachment 265036
iOS build fix

Clearing flags on attachment: 265036

Committed r192155: &lt;http://trac.webkit.org/changeset/192155&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140343</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-09 06:15:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140345</commentid>
    <comment_count>21</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-09 06:38:17 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 265036 [details]
&gt; iOS build fix
&gt; 
&gt; Marking patch as r?
&gt; 
&gt; I am wondering whether there is a way to test that feature in WebKit. If
&gt; not, is it worth beefing-up WK test infrastructure?

I think this is OK.

&gt; 
&gt; Also, I am not sure all added code should be under #ifdef NDEBUG?
&gt; In the current patch, this is limited to only the bytecode generation.

Making ifdefed code small is better I think (as long as it does not incur performance regression). Keeping the differences small between Debug / Release reduces accidental build breaks in debug builds.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264853</attachid>
            <date>2015-11-05 05:19:38 -0800</date>
            <delta_ts>2015-11-06 09:50:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150333-20151105141839.patch</filename>
            <type>text/plain</type>
            <size>39455</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
Nzg2YmY0MDA3MjQ4ZmQyZTkzOWY4NDFmMDliYTVmZTBiMjg0Njg5Li43MzFiZGY1MjBlZDAyODAy
YzRhMTU3M2UyN2E1NzUyYjMwZWZlNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNS0xMS0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIEpTIEJ1aWx0LWlucyBmdW5jdGlvbnMgc2hvdWxkIGJlIGFi
bGUgdG8gYXNzZXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTAzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBCdWlsdC1pbiBnZW5lcmF0b3IgdHJhbnNsYXRlcyBBU1NFUlQoIi4uLiIpIGluc3RydWN0
aW9ucyB0byBAYXNzZXJ0IGNhbGxzIHdoZW4gLS1nZW5lcmF0ZS1hc3NlcnRpb25zIGZsYWcgaXMg
c2V0LgorICAgICAgICBPdGhlcndpc2UgQVNTRVJUIGluc3RydWN0aW9ucyBhcmUgc3RyaXBwZWQu
CisKKyAgICAgICAgVXBkYXRlZCBidWlsZCBzeXN0ZW0gc28gdGhhdCBEZWJ1ZyBDTWFrZSBidWls
ZHMgZW5hYmxlIC0tZ2VuZXJhdGUtYXNzZXJ0aW9ucyBmbGFnLgorCisgICAgICAgIEFkZGVkIHN1
cHBvcnQgZm9yIEBhc3NlcnQgSlMgZnVuY3Rpb25zIGZvciBEZWJ1ZyBidWlsZHMuCisgICAgICAg
IEBhc3NlcnQgdGFrZXMgMyBwYXJhbWV0ZXJzIChhIGJvb2xlYW4sIGZ1bmN0aW9uIG5hbWUgYW5k
IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gdGhlIGJvb2xlYW4pLgorICAgICAgICBJdCBn
ZW5lcmF0ZXMgYSBBU1NFUlRfV0lUSF9NRVNTQUdFIGJhc2VkIG9uIHRoYXQgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgQWRkZWQgdGVzdCBjYXNlcyBmb3IgYnVpbHRpbnMuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoQnVpbHRpbnNDb21iaW5l
ZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29t
YmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAq
IFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRp
b24ucHk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3Iu
X19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJh
dG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGlu
c19nZW5lcmF0b3IucHk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5nZW5lcmF0ZV9lbWJl
ZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5jdGlvbik6CisgICAgICAgICogU2NyaXB0
cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5f
X2luaXRfXyk6CisgICAgICAgIChCdWlsdGluRnVuY3Rpb24uc291cmNlKToKKyAgICAgICAgKiBT
Y3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5OgorICAgICAgICAoZ2VuZXJhdGVfYmluZGlu
Z3NfZm9yX2J1aWx0aW5zX2ZpbGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS1EZWJ1Zy5qczogQWRkZWQu
CisgICAgICAgIChkb1NvbWV0aGluZyk6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUtUmVsZWFzZS5qczogQWRk
ZWQuCisgICAgICAgIChkb1NvbWV0aGluZyk6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUtRGVi
dWcuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS1SZWxlYXNlLmpz
LXJlc3VsdDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNBc3NlcnQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaDoKKwogMjAxNS0xMS0wNCAgQmVuamFtaW4g
UG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQgQjMtdG8t
QWlyIGxvd2VyaW5nIGZvciB0aGUgc2hpZnQgb3Bjb2RlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZmZGE0OGFm
OGFjOGQ5ZDg4YWQyMDlkMGQ1YWQwNGZiMjI4MjMzZWIuLjNmZjI3YTk3NjkyZTM1NThjNTU3NWJh
MGY1NzY3N2E1Nzg3ZDFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0xMS0w
NCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAg
IEpTIEJ1aWx0LWlucyBmdW5jdGlvbnMgc2hvdWxkIGJlIGFibGUgdG8gYXNzZXJ0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAzMzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IFVwZGF0ZWQgdG8gZW5hYmxl
IC0tZ2VuZXJhdGUtYXNzZXJ0aW9ucyBpbiBEZWJ1ZyBidWlsZC4KKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChwcml2YXRlSW5p
dGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyKTogQWRkZWQgYW4gQVNTRVJUKCIiKQorCiAyMDE1
LTExLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEhhdmluZyBwYWdlIG92ZXJsYXlzIGNhdXNlcyBpZnJhbWUgdG8gZ2V0IGNvbXBvc2l0ZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4YjZhNTAwMmZlYTAwMjQ1ZWMxZTdh
ZDk1ZDg3MWUwMDMxYmNmMzNlLi4zYmQwMmU0MGVhYjcxYzY3NjhlNGNkMWIzMTBmMDBkMzgyOTE1
MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMjUzLDExICsxMjUz
LDE2IEBAIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0IzTG93ZXJpbmdNYXRjaGVyLmgKICkKIAorc2V0
KEVOQUJMRV9KU0JVSUxUSU5fQVNTRVJUSU9OUyAiIikKK2lmIChDTUFLRV9CVUlMRF9UWVBFIFNU
UkVRVUFMICJEZWJ1ZyIpCisgICAgc2V0KEVOQUJMRV9KU0JVSUxUSU5fQVNTRVJUSU9OUyAiLS1l
bmFibGUtYXNzZXJ0aW9ucyIpCitlbmRpZiAoKQorCiBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
T1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
Y3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAog
ICAgIE1BSU5fREVQRU5ERU5DWSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0
ZS1qcy1idWlsdGlucy5weQogICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19T
T1VSQ0VTfSAke0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTfQotICAgIENPTU1BTkQgJHtQWVRI
T05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkgLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLS1vdXRwdXQtZGlyZWN0b3J5
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0gLS1jb21iaW5lZCAke0phdmFT
Y3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVN9CisgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRB
QkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eSAtLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtLW91dHB1dC1kaXJlY3RvcnkgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSAtLWNvbWJpbmVkICR7SmF2YVNjcmlwdENvcmVf
QlVJTFRJTlNfU09VUkNFU30gJHtFTkFCTEVfSlNCVUlMVElOX0FTU0VSVElPTlN9CiAgICAgVkVS
QkFUSU0pCiAKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkK
aW5kZXggMDk0NDM0YjY0NjhhMTUzZjBmODZjYTg1ZDE3OWZmNmM2ZjNjOGI4Yi4uN2U1NmQ1YzBj
NDY1NjA1NGI3YTAyNzEzZWUwMWZjZGIwOThkMzI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1w
bGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKQEAgLTM4LDgg
KzM4LDkgQEAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCiAKIAogY2xhc3MgQnVp
bHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBt
b2RlbCwgZW5hYmxlX2Fzc2VydGlvbnM9RmFsc2UpOgogICAgICAgICBCdWlsdGluc0dlbmVyYXRv
ci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKyAgICAgICAgc2VsZi5fZW5hYmxlX2Fzc2VydGlvbnMg
PSBlbmFibGVfYXNzZXJ0aW9ucwogCiAgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKICAg
ICAgICAgcmV0dXJuICIlc0J1aWx0aW5zLmNwcCIgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNl
dHRpbmcoJ25hbWVzcGFjZScpCkBAIC01Nyw3ICs1OCw3IEBAIGNsYXNzIEJ1aWx0aW5zQ29tYmlu
ZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CiAgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMoKSkK
ICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3Ap
LnN1YnN0aXR1dGUoYXJncykpCiAgICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1vZGVsKCku
YWxsX2Z1bmN0aW9ucygpOgotICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJh
dGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oZnVuY3Rpb24pKQor
ICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9z
dHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oZnVuY3Rpb24sIHNlbGYuX2VuYWJsZV9hc3NlcnRp
b25zKSkKICAgICAgICAgaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLkph
dmFTY3JpcHRDb3JlOgogICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBs
YXRlcy5Db21iaW5lZEpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFy
Z3MpKQogICAgICAgICBlbGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5X
ZWJDb3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0
ZV9pbXBsZW1lbnRhdGlvbi5weQppbmRleCAwNDQzOTc1ZGFkZjFiMzdhNjNjMThmZWVmNTVhODU1
MzgyZjQxZDk0Li40YjBmZjhlNzQ0MDJhNmJhOTU3ZmMzNzcxOWMzNWIyYmNmZDRmOGQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19n
ZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1l
bnRhdGlvbi5weQpAQCAtMzgsOSArMzgsMTAgQEAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2ds
b2JhbCcpCiAKIAogY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9y
KEJ1aWx0aW5zR2VuZXJhdG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIG9iamVj
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsLCBvYmplY3QsIGVuYWJsZV9hc3NlcnRp
b25zPUZhbHNlKToKICAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9k
ZWwpCiAgICAgICAgIHNlbGYub2JqZWN0ID0gb2JqZWN0CisgICAgICAgIHNlbGYuX2VuYWJsZV9h
c3NlcnRpb25zID0gZW5hYmxlX2Fzc2VydGlvbnMKIAogICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUo
c2VsZik6CiAgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5jcHAiICUgQnVpbHRpbnNHZW5lcmF0
b3IubWFuZ2xlZE5hbWVGb3JPYmplY3Qoc2VsZi5vYmplY3QpCkBAIC02Nyw3ICs2OCw3IEBAIGNs
YXNzIEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihCdWlsdGluc0dlbmVy
YXRvcik6CiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY29uZGFyeV9o
ZWFkZXJfaW5jbHVkZXMoKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBs
YXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCiAgICAgICAgIGZvciBmdW5jdGlv
biBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnM6Ci0gICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
c2VsZi5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5jdGlvbihm
dW5jdGlvbikpCisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9lbWJl
ZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5jdGlvbihmdW5jdGlvbiwgc2VsZi5fZW5h
YmxlX2Fzc2VydGlvbnMpKQogICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZy
YW1ld29ya3MuSmF2YVNjcmlwdENvcmU6CiAgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVt
cGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1
YnN0aXR1dGUoYXJncykpCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBG
cmFtZXdvcmtzLldlYkNvcmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkKaW5kZXggN2Y0NjlkM2I0
NmI5MmZjN2ZlMDMwMGJmMzRmMWRjOGY5M2M0NDFjNi4uY2I2YzQ3ZTRjOGRmNGExM2I1MjdhODVl
ZWNjNGJhZDc2NmNjNTZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQpAQCAtMTEwLDggKzEx
MCw4IEBAIGNsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yOgogICAgICAgICAgICAgIiNpbmNsdWRlIFwi
JXMuaFwiIiAlIG5hbWUsCiAgICAgICAgIF0pCiAKLSAgICBkZWYgZ2VuZXJhdGVfZW1iZWRkZWRf
Y29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oc2VsZiwgZnVuY3Rpb24pOgotICAgICAg
ICB0ZXh0ID0gZnVuY3Rpb24uZnVuY3Rpb25fc291cmNlCisgICAgZGVmIGdlbmVyYXRlX2VtYmVk
ZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9yX2Z1bmN0aW9uKHNlbGYsIGZ1bmN0aW9uLCBlbmFi
bGVfYXNzZXJ0aW9ucyk6CisgICAgICAgIHRleHQgPSBmdW5jdGlvbi5zb3VyY2UoZW5hYmxlX2Fz
c2VydGlvbnMpCiAgICAgICAgICMgV3JhcCBpdCBpbiBwYXJlbnMgdG8gYXZvaWQgYWRkaW5nIHRv
IGdsb2JhbCBzY29wZS4KICAgICAgICAgdGV4dCA9ICIoZnVuY3Rpb24gIiArIHRleHRbdGV4dC5p
bmRleCgiKCIpOl0gKyAiKSIKICAgICAgICAgZW1iZWRkZWRTb3VyY2VMZW5ndGggPSBsZW4odGV4
dCkgKyAxICAjIEZvciBleHRyYSBcbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKaW5kZXggZjFhMzAwZjI3YTlm
MjFiMjk4Nzg4ZjMxMWY5MWQ5YTM0YjkxOWZmNS4uNzAxNTczZmU2NzkyNzJkOWYxOTE2N2IxN2Zl
NzhkMzliNWU1ZWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKQEAgLTQ0LDYgKzQ0LDggQEAgZnVuY3Rp
b25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3
K1xzKlwoLio/XCkiLCByZS4KIGZ1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpm
dW5jdGlvbnxjb25zdHJ1Y3RvcilccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuUykK
IGZ1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cCA9IHJlLmNvbXBpbGUociJeY29uc3RydWN0b3Ii
LCByZS5NVUxUSUxJTkUgfCByZS5TKQogZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21w
aWxlKHIiXig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyg/Olx3KylccypcKCgoPzpccypcdysp
P1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorYXNzZXJ0
UmVnRXhwID0gcmUuY29tcGlsZShyIl4oXHMqKUFTU0VSVFwoXCIoW15cIl0rKVwiXCk7XG4iLCBy
ZS5NVUxUSUxJTkUgfCByZS5TKQorCiAKIG11bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21w
aWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5TKQogc2luZ2xlTGluZUNvbW1l
bnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykK
QEAgLTkyLDcgKzk0LDcgQEAgY2xhc3MgQnVpbHRpbk9iamVjdDoKIGNsYXNzIEJ1aWx0aW5GdW5j
dGlvbjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fc291
cmNlLCBpc19jb25zdHJ1Y3RvciwgcGFyYW1ldGVycyk6CiAgICAgICAgIHNlbGYuZnVuY3Rpb25f
bmFtZSA9IGZ1bmN0aW9uX25hbWUKLSAgICAgICAgc2VsZi5mdW5jdGlvbl9zb3VyY2UgPSBmdW5j
dGlvbl9zb3VyY2UKKyAgICAgICAgc2VsZi5fZnVuY3Rpb25fc291cmNlID0gZnVuY3Rpb25fc291
cmNlCiAgICAgICAgIHNlbGYuaXNfY29uc3RydWN0b3IgPSBpc19jb25zdHJ1Y3RvcgogICAgICAg
ICBzZWxmLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzCiAgICAgICAgIHNlbGYub2JqZWN0ID0gTm9u
ZSAgIyBTZXQgYnkgdGhlIG93bmluZyBCdWlsdGluT2JqZWN0CkBAIC0xMTUsNiArMTE3LDExIEBA
IGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKIAogICAgICAgICByZXR1cm4gaW50ZXJmYWNlCiAKKyAg
ICBkZWYgc291cmNlKHNlbGYsIGVuYWJsZV9hc3NlcnRpb25zKToKKyAgICAgICAgaWYgKG5vdCBl
bmFibGVfYXNzZXJ0aW9ucyk6CisgICAgICAgICAgICByZXR1cm4gYXNzZXJ0UmVnRXhwLnN1Yigi
Iiwgc2VsZi5fZnVuY3Rpb25fc291cmNlKQorICAgICAgICByZXR1cm4gYXNzZXJ0UmVnRXhwLnN1
YihyJ1wxaWYgKEBhc3NlcnQpIEBhc3NlcnQoXDIsICInICsgc2VsZi5mdW5jdGlvbl9uYW1lICsg
ciciLCAiXDIiKTtcbicsIHNlbGYuX2Z1bmN0aW9uX3NvdXJjZSkKKwogCiBjbGFzcyBCdWlsdGlu
c0NvbGxlY3Rpb246CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZyYW1ld29ya19uYW1lKToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkKaW5kZXggNTU0YTcyY2NjMDUyMzJjYTM2N2UzODk0NWFiNjIwMWY0NTIzZTA0YS4uNTA2
NmUyMjM5MjUwZGQyMTUwNWYyMjY1NTVhOWQwODY5ZWU2NjY3NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKQEAgLTQ2
LDcgKzQ2LDggQEAgZGVmIGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyhidWls
dGluc19maWxlcz1bXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uY2F0ZW5hdGVfb3V0cHV0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21iaW5lZF9vdXRwdXQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZyYW1ld29ya19uYW1lPSIiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3JjZV9vdXRwdXQ9RmFsc2UpOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZV9vdXRwdXQ9RmFsc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9hc3NlcnRpb25zPUZhbHNl
KToKIAogICAgIGdlbmVyYXRvcnMgPSBbXQogCkBAIC02MCwxOSArNjEsMTkgQEAgZGVmIGdlbmVy
YXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyhidWlsdGluc19maWxlcz1bXSwKICAgICAg
ICAgICAgICMgSWYgdGhpcyBpcyBhIHRlc3QgZmlsZSwgdGhlbiByZXdyaXRlIHRoZSBmaWxlbmFt
ZSB0byByZW1vdmUgdGhlCiAgICAgICAgICAgICAjIHRlc3QgcnVubmluZyBvcHRpb25zIGVuY29k
ZWQgaW50byB0aGUgZmlsZW5hbWUuCiAgICAgICAgICAgICBpZiBmaWxlX25hbWUuc3RhcnRzd2l0
aChmcmFtZXdvcmtfbmFtZSk6Ci0gICAgICAgICAgICAgICAgKF8sIG9iamVjdF9uYW1lLCBfKSA9
IGZpbGVfbmFtZS5zcGxpdCgnLScpCisgICAgICAgICAgICAgICAgKF8sIG9iamVjdF9uYW1lKSA9
IGZpbGVfbmFtZS5zcGxpdCgnLScpWzoyXQogICAgICAgICAgICAgICAgIGZpbGVfbmFtZSA9IG9i
amVjdF9uYW1lICsgJy5qcycKICAgICAgICAgICAgIG1vZGVsLnBhcnNlX2J1aWx0aW5zX2ZpbGUo
ZmlsZV9uYW1lLCBmaWxlX3RleHQpCiAKICAgICBpZiBjb21iaW5lZF9vdXRwdXQ6CiAgICAgICAg
IGxvZy5kZWJ1ZygiVXNpbmcgZ2VuZXJhdG9yIHN0eWxlOiBjb21iaW5lZCBmaWxlcyBmb3IgYWxs
IGJ1aWx0aW5zLiIpCiAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zQ29tYmluZWRI
ZWFkZXJHZW5lcmF0b3IobW9kZWwpKQotICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGlu
c0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IobW9kZWwpKQorICAgICAgICBnZW5lcmF0
b3JzLmFwcGVuZChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IobW9kZWws
IGVuYWJsZV9hc3NlcnRpb25zKSkKICAgICBlbHNlOgogICAgICAgICBsb2cuZGVidWcoIlVzaW5n
IGdlbmVyYXRvciBzdHlsZTogc2luZ2xlIGZpbGVzIGZvciBlYWNoIGJ1aWx0aW4uIikKICAgICAg
ICAgZm9yIG9iamVjdCBpbiBtb2RlbC5vYmplY3RzOgogICAgICAgICAgICAgZ2VuZXJhdG9ycy5h
cHBlbmQoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKLSAg
ICAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5k
KEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihtb2RlbCwgb2JqZWN0LCBl
bmFibGVfYXNzZXJ0aW9ucykpCiAKICAgICBsb2cuZGVidWcoIiIpCiAgICAgbG9nLmRlYnVnKCJH
ZW5lcmF0aW5nIGJpbmRpbmdzIGZvciBidWlsdGlucy4iKQpAQCAtMTE2LDYgKzExNyw3IEBAIGlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItLWNv
bWJpbmVkIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUHJvZHVjZSBvbmUgLmgvLmNwcCBm
aWxlIGluc3RlYWQgb2YgcHJvZHVjaW5nIG9uZSBwZXIgYnVpbHRpbiBvYmplY3QuIikKICAgICBj
bGlfcGFyc2VyLmFkZF9vcHRpb24oIi12IiwgIi0tZGVidWciLCBhY3Rpb249InN0b3JlX3RydWUi
LCBoZWxwPSJMb2cgZXh0cmEgb3V0cHV0IGZvciBkZWJ1Z2dpbmcgdGhlIGdlbmVyYXRvciBpdHNl
bGYuIikKICAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi10IiwgIi0tdGVzdCIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGhlbHA9IkVuYWJsZSB0ZXN0IG1vZGUuIikKKyAgICBjbGlfcGFyc2VyLmFk
ZF9vcHRpb24oIi0tZW5hYmxlLWFzc2VydGlvbnMiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxw
PSJHZW5lcmF0ZSBhc3NlcnRpb25zIGluIGNhc2Ugb2YgQVNTRVJULiBEZWZhdWx0IGlzIHN0cmlw
cGluZyBBU1NFUlQuIikKIAogICAgIGFyZ19vcHRpb25zLCBhcmdfdmFsdWVzID0gY2xpX3BhcnNl
ci5wYXJzZV9hcmdzKCkKICAgICBpZiBsZW4oYXJnX3ZhbHVlcykgaXMgMCBhbmQgbm90IGFyZ19v
cHRpb25zLmlucHV0X2RpcmVjdG9yeToKQEAgLTE0MCw2ICsxNDIsNyBAQCBpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgogICAgICAgICAnY29tYmluZWRfb3V0cHV0JzogYXJnX29wdGlvbnMuY29t
YmluZWQsCiAgICAgICAgICdmb3JjZV9vdXRwdXQnOiBhcmdfb3B0aW9ucy5mb3JjZSwKICAgICAg
ICAgJ2NvbmNhdGVuYXRlX291dHB1dCc6IGFyZ19vcHRpb25zLnRlc3QsCisgICAgICAgICdlbmFi
bGVfYXNzZXJ0aW9ucyc6IGFyZ19vcHRpb25zLmVuYWJsZV9hc3NlcnRpb25zLAogICAgIH0KIAog
ICAgIGxvZy5kZWJ1ZygiR2VuZXJhdGluZyBjb2RlIGZvciBidWlsdGlucy4iKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLURlYnVnLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9t
aXNlLVNlcGFyYXRlLURlYnVnLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjNzExODg2YWY1ZTNhZDA5NGFiMmFh
MjAxZmFhYmY4MjMyY2JlZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2Ut
U2VwYXJhdGUtRGVidWcuanMKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBDYW5vbiBJTkMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBDYW5vbiBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQ2Fub24g
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK2Z1bmN0aW9uIGRvU29tZXRoaW5nKGFyZykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICBBU1NFUlQoIiEhdGhpcyIpOworICAgIEFTU0VSVCgiYXJnLmlzUmVhbCgpIik7CisgICAgQVNT
RVJUKCJ0aGlzICYmIGEgPiBiIik7CisgICAgQVNTRVJUKCJjID09ICd0ZXN0JyIpOworICAgIHJl
dHVybiB0aGlzLkBkb1NvbWV0aGluZ1JlYWwoYXJnKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4uUHJvbWlzZS1TZXBhcmF0ZS1SZWxlYXNlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFy
YXRlLVJlbGVhc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM3MTE4ODZhZjVlM2FkMDk0YWIyYWEyMDFmYWFi
ZjgyMzJjYmVlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0
ZS1SZWxlYXNlLmpzCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
Q2Fub24gSU5DLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
Q2Fub24gSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIENhbm9uIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitm
dW5jdGlvbiBkb1NvbWV0aGluZyhhcmcpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgQVNT
RVJUKCIhIXRoaXMiKTsKKyAgICBBU1NFUlQoImFyZy5pc1JlYWwoKSIpOworICAgIEFTU0VSVCgi
dGhpcyAmJiBhID4gYiIpOworICAgIEFTU0VSVCgiYyA9PSAndGVzdCciKTsKKyAgICByZXR1cm4g
dGhpcy5AZG9Tb21ldGhpbmdSZWFsKGFyZyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLlByb21pc2UtU2VwYXJhdGUtRGVidWcuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVp
bHRpbi5Qcm9taXNlLVNlcGFyYXRlLURlYnVnLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmM1OTdj
YzUxZDU5NTk0YTdjMmY5YTFlYmNlOWM3ZmMwM2RhMDU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLURlYnVnLmpzLXJlc3VsdApAQCAtMCww
ICsxLDEzNyBAQAorIyMjIEJlZ2luIEZpbGU6IEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnMuaAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJTkMuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
SmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYg
QnVpbHRpblByb21pc2VCdWlsdGluc19oCisjZGVmaW5lIEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnNf
aAorCisKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisK
K25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluLlByb21pc2UgKi8KK2V4dGVybiBjb25zdCBj
aGFyKiBzX2J1aWx0aW5Qcm9taXNlRG9Tb21ldGhpbmdDb2RlOworZXh0ZXJuIGNvbnN0IGludCBz
X2J1aWx0aW5Qcm9taXNlRG9Tb21ldGhpbmdDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlRG9Tb21ldGhpbmdDb2RlQ29uc3RydWN0
QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX1BST01JU0VfQlVJTFRJTl9E
QVRBKG1hY3JvKSBcCisgICAgbWFjcm8oZG9Tb21ldGhpbmcsIGJ1aWx0aW5Qcm9taXNlRG9Tb21l
dGhpbmcsIDEpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOX1BST01JU0VfRE9TT01F
VEhJTkcgMQorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJPTUlTRV9CVUlMVElOX0NP
REUobWFjcm8pIFwKKyAgICBtYWNybyhidWlsdGluUHJvbWlzZURvU29tZXRoaW5nQ29kZSwgZG9T
b21ldGhpbmcsIHNfYnVpbHRpblByb21pc2VEb1NvbWV0aGluZ0NvZGVMZW5ndGgpIFwKKworI2Rl
ZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1h
Y3JvKSBcCisgICAgbWFjcm8oZG9Tb21ldGhpbmcpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAg
ICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7
CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4uUFJPTUlTRV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZp
bmUgSlNDX0JVSUxUSU5fQlVJTFRJTi5QUk9NSVNFX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmlu
ZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBCdWlsdGluUHJvbWlzZUJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxl
OiBCdWlsdGluUHJvbWlzZUJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEJ1aWx0aW5Qcm9t
aXNlQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIElOQy4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5Qcm9taXNl
QnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUg
IkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1
aWx0aW5Qcm9taXNlRG9Tb21ldGhpbmdDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VE
b1NvbWV0aGluZ0NvZGVMZW5ndGggPSAzNTE7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNl
RG9Tb21ldGhpbmdDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChhcmcpXG4iIFwKKyAgICAie1xuIiBc
CisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYg
KEBhc3NlcnQpIEBhc3NlcnQoISF0aGlzLCBcImRvU29tZXRoaW5nXCIsIFwiISF0aGlzXCIpO1xu
IiBcCisgICAgIiAgICBpZiAoQGFzc2VydCkgQGFzc2VydChhcmcuaXNSZWFsKCksIFwiZG9Tb21l
dGhpbmdcIiwgXCJhcmcuaXNSZWFsKClcIik7XG4iIFwKKyAgICAiICAgIGlmIChAYXNzZXJ0KSBA
YXNzZXJ0KHRoaXMgJiYgYSA+IGIsIFwiZG9Tb21ldGhpbmdcIiwgXCJ0aGlzICYmIGEgPiBiXCIp
O1xuIiBcCisgICAgIiAgICBpZiAoQGFzc2VydCkgQGFzc2VydChjID09ICd0ZXN0JywgXCJkb1Nv
bWV0aGluZ1wiLCBcImMgPT0gJ3Rlc3QnXCIpO1xuIiBcCisgICAgIiAgICByZXR1cm4gdGhpcy5A
ZG9Tb21ldGhpbmdSZWFsKGFyZyk7XG4iIFwKKyAgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNv
ZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNIX0JVSUxUSU4uUFJPTUlTRV9CVUlMVElO
X0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dF
TkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMjIEVuZCBGaWxlOiBCdWlsdGluUHJv
bWlzZUJ1aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNl
LVNlcGFyYXRlLVJlbGVhc2UuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNl
LVNlcGFyYXRlLVJlbGVhc2UuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzOWRjYjE5ZWVhNWMwNWQ5
ZjllMGQyMTBmNzk2ZTRiYmU1MGM2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLlByb21pc2UtU2VwYXJhdGUtUmVsZWFzZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwxMzIg
QEAKKyMjIyBCZWdpbiBGaWxlOiBCdWlsdGluUHJvbWlzZUJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTUgQ2Fub24gSU5DLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3Jp
cHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEJ1aWx0aW5Q
cm9taXNlQnVpbHRpbnNfaAorI2RlZmluZSBCdWlsdGluUHJvbWlzZUJ1aWx0aW5zX2gKKworCisK
K25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfQorCituYW1lc3Bh
Y2UgSlNDIHsKKworLyogQnVpbHRpbi5Qcm9taXNlICovCitleHRlcm4gY29uc3QgY2hhciogc19i
dWlsdGluUHJvbWlzZURvU29tZXRoaW5nQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGlu
UHJvbWlzZURvU29tZXRoaW5nQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc19idWlsdGluUHJvbWlzZURvU29tZXRoaW5nQ29kZUNvbnN0cnVjdEFiaWxpdHk7
CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9QUk9NSVNFX0JVSUxUSU5fREFUQShtYWNy
bykgXAorICAgIG1hY3JvKGRvU29tZXRoaW5nLCBidWlsdGluUHJvbWlzZURvU29tZXRoaW5nLCAx
KSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTl9QUk9NSVNFX0RPU09NRVRISU5HIDEK
KworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKG1hY3Jv
KSBcCisgICAgbWFjcm8oYnVpbHRpblByb21pc2VEb1NvbWV0aGluZ0NvZGUsIGRvU29tZXRoaW5n
LCBzX2J1aWx0aW5Qcm9taXNlRG9Tb21ldGhpbmdDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlND
X0ZPUkVBQ0hfQlVJTFRJTi5QUk9NSVNFX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAor
ICAgIG1hY3JvKGRvU29tZXRoaW5nKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0Nf
Rk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19C
VUlMVElOX0JVSUxUSU4uUFJPTUlTRV9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIEpTQ19C
VUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gQnVpbHRpblByb21pc2VCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogQnVpbHRp
blByb21pc2VCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBCdWlsdGluUHJvbWlzZUJ1aWx0
aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJTkMuCisgKiAKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAK
KyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWlsdGluUHJvbWlzZUJ1aWx0aW5z
LmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJv
bWlzZURvU29tZXRoaW5nQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRG9Tb21ldGhp
bmdDb2RlTGVuZ3RoID0gNzg7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlRG9Tb21ldGhp
bmdDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChhcmcpXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAg
ICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICIgICAgcmV0dXJuIHRoaXMuQGRvU29tZXRoaW5n
UmVhbChhcmcpO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkg
XAore1wKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291
cmNlKCkpOyB9CitKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKwor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogQnVpbHRpblByb21pc2VCdWlsdGlu
cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCmluZGV4IDk1NzJiYzFmNGJkZjJhZDYyNzQ1YTI0NzAyNTExYTY0Yzc5ZjkwNWQuLjE0
MzE2Yjg1NWZmODBiZjgyMDRjODkyNDczZDIzZWQwYWIwMDY5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjc1LDYgKzI3
NSw3IEBACiAgICAgbWFjcm8oYXJyYXlJdGVyYXRpb25LaW5kS2V5KSBcCiAgICAgbWFjcm8oYXJy
YXlJdGVyYXRpb25LaW5kVmFsdWUpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktpbmRLZXlW
YWx1ZSkgXAorICAgIG1hY3JvKGFzc2VydCkgXAogICAgIG1hY3JvKGNoYXJDb2RlQXQpIFwKICAg
ICBtYWNybyhpdGVyYXRlZFN0cmluZykgXAogICAgIG1hY3JvKHN0cmluZ0l0ZXJhdG9yTmV4dElu
ZGV4KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggY2JhNWFjMWFhMDU4YWMzOWVlNmU5NjI1MjVhNDdjYzg2OGIxMjg5MS4uYjgz
NzM3YTk3ZjMzMmMxOWIzODJjZGMzYzIyYmU3YWI1OWQ0ZmZjZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDk2LDYgKzQ5Niw5
IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNO
YW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2FkZXIsIG1fbW9kdWxlTG9hZGVyLmdldCgp
LCBEb250RW51bSk7CiAKICAgICBKU0Z1bmN0aW9uKiBidWlsdGluTG9nID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIuc3Ry
aW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgSlNGdW5j
dGlvbiogYnVpbHRpbkFzc2VydCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0u
cHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLnN0cmluZygpLCBnbG9iYWxGdW5jQXNzZXJ0
KTsKKyNlbmRpZgogCiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNBYnMgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jQWJzLCBBYnNJbnRy
aW5zaWMpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jRmxvb3IgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50
cmluc2ljKTsKQEAgLTUyMSw2ICs1MjQsOSBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dHlwZWRBcnJheUxlbmd0
aFByaXZhdGVOYW1lLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlMZW5ndGgsIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPnR5cGVkQXJyYXlTb3J0UHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jVHlwZWRBcnJh
eVNvcnQsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkJ1aWx0aW5Mb2dQcml2YXRlTmFtZSwgYnVp
bHRpbkxvZywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorI2lmbmRlZiBOREVC
VUcKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmFzc2VydFBy
aXZhdGVOYW1lLCBidWlsdGluQXNzZXJ0LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCisjZW5kaWYKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PkFycmF5UHJpdmF0ZU5hbWUsIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPk51bWJlclByaXZhdGVOYW1lLCBudW1iZXJDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+U3RyaW5nUHJpdmF0ZU5hbWUsIHN0cmluZ0NvbnN0cnVjdG9yLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggMmJmMTNiYjkw
NWQ1Y2E1NDA3ZjM0Y2UwMTBmMzk0MGI5ZGRmOTVkNy4uZjAxZTE4YjY2MTQwZGY1ZWJlMGFkYzVm
OTQ2YWMwYmFjYjVhNzliYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtODkxLDQgKzg5MSwxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGluTG9nKEV4ZWNT
dGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCisjaWZuZGVmIE5ERUJVRworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jQXNzZXJ0KEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShz
dGF0ZS0+YXJndW1lbnQoMCkuYXNCb29sZWFuKCksICJcIiVzXCIgaXMgZXZhbHVhdGVkIGFzIGZh
bHNlIGluIGZ1bmN0aW9uIFwiJXNcIiIsIHN0YXRlLT5hcmd1bWVudCgyKS50b1dURlN0cmluZyhz
dGF0ZSkudXRmOCgpLmRhdGEoKSwgc3RhdGUtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKHN0YXRl
KS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXgg
YjkyOWY1MTQzMmEzZjM5OGYzOTdiM2M4OTY3MTJiMWNkZjhjODI4OS4uYTcwNzdkYjQyMzAzYzI2
MTY4Y2Y2NjgzMTJlNDM0NzJlNTdkYWM1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCkBAIC01Miw2ICs1Miw5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJv
dG9HZXR0ZXIoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNQcm90b1NldHRlcihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2coRXhlY1N0YXRlKik7CisjaWZuZGVmIE5ERUJVRworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQXNzZXJ0KEV4ZWNTdGF0ZSopOwor
I2VuZGlmCiAKIGJvb2wgY2hlY2tQcm90b1NldHRlckFjY2Vzc0FsbG93ZWQoRXhlY1N0YXRlKiwg
SlNPYmplY3QqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2Mzc2ZjdiYzI5OTQwNWYwYWY2
Zjc4ODgyNDY0MDliYTk0YThiZjkwLi41Y2ZhZGVlNTEzMjhiYzI2ODgwZDljNTkzNjA4OGI3OWJk
OGRkMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzYxNSw2ICszNjE1LDExIEBAIHNldChC
VUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwogICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2xhenl3cml0ZXIucHkKICkKIAorc2V0KEVOQUJMRV9KU0JVSUxUSU5fQVNTRVJUSU9OUyAi
IikKK2lmIChDTUFLRV9CVUlMRF9UWVBFIFNUUkVRVUFMICJEZWJ1ZyIpCisgICAgc2V0KEVOQUJM
RV9KU0JVSUxUSU5fQVNTRVJUSU9OUyAiLS1lbmFibGUtYXNzZXJ0aW9ucyIpCitlbmRpZiAoKQor
CiBmb3JlYWNoIChfYnVpbHRpblNvdXJjZSAke1dlYkNvcmVfQlVJTFRJTlNfU09VUkNFU30pCiAg
ICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfb2JqZWN0TmFtZSAke19idWlsdGluU291cmNlfSBO
QU1FX1dFKQogICAgIGFkZF9jdXN0b21fY29tbWFuZCgKQEAgLTM2MjIsNyArMzYyNyw3IEBAIGZv
cmVhY2ggKF9idWlsdGluU291cmNlICR7V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTfSkKICAgICAg
ICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1
aWx0aW5zLmgKICAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7X2J1aWx0aW5Tb3VyY2V9CiAgICAg
ICAgIERFUEVORFMgJHtCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUU30KLSAgICAgICAgQ09NTUFO
RCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weSAtLWZyYW1ld29yayBXZWJDb3JlIC0tb3V0cHV0LWRpcmVjdG9y
eSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0gJHtfYnVpbHRpblNvdXJjZX0KKyAgICAg
ICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSAtLWZyYW1ld29yayBXZWJDb3JlIC0tb3V0cHV0
LWRpcmVjdG9yeSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0gJHtfYnVpbHRpblNvdXJj
ZX0gJHtFTkFCTEVfSlNCVUlMVElOX0FTU0VSVElPTlN9CiAgICAgICAgIFZFUkJBVElNKQogICAg
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlucy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKaW5k
ZXggZjBmNzM4YjllZTQ1NWFlZGQ0NzI3NTQ0NjUzZTQ5OGY1NGYzYTRmMy4uMjMwMDBmODkxMmE5
OGMzMzAzOThlYTc3M2U4ODc3YTM2YTA0YTQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwpAQCAtNTEs
NyArNTEsOCBAQCBmdW5jdGlvbiBwcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVy
KHN0cmVhbSkKICAgICAgICAgdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkgPSB7IEBwcm9t
aXNlOiBAUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCkgfTsKICAgICAgICAgcmV0dXJuIHRoaXM7
CiAgICAgfQotICAgIC8vIEZJWE1FOiBBU1NFUlQoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVhbUVy
cm9yZWQpOworCisgICAgQVNTRVJUKCJzdHJlYW0uQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCIp
OwogICAgIHRoaXMuQG93bmVyUmVhZGFibGVTdHJlYW0gPSBudWxsOwogICAgIHRoaXMuQHN0b3Jl
ZEVycm9yID0gc3RyZWFtLkBzdG9yZWRFcnJvcjsKICAgICB0aGlzLkBjbG9zZWRQcm9taXNlQ2Fw
YWJpbGl0eSA9IHsgQHByb21pc2U6IEBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9y
KSB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDNlNjJmNWVmZTAwYzNlYjk3NWI5ZTRmMWM4OTk3ZWJlZDZlNmQzMzkuLmNlMGFkM2Q4YWU4OTAx
M2YzMzM0MDAwODI5NzJiMzA1NDEzMjMxNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0xMS0wNCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIEpTIEJ1aWx0
LWlucyBmdW5jdGlvbnMgc2hvdWxkIGJlIGFibGUgdG8gYXNzZXJ0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAzMzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhbiBvcHRpb24gc28gdGhhdCBE
ZWJ1Zy9SZWxlYXNlIG1vZGUgY2FuIGJlIHNldCBhY2NvcmRpbmcgdGhlIHRlc3QgZmlsZW5hbWUu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFpbi5weToKKyAgICAgICAg
KEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMuZ2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyk6CisgICAg
ICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzLnJ1bl90ZXN0cyk6CisKIDIwMTUtMTEtMDUgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQG5hdmVyY29ycC5jb20+CiAKICAgICAgICAgW0VGTF0gQWRk
IHRyeV9jbG9zZSBBUEkgdG8gaGFuZGxlIGJlZm9yZXVubG9hZCBldmVudApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvZGVnZW4vbWFpbi5weQppbmRleCAwMDM5NmRiOWEzOGJlMGYwN2JlMTg2M2I4OGFl
ZDQxZWRmOTdkOTY5Li40MzgwNjY3OTY4Y2Q3NzMwYTFiNTlmODU4NjZkMTgxZDE4YWMwMWMzIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFpbi5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFpbi5weQpAQCAtMzgsNyArMzgsNyBAQCBj
bGFzcyBCdWlsdGluc0dlbmVyYXRvclRlc3RzOgogICAgICAgICBzZWxmLnJlc2V0X3Jlc3VsdHMg
PSByZXNldF9yZXN1bHRzCiAgICAgICAgIHNlbGYuZXhlY3V0aXZlID0gZXhlY3V0aXZlCiAKLSAg
ICBkZWYgZ2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyhzZWxmLCBidWlsdGluc19maWxlLCBvdXRw
dXRfZGlyZWN0b3J5LCBmcmFtZXdvcmtfbmFtZT0iIiwgY29tYmluZWRfb3V0cHV0cz1GYWxzZSk6
CisgICAgZGVmIGdlbmVyYXRlX2Zyb21fanNfYnVpbHRpbnMoc2VsZiwgYnVpbHRpbnNfZmlsZSwg
b3V0cHV0X2RpcmVjdG9yeSwgZnJhbWV3b3JrX25hbWU9IiIsIGNvbWJpbmVkX291dHB1dHM9RmFs
c2UsIGJ1aWxkX21vZGU9IlJlbGVhc2UiKToKICAgICAgICAgY21kID0gWydweXRob24nLAogICAg
ICAgICAgICAgICAgJ0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMu
cHknLAogICAgICAgICAgICAgICAgJy0tb3V0cHV0LWRpcmVjdG9yeScsIG91dHB1dF9kaXJlY3Rv
cnksCkBAIC00OSw2ICs0OSw5IEBAIGNsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHM6CiAgICAg
ICAgIGlmIGNvbWJpbmVkX291dHB1dHM6CiAgICAgICAgICAgICBjbWQuYXBwZW5kKCctLWNvbWJp
bmVkJykKIAorICAgICAgICBpZiBidWlsZF9tb2RlID09ICJEZWJ1ZyI6CisgICAgICAgICAgICBj
bWQuYXBwZW5kKCctLWVuYWJsZS1hc3NlcnRpb25zJykKKwogICAgICAgICBjbWQuYXBwZW5kKGJ1
aWx0aW5zX2ZpbGUpCiAKICAgICAgICAgZXhpdF9jb2RlID0gMApAQCAtMTA0LDEzICsxMDcsMTUg
QEAgY2xhc3MgQnVpbHRpbnNHZW5lcmF0b3JUZXN0czoKICAgICAgICAgICAgIGlmIG5vdCBzZWxm
LnJlc2V0X3Jlc3VsdHM6CiAgICAgICAgICAgICAgICAgd29ya19kaXJlY3RvcnkgPSB0ZW1wZmls
ZS5ta2R0ZW1wKCkKIAotICAgICAgICAgICAgKGZyYW1ld29ya19uYW1lLCB0ZXN0X2Nhc2UsIG91
dHB1dF9tb2RlKSA9IHRlc3RfbmFtZS5zcGxpdCgnLScpCisgICAgICAgICAgICBwYXJhbWV0ZXJz
ID0gdGVzdF9uYW1lLnNwbGl0KCctJykKKyAgICAgICAgICAgIChmcmFtZXdvcmtfbmFtZSwgdGVz
dF9jYXNlLCBvdXRwdXRfbW9kZSkgPSBwYXJhbWV0ZXJzWzozXQogICAgICAgICAgICAgaWYgbm90
IGZyYW1ld29ya19uYW1lIG9yIG5vdCBvdXRwdXRfbW9kZSBvciBub3QgdGVzdF9jYXNlOgogICAg
ICAgICAgICAgICAgIHByaW50ICJJbnZhbGlkIHRlc3QgY2FzZSBuYW1lOiBzaG91bGQgYmUgRnJh
bWV3b3JrLVRlc3RDYXNlTmFtZS1PdXRwdXRNb2RlLmpzIgogICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisgICAgICAgICAgICBidWlsZF9tb2RlID0gcGFyYW1ldGVyc1szXSBpZiBsZW4ocGFyYW1l
dGVycykgPiAzIGVsc2UgIlJlbGVhc2UiCiAKICAgICAgICAgICAgIGNvbWJpbmVkX291dHB1dHMg
PSBvdXRwdXRfbW9kZSA9PSAiQ29tYmluZWQiCi0gICAgICAgICAgICBpZiBzZWxmLmdlbmVyYXRl
X2Zyb21fanNfYnVpbHRpbnMob3MucGF0aC5qb2luKGlucHV0X2RpcmVjdG9yeSwgaW5wdXRfZmls
ZSksIHdvcmtfZGlyZWN0b3J5LCBmcmFtZXdvcmtfbmFtZT1mcmFtZXdvcmtfbmFtZSwgY29tYmlu
ZWRfb3V0cHV0cz1jb21iaW5lZF9vdXRwdXRzKToKKyAgICAgICAgICAgIGlmIHNlbGYuZ2VuZXJh
dGVfZnJvbV9qc19idWlsdGlucyhvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0b3J5LCBpbnB1dF9m
aWxlKSwgd29ya19kaXJlY3RvcnksIGZyYW1ld29ya19uYW1lPWZyYW1ld29ya19uYW1lLCBjb21i
aW5lZF9vdXRwdXRzPWNvbWJpbmVkX291dHB1dHMsIGJ1aWxkX21vZGU9YnVpbGRfbW9kZSk6CiAg
ICAgICAgICAgICAgICAgcGFzc2VkID0gRmFsc2UKIAogICAgICAgICAgICAgaWYgc2VsZi5yZXNl
dF9yZXN1bHRzOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264941</attachid>
            <date>2015-11-06 09:51:01 -0800</date>
            <delta_ts>2015-11-09 02:21:13 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-150333-20151106185000.patch</filename>
            <type>text/plain</type>
            <size>14009</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjIxZjdhZjhmMzM3YTI4ODdkZmU3OTYyOWNkMWNlNmY3MGI4YzZlLi5mZDRlMmRkMDNhMzY1NWU2
MTkzOWJjNWQ0NTlkZGVjYTM2MzE1YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNS0xMS0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIEpTIEJ1aWx0LWlucyBmdW5jdGlvbnMgc2hvdWxkIGJlIGFi
bGUgdG8gYXNzZXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTAzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX2Fzc2VydCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJ
VC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2Fzc2VydCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfYXNzZXJ0KToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAo
SlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKwogMjAxNS0xMS0wNSAgTmlrb3MgQW5kcm9uaWtvcyAgPG5pa29zLmFuZHJvbmlrb3Mtd2Vi
a2l0QGNpc3JhLmNhbm9uLmNvbS5hdT4KIAogICAgICAgICBBZGQgcnVudGltZSBhbmQgY29tcGls
ZSB0aW1lIGZsYWdzIGZvciBlbmFibGluZyBXZWIgQW5pbWF0aW9ucyBBUEkgYW5kIG1vZGVsLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDQ0YTY3ODIwZjJjNTczZmQ4YjRlNGJkYWMzOTg5ZTE5NGVkNWNkZTUuLmEw
YWY5MDM0MGRhODNkOGEyZTgwMDBmYTcwMDdlMjc3MTY2NzIzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNS0xMS0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIEpTIEJ1aWx0LWlucyBmdW5jdGlvbnMgc2hvdWxkIGJlIGFi
bGUgdG8gYXNzZXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTAzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qczoKKyAgICAg
ICAgKHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorCiAyMDE1LTExLTA1
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1N0cmVhbWVyXSBVc2UgUnVuTG9vcDo6VGltZXIgaW5zdGVhZCBvZiBHTWFpbkxvb3BTb3VyY2Ug
aW4gdmlkZW8gc2luawpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCmluZGV4IGNlODJlZGQ4NGNiMTdhYzRkZGZjMzhhYTBkMTg2OTM1MjgwOWFh
OWQuLmJkMjljNTVhMzczNTRkZTNlYmFhMjk1MzhhYjE3MWMyMDlmMTMzMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEyNyw3
ICsxMjcsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9zdHJ1Y3R1
cmVfcG5hbWUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Vu
dW1lcmF0b3JfZ2VuZXJpY19wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxlbmd0aCIgOiAzIH0sCi0gICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsICJsZW5ndGgiIDogMiB9
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsICJs
ZW5ndGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYXNzZXJ0IiwgImxlbmd0
aCIgOiAzIH0KICAgICAgICAgXQogICAgIH0sCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCAwODNlODZiMGUxY2EzZTA4MjY1
MGY0NjYzNTE3ZWUyNDI1MTRlZmJhLi4zMTUxMWU3YzFkMWY1ZTk3Mzk3Y2QyYjRjZjQ5YmE4YjRj
MzhiNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaApAQCAtNDMsNiArNDMsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgogICAgIGNhc2Ugb3BfbmV3X2FycmF5X2J1ZmZl
cjoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3Bfam5lcV9wdHI6CiAgICAgY2FzZSBvcF9s
b29wX2hpbnQ6CkBAIC0yNTIsNiArMjUzLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAg
ICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNl
IG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9w
X2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgogICAgIGNhc2Ugb3Bfam1wOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1OGNmMDU5NWVmN2U0Nzk2
Zjc1YWQ2ODgyM2Q3NGFmY2UyNjU5Y2MwLi5kMmQxZTFkNzIzMzc1OWQ5OTYzNGFhZTE5MTVjMjcz
YWU3NzdlNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtMTQ5MSw2ICsxNDkxLDEzIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcyAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29r
SUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQor
ICAgICAgICBjYXNlIG9wX2Fzc2VydDogeworICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IG1lc3NhZ2UgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImFzc2VydCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMgJXMiLCBjb25kaXRp
b24gPyAidHJ1ZSIgOiAiZmFsc2UiLCByZWdpc3Rlck5hbWUobWVzc2FnZSkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxs
X2NhbGw6IHsKICAgICAgICAgICAgIGludCBmdW5jdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAicHJvZmlsZV93aWxsX2NhbGwiLCBmdW5jdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDc2MTY1YjJhOWM5OTA2MjYxMTVjOGFlODgxYzg0OTA1Mzg5ZTNlYzguLjBhMmRk
YzZhZDM3MWJjNjA2YTM1MjEzOTUwYzE0ODdhMDE4NzdiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0yMjgzLDYgKzIyODMsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRCeUluZGV4KFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LAogICAgIHJldHVybiB2
YWx1ZTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVn
aXN0ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX2Fzc2Vy
dCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbmRpdGlvbi0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpbmUpOworICAgIHJldHVybiBjb25kaXRpb247Cit9CisK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklE
KiBkc3QpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCmluZGV4IGRjMzFmN2EzMDkyNWZlOWZhODBkYmFmOGY4MWJmYWI3ZjAzOTQzZjcuLjMy
N2U3YWVlYTBmNDY2N2IxNjBhMDMwOTg1Y2Q0NWU1ZjcxMDE2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAg
LTUzNSw2ICs1MzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlJbmRleChSZWdpc3Rl
cklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRBc3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSk7
CisKICAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyQnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgdW5zaWduZWQgcHJvcGVydHlEZXNjcmlwdG9yT3B0aW9u
cywgUmVnaXN0ZXJJRCogZ2V0dGVyKTsKICAgICAgICAgdm9pZCBlbWl0UHV0U2V0dGVyQnlJZChS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgdW5zaWduZWQgcHJv
cGVydHlEZXNjcmlwdG9yT3B0aW9ucywgUmVnaXN0ZXJJRCogc2V0dGVyKTsKICAgICAgICAgdm9p
ZCBlbWl0UHV0R2V0dGVyU2V0dGVyKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBSZWdpc3RlcklEKiBnZXR0ZXIsIFJlZ2lz
dGVySUQqIHNldHRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMjkwYmE0M2MzMzJlOTA3ZmM1YjEzOWRkYWRjMzA2
N2RkMmQzM2RkZC4uNTU1ZmFiZjBkNTYxMTJlZDk3YzExNTFhZDcxZGY4Yzc4NjY0M2ZhOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcApAQCAtNzc2LDYgKzc3NiwxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgIHJl
dHVybiAodGhpcy0+Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBkc3QpOwogfQogCitSZWdpc3RlcklE
KiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2Fzc2VydChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisjaWZuZGVmIE5ERUJVRwor
ICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdEFzc2VydChjb25kaXRpb24uZ2V0KCksIG5vZGUtPmZpcnN0TGluZSgp
KTsKKyAgICByZXR1cm4gZHN0OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZ2VuZXJhdG9yKTsK
KyAgICByZXR1cm4gZHN0OworI2VuZGlmCit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QnlWYWxEaXJlY3QoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5v
ZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
Y2I1NWFkYzI1NzdmMDEyZWUxNjVhMmRiMzM3ODA5MGNiZmY2M2ZjMC4uY2Q2ODZiNzJhZGQ0YjQ4
ZDlhNjM2YzM0ZmYwOWFiZmViZDg0ODVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtMjEyLDYgKzIxMiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzKQogICAgICAgICBERUZJ
TkVfT1Aob3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09Q
KG9wX2NoZWNrX3RkeikKKyAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKICAgICAgICAgREVG
SU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZGl2KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYjcwZDI4YWZk
ZTUxOTNiMjFlNzI2MmI5OTZhNjUxNWU2ZjNjZDk2YS4uZTk2ODI5MmFiNzAyNGE4YzJhZmVhZmZk
MGZlNDU5MmNjODUzNjQ3MCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTIsNiArNDky
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfc2NvcGVk
X2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX291
dF9vZl9iYW5kX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y2hlY2tfdGR6KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKaW5kZXggNjZlYmQ1MTVhMDk3MzE0YWNkMDFlMzAzZTFhZWQxMjRmNTdmZGIy
NS4uZDAyZWM4YWM4OWZhYmMxZWUyOTRmNjJmMDU4MzhhMDQ1OWRkNWQ2YiAxMDA3NTUKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC01MTksNiArNTE5LDEyIEBAIHZvaWQg
SklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsK
IH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNh
bF9lbnZpcm9ubWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKaW5kZXggNGRjNDU3MjIyZjA4NGFhZDdiZTA0YzcxNDhjMTc1Y2Y2YzZmNjBiYS4u
YTBhMGQyMmU2ZjE1ZGUxYTkzZjhjZmZlMTVjOTFmN2UxMzhiYWJmNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtODM0LDYgKzgzNCwxMiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRTdG9yZSh0aHJvd25WYWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfY3JlYXRlX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQor
CiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52
aXJvbm1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCmluZGV4IDRmNGFkOWJkNGUyZDcxYjM2OGI5ZGM0NzAzNDg0ZjY4OWM4
NWVjZWMuLmIwMzRjODNlNTlhZTgyMDdiN2YwOWU4ZTZkNTk4ZDhlYjY1MzI1YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTE1NjcsNiArMTU2NywxMiBAQCBfbGxpbnRfb3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGRp
c3BhdGNoKDQpCiAKIAorX2xsaW50X29wX2Fzc2VydDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfYXNzZXJ0KQorICAgIGRpc3BhdGNoKDMpCisKKwog
X2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCmluZGV4IDk1NzJiYzFmNGJkZjJhZDYyNzQ1YTI0NzAyNTExYTY0Yzc5ZjkwNWQuLjRjZjY1
OTBhOWIwMTYwODg1NjJiZWU4ZDc1NTM1NWQ4N2EzYjMzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjY0LDYgKzI2NCw3
IEBACiAgICAgbWFjcm8odG9TdHJpbmdUYWcpCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9CWVRFQ09E
RV9JTlRSSU5TSUNTX0VBQ0hfTkFNRShtYWNybykgXAorICAgIG1hY3JvKGFzc2VydCkgXAogICAg
IG1hY3JvKHB1dEJ5VmFsRGlyZWN0KSBcCiAgICAgbWFjcm8odG9TdHJpbmcpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDM0
ZjY0OWEwMzQ4ZjkzMzRlMTUyZDA3OTNmNjIwNGM1MTVlNTAyZmIuLjVmYmI4ZjI2NzM0ODI1YjYy
MTRjYTNhMzExNjIwMzQ4NGRiNmJiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNjM3LDYgKzYzNywxNSBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZykKICAgICBFTkQoKTsKIH0K
IAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKK3sKKyAgICBCRUdJTigpOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNWYWx1ZSBj
b25kaXRpb25WYWx1ZSA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGNvbmRpdGlvblZhbHVlLmFzQm9vbGVhbigpLCAiSlMgYXNzZXJ0aW9uIGZhaWxlZCBhdCBsaW5l
ICVkIGluOlxuJXNcbiIsIHBjWzJdLnUub3BlcmFuZCwgY29kZUJsb2NrLT5zb3VyY2VDb2RlRm9y
VG9vbHMoKS5kYXRhKCkpOworICAgIEVORCgpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggNDQ0YmM5
ZmI4OGYzN2NlZWM0Y2Y0ODM2ZDQ5OWVjMjdhNDBmNDhjMC4uYjBiYTllOGRhMWUxMzUwZWNlZWFj
YzgxZDI3YmM4Y2EyYjM5ZGRkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI4OSw2ICsyODksNyBAQCBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25leHRfc3RydWN0dXJlX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXh0X2dlbmVyaWNfZW51bWVyYXRvcl9wbmFtZSk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOworU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IDAwMGMw
YTZkMmVhNTMxNTk0ZmU2MjQ5YWRlYzU5ZWJiOWZlZmI4ZTYuLjQ0MGZkZGEzOTY0MWQ0YWYyZDZj
NDI1MjJhMWY2Yzg1MjZmZGNkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKQEAgLTUxLDcgKzUxLDcg
QEAgZnVuY3Rpb24gcHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlcihzdHJlYW0p
CiAgICAgICAgIHRoaXMuQGNsb3NlZFByb21pc2VDYXBhYmlsaXR5ID0geyBAcHJvbWlzZTogQFBy
b21pc2UuQHJlc29sdmUoKSB9OwogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9Ci0gICAgLy8g
RklYTUU6IEFTU0VSVChzdHJlYW0uQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCk7CisgICAgQGFz
c2VydChzdHJlYW0uQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCk7CiAgICAgdGhpcy5Ab3duZXJS
ZWFkYWJsZVN0cmVhbSA9IG51bGw7CiAgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSBzdHJlYW0uQHN0
b3JlZEVycm9yOwogICAgIHRoaXMuQGNsb3NlZFByb21pc2VDYXBhYmlsaXR5ID0geyBAcHJvbWlz
ZTogQFByb21pc2UuQHJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKSB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265035</attachid>
            <date>2015-11-09 02:21:21 -0800</date>
            <delta_ts>2015-11-09 02:35:59 -0800</delta_ts>
            <desc>build fix</desc>
            <filename>bug-150333-20151109112117.patch</filename>
            <type>text/plain</type>
            <size>14356</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTZjMWQ1YmU5ZjMxMTRiMzZlZmZlMzNmZjlkMjc0NDE1MmJiMmY3Li4wMTQ4ZDJlMjNkN2NiZDA3
YmNlNWFmM2U4N2ZkMjg2MDdmOWRlMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxNS0xMS0wOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIEpTIEJ1aWx0LWlucyBmdW5jdGlvbnMgc2hvdWxkIGJlIGFi
bGUgdG8gYXNzZXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTAzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbnRyb2R1Y2VkIEBhc3NlcnQgdG8gZW5hYmxlIGFzc2VydGluZyBpbiBKUyBidWlsdC1p
bnMuCisgICAgICAgIEFkZGluZyBhIG5ldyBieXRlY29kZSAnYXNzZXJ0JyB0byBpbXBsZW1lbnQg
aXQuCisgICAgICAgIEluIGRlYnVnIGJ1aWxkcywgQGFzc2VydCBnZW5lcmF0ZXMgJ2Fzc2VydCcg
Ynl0ZWNvZGVzLgorICAgICAgICBJbiByZWxlYXNlIGJ1aWxkcywgbm8gYnl0ZSBjb2RlIGlzIHBy
b2R1Y2VkIGZvciBAYXNzZXJ0LgorCisgICAgICAgIEluIGNhc2UgYXNzZXJ0IGlzIGZhbHNlLCB0
aGUgSlMgYnVpbHQtaW4gYW5kIHRoZSBsaW5lIG51bWJlciBhcmUgZHVtcGVkLgorCisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2VydCk6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6IEdlbmVyYXRpbmcgb3BfYXNzZXJ0IGJ5dGVjb2RlIGZvciBAYXNz
ZXJ0IGZvciBEZWJ1ZyBidWlsZHMuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfYXNzZXJ0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfYXNzZXJ0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV9hc3NlcnQpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDogQWRkaW5nIEBhc3NlcnQgaWRlbnRpZmllciBhcyBpbnRyaW5zaWMuCisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVD
TCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKwogMjAxNS0xMS0wOCAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBN
aW5pbWl6ZSBFUzZfQ0xBU1NfU1lOVEFYIGlmZGVmcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ0Y2U4NDRkZTU0
YWJhMGY4YTZhM2EwMzBkOWZmNmU0MTNiZGU2MDguLjM5NDE1Y2Q5MjgzNzEwOTVmY2RkYzNiM2Ex
MTdjNjliNGE0NTYyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0wOCAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIEpT
IEJ1aWx0LWlucyBmdW5jdGlvbnMgc2hvdWxkIGJlIGFibGUgdG8gYXNzZXJ0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAzMzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKHByaXZhdGVJbml0aWFsaXplUmVh
ZGFibGVTdHJlYW1SZWFkZXIpOiBBY3RpdmF0aW5nIGFuIEBhc3NlcnQuCisKIDIwMTUtMTEtMDgg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxd
IEFkZCBVc2VyQWdlbnRFRmwuY3BwfGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBjZTgyZWRkODRjYjE3YWM0ZGRmYzM4YWEwZDE4
NjkzNTI4MDlhYTlkLi5iZDI5YzU1YTM3MzU0ZGUzZWJhYTI5NTM4YWIxNzFjMjA5ZjEzMzEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
CkBAIC0xMjcsNyArMTI3LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VudW1lcmF0
b3Jfc3RydWN0dXJlX3BuYW1lIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3RvX2luZGV4X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAot
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVu
Z3RoIiA6IDIgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0aW9u
X3RoaXMiLCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Fzc2Vy
dCIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDgzZTg2YjBl
MWNhM2UwODI2NTBmNDY2MzUxN2VlMjQyNTE0ZWZiYS4uMzE1MTFlN2MxZDFmNWU5NzM5N2NkMmI0
Y2Y0OWJhOGI0YzM4YjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKQEAgLTQzLDYgKzQzLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKICAgICBjYXNlIG9wX25ld19h
cnJheV9idWZmZXI6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAgY2FzZSBv
cF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX2puZXFfcHRyOgogICAg
IGNhc2Ugb3BfbG9vcF9oaW50OgpAQCAtMjUyLDYgKzI1Myw3IEBAIHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6
CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAgY2FzZSBvcF9hc3NlcnQ6CiAg
ICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKICAgICBjYXNlIG9wX2ptcDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNThjZjA1
OTVlZjdlNDc5NmY3NWFkNjg4MjNkNzRhZmNlMjY1OWNjMC4uYWJjMjRiYTlmYmU5NWU5N2MxNmI3
NWY4Nzg0ZjliMTc3MjEzZDNhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTE0ODgsNyArMTQ4OCwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlKAogICAgICAgICAgICAgaW50IGRlYnVnSG9va0lEID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgaGFzQnJlYWtwb2ludEZsYWcgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImRlYnVnIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcyAlZCIsIGRlYnVnSG9va05h
bWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZs
YWcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9hc3Nl
cnQ6IHsKKyAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJhc3NlcnQiKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIHJlZ2lzdGVyTmFtZShjb25kaXRpb24pLmRhdGEo
KSwgbGluZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3Byb2ZpbGVfd2lsbF9jYWxsOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDJiZTcyMGExMDIzZjVj
NTllOTEyOWI5ZmY1MWZiZWE1NzVlYThlMjIuLjllZTYxMTFjYzNkMDdmNjM0NGM5NWUwOGYyZGVl
OWRmYzgwNjU0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMjgzLDYgKzIyODMsMTQgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUluZGV4KFJlZ2lzdGVySUQqIGJh
c2UsIHVuc2lnbmVkIGluZGV4LAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQg
bGluZSkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX2Fzc2VydCk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGNvbmRpdGlvbi0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxp
bmUpOworICAgIHJldHVybiBjb25kaXRpb247Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90IGJl
Z2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDdhMzlmN2RiZTU2
ZmY2MTdjOWUzZGM1ZGE4MTkyZDY1YjU5YTMwMmYuLmQxOTFmOTlmNWYwOWE3Y2U0NjY5N2E3Yjkw
NDkwZGQ5NDlhNDdhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUzMSw2ICs1MzEsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0UHV0QnlJbmRleChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRl
eCwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRBc3NlcnQo
UmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSk7CisKICAgICAgICAgdm9pZCBlbWl0UHV0
R2V0dGVyQnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwg
dW5zaWduZWQgcHJvcGVydHlEZXNjcmlwdG9yT3B0aW9ucywgUmVnaXN0ZXJJRCogZ2V0dGVyKTsK
ICAgICAgICAgdm9pZCBlbWl0UHV0U2V0dGVyQnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eSwgdW5zaWduZWQgcHJvcGVydHlEZXNjcmlwdG9yT3B0aW9ucywg
UmVnaXN0ZXJJRCogc2V0dGVyKTsKICAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyU2V0dGVyKFJl
Z2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBSZWdpc3RlcklEKiBnZXR0ZXIsIFJlZ2lzdGVySUQqIHNldHRlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggNzhkZGY1N2IwOTgwNTBkY2ZiNDRiZWVkYTljMGUxN2M1NjM4M2MyYS4uODczZjRhYjQ0MjQw
NzBkYzdmZDg2NjMxYWM0NWExNGRjMTVlMTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNzc0LDYgKzc3NCwxOSBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgIHJldHVybiAodGhpcy0+Km1fZW1pdHRlciko
Z2VuZXJhdG9yLCBkc3QpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX2Fzc2VydChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCit7CisjaWZuZGVmIE5ERUJVRworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5v
ZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlv
biA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBnZW5lcmF0b3IuZW1pdEFzc2VydChj
b25kaXRpb24uZ2V0KCksIG5vZGUtPmZpcnN0TGluZSgpKTsKKyAgICByZXR1cm4gZHN0OworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oZ2VuZXJhdG9yKTsKKyAgICByZXR1cm4gZHN0OworI2VuZGlm
Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
cHV0QnlWYWxEaXJlY3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggY2I1NWFkYzI1NzdmMDEyZWUxNjVhMmRi
MzM3ODA5MGNiZmY2M2ZjMC4uY2Q2ODZiNzJhZGQ0YjQ4ZDlhNjM2YzM0ZmYwOWFiZmViZDg0ODVl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjEyLDYgKzIxMiw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0
ZV9zY29wZWRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX291dF9vZl9i
YW5kX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKKyAgICAgICAg
REVGSU5FX09QKG9wX2Fzc2VydCkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggYjcwZDI4YWZkZTUxOTNiMjFlNzI2MmI5OTZhNjUxNWU2
ZjNjZDk2YS4uZTk2ODI5MmFiNzAyNGE4YzJhZmVhZmZkMGZlNDU5MmNjODUzNjQ3MCAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTIsNiArNDkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50cyhJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxf
YnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlv
biopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNGExNDhh
ZGZlZDRjZjQ2MzBiNDQ0ZGM2YjNiYzQzY2EwZjgzZDVkNi4uYzFiYjc0M2ZjYjdlMmNkZmIwYTJk
YzdkMWQ4ZDM5NDk3Zjg2MjBjOCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCkBAIC01MTksNiArNTE5LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bf
YXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9h
c3NlcnQpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggNGRjNDU3MjIy
ZjA4NGFhZDdiZTA0YzcxNDhjMTc1Y2Y2YzZmNjBiYS4uYTBhMGQyMmU2ZjE1ZGUxYTkzZjhjZmZl
MTVjOTFmN2UxMzhiYWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcApAQCAtODM0LDYgKzgzNCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRj
aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRTdG9yZSh0aHJvd25W
YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2Fzc2Vy
dChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0
KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGIx
ZGJhZWJhOGVhOTEwNTNkZDgwMjFhN2U1NzdjZmM3YWY0OGY5MzcuLjg0OWIyZDc1MzMyMDMxYTBl
NmM3NDg4NTExMTIyMGRiMmE3ZDA5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE1NjcsNiArMTU2NywxMiBAQCBf
bGxpbnRfb3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGRpc3BhdGNoKDQpCiAKIAorX2xsaW50X29w
X2Fzc2VydDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfYXNzZXJ0KQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDk1NzJiYzFmNGJkZjJh
ZDYyNzQ1YTI0NzAyNTExYTY0Yzc5ZjkwNWQuLjRjZjY1OTBhOWIwMTYwODg1NjJiZWU4ZDc1NTM1
NWQ4N2EzYjMzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMjY0LDYgKzI2NCw3IEBACiAgICAgbWFjcm8odG9TdHJpbmdU
YWcpCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNTX0VBQ0hfTkFNRSht
YWNybykgXAorICAgIG1hY3JvKGFzc2VydCkgXAogICAgIG1hY3JvKHB1dEJ5VmFsRGlyZWN0KSBc
CiAgICAgbWFjcm8odG9TdHJpbmcpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDM0ZjY0OWEwMzQ4ZjkzMzRlMTUyZDA3OTNm
NjIwNGM1MTVlNTAyZmIuLmM0ZjZjMjJjNzU0ODg5MTkwY2JmMTFiNDVhNDkxNGJjYWY3OTk5MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcApAQCAtNjM3LDYgKzYzNywxMyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmls
ZV90eXBlX2NsZWFyX2xvZykKICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2Fzc2VydCkKK3sKKyAgICBCRUdJTigpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoT1Ao
MSkuanNWYWx1ZSgpLmFzQm9vbGVhbigpLCAiSlMgYXNzZXJ0aW9uIGZhaWxlZCBhdCBsaW5lICVk
IGluOlxuJXNcbiIsIHBjWzJdLnUub3BlcmFuZCwgZXhlYy0+Y29kZUJsb2NrKCktPnNvdXJjZUNv
ZGVGb3JUb29scygpLmRhdGEoKSk7CisgICAgRU5EKCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA0
NDRiYzlmYjg4ZjM3Y2VlYzRjZjQ4MzZkNDk5ZWMyN2E0MGY0OGMwLi5iMGJhOWU4ZGExZTEzNTBl
Y2VlYWNjODFkMjdiYzhjYTJiMzlkZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjg5LDYgKzI4OSw3IEBAIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfbmV4dF9zdHJ1Y3R1cmVfZW51bWVyYXRvcl9wbmFtZSk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25leHRfZ2VuZXJpY19lbnVtZXJhdG9yX3Bu
YW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7
CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXgg
YzQzNDFlZDAzYTg2NDFmNzM2MDQ4YmVlYTBkNTY0YmIxMzk5ZTExZi4uMWRiZjBlNGQ1YzRmYzBk
NDc2MDNkNGEzNTgyYWJlMzdiOTg0NTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwpAQCAtNTEsNyAr
NTEsNyBAQCBmdW5jdGlvbiBwcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHN0
cmVhbSkKICAgICAgICAgdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkgPSB7IEBwcm9taXNl
OiBAUHJvbWlzZS5AcmVzb2x2ZSgpIH07CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KLSAg
ICAvLyBGSVhNRTogQVNTRVJUKHN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKTsKKyAg
ICBAYXNzZXJ0KHN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKTsKICAgICB0aGlzLkBv
d25lclJlYWRhYmxlU3RyZWFtID0gbnVsbDsKICAgICB0aGlzLkBzdG9yZWRFcnJvciA9IHN0cmVh
bS5Ac3RvcmVkRXJyb3I7CiAgICAgdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkgPSB7IEBw
cm9taXNlOiBAUHJvbWlzZS5AcmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265036</attachid>
            <date>2015-11-09 02:36:07 -0800</date>
            <delta_ts>2015-11-09 06:15:20 -0800</delta_ts>
            <desc>iOS build fix</desc>
            <filename>bug-150333-20151109113603.patch</filename>
            <type>text/plain</type>
            <size>14349</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTZjMWQ1YmU5ZjMxMTRiMzZlZmZlMzNmZjlkMjc0NDE1MmJiMmY3Li40MmU2MTA5ZTA1MzExNTAx
ZjE1OTM0NTFjYjgzN2MwNGY4NzEwZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxNS0xMS0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIEpTIEJ1aWx0LWlucyBmdW5jdGlvbnMgc2hvdWxkIGJlIGFi
bGUgdG8gYXNzZXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTAzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbnRyb2R1Y2VkIEBhc3NlcnQgdG8gZW5hYmxlIGFzc2VydGluZyBpbiBKUyBidWlsdC1p
bnMuCisgICAgICAgIEFkZGluZyBhIG5ldyBieXRlY29kZSAnYXNzZXJ0JyB0byBpbXBsZW1lbnQg
aXQuCisgICAgICAgIEluIGRlYnVnIGJ1aWxkcywgQGFzc2VydCBnZW5lcmF0ZXMgJ2Fzc2VydCcg
Ynl0ZWNvZGVzLgorICAgICAgICBJbiByZWxlYXNlIGJ1aWxkcywgbm8gYnl0ZSBjb2RlIGlzIHBy
b2R1Y2VkIGZvciBAYXNzZXJ0LgorCisgICAgICAgIEluIGNhc2UgYXNzZXJ0IGlzIGZhbHNlLCB0
aGUgSlMgYnVpbHQtaW4gYW5kIHRoZSBsaW5lIG51bWJlciBhcmUgZHVtcGVkLgorCisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2VydCk6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6IEdlbmVyYXRpbmcgb3BfYXNzZXJ0IGJ5dGVjb2RlIGZvciBAYXNz
ZXJ0IGZvciBEZWJ1ZyBidWlsZHMuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfYXNzZXJ0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfYXNzZXJ0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV9hc3NlcnQpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDogQWRkaW5nIEBhc3NlcnQgaWRlbnRpZmllciBhcyBpbnRyaW5zaWMuCisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVD
TCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKwogMjAxNS0xMS0wOCAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBN
aW5pbWl6ZSBFUzZfQ0xBU1NfU1lOVEFYIGlmZGVmcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ0Y2U4NDRkZTU0
YWJhMGY4YTZhM2EwMzBkOWZmNmU0MTNiZGU2MDguLjI5NDY1ZDI0MzhhYmFiYjA1MzI4NzA5MTc4
ZjYyMGExM2RhN2FlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0wOSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIEpT
IEJ1aWx0LWlucyBmdW5jdGlvbnMgc2hvdWxkIGJlIGFibGUgdG8gYXNzZXJ0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAzMzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKHByaXZhdGVJbml0aWFsaXplUmVh
ZGFibGVTdHJlYW1SZWFkZXIpOiBBY3RpdmF0aW5nIGFuIEBhc3NlcnQuCisKIDIwMTUtMTEtMDgg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxd
IEFkZCBVc2VyQWdlbnRFRmwuY3BwfGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBjZTgyZWRkODRjYjE3YWM0ZGRmYzM4YWEwZDE4
NjkzNTI4MDlhYTlkLi5iZDI5YzU1YTM3MzU0ZGUzZWJhYTI5NTM4YWIxNzFjMjA5ZjEzMzEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
CkBAIC0xMjcsNyArMTI3LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VudW1lcmF0
b3Jfc3RydWN0dXJlX3BuYW1lIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3RvX2luZGV4X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAot
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVu
Z3RoIiA6IDIgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0aW9u
X3RoaXMiLCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Fzc2Vy
dCIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDgzZTg2YjBl
MWNhM2UwODI2NTBmNDY2MzUxN2VlMjQyNTE0ZWZiYS4uMzE1MTFlN2MxZDFmNWU5NzM5N2NkMmI0
Y2Y0OWJhOGI0YzM4YjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKQEAgLTQzLDYgKzQzLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKICAgICBjYXNlIG9wX25ld19h
cnJheV9idWZmZXI6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAgY2FzZSBv
cF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX2puZXFfcHRyOgogICAg
IGNhc2Ugb3BfbG9vcF9oaW50OgpAQCAtMjUyLDYgKzI1Myw3IEBAIHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6
CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAgY2FzZSBvcF9hc3NlcnQ6CiAg
ICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKICAgICBjYXNlIG9wX2ptcDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNThjZjA1
OTVlZjdlNDc5NmY3NWFkNjg4MjNkNzRhZmNlMjY1OWNjMC4uYWJjMjRiYTlmYmU5NWU5N2MxNmI3
NWY4Nzg0ZjliMTc3MjEzZDNhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTE0ODgsNyArMTQ4OCwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlKAogICAgICAgICAgICAgaW50IGRlYnVnSG9va0lEID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgaGFzQnJlYWtwb2ludEZsYWcgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImRlYnVnIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcyAlZCIsIGRlYnVnSG9va05h
bWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZs
YWcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9hc3Nl
cnQ6IHsKKyAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJhc3NlcnQiKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIHJlZ2lzdGVyTmFtZShjb25kaXRpb24pLmRhdGEo
KSwgbGluZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3Byb2ZpbGVfd2lsbF9jYWxsOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDJiZTcyMGExMDIzZjVj
NTllOTEyOWI5ZmY1MWZiZWE1NzVlYThlMjIuLjllZTYxMTFjYzNkMDdmNjM0NGM5NWUwOGYyZGVl
OWRmYzgwNjU0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMjgzLDYgKzIyODMsMTQgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUluZGV4KFJlZ2lzdGVySUQqIGJh
c2UsIHVuc2lnbmVkIGluZGV4LAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQg
bGluZSkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX2Fzc2VydCk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGNvbmRpdGlvbi0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxp
bmUpOworICAgIHJldHVybiBjb25kaXRpb247Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90IGJl
Z2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDdhMzlmN2RiZTU2
ZmY2MTdjOWUzZGM1ZGE4MTkyZDY1YjU5YTMwMmYuLmQxOTFmOTlmNWYwOWE3Y2U0NjY5N2E3Yjkw
NDkwZGQ5NDlhNDdhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUzMSw2ICs1MzEsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0UHV0QnlJbmRleChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRl
eCwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRBc3NlcnQo
UmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSk7CisKICAgICAgICAgdm9pZCBlbWl0UHV0
R2V0dGVyQnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwg
dW5zaWduZWQgcHJvcGVydHlEZXNjcmlwdG9yT3B0aW9ucywgUmVnaXN0ZXJJRCogZ2V0dGVyKTsK
ICAgICAgICAgdm9pZCBlbWl0UHV0U2V0dGVyQnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eSwgdW5zaWduZWQgcHJvcGVydHlEZXNjcmlwdG9yT3B0aW9ucywg
UmVnaXN0ZXJJRCogc2V0dGVyKTsKICAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyU2V0dGVyKFJl
Z2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBSZWdpc3RlcklEKiBnZXR0ZXIsIFJlZ2lzdGVySUQqIHNldHRlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggNzhkZGY1N2IwOTgwNTBkY2ZiNDRiZWVkYTljMGUxN2M1NjM4M2MyYS4uODczZjRhYjQ0MjQw
NzBkYzdmZDg2NjMxYWM0NWExNGRjMTVlMTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNzc0LDYgKzc3NCwxOSBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgIHJldHVybiAodGhpcy0+Km1fZW1pdHRlciko
Z2VuZXJhdG9yLCBkc3QpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX2Fzc2VydChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCit7CisjaWZuZGVmIE5ERUJVRworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5v
ZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlv
biA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBnZW5lcmF0b3IuZW1pdEFzc2VydChj
b25kaXRpb24uZ2V0KCksIG5vZGUtPmZpcnN0TGluZSgpKTsKKyAgICByZXR1cm4gZHN0OworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oZ2VuZXJhdG9yKTsKKyAgICByZXR1cm4gZHN0OworI2VuZGlm
Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
cHV0QnlWYWxEaXJlY3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggY2I1NWFkYzI1NzdmMDEyZWUxNjVhMmRi
MzM3ODA5MGNiZmY2M2ZjMC4uY2Q2ODZiNzJhZGQ0YjQ4ZDlhNjM2YzM0ZmYwOWFiZmViZDg0ODVl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjEyLDYgKzIxMiw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0
ZV9zY29wZWRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX291dF9vZl9i
YW5kX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKKyAgICAgICAg
REVGSU5FX09QKG9wX2Fzc2VydCkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggYjcwZDI4YWZkZTUxOTNiMjFlNzI2MmI5OTZhNjUxNWU2
ZjNjZDk2YS4uZTk2ODI5MmFiNzAyNGE4YzJhZmVhZmZkMGZlNDU5MmNjODUzNjQ3MCAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTIsNiArNDkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50cyhJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxf
YnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlv
biopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNGExNDhh
ZGZlZDRjZjQ2MzBiNDQ0ZGM2YjNiYzQzY2EwZjgzZDVkNi4uYzFiYjc0M2ZjYjdlMmNkZmIwYTJk
YzdkMWQ4ZDM5NDk3Zjg2MjBjOCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCkBAIC01MTksNiArNTE5LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bf
YXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9h
c3NlcnQpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggNGRjNDU3MjIy
ZjA4NGFhZDdiZTA0YzcxNDhjMTc1Y2Y2YzZmNjBiYS4uNGUwNDM2NWZkNmMyODM2ODk5YmViZjdl
MDUzMzBkMWQzZGEwMDkwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcApAQCAtODM0LDYgKzgzNCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRj
aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRTdG9yZSh0aHJvd25W
YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOworICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9sZXhp
Y2FsX2Vudmlyb25tZW50KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjFkYmFlYmE4
ZWE5MTA1M2RkODAyMWE3ZTU3N2NmYzdhZjQ4ZjkzNy4uODQ5YjJkNzUzMzIwMzFhMGU2Yzc0ODg1
MTExMjIwZGIyYTdkMDlhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTU2Nyw2ICsxNTY3LDEyIEBAIF9sbGludF9v
cF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgZGlzcGF0Y2goNCkKIAogCitfbGxpbnRfb3BfYXNzZXJ0
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9hc3Nl
cnQpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRo
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggOTU3MmJjMWY0YmRmMmFkNjI3NDVh
MjQ3MDI1MTFhNjRjNzlmOTA1ZC4uNGNmNjU5MGE5YjAxNjA4ODU2MmJlZThkNzU1MzU1ZDg3YTNi
MzNiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCkBAIC0yNjQsNiArMjY0LDcgQEAKICAgICBtYWNybyh0b1N0cmluZ1RhZykKIAog
I2RlZmluZSBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ1NfRUFDSF9OQU1FKG1hY3JvKSBc
CisgICAgbWFjcm8oYXNzZXJ0KSBcCiAgICAgbWFjcm8ocHV0QnlWYWxEaXJlY3QpIFwKICAgICBt
YWNybyh0b1N0cmluZykKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKaW5kZXggMzRmNjQ5YTAzNDhmOTMzNGUxNTJkMDc5M2Y2MjA0YzUx
NWU1MDJmYi4uYzRmNmMyMmM3NTQ4ODkxOTBjYmYxMWI0NWE0OTE0YmNhZjc5OTkxMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBA
IC02MzcsNiArNjM3LDEzIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVf
Y2xlYXJfbG9nKQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYXNz
ZXJ0KQoreworICAgIEJFR0lOKCk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShPUCgxKS5qc1Zh
bHVlKCkuYXNCb29sZWFuKCksICJKUyBhc3NlcnRpb24gZmFpbGVkIGF0IGxpbmUgJWQgaW46XG4l
c1xuIiwgcGNbMl0udS5vcGVyYW5kLCBleGVjLT5jb2RlQmxvY2soKS0+c291cmNlQ29kZUZvclRv
b2xzKCkuZGF0YSgpKTsKKyAgICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDQ0NGJjOWZi
ODhmMzdjZWVjNGNmNDgzNmQ0OTllYzI3YTQwZjQ4YzAuLmIwYmE5ZThkYTFlMTM1MGVjZWVhY2M4
MWQyN2JjOGNhMmIzOWRkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCkBAIC0yODksNiArMjg5LDcgQEAgU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9uZXh0X3N0cnVjdHVyZV9lbnVtZXJhdG9yX3BuYW1lKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKK1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwppbmRleCBjNDM0MWVk
MDNhODY0MWY3MzYwNDhiZWVhMGQ1NjRiYjEzOTllMTFmLi4xZGJmMGU0ZDVjNGZjMGQ0NzYwM2Q0
YTM1ODJhYmUzN2I5ODQ1Mzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC01MSw3ICs1MSw3IEBA
IGZ1bmN0aW9uIHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIoc3RyZWFtKQog
ICAgICAgICB0aGlzLkBjbG9zZWRQcm9taXNlQ2FwYWJpbGl0eSA9IHsgQHByb21pc2U6IEBQcm9t
aXNlLkByZXNvbHZlKCkgfTsKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfQotICAgIC8vIEZJ
WE1FOiBBU1NFUlQoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVhbUVycm9yZWQpOworICAgIEBhc3Nl
cnQoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVhbUVycm9yZWQpOwogICAgIHRoaXMuQG93bmVyUmVh
ZGFibGVTdHJlYW0gPSBudWxsOwogICAgIHRoaXMuQHN0b3JlZEVycm9yID0gc3RyZWFtLkBzdG9y
ZWRFcnJvcjsKICAgICB0aGlzLkBjbG9zZWRQcm9taXNlQ2FwYWJpbGl0eSA9IHsgQHByb21pc2U6
IEBQcm9taXNlLkByZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcikgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>