<?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>152290</bug_id>
          
          <creation_ts>2015-12-14 19:56:32 -0800</creation_ts>
          <short_desc>Builtin source should be minified more</short_desc>
          <delta_ts>2015-12-16 09:31:21 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1149183</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-14 19:56:32 -0800</bug_when>
    <thetext>* SUMMARY
Builtin source should be minified.

In many cases, the extracted builtin code can be minified more. Here are some existing examples:

1. Whitespace can be stripped.
Primarily leading whitespace and many trailing newlines. This seems to account for sometimes 20% of the size of these builtins.

2. Lines that end up as only comments can be removed entirely. For example:

&gt; const JSC::ConstructAbility s_moduleLoaderObjectNewRegistryEntryCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
&gt; const int s_moduleLoaderObjectNewRegistryEntryCodeLength = 713;
&gt; const char* s_moduleLoaderObjectNewRegistryEntryCode =
&gt;     &quot;(function (key)\n&quot; \
&gt;     &quot;{\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;\n&quot; \
&gt;     &quot;    \&quot;use strict\&quot;;\n&quot; \
&gt;     &quot;\n&quot; \
&gt;     &quot;    return {\n&quot; \
&gt;     &quot;        key: key,\n&quot; \
&gt;     &quot;        state: this.Fetch,\n&quot; \
&gt;     &quot;        metadata: undefined,\n&quot; \
&gt;     &quot;        fetch: undefined,\n&quot; \
&gt;     &quot;        translate: undefined,\n&quot; \
&gt;     &quot;        instantiate: undefined,\n&quot; \
&gt;     &quot;        resolveDependencies: undefined,\n&quot; \
&gt;     &quot;        dependencies: [], //\n&quot; \
&gt;     &quot;        dependenciesMap: undefined,\n&quot; \
&gt;     &quot;        module: undefined, //\n&quot; \
&gt;     &quot;        error: undefined,\n&quot; \
&gt;     &quot;    };\n&quot; \
&gt;     &quot;})\n&quot; \</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149184</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-14 20:04:15 -0800</bug_when>
    <thetext>Looks like most of this whitespace is added by:
generate_embedded_code_string_section_for_function

It includes at least the leading 4 spaces of each line and the trailing newline at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149185</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-14 20:05:26 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Looks like most of this whitespace is added by:
&gt; generate_embedded_code_string_section_for_function

I take that back, that is whitespace outside the source string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149193</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-14 20:40:02 -0800</bug_when>
    <thetext>I&apos;ll handle some basic stuff, like stripping the empty comments and empty lines. I think it leads to even more readable code in the results anyways:

BEFORE:

&gt; const int s_moduleLoaderObjectRequestFetchCodeLength = 669;
&gt; const char* s_moduleLoaderObjectRequestFetchCode =
&gt;     &quot;(function (key)\n&quot; \
&gt;     &quot;{\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;\n&quot; \
&gt;     &quot;    \&quot;use strict\&quot;;\n&quot; \
&gt;     &quot;\n&quot; \
&gt;     &quot;    var entry = this.ensureRegistered(key);\n&quot; \
&gt;     &quot;    if (entry.state &gt; this.Link) {\n&quot; \
&gt;     &quot;        var deferred = @newPromiseCapability(@InternalPromise);\n&quot; \
&gt;     &quot;        deferred.@reject.@call(undefined, new @TypeError(\&quot;Requested module is already ready to be executed.\&quot;));\n&quot; \
&gt;     &quot;        return deferred.@promise;\n&quot; \
&gt;     &quot;    }\n&quot; \
&gt;     &quot;\n&quot; \
&gt;     &quot;    if (entry.fetch)\n&quot; \
&gt;     &quot;        return entry.fetch;\n&quot; \
&gt;     &quot;\n&quot; \
&gt;     &quot;    var loader = this;\n&quot; \
&gt;     &quot;\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    //\n&quot; \
&gt;     &quot;    var fetchPromise = this.fetch(key).then(function (payload) {\n&quot; \
&gt;     &quot;        loader.setStateToMax(entry, loader.Translate);\n&quot; \
&gt;     &quot;        return payload;\n&quot; \
&gt;     &quot;    });\n&quot; \
&gt;     &quot;    entry.fetch = fetchPromise;\n&quot; \
&gt;     &quot;    return fetchPromise;\n&quot; \
&gt;     &quot;})\n&quot; \
&gt; ;

AFTER:

&gt; const int s_moduleLoaderObjectRequestFetchCodeLength = 615;
&gt; const char* s_moduleLoaderObjectRequestFetchCode =
&gt;     &quot;(function (key)\n&quot; \
&gt;     &quot;{\n&quot; \
&gt;     &quot;    \&quot;use strict\&quot;;\n&quot; \
&gt;     &quot;    var entry = this.ensureRegistered(key);\n&quot; \
&gt;     &quot;    if (entry.state &gt; this.Link) {\n&quot; \
&gt;     &quot;        var deferred = @newPromiseCapability(@InternalPromise);\n&quot; \
&gt;     &quot;        deferred.@reject.@call(undefined, new @TypeError(\&quot;Requested module is already ready to be executed.\&quot;));\n&quot; \
&gt;     &quot;        return deferred.@promise;\n&quot; \
&gt;     &quot;    }\n&quot; \
&gt;     &quot;    if (entry.fetch)\n&quot; \
&gt;     &quot;        return entry.fetch;\n&quot; \
&gt;     &quot;    var loader = this;\n&quot; \
&gt;     &quot;    var fetchPromise = this.fetch(key).then(function (payload) {\n&quot; \
&gt;     &quot;        loader.setStateToMax(entry, loader.Translate);\n&quot; \
&gt;     &quot;        return payload;\n&quot; \
&gt;     &quot;    });\n&quot; \
&gt;     &quot;    entry.fetch = fetchPromise;\n&quot; \
&gt;     &quot;    return fetchPromise;\n&quot; \
&gt;     &quot;})\n&quot; \
&gt; ;

I didn&apos;t go all out and minify everything though. I think this is a good balance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149195</commentid>
    <comment_count>4</comment_count>
      <attachid>267337</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-14 20:45:23 -0800</bug_when>
    <thetext>Created attachment 267337
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149196</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-14 20:46:17 -0800</bug_when>
    <thetext>This patch modifies the JS builtins code generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-builtins-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149235</commentid>
    <comment_count>6</comment_count>
      <attachid>267337</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-15 01:06:10 -0800</bug_when>
    <thetext>Comment on attachment 267337
[PATCH] Proposed Fix

r=me.
And I also suggest to disable this when building JSC in the debug mode.
In the debug build, we can use @assert buildin intrinsic. And it reports a line number in a given function when the assertion fires.
So, to report meaningful line number, disabling this in the debug mode is nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149347</commentid>
    <comment_count>7</comment_count>
      <attachid>267382</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-15 11:36:09 -0800</bug_when>
    <thetext>Created attachment 267382
[PATCH] Proposed Fix

I wasn&apos;t sure how to do this reliably check Debug vs. Non-Debug across all platforms, so I default to not doing the minifying and minify only in builds where the CONFIGURATION environment variable does not start with &quot;Debug&quot;. So Mac Release/Production builds would minify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149348</commentid>
    <comment_count>8</comment_count>
      <attachid>267383</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-15 11:36:22 -0800</bug_when>
    <thetext>Created attachment 267383
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149629</commentid>
    <comment_count>9</comment_count>
      <attachid>267383</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-16 09:31:17 -0800</bug_when>
    <thetext>Comment on attachment 267383
[PATCH] Proposed Fix

Clearing flags on attachment: 267383

Committed r194144: &lt;http://trac.webkit.org/changeset/194144&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149630</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-16 09:31:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267337</attachid>
            <date>2015-12-14 20:45:23 -0800</date>
            <delta_ts>2015-12-15 11:36:09 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>minify.patch</filename>
            <type>text/plain</type>
            <size>29280</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDc1Zjk2MzEuLjRjOWI1YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE1LTEyLTE0ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgQnVpbHRpbiBzb3VyY2Ugc2hvdWxk
IGJlIG1pbmlmaWVkIG1vcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MjI5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAg
KEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5nKToKKyAgICAgICAgUmVtb3ZlIHByaW1hcmlseSBl
bXB0eSBsaW5lcyB0aGF0IHdvdWxkIGp1c3QgaW50cm9kdWNlIGNsdXR0ZXIuCisKKyAgICAgICAg
KiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4u
UHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMt
cmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0OgorICAgICAgICAq
IFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5w
cm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVk
LmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQ6CisgICAg
ICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1JbnRl
cm5hbENsYXNoaW5nTmFtZXMtQ29tYmluZWQuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJk
LVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAg
ICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJu
YWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1
bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXht
bENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0OgorCiAyMDE1LTEyLTA5ICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRk
IEpTQ29udGV4dCBTY3JpcHQgUHJvZmlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5Cm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZDc2NWVjYS4uODMwNzU4OQotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weQpAQCAt
NDksNiArNDksOSBAQCBtdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCou
Kj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwID0g
cmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCiBrZXlWYWx1ZUFu
bm90YXRpb25Db21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIl5cL1wvIEAoXHcrKT0oW149XSs/
KVxuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKIGZsYWdBbm5vdGF0aW9uQ29tbWVudFJlZ0V4cCA9
IHJlLmNvbXBpbGUociJeXC9cLyBAKFx3KylbXj1dKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CitsaW5lV2l0aE9ubHlTaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJeXHMq
XC9cL1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2xpbmVXaXRoVHJhaWxpbmdTaW5nbGVMaW5l
Q29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJccypcL1wvXG4iLCByZS5NVUxUSUxJTkUgfCBy
ZS5TKQorbXVsdGlwbGVFbXB0eUxpbmVzUmVnRXhwID0gcmUuY29tcGlsZShyIlxuezIsfSIsIHJl
Lk1VTFRJTElORSB8IHJlLlMpCiAKIGNsYXNzIFBhcnNlRXhjZXB0aW9uKEV4Y2VwdGlvbik6CiAg
ICAgcGFzcwpAQCAtMTAwLDYgKzEwMywxMCBAQCBjbGFzcyBCdWlsdGluRnVuY3Rpb246CiAgICAg
QHN0YXRpY21ldGhvZAogICAgIGRlZiBmcm9tU3RyaW5nKGZ1bmN0aW9uX3N0cmluZyk6CiAgICAg
ICAgIGZ1bmN0aW9uX3NvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5j
dGlvbl9zdHJpbmcpCisgICAgICAgIGZ1bmN0aW9uX3NvdXJjZSA9IGxpbmVXaXRoT25seVNpbmds
ZUxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb25fc291cmNlKQorICAgICAgICBmdW5j
dGlvbl9zb3VyY2UgPSBsaW5lV2l0aFRyYWlsaW5nU2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3Vi
KCJcbiIsIGZ1bmN0aW9uX3NvdXJjZSkKKyAgICAgICAgZnVuY3Rpb25fc291cmNlID0gbXVsdGlw
bGVFbXB0eUxpbmVzUmVnRXhwLnN1YigiXG4iLCBmdW5jdGlvbl9zb3VyY2UpCisKICAgICAgICAg
ZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uX3NvdXJj
ZSlbMF0KICAgICAgICAgaXNfY29uc3RydWN0b3IgPSBmdW5jdGlvbklzQ29uc3RydWN0b3JSZWdF
eHAubWF0Y2goZnVuY3Rpb25fc291cmNlKSAhPSBOb25lCiAgICAgICAgIHBhcmFtZXRlcnMgPSBb
cy5zdHJpcCgpIGZvciBzIGluIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rp
b25fc291cmNlKVswXS5zcGxpdCgnLCcpXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlz
ZS1Db21iaW5lZC5qcy1yZXN1bHQKaW5kZXggZGJkM2UxMi4uNGFjMjBmMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0CkBAIC0xMTMsMzkgKzEx
MywzMyBAQCBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRP
UikKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWls
dGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VS
ZWplY3RQcm9taXNlQ29kZUxlbmd0aCA9IDQxMzsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNl
UmVqZWN0UHJvbWlzZUNvZGVMZW5ndGggPSA0MTA7CiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9t
aXNlUmVqZWN0UHJvbWlzZUNvZGUgPQogICAgICIoZnVuY3Rpb24gKHByb21pc2UsIHJlYXNvbilc
biIgXAogICAgICJ7XG4iIFwKICAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCi0gICAgIlxu
IiBcCiAgICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0
aW9ucztcbiIgXAogICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHJlYXNvbjtcbiIg
XAogICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7
XG4iIFwKICAgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmlu
ZWQ7XG4iIFwKICAgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlUmVqZWN0
ZWQ7XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
cHJvbWlzZVJlamVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTtcbiIgXAotICAgICJc
biIgXAogICAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgcmVhc29u
KTtcbiIgXAogICAgICJ9KVxuIiBcCiA7CiAKIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6
Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50IHNfYnVpbHRpblBy
b21pc2VGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGggPSA0MTI7Citjb25zdCBpbnQgc19idWlsdGlu
UHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCA9IDQwOTsKIGNvbnN0IGNoYXIqIHNfYnVp
bHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGUgPQogICAgICIoZnVuY3Rpb24gKHByb21pc2Us
IHZhbHVlKVxuIiBcCiAgICAgIntcbiIgXAogICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwK
LSAgICAiXG4iIFwKICAgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlRnVs
ZmlsbFJlYWN0aW9ucztcbiIgXAogICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZh
bHVlO1xuIiBcCiAgICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVu
ZGVmaW5lZDtcbiIgXAogICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9
IHVuZGVmaW5lZDtcbiIgXAogICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21p
c2VGdWxmaWxsZWQ7XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1ZSwgcmVhY3Rpb25zKTtcbiIg
XAotICAgICJcbiIgXAogICAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9u
cywgdmFsdWUpO1xuIiBcCiAgICAgIn0pXG4iIFwKIDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDFiMWQ1ZTEuLjI1ODUyNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMTE1
LDM5ICsxMTUsMzMgQEAgSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9NSVNFX0JVSUxUSU5fQ09ERShE
RUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVDb25zdHJ1
Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1jb25z
dCBpbnQgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoID0gNDEzOworY29u
c3QgaW50IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aCA9IDQxMDsKIGNv
bnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZSA9CiAgICAgIihmdW5j
dGlvbiAocHJvbWlzZSwgcmVhc29uKVxuIiBcCiAgICAgIntcbiIgXAogICAgICIgICAgXCJ1c2Ug
c3RyaWN0XCI7XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9t
aXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zO1xuIiBcCiAgICAgIiAgICBwcm9taXNlLkBwcm9t
aXNlUmVzdWx0ID0gcmVhc29uO1xuIiBcCiAgICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmls
bFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIgXAogICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJl
amVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIgXAogICAgICIgICAgcHJvbWlzZS5AcHJvbWlz
ZVN0YXRlID0gQHByb21pc2VSZWplY3RlZDtcbiIgXAotICAgICJcbiIgXAogICAgICIgICAgQElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlUmVqZWN0ZWQocHJvbWlzZSwgcmVhc29uLCBy
ZWFjdGlvbnMpO1xuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAgICBAdHJpZ2dlclByb21pc2VSZWFj
dGlvbnMocmVhY3Rpb25zLCByZWFzb24pO1xuIiBcCiAgICAgIn0pXG4iIFwKIDsKIAogY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVD
b25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7
Ci1jb25zdCBpbnQgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCA9IDQx
MjsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoID0g
NDA5OwogY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZSA9CiAg
ICAgIihmdW5jdGlvbiAocHJvbWlzZSwgdmFsdWUpXG4iIFwKICAgICAie1xuIiBcCiAgICAgIiAg
ICBcInVzZSBzdHJpY3RcIjtcbiIgXAotICAgICJcbiIgXAogICAgICIgICAgdmFyIHJlYWN0aW9u
cyA9IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zO1xuIiBcCiAgICAgIiAgICBwcm9t
aXNlLkBwcm9taXNlUmVzdWx0ID0gdmFsdWU7XG4iIFwKICAgICAiICAgIHByb21pc2UuQHByb21p
c2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCiAgICAgIiAgICBwcm9taXNlLkBw
cm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCiAgICAgIiAgICBwcm9taXNl
LkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDtcbiIgXAotICAgICJcbiIgXAogICAg
ICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlRnVsZmlsbGVkKHByb21pc2Us
IHZhbHVlLCByZWFjdGlvbnMpO1xuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAgICBAdHJpZ2dlclBy
b21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7XG4iIFwKICAgICAifSlcbiIgXAogOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0Cmlu
ZGV4IDJiYjRjYmMuLjE2ZmUxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJv
dG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3Rv
dHlwZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTExNSwxMiArMTE1LDExIEBAIEpTQ19GT1JFQUNI
X0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogbmFtZXNwYWNlIEpTQyB7
CiAKIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNv
ZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3Q7Ci1jb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoID0gNzYyOwor
Y29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aCA9IDc2MDsKIGNvbnN0
IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZSA9CiAgICAgIihmdW5jdGlvbiAoY2Fs
bGJhY2sgKVxuIiBcCiAgICAgIntcbiIgXAogICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwK
LSAgICAiXG4iIFwKICAgICAiICAgIGlmICh0aGlzID09PSBudWxsKVxuIiBcCiAgICAgIiAgICAg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgbm90IGJlIG51bGxcIik7XG4iIFwKICAgICAiICAgIFxuIiBcCkBAIC0xMjks
NyArMTI4LDYgQEAgY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlID0KICAg
ICAiICAgIFxuIiBcCiAgICAgIiAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpO1xuIiBcCiAg
ICAgIiAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7XG4iIFwKLSAgICAi
XG4iIFwKICAgICAiICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIilcbiIg
XAogICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2
ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAogICAgICIgICAgXG4iIFwK
QEAgLTE0NywxMiArMTQ1LDExIEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5
Q29kZSA9CiA7CiAKIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5
cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNh
bm5vdENvbnN0cnVjdDsKLWNvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUxl
bmd0aCA9IDY5NDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUxlbmd0
aCA9IDY5MjsKIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlID0KICAg
ICAiKGZ1bmN0aW9uIChjYWxsYmFjayApXG4iIFwKICAgICAie1xuIiBcCiAgICAgIiAgICBcInVz
ZSBzdHJpY3RcIjtcbiIgXAotICAgICJcbiIgXAogICAgICIgICAgaWYgKHRoaXMgPT09IG51bGwp
XG4iIFwKICAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlw
ZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsXCIpO1xuIiBcCiAgICAg
IiAgICBcbiIgXApAQCAtMTYxLDcgKzE1OCw2IEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3Rv
dHlwZUZvckVhY2hDb2RlID0KICAgICAiICAgIFxuIiBcCiAgICAgIiAgICB2YXIgYXJyYXkgPSBA
T2JqZWN0KHRoaXMpO1xuIiBcCiAgICAgIiAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5
Lmxlbmd0aCk7XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIGlmICh0eXBlb2YgY2FsbGJhY2sg
IT09IFwiZnVuY3Rpb25cIilcbiIgXAogICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KFwiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uXCIp
O1xuIiBcCiAgICAgIiAgICBcbiIgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5w
cm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5
cGUtU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDMxNWUwMGUuLmU3NzkwNjNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9K
YXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0xMTcs
MTIgKzExNywxMSBAQCBKU0NfRk9SRUFDSF9CVUlMVElOLlBST1RPVFlQRV9CVUlMVElOX0NPREUo
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlQ29uc3RydWN0QWJp
bGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50
IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aCA9IDc2MjsKK2NvbnN0IGludCBzX2J1
aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVMZW5ndGggPSA3NjA7CiBjb25zdCBjaGFyKiBzX2J1aWx0
aW5Qcm90b3R5cGVFdmVyeUNvZGUgPQogICAgICIoZnVuY3Rpb24gKGNhbGxiYWNrIClcbiIgXAog
ICAgICJ7XG4iIFwKICAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCi0gICAgIlxuIiBcCiAg
ICAgIiAgICBpZiAodGhpcyA9PT0gbnVsbClcbiIgXAogICAgICIgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5v
dCBiZSBudWxsXCIpO1xuIiBcCiAgICAgIiAgICBcbiIgXApAQCAtMTMxLDcgKzEzMCw2IEBAIGNv
bnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZSA9CiAgICAgIiAgICBcbiIgXAog
ICAgICIgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTtcbiIgXAogICAgICIgICAgdmFyIGxl
bmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpO1xuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAg
ICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKICAgICAiICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKICAgICAiICAgIFxuIiBcCkBAIC0xNDksMTIgKzE0
NywxMSBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGUgPQogOwogCiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVD
b25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7
Ci1jb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGggPSA2OTQ7Citj
b25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGggPSA2OTI7CiBjb25z
dCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSA9CiAgICAgIihmdW5jdGlvbiAo
Y2FsbGJhY2sgKVxuIiBcCiAgICAgIntcbiIgXAogICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4i
IFwKLSAgICAiXG4iIFwKICAgICAiICAgIGlmICh0aGlzID09PSBudWxsKVxuIiBcCiAgICAgIiAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbFwiKTtcbiIgXAogICAgICIgICAgXG4iIFwKQEAg
LTE2Myw3ICsxNjAsNiBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29k
ZSA9CiAgICAgIiAgICBcbiIgXAogICAgICIgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTtc
biIgXAogICAgICIgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpO1xuIiBc
Ci0gICAgIlxuIiBcCiAgICAgIiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9u
XCIpXG4iIFwKICAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3Rv
dHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAogICAgICIg
ICAgXG4iIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21i
aW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQu
anMtcmVzdWx0CmluZGV4IDAzOTFkZTIuLjA5MTAyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdApAQCAtMTEzLDE0ICsxMTMsMTIg
QEAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiBu
YW1lc3BhY2UgSlNDIHsKIAogY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNv
bnN0cnVjdG9yT2ZDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6
Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVu
Z3RoID0gMjk0OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3RoID0g
Mjg2OwogY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGUgPQogICAgICIoZnVu
Y3Rpb24gKClcbiIgXAogICAgICJ7XG4iIFwKICAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBc
Ci0gICAgIlxuIiBcCiAgICAgIiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiIg
XAotICAgICIgICAgLy9cbiIgXAogICAgICIgICAgdmFyIGFycmF5ID0gdHlwZW9mIHRoaXMgPT09
ICdmdW5jdGlvbicgPyBuZXcgdGhpcyhsZW5ndGgpIDogbmV3IEBBcnJheShsZW5ndGgpO1xuIiBc
CiAgICAgIiAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgKytrKVxuIiBcCiAgICAgIiAg
ICAgICAgQHB1dEJ5VmFsRGlyZWN0KGFycmF5LCBrLCBhcmd1bWVudHNba10pO1xuIiBcCkBAIC0x
MzAsNDkgKzEyOCwzNCBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZSA9
CiA7CiAKIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Db25zdHJ1Y3RvckZy
b21Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0OwotY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVMZW5ndGggPSAy
MDQ2OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVMZW5ndGggPSAxOTc5
OwogY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZSA9CiAgICAgIihmdW5j
dGlvbiAoaXRlbXMgKVxuIiBcCiAgICAgIntcbiIgXAogICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7
XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIHZhciB0aGlzT2JqID0gdGhpcztcbiIgXAotICAg
ICJcbiIgXAogICAgICIgICAgdmFyIG1hcEZuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1
bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIHZhciB0aGlz
QXJnO1xuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAgICBpZiAobWFwRm4gIT09IHVuZGVmaW5lZCkg
e1xuIiBcCiAgICAgIiAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAhPT0gXCJmdW5jdGlvblwiKVxu
IiBcCiAgICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkuZnJvbSBy
ZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4gcHJvdmlkZWQsIGJlIGEgZnVu
Y3Rpb25cIik7XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgICAgICBpZiAoYXJndW1lbnRzLmxl
bmd0aCA+IDIpXG4iIFwKICAgICAiICAgICAgICAgICAgdGhpc0FyZyA9IGFyZ3VtZW50c1syXTtc
biIgXAogICAgICIgICAgfVxuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAgICBpZiAoaXRlbXMgPT0g
bnVsbClcbiIgXAogICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkuZnJv
bSByZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZFwi
KTtcbiIgXAotICAgICJcbiIgXAogICAgICIgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlbXNb
QHN5bWJvbEl0ZXJhdG9yXTtcbiIgXAogICAgICIgICAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IG51
bGwpIHtcbiIgXAogICAgICIgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JNZXRob2QgIT09IFwi
ZnVuY3Rpb25cIilcbiIgXAogICAgICIgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihc
IkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFyZ3Vt
ZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5jdGlvblwi
KTtcbiIgXAotICAgICJcbiIgXAotICAgICIgICAgICAgIC8vXG4iIFwKICAgICAiICAgICAgICB2
YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0aW9uXCIpID8gQE9iamVjdChu
ZXcgdGhpc09iaigpKSA6IFtdO1xuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAgICAgICAgdmFyIGsg
PSAwO1xuIiBcCiAgICAgIiAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuQGNh
bGwoaXRlbXMpO1xuIiBcCi0gICAgIlxuIiBcCi0gICAgIiAgICAgICAgLy9cbiIgXAotICAgICIg
ICAgICAgIC8vXG4iIFwKLSAgICAiICAgICAgICAvL1xuIiBcCiAgICAgIiAgICAgICAgdmFyIHdy
YXBwZXIgPSB7XG4iIFwKICAgICAiICAgICAgICAgICAgW0BzeW1ib2xJdGVyYXRvcl0oKSB7XG4i
IFwKICAgICAiICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjtcbiIgXAogICAgICIgICAg
ICAgICAgICB9XG4iIFwKICAgICAiICAgICAgICB9O1xuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAg
ICAgICAgZm9yICh2YXIgdmFsdWUgb2Ygd3JhcHBlcikge1xuIiBcCiAgICAgIiAgICAgICAgICAg
IGlmIChtYXBGbilcbiIgXAogICAgICIgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJl
c3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4u
QGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTtcbiIgXApAQCAtMTgwLDE3ICsxNjMsMTIgQEAgY29u
c3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZSA9CiAgICAgIiAgICAgICAgICAg
ICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4iIFwKICAgICAiICAgICAg
ICAgICAgayArPSAxO1xuIiBcCiAgICAgIiAgICAgICAgfVxuIiBcCi0gICAgIlxuIiBcCiAgICAg
IiAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IGs7XG4iIFwKICAgICAiICAgICAgICByZXR1cm4gcmVz
dWx0O1xuIiBcCiAgICAgIiAgICB9XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIHZhciBhcnJh
eUxpa2UgPSBAT2JqZWN0KGl0ZW1zKTtcbiIgXAogICAgICIgICAgdmFyIGFycmF5TGlrZUxlbmd0
aCA9IEB0b0xlbmd0aChhcnJheUxpa2UubGVuZ3RoKTtcbiIgXAotICAgICJcbiIgXAotICAgICIg
ICAgLy9cbiIgXAogICAgICIgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0gXCJm
dW5jdGlvblwiKSA/IEBPYmplY3QobmV3IHRoaXNPYmooYXJyYXlMaWtlTGVuZ3RoKSkgOiBuZXcg
QEFycmF5KGFycmF5TGlrZUxlbmd0aCk7XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIHZhciBr
ID0gMDtcbiIgXAogICAgICIgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VMZW5ndGgpIHtcbiIgXAog
ICAgICIgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5TGlrZVtrXTtcbiIgXApAQCAtMjAwLDcgKzE3
OCw2IEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGUgPQogICAgICIg
ICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4iIFwKICAgICAi
ICAgICAgICBrICs9IDE7XG4iIFwKICAgICAiICAgIH1cbiIgXAotICAgICJcbiIgXAogICAgICIg
ICAgcmVzdWx0Lmxlbmd0aCA9IGFycmF5TGlrZUxlbmd0aDtcbiIgXAogICAgICIgICAgcmV0dXJu
IHJlc3VsdDtcbiIgXAogICAgICJ9KVxuIiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWls
dGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNv
bnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCAyZDI2ZTQ5Li5lMmU3MDAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQK
QEAgLTExNSwxNCArMTE1LDEyIEBAIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlM
VElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKIG5hbWVzcGFjZSBKU0MgewogCiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVDb25z
dHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1j
b25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5ndGggPSAyOTQ7Citjb25zdCBp
bnQgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5ndGggPSAyODY7CiBjb25zdCBjaGFyKiBz
X2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZSA9CiAgICAgIihmdW5jdGlvbiAoKVxuIiBcCiAgICAg
IntcbiIgXAogICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKLSAgICAiXG4iIFwKICAgICAi
ICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuIiBcCi0gICAgIiAgICAvL1xuIiBc
CiAgICAgIiAgICB2YXIgYXJyYXkgPSB0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyB0
aGlzKGxlbmd0aCkgOiBuZXcgQEFycmF5KGxlbmd0aCk7XG4iIFwKICAgICAiICAgIGZvciAodmFy
IGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spXG4iIFwKICAgICAiICAgICAgICBAcHV0QnlWYWxEaXJl
Y3QoYXJyYXksIGssIGFyZ3VtZW50c1trXSk7XG4iIFwKQEAgLTEzMiw0OSArMTMwLDM0IEBAIGNv
bnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlID0KIDsKIAogY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RBYmls
aXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1jb25zdCBpbnQg
c19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aCA9IDIwNDY7Citjb25zdCBpbnQgc19i
dWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aCA9IDE5Nzk7CiBjb25zdCBjaGFyKiBzX2J1
aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlID0KICAgICAiKGZ1bmN0aW9uIChpdGVtcyApXG4iIFwK
ICAgICAie1xuIiBcCiAgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAotICAgICJcbiIgXAog
ICAgICIgICAgdmFyIHRoaXNPYmogPSB0aGlzO1xuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAgICB2
YXIgbWFwRm4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5l
ZDtcbiIgXAotICAgICJcbiIgXAogICAgICIgICAgdmFyIHRoaXNBcmc7XG4iIFwKLSAgICAiXG4i
IFwKICAgICAiICAgIGlmIChtYXBGbiAhPT0gdW5kZWZpbmVkKSB7XG4iIFwKICAgICAiICAgICAg
ICBpZiAodHlwZW9mIG1hcEZuICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKICAgICAiICAgICAgICAg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHNl
Y29uZCBhcmd1bWVudCwgd2hlbiBwcm92aWRlZCwgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAotICAg
ICJcbiIgXAogICAgICIgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMilcbiIgXAogICAg
ICIgICAgICAgICAgICB0aGlzQXJnID0gYXJndW1lbnRzWzJdO1xuIiBcCiAgICAgIiAgICB9XG4i
IFwKLSAgICAiXG4iIFwKICAgICAiICAgIGlmIChpdGVtcyA9PSBudWxsKVxuIiBcCiAgICAgIiAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIGFuIGFycmF5
LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkXCIpO1xuIiBcCi0gICAgIlxuIiBc
CiAgICAgIiAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVtc1tAc3ltYm9sSXRlcmF0b3JdO1xu
IiBcCiAgICAgIiAgICBpZiAoaXRlcmF0b3JNZXRob2QgIT0gbnVsbCkge1xuIiBcCiAgICAgIiAg
ICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCiAg
ICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkuZnJvbSByZXF1aXJl
cyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1zW1N5bWJvbC5p
dGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCi0gICAgIlxuIiBc
Ci0gICAgIiAgICAgICAgLy9cbiIgXAogICAgICIgICAgICAgIHZhciByZXN1bHQgPSAodHlwZW9m
IHRoaXNPYmogPT09IFwiZnVuY3Rpb25cIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKCkpIDogW107
XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgICAgICB2YXIgayA9IDA7XG4iIFwKICAgICAiICAg
ICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvck1ldGhvZC5AY2FsbChpdGVtcyk7XG4iIFwKLSAg
ICAiXG4iIFwKLSAgICAiICAgICAgICAvL1xuIiBcCi0gICAgIiAgICAgICAgLy9cbiIgXAotICAg
ICIgICAgICAgIC8vXG4iIFwKICAgICAiICAgICAgICB2YXIgd3JhcHBlciA9IHtcbiIgXAogICAg
ICIgICAgICAgICAgICBbQHN5bWJvbEl0ZXJhdG9yXSgpIHtcbiIgXAogICAgICIgICAgICAgICAg
ICAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuIiBcCiAgICAgIiAgICAgICAgICAgIH1cbiIgXAogICAg
ICIgICAgICAgIH07XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgICAgICBmb3IgKHZhciB2YWx1
ZSBvZiB3cmFwcGVyKSB7XG4iIFwKICAgICAiICAgICAgICAgICAgaWYgKG1hcEZuKVxuIiBcCiAg
ICAgIiAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlzQXJnID09
PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1
ZSwgaykpO1xuIiBcCkBAIC0xODIsMTcgKzE2NSwxMiBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5D
b25zdHJ1Y3RvckZyb21Db2RlID0KICAgICAiICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVj
dChyZXN1bHQsIGssIHZhbHVlKTtcbiIgXAogICAgICIgICAgICAgICAgICBrICs9IDE7XG4iIFwK
ICAgICAiICAgICAgICB9XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgICAgICByZXN1bHQubGVu
Z3RoID0gaztcbiIgXAogICAgICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iIFwKICAgICAiICAg
IH1cbiIgXAotICAgICJcbiIgXAogICAgICIgICAgdmFyIGFycmF5TGlrZSA9IEBPYmplY3QoaXRl
bXMpO1xuIiBcCiAgICAgIiAgICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5
TGlrZS5sZW5ndGgpO1xuIiBcCi0gICAgIlxuIiBcCi0gICAgIiAgICAvL1xuIiBcCiAgICAgIiAg
ICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0aW9uXCIpID8gQE9iamVj
dChuZXcgdGhpc09iaihhcnJheUxpa2VMZW5ndGgpKSA6IG5ldyBAQXJyYXkoYXJyYXlMaWtlTGVu
Z3RoKTtcbiIgXAotICAgICJcbiIgXAogICAgICIgICAgdmFyIGsgPSAwO1xuIiBcCiAgICAgIiAg
ICB3aGlsZSAoayA8IGFycmF5TGlrZUxlbmd0aCkge1xuIiBcCiAgICAgIiAgICAgICAgdmFyIHZh
bHVlID0gYXJyYXlMaWtlW2tdO1xuIiBcCkBAIC0yMDIsNyArMTgwLDYgQEAgY29uc3QgY2hhciog
c19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZSA9CiAgICAgIiAgICAgICAgICAgIEBwdXRCeVZh
bERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTtcbiIgXAogICAgICIgICAgICAgIGsgKz0gMTtcbiIg
XAogICAgICIgICAgfVxuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAgICByZXN1bHQubGVuZ3RoID0g
YXJyYXlMaWtlTGVuZ3RoO1xuIiBcCiAgICAgIiAgICByZXR1cm4gcmVzdWx0O1xuIiBcCiAgICAg
In0pXG4iIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUludGVybmFsQ2xhc2hpbmdOYW1lcy1D
b21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFtZXMtQ29t
YmluZWQuanMtcmVzdWx0CmluZGV4IGQ1NjlhYzUuLmUxZmQ1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3Jp
cHRDb3JlLUludGVybmFsQ2xhc2hpbmdOYW1lcy1Db21iaW5lZC5qcy1yZXN1bHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNj
cmlwdENvcmUtSW50ZXJuYWxDbGFzaGluZ05hbWVzLUNvbWJpbmVkLmpzLXJlc3VsdApAQCAtMTEy
LDIzICsxMTIsMjEgQEAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9H
RU5FUkFUT1IpCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfaW50ZXJuYWxDbGFzaGluZ05hbWVzSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1
Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1jb25z
dCBpbnQgc19pbnRlcm5hbENsYXNoaW5nTmFtZXNJc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxl
bmd0aCA9IDcxOworY29uc3QgaW50IHNfaW50ZXJuYWxDbGFzaGluZ05hbWVzSXNSZWFkYWJsZVN0
cmVhbUxvY2tlZENvZGVMZW5ndGggPSA3MDsKIGNvbnN0IGNoYXIqIHNfaW50ZXJuYWxDbGFzaGlu
Z05hbWVzSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogICAgICIoZnVuY3Rpb24gKHN0cmVh
bSlcbiIgXAogICAgICJ7XG4iIFwKICAgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKLSAgICAi
XG4iIFwKICAgICAiICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyO1xuIiBcCiAgICAgIn0pXG4i
IFwKIDsKIAogY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfaW50ZXJuYWxDbGFzaGluZ05h
bWVzSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1jb25zdCBpbnQgc19pbnRlcm5hbENsYXNo
aW5nTmFtZXNJc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCA9IDcxOworY29uc3QgaW50
IHNfaW50ZXJuYWxDbGFzaGluZ05hbWVzSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgg
PSA3MDsKIGNvbnN0IGNoYXIqIHNfaW50ZXJuYWxDbGFzaGluZ05hbWVzSXNSZWFkYWJsZVN0cmVh
bUxvY2tlZENvZGUgPQogICAgICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAogICAgICJ7XG4iIFwK
ICAgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIHJldHVy
biAhIXN0cmVhbS5AcmVhZGVyO1xuIiBcCiAgICAgIn0pXG4iIFwKIDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFy
Yml0cmFyeUNvbmRpdGlvbmFsR3VhcmQtU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDViNjFkMmYu
LmRmOTFkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZC1TZXBh
cmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFy
YXRlLmpzLXJlc3VsdApAQCAtMTcwLDEyICsxNzAsMTEgQEAgaW5saW5lIHZvaWQgQXJiaXRyYXJ5
Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hcmJpdHJhcnlDb25k
aXRpb25hbEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0g
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1jb25zdCBpbnQgc19hcmJp
dHJhcnlDb25kaXRpb25hbEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGggPSA3
MTsKK2NvbnN0IGludCBzX2FyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmRJc1JlYWRhYmxlU3RyZWFt
TG9ja2VkQ29kZUxlbmd0aCA9IDcwOwogY29uc3QgY2hhciogc19hcmJpdHJhcnlDb25kaXRpb25h
bEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogICAgICIoZnVuY3Rpb24gKHN0cmVh
bSlcbiIgXAogICAgICJ7XG4iIFwKICAgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKLSAgICAi
XG4iIFwKICAgICAiICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyO1xuIiBcCiAgICAgIn0pXG4i
IFwKIDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
V2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggNWIxNTQ0Yy4u
MmZjYWY1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTE3MCwx
MiArMTcwLDExIEBAIGlubGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpl
eHBvcnROYW1lcygpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1
Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1jb25z
dCBpbnQgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoID0g
NzE7Citjb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2Rl
TGVuZ3RoID0gNzA7CiBjb25zdCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVh
bUxvY2tlZENvZGUgPQogICAgICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAogICAgICJ7XG4iIFwK
ICAgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIHJldHVy
biAhIXN0cmVhbS5AcmVhZGVyO1xuIiBcCiAgICAgIn0pXG4iIFwKIDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJk
ZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDUzYjU1NTIuLjVhZGE2
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3Vs
dApAQCAtMjAyLDEyICsyMDIsMTEgQEAgaW5saW5lIHZvaWQgR3VhcmRlZEludGVybmFsQnVpbHRp
bkJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2kKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVy
bmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50IHNfZ3VhcmRl
ZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoID0gNzE7Citj
b25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENv
ZGVMZW5ndGggPSA3MDsKIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVh
ZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KICAgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKICAg
ICAie1xuIiBcCiAgICAgIiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCi0gICAgIlxuIiBcCiAgICAg
IiAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAogICAgICJ9KVxuIiBcCiA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1V
bmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCA3Yzk2YjlmLi5iNDI1OGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTE2NCwxMiAr
MTY0LDExIEBAIGlubGluZSB2b2lkIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6OmV4
cG9ydE5hbWVzKCkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3Ry
dWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotY29u
c3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3Ro
ID0gNzE7Citjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZENvZGVMZW5ndGggPSA3MDsKIGNvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFi
bGVTdHJlYW1Mb2NrZWRDb2RlID0KICAgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKICAgICAi
e1xuIiBcCiAgICAgIiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAg
ICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAogICAgICJ9KVxuIiBcCiA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNp
bmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCA3MjZiMjgxLi4wOTIwZmEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1s
Q2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTIxNiwyMyArMjE2LDIxIEBAIGlubGlu
ZSB2b2lkIHhtbENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5
ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1jb25zdCBpbnQgc194
bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVMZW5ndGggPSA3MTsKK2NvbnN0IGludCBzX3ht
bENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUxlbmd0aCA9IDcwOwogY29uc3QgY2hhciogc194
bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGUgPQogICAgICIoZnVuY3Rpb24gKHN0cmVhbSlc
biIgXAogICAgICJ7XG4iIFwKICAgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKLSAgICAiXG4i
IFwKICAgICAiICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyO1xuIiBcCiAgICAgIn0pXG4iIFwK
IDsKIAogY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2lu
Z1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0OwotY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlTGVu
Z3RoID0gNDAyOworY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlTGVu
Z3RoID0gNDAxOwogY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGUg
PQogICAgICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCiAgICAgIntcbiIgXAogICAg
ICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKLSAgICAiXG4iIFwKICAgICAiICAgIGlmIChzdHJl
YW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4iIFwKICAgICAiICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKICAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRl
ID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBcCkBAIC0yNDQsMTIgKzI0MiwxMSBAQCBj
b25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZSA9CiA7CiAKIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUNv
bnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
LWNvbnN0IGludCBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUxlbmd0aCA9IDMzODsK
K2NvbnN0IGludCBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUxlbmd0aCA9IDMzNzsK
IGNvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlID0KICAgICAiKGZ1
bmN0aW9uIChvYmplY3QsIGtleSwgYXJncylcbiIgXAogICAgICJ7XG4iIFwKICAgICAiICAgIFwi
dXNlIHN0cmljdFwiO1xuIiBcCi0gICAgIlxuIiBcCiAgICAgIiAgICB0cnkge1xuIiBcCiAgICAg
IiAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBcCiAgICAgIiAgICAgICAgaWYg
KHR5cGVvZiBtZXRob2QgPT09IFwidW5kZWZpbmVkXCIpXG4iIFwK
</data>
<flag name="review"
          id="292392"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="292393"
          type_id="3"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267382</attachid>
            <date>2015-12-15 11:36:09 -0800</date>
            <delta_ts>2015-12-15 11:36:22 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>take2.patch</filename>
            <type>text/plain</type>
            <size>2692</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDc1Zjk2MzEuLmVlOWI3ZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTEyLTE0ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgQnVpbHRpbiBzb3VyY2Ugc2hvdWxk
IGJlIG1pbmlmaWVkIG1vcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MjI5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAg
KEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5nKToKKyAgICAgICAgUmVtb3ZlIHByaW1hcmlseSBl
bXB0eSBsaW5lcyB0aGF0IHdvdWxkIGp1c3QgaW50cm9kdWNlIGNsdXR0ZXIuCisgICAgICAgIFdl
IG9ubHkgZG8gdGhlIG1pbmlmaWNhdGlvbiBpbiBub24tRGVidWcgY29uZmlndXJhdGlvbnMsIHdo
aWNoCisgICAgICAgIGNhbiBiZSBzZWVuIGJ5IHNldHRpbmcgdGhlIENPTkZJR1VSQVRJT04gZW52
aXJvbm1lbnQgdmFyaWFibGUuCisgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgaG93IHRlc3RzIHdv
dWxkIGdlbmVyYXRlIGRpZmZlcmVudGx5LCBsaWtlIHNvOgorICAgICAgICBzaGVsbD4gQ09ORklH
VVJBVElPTj1SZWxlYXNlIC4vVG9vbHMvU2NyaXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRl
c3RzCisKIDIwMTUtMTItMDkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgSlNDb250ZXh0IFNjcmlwdCBQcm9maWxpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX21vZGVsLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfbW9kZWwucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBkNzY1
ZWNhLi5jNDE2NDU3Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX21vZGVsLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC00OSw2ICs0OSw5IEBAIG11bHRpbGluZUNvbW1l
bnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5T
KQogc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKIGtleVZhbHVlQW5ub3RhdGlvbkNvbW1lbnRSZWdFeHAgPSByZS5j
b21waWxlKHIiXlwvXC8gQChcdyspPShbXj1dKz8pXG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQog
ZmxhZ0Fubm90YXRpb25Db21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIl5cL1wvIEAoXHcrKVte
PV0qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2xpbmVXaXRoT25seVNpbmdsZUxpbmVDb21t
ZW50UmVnRXhwID0gcmUuY29tcGlsZShyIl5ccypcL1wvXG4iLCByZS5NVUxUSUxJTkUgfCByZS5T
KQorbGluZVdpdGhUcmFpbGluZ1NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShy
IlxzKlwvXC9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCittdWx0aXBsZUVtcHR5TGluZXNSZWdF
eHAgPSByZS5jb21waWxlKHIiXG57Mix9IiwgcmUuTVVMVElMSU5FIHwgcmUuUykKIAogY2xhc3Mg
UGFyc2VFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgICBwYXNzCkBAIC0xMDAsNiArMTAzLDExIEBA
IGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGZyb21T
dHJpbmcoZnVuY3Rpb25fc3RyaW5nKToKICAgICAgICAgZnVuY3Rpb25fc291cmNlID0gbXVsdGls
aW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uX3N0cmluZykKKyAgICAgICAgaWYgb3Mu
Z2V0ZW52KCJDT05GSUdVUkFUSU9OIiwgIkRlYnVnIikgIT0gIkRlYnVnIjoKKyAgICAgICAgICAg
IGZ1bmN0aW9uX3NvdXJjZSA9IGxpbmVXaXRoT25seVNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1
YigiIiwgZnVuY3Rpb25fc291cmNlKQorICAgICAgICAgICAgZnVuY3Rpb25fc291cmNlID0gbGlu
ZVdpdGhUcmFpbGluZ1NpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiXG4iLCBmdW5jdGlvbl9z
b3VyY2UpCisgICAgICAgICAgICBmdW5jdGlvbl9zb3VyY2UgPSBtdWx0aXBsZUVtcHR5TGluZXNS
ZWdFeHAuc3ViKCJcbiIsIGZ1bmN0aW9uX3NvdXJjZSkKKwogICAgICAgICBmdW5jdGlvbl9uYW1l
ID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXQogICAgICAg
ICBpc19jb25zdHJ1Y3RvciA9IGZ1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cC5tYXRjaChmdW5j
dGlvbl9zb3VyY2UpICE9IE5vbmUKICAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9y
IHMgaW4gZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBd
LnNwbGl0KCcsJyldCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267383</attachid>
            <date>2015-12-15 11:36:22 -0800</date>
            <delta_ts>2015-12-16 09:31:17 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>take-3.patch</filename>
            <type>text/plain</type>
            <size>2691</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDc1Zjk2MzEuLjZmMjU4NjE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0xMi0xNCAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIEJ1aWx0aW4gc291cmNlIHNob3Vs
ZCBiZSBtaW5pZmllZCBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTIyOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHk6CisgICAgICAg
IChCdWlsdGluRnVuY3Rpb24uZnJvbVN0cmluZyk6CisgICAgICAgIFJlbW92ZSBwcmltYXJpbHkg
ZW1wdHkgbGluZXMgdGhhdCB3b3VsZCBqdXN0IGludHJvZHVjZSBjbHV0dGVyLgorICAgICAgICBX
ZSBvbmx5IGRvIHRoZSBtaW5pZmljYXRpb24gaW4gbm9uLURlYnVnIGNvbmZpZ3VyYXRpb25zLCB3
aGljaAorICAgICAgICBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBDT05GSUdVUkFUSU9OIGVudmlyb25t
ZW50IHZhcmlhYmxlLiBZb3UgY2FuCisgICAgICAgIHNlZSBob3cgdGVzdHMgd291bGQgZ2VuZXJh
dGUgZGlmZmVyZW50bHksIGxpa2Ugc286CisgICAgICAgIHNoZWxsPiBDT05GSUdVUkFUSU9OPVJl
bGVhc2UgLi9Ub29scy9TY3JpcHRzL3J1bi1idWlsdGlucy1nZW5lcmF0b3ItdGVzdHMKKwogMjAx
NS0xMi0wOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEFkZCBKU0NvbnRleHQgU2NyaXB0IFByb2ZpbGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2Rl
bC5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGQ3NjVlY2EuLmNkZDVm
OTAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNf
bW9kZWwucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfbW9kZWwucHkKQEAgLTQ5LDYgKzQ5LDkgQEAgbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9
IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCiBzaW5nbGVM
aW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUg
fCByZS5TKQoga2V5VmFsdWVBbm5vdGF0aW9uQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJe
XC9cLyBAKFx3Kyk9KFtePV0rPylcbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCiBmbGFnQW5ub3Rh
dGlvbkNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXlwvXC8gQChcdyspW149XSo/XG4iLCBy
ZS5NVUxUSUxJTkUgfCByZS5TKQorbGluZVdpdGhPbmx5U2luZ2xlTGluZUNvbW1lbnRSZWdFeHAg
PSByZS5jb21waWxlKHIiXlxzKlwvXC9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitsaW5lV2l0
aFRyYWlsaW5nU2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXHMqXC9cL1xu
IiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK211bHRpcGxlRW1wdHlMaW5lc1JlZ0V4cCA9IHJlLmNv
bXBpbGUociJcbnsyLH0iLCByZS5NVUxUSUxJTkUgfCByZS5TKQogCiBjbGFzcyBQYXJzZUV4Y2Vw
dGlvbihFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTEwMCw2ICsxMDMsMTEgQEAgY2xhc3MgQnVp
bHRpbkZ1bmN0aW9uOgogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgZnJvbVN0cmluZyhmdW5j
dGlvbl9zdHJpbmcpOgogICAgICAgICBmdW5jdGlvbl9zb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50
UmVnRXhwLnN1YigiIiwgZnVuY3Rpb25fc3RyaW5nKQorICAgICAgICBpZiBvcy5nZXRlbnYoIkNP
TkZJR1VSQVRJT04iLCAiRGVidWciKS5zdGFydHN3aXRoKCJEZWJ1ZyIpOgorICAgICAgICAgICAg
ZnVuY3Rpb25fc291cmNlID0gbGluZVdpdGhPbmx5U2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3Vi
KCIiLCBmdW5jdGlvbl9zb3VyY2UpCisgICAgICAgICAgICBmdW5jdGlvbl9zb3VyY2UgPSBsaW5l
V2l0aFRyYWlsaW5nU2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCJcbiIsIGZ1bmN0aW9uX3Nv
dXJjZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uX3NvdXJjZSA9IG11bHRpcGxlRW1wdHlMaW5lc1Jl
Z0V4cC5zdWIoIlxuIiwgZnVuY3Rpb25fc291cmNlKQorCiAgICAgICAgIGZ1bmN0aW9uX25hbWUg
PSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdCiAgICAgICAg
IGlzX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0
aW9uX3NvdXJjZSkgIT0gTm9uZQogICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3Ig
cyBpbiBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0u
c3BsaXQoJywnKV0K
</data>

          </attachment>
      

    </bug>

</bugzilla>