<?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>30240</bug_id>
          
          <creation_ts>2009-10-08 17:10:31 -0700</creation_ts>
          <short_desc>window attributes (like localStorage) that are disabled at runtime are still visible</short_desc>
          <delta_ts>2009-10-13 14:45:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>29896</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Andrew Wilson">atwilson</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>evan</cc>
    
    <cc>fishd</cc>
    
    <cc>jorlow</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>levin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>153576</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-08 17:10:31 -0700</bug_when>
    <thetext>Chrome enables some DOMWindow attributes (like localStorage) at runtime based on command line flags.

However, even when these attributes are supposed to be disabled, they still appear if the client code does something like:

if (&apos;localStorage&apos; in window) {
   // yay, we have localStorage
}

This screws up capabilities detection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153586</commentid>
    <comment_count>1</comment_count>
      <attachid>40922</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-08 18:19:35 -0700</bug_when>
    <thetext>Created attachment 40922
proposed patch

This just contains a single example of how to disable an attribute at runtime (using localStorage).

If this approach is acceptable, we can follow up with a second patch to address the other runtime-enabled APIs.

The changes to CodeGeneratorV8.pm are not as large as they appear - I refactored the guts of GenerateBatchedAttributeData into GenerateSingleBatchedAttribute, which necessitated changing the indentation level, which confused the heck out of diff. But I did not make any significant changes to that code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153587</commentid>
    <comment_count>2</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2009-10-08 18:54:21 -0700</bug_when>
    <thetext>One thing that helps reviews it to write one patch that is just the refactor/whitespace, then a second one that makes structural changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153588</commentid>
    <comment_count>3</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-08 18:58:27 -0700</bug_when>
    <thetext>One other thing that occurs to me is I don&apos;t think I need a mutex controlling the static V8Proxy settings cache, because I think it&apos;s only accessed from within a single thread within a given process. Can anyone confirm/refute this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153604</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-10-08 20:47:11 -0700</bug_when>
    <thetext>I believe that the Settings object is definitely not intended to be accessed from background threads.  I am curious if we will need some locking though for cases where features are exposed to both the main thread and workers.  LocalStorage is not a good test case ;-)

Ideally, we should just have a copy of the booleans living on each worker thread so that no locking is required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153618</commentid>
    <comment_count>5</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-08 23:28:48 -0700</bug_when>
    <thetext>In reply to comment #4)
&gt; I believe that the Settings object is definitely not intended to be accessed
&gt; from background threads.  I am curious if we will need some locking though for
&gt; cases where features are exposed to both the main thread and workers. 
&gt; LocalStorage is not a good test case ;-)
&gt; 
&gt; Ideally, we should just have a copy of the booleans living on each worker
&gt; thread so that no locking is required.

There&apos;s currently only one runtime-enabled API for workers (notifications) and I&apos;m not sure it&apos;s actually disabled currently (I don&apos;t see any code that would disable it). I&apos;ll follow up with johnnyg about this.

I think the simplest solution for Chrome is just to have a static global set of booleans that are initialized at process startup. Since these flags don&apos;t/can&apos;t change after process startup anyway, that&apos;s probably a better solution than keeping multiple copies around. 

It occurs to me that some of these flags (like localStorageEnabled()) need to stay in WebCore::Settings, since they are exposed outside of WebCore (e.g. WebKit/mac/WebView). I&apos;m not sure what the right fix is there.

It sounds like exposing command line flags/settings in a way that they can be accessed from any thread within WebKit should be the subject of another patch, as it&apos;s outside the scope of what I&apos;m trying to accomplish (demonstrate the correct way to disable an attribute at runtime via the V8 bindings).

Since people seem to like my approach to updating the V8 bindings, I&apos;m going to change this patch to:

1) Get rid of the static cache of Settings in V8Proxy, since it sounds like that&apos;s the wrong approach (isn&apos;t thread safe)
2) Remove EnabledAtRuntime from DOMWindow.localStorage
3) Add EnabledAtRuntime to DOMWindow.audio
4) Modify the V8 bindings appropriately to disable DOMWindow.audio if MediaPlayer::isAvailable() returns false.

This gets my V8 change into the tree, and gives everyone an example of how to properly disable a V8 API at runtime in a way that doesn&apos;t depend on whatever solution we come up with for exposing command line flags. 

I can log a separate bug for that issue, as we need to address that before things like WebSockets and Databases can be properly disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153800</commentid>
    <comment_count>6</comment_count>
      <attachid>40972</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-09 16:18:11 -0700</bug_when>
    <thetext>Created attachment 40972
Pulled the refactoring of GenerateBatchedAttributeData into a separate patch

As requested, pulled the refactoring of GenerateBatchedAttributeData into two functions into its own patch, to make the whole patch simpler to review. Tragically, diff is still confused by this patch, so it&apos;s not obvious that 95% of this is just a whitespace change caused by changing the indentation level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153801</commentid>
    <comment_count>7</comment_count>
      <attachid>40973</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-09 16:20:17 -0700</bug_when>
    <thetext>Created attachment 40973
Added support for EnabledAtRuntime attribute, and set this attr on the DOMWindow.Audio attribute.

I didn&apos;t want to open up the &quot;how to we pull localStorage/etc out of WebCore::Settings&quot; can of worms in this patch, so I instead used DOMWindow.Audio as my example, since it has a cleaner, thread-safe, static interface I can use to determine whether window.Audio should be enabled or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153811</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-10-09 16:40:49 -0700</bug_when>
    <thetext>The non-refactoring patch LGTM minus the following comments:

&gt; diff --git a/WebCore/bindings/scripts/CodeGeneratorV8.pm b/WebCore/bindings/scripts/CodeGeneratorV8.pm
&gt; index c2d3bab..0ec9252 100644
&gt; --- a/WebCore/bindings/scripts/CodeGeneratorV8.pm
&gt; +++ b/WebCore/bindings/scripts/CodeGeneratorV8.pm
&gt; @@ -1185,17 +1185,21 @@ sub GenerateImplementation
&gt;      # For the DOMWindow interface we partition the attributes into the
&gt;      # ones that disallows shadowing and the rest.
&gt;      my @disallows_shadowing;
&gt; +    # Also separate out attributes that are enabled at runtime so we can process them specially.
&gt; +    my @enabled_at_runtime;
&gt;      my @normal;
&gt; -    if ($interfaceName eq &quot;DOMWindow&quot;) {
&gt; -        foreach my $attribute (@$attributes) {
&gt; -            if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;V8DisallowShadowing&quot;}) {
&gt; -                push(@disallows_shadowing, $attribute);
&gt; -            } else {
&gt; -                push(@normal, $attribute);
&gt; -            }
&gt; +    foreach my $attribute (@$attributes) {
&gt; +        if ($interfaceName eq &quot;DOMWindow&quot; &amp;&amp; $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;V8DisallowShadowing&quot;}) {
&gt; +            push(@disallows_shadowing, $attribute);
&gt; +        } elsif ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;EnabledAtRuntime&quot;}) {

Is it an error if both EnabledAtRuntime and V8DisallowShadowing are enabled?


&gt; diff --git a/WebCore/bindings/v8/custom/V8CustomBinding.h b/WebCore/bindings/v8/custom/V8CustomBinding.h
&gt; index 2ff4ea9..88d2dc1 100644
&gt; --- a/WebCore/bindings/v8/custom/V8CustomBinding.h
&gt; +++ b/WebCore/bindings/v8/custom/V8CustomBinding.h
&gt; @@ -78,6 +78,9 @@ struct NPObject;
&gt;      bool V8Custom::v8##NAME##IndexedSecurityCheck(v8::Local&lt;v8::Object&gt; host, \
&gt;          uint32_t index, v8::AccessType type, v8::Local&lt;v8::Value&gt; data)
&gt;  
&gt; +#define ACCESSOR_RUNTIME_ENABLER(NAME) \
&gt; +    bool V8Custom::v8##NAME##Enabled()
&gt; +

This could probably just be on one line.

&gt;  namespace WebCore {
&gt;  
&gt;      class DOMWindow;
&gt; @@ -232,6 +235,9 @@ namespace WebCore {
&gt;      static bool v8##NAME##IndexedSecurityCheck(v8::Local&lt;v8::Object&gt; host, \
&gt;          uint32_t index, v8::AccessType type, v8::Local&lt;v8::Value&gt; data)
&gt;  
&gt; +#define DECLARE_ACCESSOR_RUNTIME_ENABLER(NAME) \
&gt; +    static bool v8##NAME##Enabled()
&gt; +

This could probably just be on one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153816</commentid>
    <comment_count>9</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-09 17:21:58 -0700</bug_when>
    <thetext>(In reply to comment #8)

&gt; 
&gt; Is it an error if both EnabledAtRuntime and V8DisallowShadowing are enabled?
&gt; 

Technically yes.

In reality, the &quot;disallowShadowing&quot; attributes are a small fixed set (location, top, window, opener) that aren&apos;t going to change in the future so people aren&apos;t going to add both.

If there&apos;s some way to generate an error within the code generator, I&apos;d be happy to add an error here - I couldn&apos;t see any good way to do it, and there are plenty of other fringe cases in the codegen that aren&apos;t treated as errors, so I think this is good enough.

I&apos;ll clean up the other two nits you mentioned (combine them into one line).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153817</commentid>
    <comment_count>10</comment_count>
      <attachid>40976</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-09 17:23:28 -0700</bug_when>
    <thetext>Created attachment 40976
Addressed jorlow&apos;s style suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153954</commentid>
    <comment_count>11</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-11 17:12:57 -0700</bug_when>
    <thetext>Accidentally closed the wrong bug - reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154208</commentid>
    <comment_count>12</comment_count>
      <attachid>40976</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-10-12 17:21:15 -0700</bug_when>
    <thetext>Comment on attachment 40976
Addressed jorlow&apos;s style suggestions.

Overall, this looks good, couple of nits:

&gt;      my @disallows_shadowing;
&gt; +    # Also separate out attributes that are enabled at runtime so we can process them specially.
&gt; +    my @enabled_at_runtime;

both should be @disallowsShadowing and @enabledAtRuntime. Sorry for making you refactor old code, but those are style-boogers we shouldn&apos;t have, so it&apos;s a good thing :)

&gt;  
&gt; +    # Setup the enable-at-runtime attrs if we have them
&gt; +    foreach my $runtime_attr (@enabled_at_runtime) {
&gt; +        $enable_function = $interfaceName . $codeGenerator-&gt;WK_ucfirst($runtime_attr-&gt;signature-&gt;name);

Ditto.

&gt; +        my $conditionalString = GenerateConditionalString($runtime_attr-&gt;signature);
&gt; +        push(@implContent, &quot;\n#if ${conditionalString}\n&quot;) if $conditionalString;
&gt; +        push(@implContent, &quot;  if (V8Custom::v8${enable_function}Enabled()) {\n&quot;);

4 spaces even in generated code :)

&gt; +#define ACCESSOR_RUNTIME_ENABLER(NAME) bool V8Custom::v8##NAME##Enabled()

I was envisioning something of a one-place structure, which can be queried for a feature, but I guess this is ok, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154218</commentid>
    <comment_count>13</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-12 17:54:45 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; 
&gt; &gt; +#define ACCESSOR_RUNTIME_ENABLER(NAME) bool V8Custom::v8##NAME##Enabled()
&gt; 
&gt; I was envisioning something of a one-place structure, which can be queried for
&gt; a feature, but I guess this is ok, too.

I did it this way because some attributes that we may want to hide (like window.Audio)  may not map directly to a static boolean (for example, window.Audio depends on MediaPlayer.isAvailable() which does a runtime check for installed codecs).

Given that not many attributes are likely to be runtime enabled (just stuff that&apos;s under development), the extra flexibility seemed worth the cost. If you feel strongly about this, I don&apos;t mind updating the codegen again once we have a global structure for these settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154223</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-10-12 18:00:32 -0700</bug_when>
    <thetext>No, I don&apos;t feel strongly about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154252</commentid>
    <comment_count>15</comment_count>
      <attachid>41081</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-12 21:42:37 -0700</bug_when>
    <thetext>Created attachment 41081
patch addressing dglazkov&apos;s comments

OK, updated the whitespace (since GenerateSingleBatchedAttribute needed to support two different levels of indentation depending on its calling context, it now takes an indent parameter). The generated file now seems to adhere to the WebKit style guidelines (at least the parts generated by my new code :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154388</commentid>
    <comment_count>16</comment_count>
      <attachid>41081</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-10-13 12:21:43 -0700</bug_when>
    <thetext>Comment on attachment 41081
patch addressing dglazkov&apos;s comments

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +        window attributes (like localStorage) that are disabled at runtime are still visible

&quot;DOMWindow properties&quot; sounds a bit better than &quot;window attributes&quot;.

r=me otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154405</commentid>
    <comment_count>17</comment_count>
      <attachid>41120</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-13 13:19:24 -0700</bug_when>
    <thetext>Created attachment 41120
Combined two patches into a single one.

Re-combined the two patches into a single one for ease of landing/reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154406</commentid>
    <comment_count>18</comment_count>
      <attachid>41120</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-10-13 13:22:28 -0700</bug_when>
    <thetext>Comment on attachment 41120
Combined two patches into a single one.

r=me. Godspeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154439</commentid>
    <comment_count>19</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-10-13 14:45:13 -0700</bug_when>
    <thetext>Landed as r49510.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40922</attachid>
            <date>2009-10-08 18:19:35 -0700</date>
            <delta_ts>2009-10-09 16:18:11 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>21965</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmQ1OTFlOC4uMzFlY2EzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAwOS0xMC0wOCAgRHJldyBXaWxzb24g
IDxhdHdpbHNvbkBhdHdpbHNvbi1tYWNwcm8ubG9jYWw+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2luZG93IGF0dHJpYnV0ZXMgKGxpa2UgbG9jYWxT
dG9yYWdlKSB0aGF0IGFyZSBkaXNhYmxlZCBhdCBydW50aW1lIGFyZSBzdGlsbCB2aXNpYmxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI0MAorCisg
ICAgICAgIEFkZGluZyBjb2RlZ2VuL2JpbmRpbmdzIHRvIHN1cHBvcnQgcnVudGltZSBkaXNhYmxp
bmcgb2YgYXR0cmlidXRlcworCisgICAgICAgIE5vIG5ldyB0ZXN0cyAob25seSBzdXBwb3J0ZWQg
YnkgY2hyb21lIGN1cnJlbnRseSkKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtOgorICAgICAgICBSZWZhY3RvcmVkIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0
ZURhdGEgdG8gYWxsb3cgZ2VuZXJhdGluZyBhIHNpbmdsZSBCYXRjaGVkQXR0cmlidXRlIHN0cnVj
dC4KKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEVuYWJsZWRBdFJ1bnRpbWUgZXh0ZW5k
ZWQgYXR0cmlidXRlLCB3aGljaCBnZW5lcmF0ZXMgYSBjYWxsIHRvIHRoZSBhcHByb3ByaWF0ZSBY
WFhYRW5hYmxlZCgpIEFQSSBiZWZvcmUgYWRkaW5nIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGluc3Rh
bmNlLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKToKKyAgICAgICAgUmVmYWN0b3JlZCBhdHRyaWJ1
dGUgc2V0dGluZyBjb2RlIGludG8gYSBjb21tb24gaW5saW5lIHJvdXRpbmUuCisgICAgICAgIChX
ZWJDb3JlOjpWOFByb3h5Ojppbml0Q29udGV4dElmTmVlZGVkKToKKyAgICAgICAgQWRkZWQgY2Fs
bCB0byBpbml0U2V0dGluZ3NDYWNoZUlmTmVlZGVkKCkuCisgICAgICAgIChXZWJDb3JlOjpnZXRT
ZXR0aW5nc0NhY2hlTXV0ZXgpOgorICAgICAgICBHcmFicyB0aGUgc2V0dGluZ3NDYWNoZU11dGV4
IHNpbmdsZXRvbiB0byBlbnN1cmUgdGhlIHNldHRpbmdzIGNhY2hlIGlzIG9ubHkgaW5pdGlhbGl6
ZWQgb25jZS4KKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmluaXRTZXR0aW5nc0NhY2hlSWZO
ZWVkZWQpOgorICAgICAgICBJbml0aWFsaXplcyB0aGUgc3RhdGljIHNldHRpbmdzIGNhY2hlIGV4
YWN0bHkgb25jZSB3aGVuIHRoZSBmaXJzdCBjb250ZXh0IGlzIGJ1aWx0LgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbmZpZ3VyZUF0dHJpYnV0
ZSk6CisgICAgICAgIElubGluZSBmdW5jdGlvbiB3aGljaCBjb25maWd1cmVzIGEgc2luZ2xlIGF0
dHJpYnV0ZSBnaXZlbiBhIEJhdGNoZWRBdHRyaWJ1dGUgc3RydWN0LgorICAgICAgICAoV2ViQ29y
ZTo6VjhQcm94eTo6bG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAgIEZldGNoZXMgdGhlIGNh
Y2hlZCB2ZXJzaW9uIG9mIHRoZSBsb2NhbFN0b3JhZ2VFbmFibGVkIHNldHRpbmcuCisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oOgorICAgICAgICBBZGRlZCAo
REVDTEFSRV8pQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSIHRvIGFsbG93IGVuYWJsaW5nIGF0dHJp
YnV0ZXMgYXQgcnVudGltZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwOgorICAgICAgICBBZGRlZCBjb2RlIHRvIGVuYWJsZSB3aW5kb3cubG9jYWxT
dG9yYWdlIGlmIGl0IGlzIGVuYWJsZWQgaW4gc2V0dGluZ3MuCisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorICAgICAgICBBZGRlZCBbRW5hYmxlZEF0UnVudGltZV0gZXh0ZW5kZWQgYXR0
cmlidXRlIHRvIHRoZSBsb2NhbFN0b3JhZ2UgYXR0cmlidXRlLgorCiAyMDA5LTEwLTA3ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1
aWxkIGZpeCBmb3IgV2luZG93cyAoQ2Fpcm8pLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZDgzYjBlZi4uZjgwMzAxNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC05NDQsMTI0ICs5NDQsMTMzIEBA
IHN1YiBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhCiAgICAgbXkgJGF0dHJpYnV0ZXMgPSBz
aGlmdDsKIAogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQCRhdHRyaWJ1dGVzKSB7Ci0gICAg
ICAgIG15ICRhdHRyTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKLSAgICAgICAg
bXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsK
LQotICAgICAgICBteSAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6REVGQVVMVCI7Ci0gICAgICAgIGlm
ICgkYXR0ckV4dC0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHlPbkdldCJ9KSB7Ci0gICAgICAg
ICAgICAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6QUxMX0NBTl9SRUFEIjsKLSAgICAgICAgfSBlbHNp
ZiAoJGF0dHJFeHQtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5T25TZXQifSkgewotICAgICAg
ICAgICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fV1JJVEUiOwotICAgICAgICB9IGVs
c2lmICgkYXR0ckV4dC0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSkgewotICAgICAgICAg
ICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fUkVBRCI7Ci0gICAgICAgICAgICBpZiAo
ISgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKSAmJiAhKCRhdHRyRXh0LT57IlY4UmVh
ZE9ubHkifSkpIHsKLSAgICAgICAgICAgICAgICAkYWNjZXNzQ29udHJvbCAuPSAifHY4OjpBTExf
Q0FOX1dSSVRFIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoJGF0dHJF
eHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Ci0gICAgICAgICAgICAkYWNjZXNzQ29udHJv
bCAuPSAifHY4OjpQUk9ISUJJVFNfT1ZFUldSSVRJTkciOwotICAgICAgICB9Ci0gICAgICAgICRh
Y2Nlc3NDb250cm9sID0gInN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPigiIC4gJGFjY2Vz
c0NvbnRyb2wgLiAiKSI7Ci0KLSAgICAgICAgbXkgJGN1c3RvbUFjY2Vzc29yID0KLSAgICAgICAg
ICAgICRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8Ci0gICAgICAgICAgICAkYXR0ckV4dC0+eyJDdXN0
b21TZXR0ZXIifSB8fAotICAgICAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0gfHwK
LSAgICAgICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0gfHwKLSAgICAgICAgICAgICRhdHRy
RXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwKLSAgICAgICAgICAgICRhdHRyRXh0LT57IlY4Q3Vz
dG9tR2V0dGVyIn0gfHwKLSAgICAgICAgICAgICIiOwotICAgICAgICBpZiAoJGN1c3RvbUFjY2Vz
c29yIGVxIDEpIHsKLSAgICAgICAgICAgICMgdXNlIHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50
ZXJmYWNlICsgKGNhcGl0YWxpemUpIGF0dHIgbmFtZQotICAgICAgICAgICAgJGN1c3RvbUFjY2Vz
c29yID0gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0ck5h
bWUpOwotICAgICAgICB9CisgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRl
Q29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOworICAgICAgICBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVy
ZmFjZU5hbWUsICRhdHRyaWJ1dGUsICIsIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
XG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKKyAgICB9Cit9CiAKLSAgICAgICAgbXkgJGdldHRlcjsKLSAgICAgICAgbXkgJHNldHRlcjsK
LSAgICAgICAgbXkgJHByb3BBdHRyID0gInY4OjpOb25lIjsKLSAgICAgICAgbXkgJGhhc0N1c3Rv
bVNldHRlciA9IDA7CitzdWIgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlCit7CisgICAg
bXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKKyAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7Cisg
ICAgbXkgJGRlbGltaXRlciA9IHNoaWZ0OworICAgIG15ICRhdHRyTmFtZSA9ICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+bmFtZTsKKyAgICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwogCi0gICAgICAgICMgQ2hlY2sgYXR0cmlidXRlcy4KLSAg
ICAgICAgaWYgKCRhdHRyRXh0LT57IkRvbnRFbnVtIn0pIHsKLSAgICAgICAgICAgICRwcm9wQXR0
ciAuPSAifHY4OjpEb250RW51bSI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57
IlY4RGlzYWxsb3dTaGFkb3dpbmcifSkgewotICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6
OkRvbnREZWxldGUiOworICAgIG15ICRhY2Nlc3NDb250cm9sID0gInY4OjpERUZBVUxUIjsKKyAg
ICBpZiAoJGF0dHJFeHQtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5T25HZXQifSkgeworICAg
ICAgICAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6QUxMX0NBTl9SRUFEIjsKKyAgICB9IGVsc2lmICgk
YXR0ckV4dC0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHlPblNldCJ9KSB7CisgICAgICAgICRh
Y2Nlc3NDb250cm9sID0gInY4OjpBTExfQ0FOX1dSSVRFIjsKKyAgICB9IGVsc2lmICgkYXR0ckV4
dC0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSkgeworICAgICAgICAkYWNjZXNzQ29udHJv
bCA9ICJ2ODo6QUxMX0NBTl9SRUFEIjsKKyAgICAgICAgaWYgKCEoJGF0dHJpYnV0ZS0+dHlwZSA9
fiAvXnJlYWRvbmx5LykgJiYgISgkYXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pKSB7CisgICAgICAg
ICAgICAkYWNjZXNzQ29udHJvbCAuPSAifHY4OjpBTExfQ0FOX1dSSVRFIjsKICAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7CisgICAg
ICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OlBST0hJQklUU19PVkVSV1JJVElORyI7CisgICAg
fQorICAgICRhY2Nlc3NDb250cm9sID0gInN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPigi
IC4gJGFjY2Vzc0NvbnRyb2wgLiAiKSI7CiAKLSAgICAgICAgbXkgJG9uX3Byb3RvID0gIjAgLyog
b24gaW5zdGFuY2UgKi8iOwotICAgICAgICBteSAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OklOVkFM
SURfQ0xBU1NfSU5ERVggLyogbm8gZGF0YSAqLyI7CisgICAgbXkgJGN1c3RvbUFjY2Vzc29yID0K
KyAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwKKyAgICAgICAgJGF0dHJFeHQtPnsiQ3Vz
dG9tU2V0dGVyIn0gfHwKKyAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0gfHwKKyAg
ICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8fAorICAgICAgICAkYXR0ckV4dC0+eyJWOEN1
c3RvbVNldHRlciJ9IHx8CisgICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVyIn0gfHwK
KyAgICAgICAgIiI7CisgICAgaWYgKCRjdXN0b21BY2Nlc3NvciBlcSAxKSB7CisgICAgICAgICMg
dXNlIHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50ZXJmYWNlICsgKGNhcGl0YWxpemUpIGF0dHIg
bmFtZQorICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyTmFtZSk7CisgICAgfQogCi0gICAgICAgICMgQ29uc3Ry
dWN0b3IKLSAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3Ry
dWN0b3IkLykgewotICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRjb2RlR2VuZXJh
dG9yLT5TdHJpcE1vZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOwotICAgICAgICAg
ICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOwotICAgICAgICAgICAgbXkg
JGNvbnN0cnVjdG9ySW5kZXggPSB1YygkY29uc3RydWN0b3JUeXBlKTsKLSAgICAgICAgICAgIGlm
ICgkY3VzdG9tQWNjZXNzb3IpIHsKLSAgICAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9t
Ojp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OiR7Y29uc3RydWN0b3JJ
bmRleH0iOwotICAgICAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVy
bmFsOjoke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JHZXR0ZXIiOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKLSAgICAgICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6
UmVhZE9ubHkiOworICAgIG15ICRnZXR0ZXI7CisgICAgbXkgJHNldHRlcjsKKyAgICBteSAkcHJv
cEF0dHIgPSAidjg6Ok5vbmUiOworICAgIG15ICRoYXNDdXN0b21TZXR0ZXIgPSAwOwogCi0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAjIERlZmF1bHQgR2V0dGVyIGFuZCBTZXR0ZXIKLSAg
ICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1l
fUF0dHJHZXR0ZXIiOwotICAgICAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50
ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7Ci0KLSAgICAgICAgICAgICMgQ3VzdG9tIFNl
dHRlcgotICAgICAgICAgICAgaWYgKCRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRy
RXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJF
eHQtPnsiVjhDdXN0b20ifSkgewotICAgICAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAx
OwotICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nv
cn1BY2Nlc3NvclNldHRlciI7Ci0gICAgICAgICAgICB9CisgICAgIyBDaGVjayBhdHRyaWJ1dGVz
LgorICAgIGlmICgkYXR0ckV4dC0+eyJEb250RW51bSJ9KSB7CisgICAgICAgICRwcm9wQXR0ciAu
PSAifHY4OjpEb250RW51bSI7CisgICAgfQorICAgIGlmICgkYXR0ckV4dC0+eyJWOERpc2FsbG93
U2hhZG93aW5nIn0pIHsKKyAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OkRvbnREZWxldGUiOwor
ICAgIH0KIAotICAgICAgICAgICAgIyBDdXN0b20gR2V0dGVyCi0gICAgICAgICAgICBpZiAoJGF0
dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJF
eHQtPnsiVjhDdXN0b20ifSkgewotICAgICAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206
OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvckdldHRlciI7Ci0gICAgICAgICAgICB9CisgICAg
bXkgJG9uX3Byb3RvID0gIjAgLyogb24gaW5zdGFuY2UgKi8iOworICAgIG15ICRkYXRhID0gIlY4
Q2xhc3NJbmRleDo6SU5WQUxJRF9DTEFTU19JTkRFWCAvKiBubyBkYXRhICovIjsKKworICAgICMg
Q29uc3RydWN0b3IKKyAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25z
dHJ1Y3RvciQvKSB7CisgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkY29kZUdlbmVyYXRv
ci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgJGNv
bnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOworICAgICAgICBteSAkY29uc3RydWN0
b3JJbmRleCA9IHVjKCRjb25zdHJ1Y3RvclR5cGUpOworICAgICAgICBpZiAoJGN1c3RvbUFjY2Vz
c29yKSB7CisgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNz
b3J9QWNjZXNzb3JHZXR0ZXIiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGRhdGEg
PSAiVjhDbGFzc0luZGV4Ojoke2NvbnN0cnVjdG9ySW5kZXh9IjsKKyAgICAgICAgICAgICRnZXR0
ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0
b3JHZXR0ZXIiOwogICAgICAgICB9CisgICAgICAgICRzZXR0ZXIgPSAiMCI7CisgICAgICAgICRw
cm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHkiOwogCi0gICAgICAgICMgUmVwbGFjZWFibGUKLSAgICAg
ICAgaWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0gJiYgISRoYXNDdXN0b21TZXR0ZXIpIHsK
LSAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0gICAgICAgICAgICAjIEhhbmRsZSB0aGUgc3Bl
Y2lhbCBjYXNlIG9mIHdpbmRvdy50b3AgYmVpbmcgbWFya2VkIGFzIFJlcGxhY2VhYmxlLgotICAg
ICAgICAgICAgIyBGSVhNRTogSW52ZXN0aWdhdGUgd2hldGhlciB3ZSBjb3VsZCB0cmVhdCB3aW5k
b3cudG9wIGFzIHJlcGxhY2VhYmxlIAotICAgICAgICAgICAgIyBhbmQgYWxsb3cgc2hhZG93aW5n
IHdpdGhvdXQgaXQgYmVpbmcgYSBzZWN1cml0eSBob2xlLgotICAgICAgICAgICAgaWYgKCEoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgYW5kICRhdHRyTmFtZSBlcSAidG9wIikpIHsgCi0g
ICAgICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OlJlYWRPbmx5IjsKLSAgICAgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICAjIERlZmF1bHQgR2V0dGVyIGFuZCBTZXR0ZXIKKyAg
ICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0
ckdldHRlciI7CisgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjok
e2F0dHJOYW1lfUF0dHJTZXR0ZXIiOworCisgICAgICAgICMgQ3VzdG9tIFNldHRlcgorICAgICAg
ICBpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b21T
ZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9
KSB7CisgICAgICAgICAgICAkaGFzQ3VzdG9tU2V0dGVyID0gMTsKKyAgICAgICAgICAgICRzZXR0
ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7CiAgICAg
ICAgIH0KIAotICAgICAgICAjIFJlYWQgb25seSBhdHRyaWJ1dGVzCi0gICAgICAgIGlmICgkYXR0
cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvIHx8ICRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkg
ewotICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICAgICAgIyBDdXN0b20gR2V0dGVyCisg
ICAgICAgIGlmICgkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0
b20ifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9KSB7CisgICAgICAgICAgICAkZ2V0dGVyID0g
IlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwogICAgICAgICB9
CisgICAgfQogCi0gICAgICAgICMgQW4gYWNjZXNzb3IgY2FuIGJlIGluc3RhbGxlZCBvbiB0aGUg
cHJvdG8KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57InY4T25Qcm90byJ9KSB7Ci0gICAgICAgICAg
ICAkb25fcHJvdG8gPSAiMSAvKiBvbiBwcm90byAqLyI7CisgICAgIyBSZXBsYWNlYWJsZQorICAg
IGlmICgkYXR0ckV4dC0+eyJSZXBsYWNlYWJsZSJ9ICYmICEkaGFzQ3VzdG9tU2V0dGVyKSB7Cisg
ICAgICAgICRzZXR0ZXIgPSAiMCI7CisgICAgICAgICMgSGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ug
b2Ygd2luZG93LnRvcCBiZWluZyBtYXJrZWQgYXMgUmVwbGFjZWFibGUuCisgICAgICAgICMgRklY
TUU6IEludmVzdGlnYXRlIHdoZXRoZXIgd2UgY291bGQgdHJlYXQgd2luZG93LnRvcCBhcyByZXBs
YWNlYWJsZQorICAgICAgICAjIGFuZCBhbGxvdyBzaGFkb3dpbmcgd2l0aG91dCBpdCBiZWluZyBh
IHNlY3VyaXR5IGhvbGUuCisgICAgICAgIGlmICghKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5k
b3ciIGFuZCAkYXR0ck5hbWUgZXEgInRvcCIpKSB7CisgICAgICAgICAgICAkcHJvcEF0dHIgLj0g
Inx2ODo6UmVhZE9ubHkiOwogICAgICAgICB9CisgICAgfQogCi0gICAgICAgIG15ICRjb21tZW50
SW5mbyA9ICJBdHRyaWJ1dGUgJyRhdHRyTmFtZScgKFR5cGU6ICciIC4gJGF0dHJpYnV0ZS0+dHlw
ZSAuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInIEV4dEF0dHI6ICciIC4gam9pbignICcs
IGtleXMoJXskYXR0ckV4dH0pKSAuICInKSI7Ci0gICAgICAgIAotICAgICAgICBteSAkY29uZGl0
aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSk7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAjIFJlYWQgb25seSBhdHRyaWJ1
dGVzCisgICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8gfHwgJGF0dHJFeHQt
PnsiVjhSZWFkT25seSJ9KSB7CisgICAgICAgICRzZXR0ZXIgPSAiMCI7CisgICAgfQogCi0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gIC8vICRjb21tZW50SW5mbwotICB7ICIk
YXR0ck5hbWUiLAotICAgICRnZXR0ZXIsCi0gICAgJHNldHRlciwKLSAgICAkZGF0YSwKLSAgICAk
YWNjZXNzQ29udHJvbCwKLSAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRw
cm9wQXR0ciksCi0gICAgJG9uX3Byb3RvIH0sCi1FTkQKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOworICAgICMgQW4gYWNjZXNzb3IgY2FuIGJlIGluc3RhbGxlZCBvbiB0aGUgcHJvdG8K
KyAgICBpZiAoJGF0dHJFeHQtPnsidjhPblByb3RvIn0pIHsKKyAgICAgICAgJG9uX3Byb3RvID0g
IjEgLyogb24gcHJvdG8gKi8iOwogICAgIH0KKworICAgIG15ICRjb21tZW50SW5mbyA9ICJBdHRy
aWJ1dGUgJyRhdHRyTmFtZScgKFR5cGU6ICciIC4gJGF0dHJpYnV0ZS0+dHlwZSAuCisgICAgICAg
ICAgICAgICAgICAgICAgIicgRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0
fSkpIC4gIicpIjsKKworICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgeworICAg
ICAgLy8gJGNvbW1lbnRJbmZvCisgICAgICAiJGF0dHJOYW1lIiwKKyAgICAgICRnZXR0ZXIsCisg
ICAgICAkc2V0dGVyLAorICAgICAgJGRhdGEsCisgICAgICAkYWNjZXNzQ29udHJvbCwKKyAgICAg
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BBdHRyKSwKKyAgICAgICRv
bl9wcm90bworICAgIH0kZGVsaW1pdGVyCitFTkQKIH0KIAogCkBAIC0xMTc3LDE3ICsxMTg2LDIx
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgIyBGb3IgdGhlIERPTVdpbmRvdyBp
bnRlcmZhY2Ugd2UgcGFydGl0aW9uIHRoZSBhdHRyaWJ1dGVzIGludG8gdGhlCiAgICAgIyBvbmVz
IHRoYXQgZGlzYWxsb3dzIHNoYWRvd2luZyBhbmQgdGhlIHJlc3QuCiAgICAgbXkgQGRpc2FsbG93
c19zaGFkb3dpbmc7CisgICAgIyBBbHNvIHNlcGFyYXRlIG91dCBhdHRyaWJ1dGVzIHRoYXQgYXJl
IGVuYWJsZWQgYXQgcnVudGltZSBzbyB3ZSBjYW4gcHJvY2VzcyB0aGVtIHNwZWNpYWxseS4KKyAg
ICBteSBAZW5hYmxlZF9hdF9ydW50aW1lOwogICAgIG15IEBub3JtYWw7Ci0gICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0
ZSAoQCRhdHRyaWJ1dGVzKSB7Ci0gICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAZGlzYWxsb3dzX3NoYWRvd2luZywgJGF0dHJpYnV0ZSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQG5vcm1hbCwgJGF0dHJpYnV0ZSk7
Ci0gICAgICAgICAgICB9CisgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAJGF0dHJpYnV0ZXMp
IHsKKyAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciICYmICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4RGlzYWxsb3dTaGFkb3dpbmci
fSkgeworICAgICAgICAgICAgcHVzaChAZGlzYWxsb3dzX3NoYWRvd2luZywgJGF0dHJpYnV0ZSk7
CisgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkVuYWJsZWRBdFJ1bnRpbWUifSkgeworICAgICAgICAgICAgcHVzaChAZW5hYmxlZF9h
dF9ydW50aW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1
c2goQG5vcm1hbCwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgIyBQdXQgdGhlIGF0
dHJpYnV0ZXMgdGhhdCBkaXNhbGxvdyBzaGFkb3dpbmcgb24gdGhlIHNoYWRvdyBvYmplY3QuCi0g
ICAgICAgICRhdHRyaWJ1dGVzID0gXEBub3JtYWw7CisgICAgfQorICAgICRhdHRyaWJ1dGVzID0g
XEBub3JtYWw7CisgICAgIyBQdXQgdGhlIGF0dHJpYnV0ZXMgdGhhdCBkaXNhbGxvdyBzaGFkb3dp
bmcgb24gdGhlIHNoYWRvdyBvYmplY3QuCisgICAgaWYgKEBkaXNhbGxvd3Nfc2hhZG93aW5nKSB7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1
dGUgc2hhZG93X2F0dHJzW10gPSB7XG4iKTsKICAgICAgICAgR2VuZXJhdGVCYXRjaGVkQXR0cmli
dXRlRGF0YSgkZGF0YU5vZGUsIFxAZGlzYWxsb3dzX3NoYWRvd2luZyk7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifTtcbiIpOwpAQCAtMTI3MSw2ICsxMjg0LDIxIEBAIEVORAogRU5ECiAg
ICAgfQogCisgICAgIyBTZXR1cCB0aGUgZW5hYmxlLWF0LXJ1bnRpbWUgYXR0cnMgaWYgd2UgaGF2
ZSB0aGVtCisgICAgZm9yZWFjaCBteSAkcnVudGltZV9hdHRyIChAZW5hYmxlZF9hdF9ydW50aW1l
KSB7CisgICAgICAgICRlbmFibGVfZnVuY3Rpb24gPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRydW50aW1lX2F0dHItPnNpZ25hdHVyZS0+bmFtZSk7CisgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJHJ1
bnRpbWVfYXR0ci0+c2lnbmF0dXJlKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgaWYgKFY4Q3VzdG9tOjp2OCR7ZW5hYmxlX2Z1bmN0aW9u
fUVuYWJsZWQoKSkge1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRp
YyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID0gIik7CisgICAgICAgIEdlbmVyYXRl
U2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlTmFtZSwgJHJ1bnRpbWVfYXR0ciwgIjsi
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICBjb25maWd1cmVBdHRy
aWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CisgIH0KK0VORAorICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CisgICAgfQorCiAgICAgIyBEZWZpbmUgb3VyIGZ1bmN0aW9ucyB3
aXRoIFNldCgpIG9yIFNldEFjY2Vzc29yKCkKICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHsk
ZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKICAgICAgICAgbXkgJGF0dHJFeHQgPSAkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFByb3h5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5k
ZXggNTY2NGViZC4uN2JmMDQyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCkBAIC02NywyMCAr
NjcsMTYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IFY4UHJveHk6Om1fdXRpbGl0eUNv
bnRleHQ7CiAvLyBTdGF0aWMgbGlzdCBvZiByZWdpc3RlcmVkIGV4dGVuc2lvbnMKIFY4RXh0ZW5z
aW9ucyBWOFByb3h5OjptX2V4dGVuc2lvbnM7CiAKKy8vIENhY2hlZCB2YWx1ZXMgZnJvbSBzZXR0
aW5ncworYm9vbCBWOFByb3h5OjptX2xvY2FsU3RvcmFnZUVuYWJsZWQgPSBmYWxzZTsKKwogY29u
c3QgY2hhciogVjhQcm94eTo6a0NvbnRleHREZWJ1Z0RhdGFUeXBlID0gInR5cGUiOwogY29uc3Qg
Y2hhciogVjhQcm94eTo6a0NvbnRleHREZWJ1Z0RhdGFWYWx1ZSA9ICJ2YWx1ZSI7CiAKIHZvaWQg
YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBp
bnN0YW5jZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvLCBjb25zdCBCYXRj
aGVkQXR0cmlidXRlKiBhdHRyaWJ1dGVzLCBzaXplX3QgYXR0cmlidXRlQ291bnQpCiB7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudDsgKytpKSB7Ci0gICAgICAgIGNv
bnN0IEJhdGNoZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9ICZhdHRyaWJ1dGVzW2ldOwotICAgICAg
ICAoYXR0cmlidXRlLT5vblByb3RvID8gcHJvdG8gOiBpbnN0YW5jZSktPlNldEFjY2Vzc29yKHY4
OjpTdHJpbmc6Ok5ldyhhdHRyaWJ1dGUtPm5hbWUpLAotICAgICAgICAgICAgYXR0cmlidXRlLT5n
ZXR0ZXIsCi0gICAgICAgICAgICBhdHRyaWJ1dGUtPnNldHRlciwKLSAgICAgICAgICAgIGF0dHJp
YnV0ZS0+ZGF0YSA9PSBWOENsYXNzSW5kZXg6OklOVkFMSURfQ0xBU1NfSU5ERVggPyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKSA6IHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFzc0luZGV4OjpUb0ludChh
dHRyaWJ1dGUtPmRhdGEpKSwKLSAgICAgICAgICAgIGF0dHJpYnV0ZS0+c2V0dGluZ3MsCi0gICAg
ICAgICAgICBhdHRyaWJ1dGUtPmF0dHJpYnV0ZSk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkKKyAgICAgICAgY29uZmlndXJlQXR0cmlidXRl
KGluc3RhbmNlLCBwcm90bywgYXR0cmlidXRlc1tpXSk7CiB9CiAKIHZvaWQgYmF0Y2hDb25maWd1
cmVDb25zdGFudHModjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25EZXNj
cmlwdG9yLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sIGNvbnN0IEJhdGNo
ZWRDb25zdGFudCogY29uc3RhbnRzLCBzaXplX3QgY29uc3RhbnRDb3VudCkKQEAgLTEwMDMsNiAr
OTk5LDEwIEBAIGJvb2wgVjhQcm94eTo6aW5zdGFsbERPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0LCBET01XaW5kb3cqIHdpbmRvCiAvLyBpdCB3b24ndCBiZSBhYmxlIHRv
IHJlYWNoIHRoZSBvdXRlciB3aW5kb3cgdmlhIGl0cyBnbG9iYWwgb2JqZWN0Lgogdm9pZCBWOFBy
b3h5Ojppbml0Q29udGV4dElmTmVlZGVkKCkKIHsKKyAgICAvLyBDYWNoZSBuZWVkZWQgc2V0dGlu
Z3MgaW4gc3RhdGljIHZhcmlhYmxlcyBzbyB3ZSBjYW4gYWNjZXNzIHRoZW0gd2hlbiBidWlsZGlu
ZyBvdXIgd3JhcHBlciBvYmplY3QgYmVsb3cuCisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+
c2V0dGluZ3MoKSkKKyAgICAgICAgaW5pdFNldHRpbmdzQ2FjaGVJZk5lZWRlZChmcmFtZSgpLT5z
ZXR0aW5ncygpKTsKKwogICAgIC8vIEJhaWwgb3V0IGlmIHRoZSBjb250ZXh0IGhhcyBhbHJlYWR5
IGJlZW4gaW5pdGlhbGl6ZWQuCiAgICAgaWYgKCFjb250ZXh0KCkuSXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMzQ2LDQgKzEzNDYsMjEgQEAgdm9pZCBWOFByb3h5OjppbnN0YWxsSGlk
ZGVuT2JqZWN0UHJvdG90eXBlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiAgICAg
Y29udGV4dC0+R2xvYmFsKCktPlNldEhpZGRlblZhbHVlKGhpZGRlbk9iamVjdFByb3RvdHlwZVN0
cmluZywgb2JqZWN0UHJvdG90eXBlKTsKIH0KIAorc3RhdGljIFdURjo6TXV0ZXgmIGdldFNldHRp
bmdzQ2FjaGVNdXRleCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6Ok11dGV4LCBz
ZXR0aW5nc0NhY2hlTXV0ZXgsICgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3NDYWNoZU11dGV4Owor
fQorCisvLyBJbml0aWFsaXplIG91ciBzZXR0aW5ncyBjYWNoZSBleGFjdGx5IG9uY2UuCit2b2lk
IFY4UHJveHk6OmluaXRTZXR0aW5nc0NhY2hlSWZOZWVkZWQoU2V0dGluZ3MqIHNldHRpbmdzKQor
eworICAgIFdURjo6TXV0ZXhMb2NrZXIgbG9ja2VyKGdldFNldHRpbmdzQ2FjaGVNdXRleCgpKTsK
KyAgICBzdGF0aWMgYm9vbCBjYWNoZUluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFjYWNo
ZUluaXRpYWxpemVkKSB7CisgICAgICAgIGNhY2hlSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAg
ICBtX2xvY2FsU3RvcmFnZUVuYWJsZWQgPSBzZXR0aW5ncy0+bG9jYWxTdG9yYWdlRW5hYmxlZCgp
OworICAgIH0KK30KKwogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgK
aW5kZXggMDRjMTEzZS4uOWViMWIxZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKQEAgLTU2LDYgKzU2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgU1ZH
RWxlbWVudDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIFNl
dHRpbmdzOwogICAgIGNsYXNzIFN0cmluZzsKICAgICBjbGFzcyBWOEV2ZW50TGlzdGVuZXI7CiAK
QEAgLTgxLDYgKzgyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHZvaWQgYmF0Y2hD
b25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiwgc2l6ZV90
IGF0dHJpYnV0ZUNvdW50KTsKIAorICAgIGlubGluZSB2b2lkIGNvbmZpZ3VyZUF0dHJpYnV0ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdFRlbXBsYXRlPiBwcm90bywgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSYgYXR0cmlidXRlKQor
ICAgIHsKKyAgICAgICAgKGF0dHJpYnV0ZS5vblByb3RvID8gcHJvdG8gOiBpbnN0YW5jZSktPlNl
dEFjY2Vzc29yKHY4OjpTdHJpbmc6Ok5ldyhhdHRyaWJ1dGUubmFtZSksCisgICAgICAgICAgICBh
dHRyaWJ1dGUuZ2V0dGVyLAorICAgICAgICAgICAgYXR0cmlidXRlLnNldHRlciwKKyAgICAgICAg
ICAgIGF0dHJpYnV0ZS5kYXRhID09IFY4Q2xhc3NJbmRleDo6SU5WQUxJRF9DTEFTU19JTkRFWCA/
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpIDogdjg6OkludGVnZXI6Ok5ldyhWOENsYXNzSW5kZXg6
OlRvSW50KGF0dHJpYnV0ZS5kYXRhKSksCisgICAgICAgICAgICBhdHRyaWJ1dGUuc2V0dGluZ3Ms
CisgICAgICAgICAgICBhdHRyaWJ1dGUuYXR0cmlidXRlKTsKKyAgICB9CisKICAgICAvLyBCYXRj
aGVkQ29uc3RhbnQgdHJhbnNsYXRlcyBpbnRvIGNhbGxzIHRvIFNldCgpIGZvciBzZXR0aW5nIHVw
IGFuIG9iamVjdCdzCiAgICAgLy8gY29uc3RhbnRzLiBJdCBzZXRzIHRoZSBjb25zdGFudCBvbiBi
b3RoIHRoZSBGdW5jdGlvblRlbXBsYXRlIGFuZCB0aGUKICAgICAvLyBPYmplY3RUZW1wbGF0ZS4g
UHJvcGVydHlBdHRyaWJ1dGVzIGlzIGFsd2F5cyBSZWFkT25seS4KQEAgLTMyNiw2ICszMzcsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgaW5pdENvbnRleHRJZk5lZWRlZCgp
OwogICAgICAgICB2b2lkIHVwZGF0ZURvY3VtZW50V3JhcHBlcih2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd3JhcHBlcik7CiAKKyAgICAgICAgc3RhdGljIGJvb2wgbG9jYWxTdG9yYWdlRW5hYmxlZCgp
IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRW5hYmxlZDsgfQorCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGtDb250ZXh0RGVidWdEYXRhVHlwZTsKICAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGtDb250ZXh0RGVidWdEYXRhVmFsdWU7CkBAIC0zNzksNiArMzkyLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckV4dGVu
c2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKik7CiAgICAgICAgIHN0YXRpYyBib29sIHJlZ2lzdGVy
ZWRFeHRlbnNpb25XaXRoVjgodjg6OkV4dGVuc2lvbiopOwogCisgICAgICAgIHN0YXRpYyB2b2lk
IGluaXRTZXR0aW5nc0NhY2hlSWZOZWVkZWQoU2V0dGluZ3MqKTsKKwogICAgICAgICBGcmFtZSog
bV9mcmFtZTsKIAogICAgICAgICBSZWZQdHI8U2hhcmVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD4g
PiBtX2NvbnRleHQ7CkBAIC00MTQsNiArNDI5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICAvLyBBbGwgb2YgdGhlIGV4dGVuc2lvbnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBjb250
ZXh0LgogICAgICAgICBzdGF0aWMgVjhFeHRlbnNpb25zIG1fZXh0ZW5zaW9uczsKKworICAgICAg
ICAvLyBPdXIgc3RhdGljYWxseSBjYWNoZWQgdmVyc2lvbnMgb2YgcnVudGltZSBzZXR0aW5ncywg
dXNlZCB0byBlbmFibGUgRE9NV2luZG93IGF0dHJpYnV0ZXMgYXQgcnVudGltZS4KKyAgICAgICAg
Ly8gV2UgaGF2ZSB0byBjYWNoZSB0aGUgc2V0dGluZ3MgYmVjYXVzZSB0aGVyZSdzIG5vIGVhc3kg
d2F5IHRvIGdldCBhdCB0aGVtIHdoaWxlIGJ1aWxkaW5nIGEgVjhET01XaW5kb3cgd3JhcHBlci4K
KyAgICAgICAgc3RhdGljIGJvb2wgbV9sb2NhbFN0b3JhZ2VFbmFibGVkOwogICAgIH07CiAKICAg
ICB0ZW1wbGF0ZSA8aW50IHRhZywgdHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21CaW5kaW5nLmgKaW5kZXggMmZmNGVhOS4uMGQwYTQyOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKQEAgLTc4LDYgKzc4LDkg
QEAgc3RydWN0IE5QT2JqZWN0OwogICAgIGJvb2wgVjhDdXN0b206OnY4IyNOQU1FIyNJbmRleGVk
U2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgXAogICAgICAgICB1aW50
MzJfdCBpbmRleCwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0
YSkKIAorI2RlZmluZSBBQ0NFU1NPUl9SVU5USU1FX0VOQUJMRVIoTkFNRSkgXAorICAgIGJvb2wg
VjhDdXN0b206OnY4IyNOQU1FIyNFbmFibGVkKCkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgRE9NV2luZG93OwpAQCAtMjMyLDYgKzIzNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBzdGF0aWMgYm9vbCB2OCMjTkFNRSMjSW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGhvc3QsIFwKICAgICAgICAgdWludDMyX3QgaW5kZXgsIHY4OjpBY2Nl
c3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpCiAKKyNkZWZpbmUgREVDTEFS
RV9BQ0NFU1NPUl9SVU5USU1FX0VOQUJMRVIoTkFNRSkgXAorICAgIHN0YXRpYyBib29sIHY4IyNO
QU1FIyNFbmFibGVkKCkKKwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRFN0cm9rZVN0eWxlKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJU
WV9BQ0NFU1NPUihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRGaWxsU3R5bGUpOwogICAgICAgICBE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKERPTVdpbmRvd0V2ZW50KTsKQEAgLTI0Niw2ICsyNTIs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNT
T1JfR0VUVEVSKERPTVdpbmRvd0ltYWdlKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUl9HRVRURVIoRE9NV2luZG93T3B0aW9uKTsKIAorICAgICAgICBERUNMQVJFX0FDQ0VTU09S
X1JVTlRJTUVfRU5BQkxFUihET01XaW5kb3dMb2NhbFN0b3JhZ2UpOworCiAgICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1IoRG9jdW1lbnRMb2NhdGlvbik7CiAgICAgICAgIERFQ0xBUkVf
UFJPUEVSVFlfQUNDRVNTT1IoRG9jdW1lbnRJbXBsZW1lbnRhdGlvbik7CiAgICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKEV2ZW50U3JjRWxlbWVudCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMGRjNWE5
Ni4uNTIxZmZkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01X
aW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcApAQCAtOTA2LDQgKzkwNiw5IEBAIElOREVYRURfQUNDRVNTX0NIRUNLKERP
TVdpbmRvdykKICAgICByZXR1cm4gVjhQcm94eTo6Y2FuQWNjZXNzRnJhbWUodGFyZ2V0LCBmYWxz
ZSk7CiB9CiAKK0FDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUihET01XaW5kb3dMb2NhbFN0b3JhZ2Up
Cit7CisgICAgcmV0dXJuIFY4UHJveHk6OmxvY2FsU3RvcmFnZUVuYWJsZWQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA5ZTNkZjQ4Li4xY2VkNjBhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbApAQCAtMTY1LDcgKzE2NSw3IEBAIG1vZHVsZSB3aW5kb3cgewogI2VuZGlm
CiAjaWYgZGVmaW5lZChFTkFCTEVfRE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RPUkFHRQog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RvcmFnZSBzZXNzaW9uU3RvcmFnZTsKLSAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0b3JhZ2UgbG9jYWxTdG9yYWdlOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWVdIFN0b3JhZ2UgbG9jYWxTdG9yYWdlOwog
I2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElG
SUNBVElPTlMKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vdGlmaWNhdGlvbkNlbnRlciB3
ZWJraXROb3RpZmljYXRpb25zOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40972</attachid>
            <date>2009-10-09 16:18:11 -0700</date>
            <delta_ts>2009-10-13 13:19:24 -0700</delta_ts>
            <desc>Pulled the refactoring of GenerateBatchedAttributeData into a separate patch</desc>
            <filename>y</filename>
            <type>text/plain</type>
            <size>9559</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0g
Yi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGQ4M2Iw
ZWYuLmMyZDNiYWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbQpAQCAtOTQ0LDEyNiArOTQ0LDEzNCBAQCBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRl
RGF0YQogICAgIG15ICRhdHRyaWJ1dGVzID0gc2hpZnQ7CiAKICAgICBmb3JlYWNoIG15ICRhdHRy
aWJ1dGUgKEAkYXR0cmlidXRlcykgewotICAgICAgICBteSAkYXR0ck5hbWUgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPm5hbWU7Ci0gICAgICAgIG15ICRhdHRyRXh0ID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXM7Ci0KLSAgICAgICAgbXkgJGFjY2Vzc0NvbnRyb2wg
PSAidjg6OkRFRkFVTFQiOwotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRG9Ob3RDaGVja0RvbWFp
blNlY3VyaXR5T25HZXQifSkgewotICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFM
TF9DQU5fUkVBRCI7Ci0gICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tEb21h
aW5TZWN1cml0eU9uU2V0In0pIHsKLSAgICAgICAgICAgICRhY2Nlc3NDb250cm9sID0gInY4OjpB
TExfQ0FOX1dSSVRFIjsKLSAgICAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiRG9Ob3RDaGVja0Rv
bWFpblNlY3VyaXR5In0pIHsKLSAgICAgICAgICAgICRhY2Nlc3NDb250cm9sID0gInY4OjpBTExf
Q0FOX1JFQUQiOwotICAgICAgICAgICAgaWYgKCEoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRv
bmx5LykgJiYgISgkYXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pKSB7Ci0gICAgICAgICAgICAgICAg
JGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6QUxMX0NBTl9XUklURSI7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RGlzYWxsb3dTaGFkb3dpbmcifSkg
ewotICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6UFJPSElCSVRTX09WRVJXUklU
SU5HIjsKLSAgICAgICAgfQotICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4oIiAuICRhY2Nlc3NDb250cm9sIC4gIikiOwotCi0gICAgICAgIG15
ICRjdXN0b21BY2Nlc3NvciA9Ci0gICAgICAgICAgICAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fAot
ICAgICAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwKLSAgICAgICAgICAgICRh
dHRyRXh0LT57IkN1c3RvbUdldHRlciJ9IHx8Ci0gICAgICAgICAgICAkYXR0ckV4dC0+eyJWOEN1
c3RvbSJ9IHx8Ci0gICAgICAgICAgICAkYXR0ckV4dC0+eyJWOEN1c3RvbVNldHRlciJ9IHx8Ci0g
ICAgICAgICAgICAkYXR0ckV4dC0+eyJWOEN1c3RvbUdldHRlciJ9IHx8Ci0gICAgICAgICAgICAi
IjsKLSAgICAgICAgaWYgKCRjdXN0b21BY2Nlc3NvciBlcSAxKSB7Ci0gICAgICAgICAgICAjIHVz
ZSB0aGUgbmFtaW5nIGNvbnZlbnNpb24sIGludGVyZmFjZSArIChjYXBpdGFsaXplKSBhdHRyIG5h
bWUKLSAgICAgICAgICAgICRjdXN0b21BY2Nlc3NvciA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVH
ZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJOYW1lKTsKLSAgICAgICAgfQorICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSk7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgR2VuZXJhdGVT
aW5nbGVCYXRjaGVkQXR0cmlidXRlKCRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlLCAiLCIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJp
bmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgfQorfQogCi0gICAgICAgIG15ICRn
ZXR0ZXI7Ci0gICAgICAgIG15ICRzZXR0ZXI7Ci0gICAgICAgIG15ICRwcm9wQXR0ciA9ICJ2ODo6
Tm9uZSI7Ci0gICAgICAgIG15ICRoYXNDdXN0b21TZXR0ZXIgPSAwOworc3ViIEdlbmVyYXRlU2lu
Z2xlQmF0Y2hlZEF0dHJpYnV0ZQoreworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Cisg
ICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OworICAgIG15ICRkZWxpbWl0ZXIgPSBzaGlmdDsKKyAg
ICBteSAkYXR0ck5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgbXkgJGF0
dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKIAotICAg
ICAgICAjIENoZWNrIGF0dHJpYnV0ZXMuCi0gICAgICAgIGlmICgkYXR0ckV4dC0+eyJEb250RW51
bSJ9KSB7Ci0gICAgICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udEVudW0iOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKLSAg
ICAgICAgICAgICRwcm9wQXR0ciAuPSAifHY4OjpEb250RGVsZXRlIjsKKyAgICBteSAkYWNjZXNz
Q29udHJvbCA9ICJ2ODo6REVGQVVMVCI7CisgICAgaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tE
b21haW5TZWN1cml0eU9uR2V0In0pIHsKKyAgICAgICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFM
TF9DQU5fUkVBRCI7CisgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiRG9Ob3RDaGVja0RvbWFpblNl
Y3VyaXR5T25TZXQifSkgeworICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6QUxMX0NBTl9X
UklURSI7CisgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5
In0pIHsKKyAgICAgICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fUkVBRCI7CisgICAg
ICAgIGlmICghKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pICYmICEoJGF0dHJFeHQt
PnsiVjhSZWFkT25seSJ9KSkgeworICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6
QUxMX0NBTl9XUklURSI7CiAgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCRhdHRyRXh0LT57IlY4
RGlzYWxsb3dTaGFkb3dpbmcifSkgeworICAgICAgICAkYWNjZXNzQ29udHJvbCAuPSAifHY4OjpQ
Uk9ISUJJVFNfT1ZFUldSSVRJTkciOworICAgIH0KKyAgICAkYWNjZXNzQ29udHJvbCA9ICJzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4oIiAuICRhY2Nlc3NDb250cm9sIC4gIikiOwogCi0g
ICAgICAgIG15ICRvbl9wcm90byA9ICIwIC8qIG9uIGluc3RhbmNlICovIjsKLSAgICAgICAgbXkg
JGRhdGEgPSAiVjhDbGFzc0luZGV4OjpJTlZBTElEX0NMQVNTX0lOREVYIC8qIG5vIGRhdGEgKi8i
OworICAgIG15ICRjdXN0b21BY2Nlc3NvciA9CisgICAgICAgICRhdHRyRXh0LT57IkN1c3RvbSJ9
IHx8CisgICAgICAgICRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8CisgICAgICAgICRhdHRy
RXh0LT57IkN1c3RvbUdldHRlciJ9IHx8CisgICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0g
fHwKKyAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSB8fAorICAgICAgICAkYXR0
ckV4dC0+eyJWOEN1c3RvbUdldHRlciJ9IHx8CisgICAgICAgICIiOworICAgIGlmICgkY3VzdG9t
QWNjZXNzb3IgZXEgMSkgeworICAgICAgICAjIHVzZSB0aGUgbmFtaW5nIGNvbnZlbnNpb24sIGlu
dGVyZmFjZSArIChjYXBpdGFsaXplKSBhdHRyIG5hbWUKKyAgICAgICAgJGN1c3RvbUFjY2Vzc29y
ID0gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0ck5hbWUp
OworICAgIH0KIAotICAgICAgICAjIENvbnN0cnVjdG9yCi0gICAgICAgIGlmICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKLSAgICAgICAgICAgIG15ICRj
b25zdHJ1Y3RvclR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT50eXBlKTsKLSAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25z
dHJ1Y3RvciQvLzsKLSAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvckluZGV4ID0gdWMoJGNvbnN0
cnVjdG9yVHlwZSk7Ci0gICAgICAgICAgICBpZiAoJGN1c3RvbUFjY2Vzc29yKSB7Ci0gICAgICAg
ICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29y
R2V0dGVyIjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgJGRhdGEgPSAi
VjhDbGFzc0luZGV4Ojoke2NvbnN0cnVjdG9ySW5kZXh9IjsKLSAgICAgICAgICAgICAgICAkZ2V0
dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHtpbnRlcmZhY2VOYW1lfUNvbnN0cnVj
dG9yR2V0dGVyIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0g
ICAgICAgICAgICAkcHJvcEF0dHIgPSAidjg6OlJlYWRPbmx5IjsKKyAgICBteSAkZ2V0dGVyOwor
ICAgIG15ICRzZXR0ZXI7CisgICAgbXkgJHByb3BBdHRyID0gInY4OjpOb25lIjsKKyAgICBteSAk
aGFzQ3VzdG9tU2V0dGVyID0gMDsKIAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIyBE
ZWZhdWx0IEdldHRlciBhbmQgU2V0dGVyCi0gICAgICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJm
YWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKLSAgICAgICAgICAgICRz
ZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJTZXR0ZXIi
OwotCi0gICAgICAgICAgICAjIEN1c3RvbSBTZXR0ZXIKLSAgICAgICAgICAgIGlmICgkYXR0ckV4
dC0+eyJDdXN0b21TZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbVNldHRlciJ9IHx8ICRh
dHRyRXh0LT57IkN1c3RvbSJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0pIHsKLSAgICAgICAg
ICAgICAgICAkaGFzQ3VzdG9tU2V0dGVyID0gMTsKLSAgICAgICAgICAgICAgICAkc2V0dGVyID0g
IlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwotICAgICAgICAg
ICAgfQorICAgICMgQ2hlY2sgYXR0cmlidXRlcy4KKyAgICBpZiAoJGF0dHJFeHQtPnsiRG9udEVu
dW0ifSkgeworICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udEVudW0iOworICAgIH0KKyAg
ICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7CisgICAgICAgICRwcm9w
QXR0ciAuPSAifHY4OjpEb250RGVsZXRlIjsKKyAgICB9CiAKLSAgICAgICAgICAgICMgQ3VzdG9t
IEdldHRlcgotICAgICAgICAgICAgaWYgKCRhdHRyRXh0LT57IkN1c3RvbUdldHRlciJ9IHx8ICRh
dHRyRXh0LT57IkN1c3RvbSJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0pIHsKLSAgICAgICAg
ICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JH
ZXR0ZXIiOwotICAgICAgICAgICAgfQorICAgIG15ICRvbl9wcm90byA9ICIwIC8qIG9uIGluc3Rh
bmNlICovIjsKKyAgICBteSAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OklOVkFMSURfQ0xBU1NfSU5E
RVggLyogbm8gZGF0YSAqLyI7CisKKyAgICAjIENvbnN0cnVjdG9yCisgICAgaWYgKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgeworICAgICAgICBteSAkY29u
c3RydWN0b3JUeXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+dHlwZSk7CisgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3Rv
ciQvLzsKKyAgICAgICAgbXkgJGNvbnN0cnVjdG9ySW5kZXggPSB1YygkY29uc3RydWN0b3JUeXBl
KTsKKyAgICAgICAgaWYgKCRjdXN0b21BY2Nlc3NvcikgeworICAgICAgICAgICAgJGdldHRlciA9
ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6JHtjb25zdHJ1Y3Rv
ckluZGV4fSI7CisgICAgICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5h
bDo6JHtpbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yR2V0dGVyIjsKICAgICAgICAgfQorICAgICAg
ICAkc2V0dGVyID0gIjAiOworICAgICAgICAkcHJvcEF0dHIgPSAidjg6OlJlYWRPbmx5IjsKIAot
ICAgICAgICAjIFJlcGxhY2VhYmxlCi0gICAgICAgIGlmICgkYXR0ckV4dC0+eyJSZXBsYWNlYWJs
ZSJ9ICYmICEkaGFzQ3VzdG9tU2V0dGVyKSB7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIjAiOwot
ICAgICAgICAgICAgIyBIYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSBvZiB3aW5kb3cudG9wIGJlaW5n
IG1hcmtlZCBhcyBSZXBsYWNlYWJsZS4KLSAgICAgICAgICAgICMgRklYTUU6IEludmVzdGlnYXRl
IHdoZXRoZXIgd2UgY291bGQgdHJlYXQgd2luZG93LnRvcCBhcyByZXBsYWNlYWJsZSAKLSAgICAg
ICAgICAgICMgYW5kIGFsbG93IHNoYWRvd2luZyB3aXRob3V0IGl0IGJlaW5nIGEgc2VjdXJpdHkg
aG9sZS4KLSAgICAgICAgICAgIGlmICghKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIGFu
ZCAkYXR0ck5hbWUgZXEgInRvcCIpKSB7IAotICAgICAgICAgICAgICAgICRwcm9wQXR0ciAuPSAi
fHY4OjpSZWFkT25seSI7Ci0gICAgICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgIyBE
ZWZhdWx0IEdldHRlciBhbmQgU2V0dGVyCisgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VO
YW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOworICAgICAgICAkc2V0dGVyID0g
IiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKKworICAg
ICAgICAjIEN1c3RvbSBTZXR0ZXIKKyAgICAgICAgaWYgKCRhdHRyRXh0LT57IkN1c3RvbVNldHRl
ciJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9t
In0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgeworICAgICAgICAgICAgJGhhc0N1c3RvbVNl
dHRlciA9IDE7CisgICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNj
ZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwogICAgICAgICB9CiAKLSAgICAgICAgIyBSZWFkIG9ubHkg
YXR0cmlidXRlcwotICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5LyB8
fCAkYXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pIHsKLSAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7
CisgICAgICAgICMgQ3VzdG9tIEdldHRlcgorICAgICAgICBpZiAoJGF0dHJFeHQtPnsiQ3VzdG9t
R2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20i
fSkgeworICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29y
fUFjY2Vzc29yR2V0dGVyIjsKICAgICAgICAgfQorICAgIH0KIAotICAgICAgICAjIEFuIGFjY2Vz
c29yIGNhbiBiZSBpbnN0YWxsZWQgb24gdGhlIHByb3RvCi0gICAgICAgIGlmICgkYXR0ckV4dC0+
eyJ2OE9uUHJvdG8ifSkgewotICAgICAgICAgICAgJG9uX3Byb3RvID0gIjEgLyogb24gcHJvdG8g
Ki8iOworICAgICMgUmVwbGFjZWFibGUKKyAgICBpZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUi
fSAmJiAhJGhhc0N1c3RvbVNldHRlcikgeworICAgICAgICAkc2V0dGVyID0gIjAiOworICAgICAg
ICAjIEhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlIG9mIHdpbmRvdy50b3AgYmVpbmcgbWFya2VkIGFz
IFJlcGxhY2VhYmxlLgorICAgICAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aGV0aGVyIHdlIGNv
dWxkIHRyZWF0IHdpbmRvdy50b3AgYXMgcmVwbGFjZWFibGUKKyAgICAgICAgIyBhbmQgYWxsb3cg
c2hhZG93aW5nIHdpdGhvdXQgaXQgYmVpbmcgYSBzZWN1cml0eSBob2xlLgorICAgICAgICBpZiAo
ISgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiBhbmQgJGF0dHJOYW1lIGVxICJ0b3AiKSkg
eworICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OlJlYWRPbmx5IjsKICAgICAgICAgfQor
ICAgIH0KIAotICAgICAgICBteSAkY29tbWVudEluZm8gPSAiQXR0cmlidXRlICckYXR0ck5hbWUn
IChUeXBlOiAnIiAuICRhdHRyaWJ1dGUtPnR5cGUgLgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiJyBFeHRBdHRyOiAnIiAuIGpvaW4oJyAnLCBrZXlzKCV7JGF0dHJFeHR9KSkgLiAiJykiOwot
ICAgICAgICAKLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CisgICAgIyBSZWFkIG9ubHkgYXR0cmlidXRlcworICAgIGlmICgkYXR0cmlidXRlLT50eXBl
ID1+IC9ecmVhZG9ubHkvIHx8ICRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgeworICAgICAgICAk
c2V0dGVyID0gIjAiOworICAgIH0KIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQp
OwotICAvLyAkY29tbWVudEluZm8KLSAgeyAiJGF0dHJOYW1lIiwKLSAgICAkZ2V0dGVyLAotICAg
ICRzZXR0ZXIsCi0gICAgJGRhdGEsCi0gICAgJGFjY2Vzc0NvbnRyb2wsCi0gICAgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigkcHJvcEF0dHIpLAotICAgICRvbl9wcm90byB9LAot
RU5ECi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25h
bFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAjIEFuIGFjY2Vzc29yIGNh
biBiZSBpbnN0YWxsZWQgb24gdGhlIHByb3RvCisgICAgaWYgKCRhdHRyRXh0LT57InY4T25Qcm90
byJ9KSB7CisgICAgICAgICRvbl9wcm90byA9ICIxIC8qIG9uIHByb3RvICovIjsKICAgICB9Ci19
CiAKKyAgICBteSAkY29tbWVudEluZm8gPSAiQXR0cmlidXRlICckYXR0ck5hbWUnIChUeXBlOiAn
IiAuICRhdHRyaWJ1dGUtPnR5cGUgLgorICAgICAgICAgICAgICAgICAgICAgICInIEV4dEF0dHI6
ICciIC4gam9pbignICcsIGtleXMoJXskYXR0ckV4dH0pKSAuICInKSI7CisKKyAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOworICAgIHsKKyAgICAgIC8vICRjb21tZW50SW5mbworICAgICAg
IiRhdHRyTmFtZSIsCisgICAgICAkZ2V0dGVyLAorICAgICAgJHNldHRlciwKKyAgICAgICRkYXRh
LAorICAgICAgJGFjY2Vzc0NvbnRyb2wsCisgICAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KCRwcm9wQXR0ciksCisgICAgICAkb25fcHJvdG8KKyAgICB9JGRlbGltaXRlcgor
RU5ECit9CiAKIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40973</attachid>
            <date>2009-10-09 16:20:17 -0700</date>
            <delta_ts>2009-10-09 17:23:28 -0700</delta_ts>
            <desc>Added support for EnabledAtRuntime attribute, and set this attr on the DOMWindow.Audio attribute.</desc>
            <filename>z</filename>
            <type>text/plain</type>
            <size>9602</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmQ1OTFlOC4uNmU1ZTA1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0xMC0wOCAgRHJldyBXaWxzb24g
IDxhdHdpbHNvbkBhdHdpbHNvbi1tYWNwcm8ubG9jYWw+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2luZG93IGF0dHJpYnV0ZXMgKGxpa2UgbG9jYWxT
dG9yYWdlKSB0aGF0IGFyZSBkaXNhYmxlZCBhdCBydW50aW1lIGFyZSBzdGlsbCB2aXNpYmxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI0MAorCisg
ICAgICAgIEFkZGluZyBjb2RlZ2VuL2JpbmRpbmdzIHRvIHN1cHBvcnQgcnVudGltZSBkaXNhYmxp
bmcgb2YgYXR0cmlidXRlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgKG9ubHkgc3VwcG9ydGVk
IGJ5IGNocm9tZSBjdXJyZW50bHkpCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbToKKyAgICAgICAgUmVmYWN0b3JlZCBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1
dGVEYXRhIHRvIGFsbG93IGdlbmVyYXRpbmcgYSBzaW5nbGUgQmF0Y2hlZEF0dHJpYnV0ZSBzdHJ1
Y3QuCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBFbmFibGVkQXRSdW50aW1lIGV4dGVu
ZGVkIGF0dHJpYnV0ZSwgd2hpY2ggZ2VuZXJhdGVzIGEgY2FsbCB0byB0aGUgYXBwcm9wcmlhdGUg
WFhYWEVuYWJsZWQoKSBBUEkgYmVmb3JlIGFkZGluZyB0aGUgYXR0cmlidXRlIHRvIHRoZSBpbnN0
YW5jZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyk6CisgICAgICAgIFJlZmFjdG9yZWQgYXR0cmli
dXRlIHNldHRpbmcgY29kZSBpbnRvIGEgY29tbW9uIGlubGluZSByb3V0aW5lLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbmZpZ3VyZUF0dHJp
YnV0ZSk6CisgICAgICAgIElubGluZSBmdW5jdGlvbiB3aGljaCBjb25maWd1cmVzIGEgc2luZ2xl
IGF0dHJpYnV0ZSBnaXZlbiBhIEJhdGNoZWRBdHRyaWJ1dGUgc3RydWN0LgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgQWRkZWQgKERFQ0xB
UkVfKUFDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUiB0byBhbGxvdyBlbmFibGluZyBhdHRyaWJ1dGVz
IGF0IHJ1bnRpbWUuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgQWRkZWQgY29kZSB0byBlbmFibGUgd2luZG93LkF1ZGlvIG9ubHkg
aWYgTWVkaWFQbGF5ZXIuaXNBdmFpbGFibGUoKSA9PSB0cnVlCisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorICAgICAgICBBZGRlZCBbRW5hYmxlZEF0UnVudGltZV0gZXh0ZW5kZWQgYXR0
cmlidXRlIHRvIHRoZSBBdWRpbyBhdHRyaWJ1dGUuCisKIDIwMDktMTAtMDcgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4
IGZvciBXaW5kb3dzIChDYWlybykuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQppbmRleCBjMmQzYmFiLi4wZWM5MjUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTExODUsMTcgKzExODUsMjEgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAjIEZvciB0aGUgRE9NV2luZG93IGludGVyZmFjZSB3
ZSBwYXJ0aXRpb24gdGhlIGF0dHJpYnV0ZXMgaW50byB0aGUKICAgICAjIG9uZXMgdGhhdCBkaXNh
bGxvd3Mgc2hhZG93aW5nIGFuZCB0aGUgcmVzdC4KICAgICBteSBAZGlzYWxsb3dzX3NoYWRvd2lu
ZzsKKyAgICAjIEFsc28gc2VwYXJhdGUgb3V0IGF0dHJpYnV0ZXMgdGhhdCBhcmUgZW5hYmxlZCBh
dCBydW50aW1lIHNvIHdlIGNhbiBwcm9jZXNzIHRoZW0gc3BlY2lhbGx5LgorICAgIG15IEBlbmFi
bGVkX2F0X3J1bnRpbWU7CiAgICAgbXkgQG5vcm1hbDsKLSAgICBpZiAoJGludGVyZmFjZU5hbWUg
ZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAJGF0dHJp
YnV0ZXMpIHsKLSAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEBkaXNhbGxvd3Nfc2hhZG93aW5nLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAbm9ybWFsLCAkYXR0cmlidXRlKTsKLSAgICAgICAg
ICAgIH0KKyAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEAkYXR0cmlidXRlcykgeworICAgICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgJiYgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7CisgICAg
ICAgICAgICBwdXNoKEBkaXNhbGxvd3Nfc2hhZG93aW5nLCAkYXR0cmlidXRlKTsKKyAgICAgICAg
fSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5h
YmxlZEF0UnVudGltZSJ9KSB7CisgICAgICAgICAgICBwdXNoKEBlbmFibGVkX2F0X3J1bnRpbWUs
ICRhdHRyaWJ1dGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAbm9ybWFs
LCAkYXR0cmlidXRlKTsKICAgICAgICAgfQotICAgICAgICAjIFB1dCB0aGUgYXR0cmlidXRlcyB0
aGF0IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUgc2hhZG93IG9iamVjdC4KLSAgICAgICAgJGF0
dHJpYnV0ZXMgPSBcQG5vcm1hbDsKKyAgICB9CisgICAgJGF0dHJpYnV0ZXMgPSBcQG5vcm1hbDsK
KyAgICAjIFB1dCB0aGUgYXR0cmlidXRlcyB0aGF0IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUg
c2hhZG93IG9iamVjdC4KKyAgICBpZiAoQGRpc2FsbG93c19zaGFkb3dpbmcpIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBzaGFkb3df
YXR0cnNbXSA9IHtcbiIpOwogICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhKCRk
YXRhTm9kZSwgXEBkaXNhbGxvd3Nfc2hhZG93aW5nKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9O1xuIik7CkBAIC0xMjc5LDYgKzEyODMsMjEgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAg
ICAjIFNldHVwIHRoZSBlbmFibGUtYXQtcnVudGltZSBhdHRycyBpZiB3ZSBoYXZlIHRoZW0KKyAg
ICBmb3JlYWNoIG15ICRydW50aW1lX2F0dHIgKEBlbmFibGVkX2F0X3J1bnRpbWUpIHsKKyAgICAg
ICAgJGVuYWJsZV9mdW5jdGlvbiA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldL
X3VjZmlyc3QoJHJ1bnRpbWVfYXR0ci0+c2lnbmF0dXJlLT5uYW1lKTsKKyAgICAgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkcnVudGltZV9hdHRy
LT5zaWduYXR1cmUpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICBpZiAoVjhDdXN0b206OnY4JHtlbmFibGVfZnVuY3Rpb259RW5hYmxlZCgp
KSB7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEJh
dGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPSAiKTsKKyAgICAgICAgR2VuZXJhdGVTaW5nbGVCYXRj
aGVkQXR0cmlidXRlKCRpbnRlcmZhY2VOYW1lLCAkcnVudGltZV9hdHRyLCAiOyIpOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIGNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0
YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsKKyAgfQorRU5ECisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKKyAgICB9CisKICAgICAjIERlZmluZSBvdXIgZnVuY3Rpb25zIHdpdGggU2V0KCkg
b3IgU2V0QWNjZXNzb3IoKQogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+
ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkYXR0ckV4dCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCA1NjY0ZWJk
Li4wMDhmN2Y1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTcyLDE1ICs3Miw4IEBAIGNv
bnN0IGNoYXIqIFY4UHJveHk6OmtDb250ZXh0RGVidWdEYXRhVmFsdWUgPSAidmFsdWUiOwogCiB2
b2lkIGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4gaW5zdGFuY2UsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90bywgY29uc3Qg
QmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmlidXRlcywgc2l6ZV90IGF0dHJpYnV0ZUNvdW50KQogewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkgewotICAgICAg
ICBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSAmYXR0cmlidXRlc1tpXTsKLSAg
ICAgICAgKGF0dHJpYnV0ZS0+b25Qcm90byA/IHByb3RvIDogaW5zdGFuY2UpLT5TZXRBY2Nlc3Nv
cih2ODo6U3RyaW5nOjpOZXcoYXR0cmlidXRlLT5uYW1lKSwKLSAgICAgICAgICAgIGF0dHJpYnV0
ZS0+Z2V0dGVyLAotICAgICAgICAgICAgYXR0cmlidXRlLT5zZXR0ZXIsCi0gICAgICAgICAgICBh
dHRyaWJ1dGUtPmRhdGEgPT0gVjhDbGFzc0luZGV4OjpJTlZBTElEX0NMQVNTX0lOREVYID8gdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCkgOiB2ODo6SW50ZWdlcjo6TmV3KFY4Q2xhc3NJbmRleDo6VG9J
bnQoYXR0cmlidXRlLT5kYXRhKSksCi0gICAgICAgICAgICBhdHRyaWJ1dGUtPnNldHRpbmdzLAot
ICAgICAgICAgICAgYXR0cmlidXRlLT5hdHRyaWJ1dGUpOwotICAgIH0KKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50OyArK2kpCisgICAgICAgIGNvbmZpZ3VyZUF0dHJp
YnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJpYnV0ZXNbaV0pOwogfQogCiB2b2lkIGJhdGNoQ29u
ZmlndXJlQ29uc3RhbnRzKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1bmN0aW9u
RGVzY3JpcHRvciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvLCBjb25zdCBC
YXRjaGVkQ29uc3RhbnQqIGNvbnN0YW50cywgc2l6ZV90IGNvbnN0YW50Q291bnQpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5oCmluZGV4IDA0YzExM2UuLjI3NjA5ODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBA
IC04MSw2ICs4MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB2b2lkIGJhdGNoQ29u
ZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sIHY4OjpIYW5k
bGU8djg6Ok9iamVjdFRlbXBsYXRlPiwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosIHNpemVfdCBh
dHRyaWJ1dGVDb3VudCk7CiAKKyAgICBpbmxpbmUgdm9pZCBjb25maWd1cmVBdHRyaWJ1dGUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3RUZW1wbGF0ZT4gcHJvdG8sIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKKyAg
ICB7CisgICAgICAgIChhdHRyaWJ1dGUub25Qcm90byA/IHByb3RvIDogaW5zdGFuY2UpLT5TZXRB
Y2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoYXR0cmlidXRlLm5hbWUpLAorICAgICAgICAgICAgYXR0
cmlidXRlLmdldHRlciwKKyAgICAgICAgICAgIGF0dHJpYnV0ZS5zZXR0ZXIsCisgICAgICAgICAg
ICBhdHRyaWJ1dGUuZGF0YSA9PSBWOENsYXNzSW5kZXg6OklOVkFMSURfQ0xBU1NfSU5ERVggPyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSA6IHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFzc0luZGV4OjpU
b0ludChhdHRyaWJ1dGUuZGF0YSkpLAorICAgICAgICAgICAgYXR0cmlidXRlLnNldHRpbmdzLAor
ICAgICAgICAgICAgYXR0cmlidXRlLmF0dHJpYnV0ZSk7CisgICAgfQorCiAgICAgLy8gQmF0Y2hl
ZENvbnN0YW50IHRyYW5zbGF0ZXMgaW50byBjYWxscyB0byBTZXQoKSBmb3Igc2V0dGluZyB1cCBh
biBvYmplY3QncwogICAgIC8vIGNvbnN0YW50cy4gSXQgc2V0cyB0aGUgY29uc3RhbnQgb24gYm90
aCB0aGUgRnVuY3Rpb25UZW1wbGF0ZSBhbmQgdGhlCiAgICAgLy8gT2JqZWN0VGVtcGxhdGUuIFBy
b3BlcnR5QXR0cmlidXRlcyBpcyBhbHdheXMgUmVhZE9ubHkuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCmluZGV4IDJmZjRlYTkuLjg4ZDJkYzEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCkBAIC03OCw2ICs3
OCw5IEBAIHN0cnVjdCBOUE9iamVjdDsKICAgICBib29sIFY4Q3VzdG9tOjp2OCMjTkFNRSMjSW5k
ZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIFwKICAgICAgICAg
dWludDMyX3QgaW5kZXgsIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IGRhdGEpCiAKKyNkZWZpbmUgQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKE5BTUUpIFwKKyAgICBi
b29sIFY4Q3VzdG9tOjp2OCMjTkFNRSMjRW5hYmxlZCgpCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIGNsYXNzIERPTVdpbmRvdzsKQEAgLTIzMiw2ICsyMzUsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgc3RhdGljIGJvb2wgdjgjI05BTUUjI0luZGV4ZWRTZWN1cml0eUNoZWNrKHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCBcCiAgICAgICAgIHVpbnQzMl90IGluZGV4LCB2ODo6
QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKQogCisjZGVmaW5lIERF
Q0xBUkVfQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKE5BTUUpIFwKKyAgICBzdGF0aWMgYm9vbCB2
OCMjTkFNRSMjRW5hYmxlZCgpCisKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRTdHJva2VTdHlsZSk7CiAgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1IoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJERmlsbFN0eWxlKTsKICAgICAg
ICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihET01XaW5kb3dFdmVudCk7CkBAIC0yNDEsNiAr
MjQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihET01XaW5kb3dBdWRpbyk7CisgICAg
ICAgIERFQ0xBUkVfQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKERPTVdpbmRvd0F1ZGlvKTsKICNl
bmRpZgogCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRv
d0ltYWdlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcAppbmRleCAwZGM1YTk2Li5hNTc5Yzk4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5j
bHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1
ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlICJTY2hlZHVs
ZWRBY3Rpb24uaCIKQEAgLTIzNSw2ICsyMzYsMTEgQEAgQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRv
d0F1ZGlvKQogICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmdldENvbnN0cnVjdG9yKFY4Q2xhc3NJ
bmRleDo6QVVESU8sIHdpbmRvdyk7CiB9CiAKK0FDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUihET01X
aW5kb3dBdWRpbykKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9
CisKICNlbmRpZgogCiBBQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93SW1hZ2UpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CmluZGV4IDllM2RmNDguLmRiNjRjNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC01MjMsNyArNTIzLDcg
QEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBTdG9yYWdlRXZlbnRDb25zdHJ1
Y3RvciBTdG9yYWdlRXZlbnQ7CiAjZW5kaWYKIAotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbUdl
dHRlcixDb25kaXRpb25hbD1WSURFT10gSFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yIEF1ZGlv
OyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCisgICAgICAgIGF0dHJpYnV0ZSBbQ3Vz
dG9tR2V0dGVyLENvbmRpdGlvbmFsPVZJREVPLEVuYWJsZWRBdFJ1bnRpbWVdIEhUTUxBdWRpb0Vs
ZW1lbnRDb25zdHJ1Y3RvciBBdWRpbzsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgog
ICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPXSBIVE1MQXVkaW9FbGVtZW50Q29u
c3RydWN0b3IgSFRNTEF1ZGlvRWxlbWVudDsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25h
bD1WSURFT10gSFRNTE1lZGlhRWxlbWVudENvbnN0cnVjdG9yIEhUTUxNZWRpYUVsZW1lbnQ7CiAg
ICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU9dIEhUTUxWaWRlb0VsZW1lbnRDb25z
dHJ1Y3RvciBIVE1MVmlkZW9FbGVtZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40976</attachid>
            <date>2009-10-09 17:23:28 -0700</date>
            <delta_ts>2009-10-12 21:42:37 -0700</delta_ts>
            <desc>Addressed jorlow&apos;s style suggestions.</desc>
            <filename>z</filename>
            <type>text/plain</type>
            <size>9588</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmQ1OTFlOC4uNmU1ZTA1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0xMC0wOCAgRHJldyBXaWxzb24g
IDxhdHdpbHNvbkBhdHdpbHNvbi1tYWNwcm8ubG9jYWw+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2luZG93IGF0dHJpYnV0ZXMgKGxpa2UgbG9jYWxT
dG9yYWdlKSB0aGF0IGFyZSBkaXNhYmxlZCBhdCBydW50aW1lIGFyZSBzdGlsbCB2aXNpYmxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI0MAorCisg
ICAgICAgIEFkZGluZyBjb2RlZ2VuL2JpbmRpbmdzIHRvIHN1cHBvcnQgcnVudGltZSBkaXNhYmxp
bmcgb2YgYXR0cmlidXRlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgKG9ubHkgc3VwcG9ydGVk
IGJ5IGNocm9tZSBjdXJyZW50bHkpCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbToKKyAgICAgICAgUmVmYWN0b3JlZCBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1
dGVEYXRhIHRvIGFsbG93IGdlbmVyYXRpbmcgYSBzaW5nbGUgQmF0Y2hlZEF0dHJpYnV0ZSBzdHJ1
Y3QuCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBFbmFibGVkQXRSdW50aW1lIGV4dGVu
ZGVkIGF0dHJpYnV0ZSwgd2hpY2ggZ2VuZXJhdGVzIGEgY2FsbCB0byB0aGUgYXBwcm9wcmlhdGUg
WFhYWEVuYWJsZWQoKSBBUEkgYmVmb3JlIGFkZGluZyB0aGUgYXR0cmlidXRlIHRvIHRoZSBpbnN0
YW5jZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyk6CisgICAgICAgIFJlZmFjdG9yZWQgYXR0cmli
dXRlIHNldHRpbmcgY29kZSBpbnRvIGEgY29tbW9uIGlubGluZSByb3V0aW5lLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbmZpZ3VyZUF0dHJp
YnV0ZSk6CisgICAgICAgIElubGluZSBmdW5jdGlvbiB3aGljaCBjb25maWd1cmVzIGEgc2luZ2xl
IGF0dHJpYnV0ZSBnaXZlbiBhIEJhdGNoZWRBdHRyaWJ1dGUgc3RydWN0LgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgQWRkZWQgKERFQ0xB
UkVfKUFDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUiB0byBhbGxvdyBlbmFibGluZyBhdHRyaWJ1dGVz
IGF0IHJ1bnRpbWUuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgQWRkZWQgY29kZSB0byBlbmFibGUgd2luZG93LkF1ZGlvIG9ubHkg
aWYgTWVkaWFQbGF5ZXIuaXNBdmFpbGFibGUoKSA9PSB0cnVlCisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorICAgICAgICBBZGRlZCBbRW5hYmxlZEF0UnVudGltZV0gZXh0ZW5kZWQgYXR0
cmlidXRlIHRvIHRoZSBBdWRpbyBhdHRyaWJ1dGUuCisKIDIwMDktMTAtMDcgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4
IGZvciBXaW5kb3dzIChDYWlybykuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQppbmRleCBjMmQzYmFiLi4wZWM5MjUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTExODUsMTcgKzExODUsMjEgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAjIEZvciB0aGUgRE9NV2luZG93IGludGVyZmFjZSB3
ZSBwYXJ0aXRpb24gdGhlIGF0dHJpYnV0ZXMgaW50byB0aGUKICAgICAjIG9uZXMgdGhhdCBkaXNh
bGxvd3Mgc2hhZG93aW5nIGFuZCB0aGUgcmVzdC4KICAgICBteSBAZGlzYWxsb3dzX3NoYWRvd2lu
ZzsKKyAgICAjIEFsc28gc2VwYXJhdGUgb3V0IGF0dHJpYnV0ZXMgdGhhdCBhcmUgZW5hYmxlZCBh
dCBydW50aW1lIHNvIHdlIGNhbiBwcm9jZXNzIHRoZW0gc3BlY2lhbGx5LgorICAgIG15IEBlbmFi
bGVkX2F0X3J1bnRpbWU7CiAgICAgbXkgQG5vcm1hbDsKLSAgICBpZiAoJGludGVyZmFjZU5hbWUg
ZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAJGF0dHJp
YnV0ZXMpIHsKLSAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEBkaXNhbGxvd3Nfc2hhZG93aW5nLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAbm9ybWFsLCAkYXR0cmlidXRlKTsKLSAgICAgICAg
ICAgIH0KKyAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEAkYXR0cmlidXRlcykgeworICAgICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgJiYgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7CisgICAg
ICAgICAgICBwdXNoKEBkaXNhbGxvd3Nfc2hhZG93aW5nLCAkYXR0cmlidXRlKTsKKyAgICAgICAg
fSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5h
YmxlZEF0UnVudGltZSJ9KSB7CisgICAgICAgICAgICBwdXNoKEBlbmFibGVkX2F0X3J1bnRpbWUs
ICRhdHRyaWJ1dGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAbm9ybWFs
LCAkYXR0cmlidXRlKTsKICAgICAgICAgfQotICAgICAgICAjIFB1dCB0aGUgYXR0cmlidXRlcyB0
aGF0IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUgc2hhZG93IG9iamVjdC4KLSAgICAgICAgJGF0
dHJpYnV0ZXMgPSBcQG5vcm1hbDsKKyAgICB9CisgICAgJGF0dHJpYnV0ZXMgPSBcQG5vcm1hbDsK
KyAgICAjIFB1dCB0aGUgYXR0cmlidXRlcyB0aGF0IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUg
c2hhZG93IG9iamVjdC4KKyAgICBpZiAoQGRpc2FsbG93c19zaGFkb3dpbmcpIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBzaGFkb3df
YXR0cnNbXSA9IHtcbiIpOwogICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhKCRk
YXRhTm9kZSwgXEBkaXNhbGxvd3Nfc2hhZG93aW5nKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9O1xuIik7CkBAIC0xMjc5LDYgKzEyODMsMjEgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAg
ICAjIFNldHVwIHRoZSBlbmFibGUtYXQtcnVudGltZSBhdHRycyBpZiB3ZSBoYXZlIHRoZW0KKyAg
ICBmb3JlYWNoIG15ICRydW50aW1lX2F0dHIgKEBlbmFibGVkX2F0X3J1bnRpbWUpIHsKKyAgICAg
ICAgJGVuYWJsZV9mdW5jdGlvbiA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldL
X3VjZmlyc3QoJHJ1bnRpbWVfYXR0ci0+c2lnbmF0dXJlLT5uYW1lKTsKKyAgICAgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkcnVudGltZV9hdHRy
LT5zaWduYXR1cmUpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICBpZiAoVjhDdXN0b206OnY4JHtlbmFibGVfZnVuY3Rpb259RW5hYmxlZCgp
KSB7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEJh
dGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPSAiKTsKKyAgICAgICAgR2VuZXJhdGVTaW5nbGVCYXRj
aGVkQXR0cmlidXRlKCRpbnRlcmZhY2VOYW1lLCAkcnVudGltZV9hdHRyLCAiOyIpOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIGNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0
YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsKKyAgfQorRU5ECisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKKyAgICB9CisKICAgICAjIERlZmluZSBvdXIgZnVuY3Rpb25zIHdpdGggU2V0KCkg
b3IgU2V0QWNjZXNzb3IoKQogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+
ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkYXR0ckV4dCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCA1NjY0ZWJk
Li4wMDhmN2Y1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTcyLDE1ICs3Miw4IEBAIGNv
bnN0IGNoYXIqIFY4UHJveHk6OmtDb250ZXh0RGVidWdEYXRhVmFsdWUgPSAidmFsdWUiOwogCiB2
b2lkIGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4gaW5zdGFuY2UsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90bywgY29uc3Qg
QmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmlidXRlcywgc2l6ZV90IGF0dHJpYnV0ZUNvdW50KQogewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkgewotICAgICAg
ICBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSAmYXR0cmlidXRlc1tpXTsKLSAg
ICAgICAgKGF0dHJpYnV0ZS0+b25Qcm90byA/IHByb3RvIDogaW5zdGFuY2UpLT5TZXRBY2Nlc3Nv
cih2ODo6U3RyaW5nOjpOZXcoYXR0cmlidXRlLT5uYW1lKSwKLSAgICAgICAgICAgIGF0dHJpYnV0
ZS0+Z2V0dGVyLAotICAgICAgICAgICAgYXR0cmlidXRlLT5zZXR0ZXIsCi0gICAgICAgICAgICBh
dHRyaWJ1dGUtPmRhdGEgPT0gVjhDbGFzc0luZGV4OjpJTlZBTElEX0NMQVNTX0lOREVYID8gdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCkgOiB2ODo6SW50ZWdlcjo6TmV3KFY4Q2xhc3NJbmRleDo6VG9J
bnQoYXR0cmlidXRlLT5kYXRhKSksCi0gICAgICAgICAgICBhdHRyaWJ1dGUtPnNldHRpbmdzLAot
ICAgICAgICAgICAgYXR0cmlidXRlLT5hdHRyaWJ1dGUpOwotICAgIH0KKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50OyArK2kpCisgICAgICAgIGNvbmZpZ3VyZUF0dHJp
YnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJpYnV0ZXNbaV0pOwogfQogCiB2b2lkIGJhdGNoQ29u
ZmlndXJlQ29uc3RhbnRzKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1bmN0aW9u
RGVzY3JpcHRvciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvLCBjb25zdCBC
YXRjaGVkQ29uc3RhbnQqIGNvbnN0YW50cywgc2l6ZV90IGNvbnN0YW50Q291bnQpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5oCmluZGV4IDA0YzExM2UuLjI3NjA5ODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBA
IC04MSw2ICs4MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB2b2lkIGJhdGNoQ29u
ZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sIHY4OjpIYW5k
bGU8djg6Ok9iamVjdFRlbXBsYXRlPiwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosIHNpemVfdCBh
dHRyaWJ1dGVDb3VudCk7CiAKKyAgICBpbmxpbmUgdm9pZCBjb25maWd1cmVBdHRyaWJ1dGUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3RUZW1wbGF0ZT4gcHJvdG8sIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKKyAg
ICB7CisgICAgICAgIChhdHRyaWJ1dGUub25Qcm90byA/IHByb3RvIDogaW5zdGFuY2UpLT5TZXRB
Y2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoYXR0cmlidXRlLm5hbWUpLAorICAgICAgICAgICAgYXR0
cmlidXRlLmdldHRlciwKKyAgICAgICAgICAgIGF0dHJpYnV0ZS5zZXR0ZXIsCisgICAgICAgICAg
ICBhdHRyaWJ1dGUuZGF0YSA9PSBWOENsYXNzSW5kZXg6OklOVkFMSURfQ0xBU1NfSU5ERVggPyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSA6IHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFzc0luZGV4OjpU
b0ludChhdHRyaWJ1dGUuZGF0YSkpLAorICAgICAgICAgICAgYXR0cmlidXRlLnNldHRpbmdzLAor
ICAgICAgICAgICAgYXR0cmlidXRlLmF0dHJpYnV0ZSk7CisgICAgfQorCiAgICAgLy8gQmF0Y2hl
ZENvbnN0YW50IHRyYW5zbGF0ZXMgaW50byBjYWxscyB0byBTZXQoKSBmb3Igc2V0dGluZyB1cCBh
biBvYmplY3QncwogICAgIC8vIGNvbnN0YW50cy4gSXQgc2V0cyB0aGUgY29uc3RhbnQgb24gYm90
aCB0aGUgRnVuY3Rpb25UZW1wbGF0ZSBhbmQgdGhlCiAgICAgLy8gT2JqZWN0VGVtcGxhdGUuIFBy
b3BlcnR5QXR0cmlidXRlcyBpcyBhbHdheXMgUmVhZE9ubHkuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCmluZGV4IDJmZjRlYTkuLmNhNWQyMGQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCkBAIC03OCw2ICs3
OCw4IEBAIHN0cnVjdCBOUE9iamVjdDsKICAgICBib29sIFY4Q3VzdG9tOjp2OCMjTkFNRSMjSW5k
ZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIFwKICAgICAgICAg
dWludDMyX3QgaW5kZXgsIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IGRhdGEpCiAKKyNkZWZpbmUgQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKE5BTUUpIGJvb2wgVjhD
dXN0b206OnY4IyNOQU1FIyNFbmFibGVkKCkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgRE9NV2luZG93OwpAQCAtMjMyLDYgKzIzNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBzdGF0aWMgYm9vbCB2OCMjTkFNRSMjSW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IGhvc3QsIFwKICAgICAgICAgdWludDMyX3QgaW5kZXgsIHY4OjpBY2Nlc3NU
eXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpCiAKKyNkZWZpbmUgREVDTEFSRV9B
Q0NFU1NPUl9SVU5USU1FX0VOQUJMRVIoTkFNRSkgc3RhdGljIGJvb2wgdjgjI05BTUUjI0VuYWJs
ZWQoKQorCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEU3Ryb2tlU3R5bGUpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREZpbGxTdHlsZSk7CiAgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1IoRE9NV2luZG93RXZlbnQpOwpAQCAtMjQxLDYgKzI0NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93QXVkaW8pOworICAgICAgICBERUNMQVJFX0FD
Q0VTU09SX1JVTlRJTUVfRU5BQkxFUihET01XaW5kb3dBdWRpbyk7CiAjZW5kaWYKIAogICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihET01XaW5kb3dJbWFnZSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXgg
MGRjNWE5Ni4uYTU3OWM5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9h
ZFJlcXVlc3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQ29sbGVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCkBA
IC0yMzUsNiArMjM2LDExIEBAIEFDQ0VTU09SX0dFVFRFUihET01XaW5kb3dBdWRpbykKICAgICBy
ZXR1cm4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3RvcihWOENsYXNzSW5kZXg6OkFVRElPLCB3
aW5kb3cpOwogfQogCitBQ0NFU1NPUl9SVU5USU1FX0VOQUJMRVIoRE9NV2luZG93QXVkaW8pCit7
CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOworfQorCiAjZW5kaWYKIAog
QUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0ltYWdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5pZGwgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA5ZTNkZjQ4
Li5kYjY0YzYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNTIzLDcgKzUyMyw3IEBAIG1vZHVsZSB3aW5k
b3cgewogICAgICAgICBhdHRyaWJ1dGUgU3RvcmFnZUV2ZW50Q29uc3RydWN0b3IgU3RvcmFnZUV2
ZW50OwogI2VuZGlmCiAKLSAgICAgICAgYXR0cmlidXRlIFtDdXN0b21HZXR0ZXIsQ29uZGl0aW9u
YWw9VklERU9dIEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3RvciBBdWRpbzsgLy8gVXNhYmxlIHdp
dGggdGhlIG5ldyBvcGVyYXRvcgorICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlcixDb25k
aXRpb25hbD1WSURFTyxFbmFibGVkQXRSdW50aW1lXSBIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0
b3IgQXVkaW87IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKICAgICAgICAgYXR0cmli
dXRlIFtDb25kaXRpb25hbD1WSURFT10gSFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yIEhUTUxB
dWRpb0VsZW1lbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU9dIEhUTUxN
ZWRpYUVsZW1lbnRDb25zdHJ1Y3RvciBIVE1MTWVkaWFFbGVtZW50OwogICAgICAgICBhdHRyaWJ1
dGUgW0NvbmRpdGlvbmFsPVZJREVPXSBIVE1MVmlkZW9FbGVtZW50Q29uc3RydWN0b3IgSFRNTFZp
ZGVvRWxlbWVudDsK
</data>
<flag name="review"
          id="22280"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41081</attachid>
            <date>2009-10-12 21:42:37 -0700</date>
            <delta_ts>2009-10-13 13:19:24 -0700</delta_ts>
            <desc>patch addressing dglazkov&apos;s comments</desc>
            <filename>ab</filename>
            <type>text/plain</type>
            <size>11599</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmQ1OTFlOC4uNmU1ZTA1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0xMC0wOCAgRHJldyBXaWxzb24g
IDxhdHdpbHNvbkBhdHdpbHNvbi1tYWNwcm8ubG9jYWw+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2luZG93IGF0dHJpYnV0ZXMgKGxpa2UgbG9jYWxT
dG9yYWdlKSB0aGF0IGFyZSBkaXNhYmxlZCBhdCBydW50aW1lIGFyZSBzdGlsbCB2aXNpYmxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI0MAorCisg
ICAgICAgIEFkZGluZyBjb2RlZ2VuL2JpbmRpbmdzIHRvIHN1cHBvcnQgcnVudGltZSBkaXNhYmxp
bmcgb2YgYXR0cmlidXRlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgKG9ubHkgc3VwcG9ydGVk
IGJ5IGNocm9tZSBjdXJyZW50bHkpCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbToKKyAgICAgICAgUmVmYWN0b3JlZCBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1
dGVEYXRhIHRvIGFsbG93IGdlbmVyYXRpbmcgYSBzaW5nbGUgQmF0Y2hlZEF0dHJpYnV0ZSBzdHJ1
Y3QuCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBFbmFibGVkQXRSdW50aW1lIGV4dGVu
ZGVkIGF0dHJpYnV0ZSwgd2hpY2ggZ2VuZXJhdGVzIGEgY2FsbCB0byB0aGUgYXBwcm9wcmlhdGUg
WFhYWEVuYWJsZWQoKSBBUEkgYmVmb3JlIGFkZGluZyB0aGUgYXR0cmlidXRlIHRvIHRoZSBpbnN0
YW5jZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyk6CisgICAgICAgIFJlZmFjdG9yZWQgYXR0cmli
dXRlIHNldHRpbmcgY29kZSBpbnRvIGEgY29tbW9uIGlubGluZSByb3V0aW5lLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbmZpZ3VyZUF0dHJp
YnV0ZSk6CisgICAgICAgIElubGluZSBmdW5jdGlvbiB3aGljaCBjb25maWd1cmVzIGEgc2luZ2xl
IGF0dHJpYnV0ZSBnaXZlbiBhIEJhdGNoZWRBdHRyaWJ1dGUgc3RydWN0LgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgQWRkZWQgKERFQ0xB
UkVfKUFDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUiB0byBhbGxvdyBlbmFibGluZyBhdHRyaWJ1dGVz
IGF0IHJ1bnRpbWUuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgQWRkZWQgY29kZSB0byBlbmFibGUgd2luZG93LkF1ZGlvIG9ubHkg
aWYgTWVkaWFQbGF5ZXIuaXNBdmFpbGFibGUoKSA9PSB0cnVlCisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorICAgICAgICBBZGRlZCBbRW5hYmxlZEF0UnVudGltZV0gZXh0ZW5kZWQgYXR0
cmlidXRlIHRvIHRoZSBBdWRpbyBhdHRyaWJ1dGUuCisKIDIwMDktMTAtMDcgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4
IGZvciBXaW5kb3dzIChDYWlybykuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQppbmRleCBjMmQzYmFiLi5lMDI3Yjc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTk0Niw3ICs5NDYsNyBAQCBzdWIgR2VuZXJh
dGVCYXRjaGVkQXR0cmlidXRlRGF0YQogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQCRhdHRy
aWJ1dGVzKSB7CiAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0
aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOwotICAgICAgICBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5h
bWUsICRhdHRyaWJ1dGUsICIsIik7CisgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJp
YnV0ZSgkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSwgIiwiLCAiIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKICAgICB9CiB9CkBAIC05NTYsNiArOTU2LDcgQEAgc3ViIEdlbmVy
YXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZQogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7
CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwogICAgIG15ICRkZWxpbWl0ZXIgPSBzaGlmdDsK
KyAgICBteSAkaW5kZW50ID0gc2hpZnQ7CiAgICAgbXkgJGF0dHJOYW1lID0gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lOwogICAgIG15ICRhdHRyRXh0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXM7CiAKQEAgLTEwNTksMTcgKzEwNjAsMTYgQEAgc3ViIEdlbmVy
YXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZQogICAgIG15ICRjb21tZW50SW5mbyA9ICJBdHRyaWJ1
dGUgJyRhdHRyTmFtZScgKFR5cGU6ICciIC4gJGF0dHJpYnV0ZS0+dHlwZSAuCiAgICAgICAgICAg
ICAgICAgICAgICAgIicgRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkp
IC4gIicpIjsKIAotICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgewotICAgICAg
Ly8gJGNvbW1lbnRJbmZvCi0gICAgICAiJGF0dHJOYW1lIiwKLSAgICAgICRnZXR0ZXIsCi0gICAg
ICAkc2V0dGVyLAotICAgICAgJGRhdGEsCi0gICAgICAkYWNjZXNzQ29udHJvbCwKLSAgICAgIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BBdHRyKSwKLSAgICAgICRvbl9w
cm90bwotICAgIH0kZGVsaW1pdGVyCisgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAi
ICAgIHtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICAgICAgXC9c
LyAkY29tbWVudEluZm9cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAg
ICAgICAgXCIkYXR0ck5hbWVcIixcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50
IC4gIiAgICAgICAgJGdldHRlcixcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50
IC4gIiAgICAgICAgJHNldHRlcixcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50
IC4gIiAgICAgICAgJGRhdGEsXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAu
ICIgICAgICAgICRhY2Nlc3NDb250cm9sLFxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICRp
bmRlbnQgLiAiICAgICAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9w
QXR0ciksXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgICAgICRv
bl9wcm90b1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIH0iIC4g
JGRlbGltaXRlciAuICJcbiIpOwogRU5ECiB9CiAKQEAgLTExODQsMjAgKzExODQsMjQgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICMgRm9yIHRoZSBET01XaW5kb3cgaW50ZXJm
YWNlIHdlIHBhcnRpdGlvbiB0aGUgYXR0cmlidXRlcyBpbnRvIHRoZQogICAgICMgb25lcyB0aGF0
IGRpc2FsbG93cyBzaGFkb3dpbmcgYW5kIHRoZSByZXN0LgotICAgIG15IEBkaXNhbGxvd3Nfc2hh
ZG93aW5nOworICAgIG15IEBkaXNhbGxvd3NTaGFkb3dpbmc7CisgICAgIyBBbHNvIHNlcGFyYXRl
IG91dCBhdHRyaWJ1dGVzIHRoYXQgYXJlIGVuYWJsZWQgYXQgcnVudGltZSBzbyB3ZSBjYW4gcHJv
Y2VzcyB0aGVtIHNwZWNpYWxseS4KKyAgICBteSBAZW5hYmxlZEF0UnVudGltZTsKICAgICBteSBA
bm9ybWFsOwotICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAg
ICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEAkYXR0cmlidXRlcykgewotICAgICAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4RGlzYWxsb3dT
aGFkb3dpbmcifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGRpc2FsbG93c19zaGFkb3dpbmcs
ICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNo
KEBub3JtYWwsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgfQorICAgIGZvcmVhY2ggbXkgJGF0
dHJpYnV0ZSAoQCRhdHRyaWJ1dGVzKSB7CisgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93IiAmJiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKKyAgICAgICAgICAgIHB1c2goQGRpc2FsbG93c1No
YWRvd2luZywgJGF0dHJpYnV0ZSk7CisgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRBdFJ1bnRpbWUifSkgeworICAgICAg
ICAgICAgcHVzaChAZW5hYmxlZEF0UnVudGltZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBwdXNoKEBub3JtYWwsICRhdHRyaWJ1dGUpOwogICAgICAgICB9Ci0g
ICAgICAgICMgUHV0IHRoZSBhdHRyaWJ1dGVzIHRoYXQgZGlzYWxsb3cgc2hhZG93aW5nIG9uIHRo
ZSBzaGFkb3cgb2JqZWN0LgotICAgICAgICAkYXR0cmlidXRlcyA9IFxAbm9ybWFsOworICAgIH0K
KyAgICAkYXR0cmlidXRlcyA9IFxAbm9ybWFsOworICAgICMgUHV0IHRoZSBhdHRyaWJ1dGVzIHRo
YXQgZGlzYWxsb3cgc2hhZG93aW5nIG9uIHRoZSBzaGFkb3cgb2JqZWN0LgorICAgIGlmIChAZGlz
YWxsb3dzU2hhZG93aW5nKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNv
bnN0IEJhdGNoZWRBdHRyaWJ1dGUgc2hhZG93X2F0dHJzW10gPSB7XG4iKTsKLSAgICAgICAgR2Vu
ZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YSgkZGF0YU5vZGUsIFxAZGlzYWxsb3dzX3NoYWRvd2lu
Zyk7CisgICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCBcQGRp
c2FsbG93c1NoYWRvd2luZyk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpOwog
ICAgIH0KIApAQCAtMTI3OSw2ICsxMjgzLDIxIEBAIEVORAogRU5ECiAgICAgfQogCisgICAgIyBT
ZXR1cCB0aGUgZW5hYmxlLWF0LXJ1bnRpbWUgYXR0cnMgaWYgd2UgaGF2ZSB0aGVtCisgICAgZm9y
ZWFjaCBteSAkcnVudGltZV9hdHRyIChAZW5hYmxlZEF0UnVudGltZSkgeworICAgICAgICAkZW5h
YmxlX2Z1bmN0aW9uID0gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJz
dCgkcnVudGltZV9hdHRyLT5zaWduYXR1cmUtPm5hbWUpOworICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRydW50aW1lX2F0dHItPnNpZ25h
dHVyZSk7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKFY4Q3VzdG9tOjp2OCR7ZW5hYmxlX2Z1bmN0aW9ufUVuYWJsZWQoKSkge1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzdGF0aWMgY29uc3QgQmF0
Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XFxcbiIpOworICAgICAgICBHZW5lcmF0ZVNpbmdsZUJh
dGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5hbWUsICRydW50aW1lX2F0dHIsICI7IiwgIiAgICAi
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICAgICAgY29uZmlndXJl
QXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOworICAgIH0KK0VORAorICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgfQorCiAgICAgIyBEZWZpbmUgb3VyIGZ1bmN0
aW9ucyB3aXRoIFNldCgpIG9yIFNldEFjY2Vzc29yKCkKICAgICBmb3JlYWNoIG15ICRmdW5jdGlv
biAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKICAgICAgICAgbXkgJGF0dHJFeHQgPSAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5j
cHAKaW5kZXggNTY2NGViZC4uMDA4ZjdmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFByb3h5LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCkBAIC03
MiwxNSArNzIsOCBAQCBjb25zdCBjaGFyKiBWOFByb3h5OjprQ29udGV4dERlYnVnRGF0YVZhbHVl
ID0gInZhbHVlIjsKIAogdm9pZCBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModjg6OkhhbmRsZTx2
ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4gcHJvdG8sIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIHNpemVfdCBhdHRy
aWJ1dGVDb3VudCkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50
OyArK2kpIHsKLSAgICAgICAgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmlidXRlID0gJmF0
dHJpYnV0ZXNbaV07Ci0gICAgICAgIChhdHRyaWJ1dGUtPm9uUHJvdG8gPyBwcm90byA6IGluc3Rh
bmNlKS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KGF0dHJpYnV0ZS0+bmFtZSksCi0gICAg
ICAgICAgICBhdHRyaWJ1dGUtPmdldHRlciwKLSAgICAgICAgICAgIGF0dHJpYnV0ZS0+c2V0dGVy
LAotICAgICAgICAgICAgYXR0cmlidXRlLT5kYXRhID09IFY4Q2xhc3NJbmRleDo6SU5WQUxJRF9D
TEFTU19JTkRFWCA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpIDogdjg6OkludGVnZXI6Ok5ldyhW
OENsYXNzSW5kZXg6OlRvSW50KGF0dHJpYnV0ZS0+ZGF0YSkpLAotICAgICAgICAgICAgYXR0cmli
dXRlLT5zZXR0aW5ncywKLSAgICAgICAgICAgIGF0dHJpYnV0ZS0+YXR0cmlidXRlKTsKLSAgICB9
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudDsgKytpKQorICAgICAg
ICBjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyaWJ1dGVzW2ldKTsKIH0K
IAogdm9pZCBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBmdW5jdGlvbkRlc2NyaXB0b3IsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRl
PiBwcm90bywgY29uc3QgQmF0Y2hlZENvbnN0YW50KiBjb25zdGFudHMsIHNpemVfdCBjb25zdGFu
dENvdW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCAwNGMxMTNlLi4yNzYwOTg0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UHJveHkuaApAQCAtODEsNiArODEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgdm9pZCBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVt
cGxhdGU+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sIGNvbnN0IEJhdGNoZWRBdHRy
aWJ1dGUqLCBzaXplX3QgYXR0cmlidXRlQ291bnQpOwogCisgICAgaW5saW5lIHZvaWQgY29uZmln
dXJlQXR0cmlidXRlKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvLCBjb25zdCBCYXRjaGVkQXR0cmlidXRl
JiBhdHRyaWJ1dGUpCisgICAgeworICAgICAgICAoYXR0cmlidXRlLm9uUHJvdG8gPyBwcm90byA6
IGluc3RhbmNlKS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KGF0dHJpYnV0ZS5uYW1lKSwK
KyAgICAgICAgICAgIGF0dHJpYnV0ZS5nZXR0ZXIsCisgICAgICAgICAgICBhdHRyaWJ1dGUuc2V0
dGVyLAorICAgICAgICAgICAgYXR0cmlidXRlLmRhdGEgPT0gVjhDbGFzc0luZGV4OjpJTlZBTElE
X0NMQVNTX0lOREVYID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgOiB2ODo6SW50ZWdlcjo6TmV3
KFY4Q2xhc3NJbmRleDo6VG9JbnQoYXR0cmlidXRlLmRhdGEpKSwKKyAgICAgICAgICAgIGF0dHJp
YnV0ZS5zZXR0aW5ncywKKyAgICAgICAgICAgIGF0dHJpYnV0ZS5hdHRyaWJ1dGUpOworICAgIH0K
KwogICAgIC8vIEJhdGNoZWRDb25zdGFudCB0cmFuc2xhdGVzIGludG8gY2FsbHMgdG8gU2V0KCkg
Zm9yIHNldHRpbmcgdXAgYW4gb2JqZWN0J3MKICAgICAvLyBjb25zdGFudHMuIEl0IHNldHMgdGhl
IGNvbnN0YW50IG9uIGJvdGggdGhlIEZ1bmN0aW9uVGVtcGxhdGUgYW5kIHRoZQogICAgIC8vIE9i
amVjdFRlbXBsYXRlLiBQcm9wZXJ0eUF0dHJpYnV0ZXMgaXMgYWx3YXlzIFJlYWRPbmx5LgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmggYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAppbmRleCAyZmY0ZWE5
Li5jYTVkMjBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuaApAQCAtNzgsNiArNzgsOCBAQCBzdHJ1Y3QgTlBPYmplY3Q7CiAgICAgYm9vbCBWOEN1c3Rv
bTo6djgjI05BTUUjI0luZGV4ZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBo
b3N0LCBcCiAgICAgICAgIHVpbnQzMl90IGluZGV4LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiBkYXRhKQogCisjZGVmaW5lIEFDQ0VTU09SX1JVTlRJTUVfRU5BQkxF
UihOQU1FKSBib29sIFY4Q3VzdG9tOjp2OCMjTkFNRSMjRW5hYmxlZCgpCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIGNsYXNzIERPTVdpbmRvdzsKQEAgLTIzMiw2ICsyMzQsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgc3RhdGljIGJvb2wgdjgjI05BTUUjI0luZGV4ZWRTZWN1cml0
eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCBcCiAgICAgICAgIHVpbnQzMl90IGlu
ZGV4LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKQogCisj
ZGVmaW5lIERFQ0xBUkVfQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKE5BTUUpIHN0YXRpYyBib29s
IHY4IyNOQU1FIyNFbmFibGVkKCkKKwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFN0cm9rZVN0eWxlKTsKICAgICAgICAgREVDTEFSRV9Q
Uk9QRVJUWV9BQ0NFU1NPUihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRGaWxsU3R5bGUpOwogICAg
ICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKERPTVdpbmRvd0V2ZW50KTsKQEAgLTI0MSw2
ICsyNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
ICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0F1ZGlvKTsKKyAg
ICAgICAgREVDTEFSRV9BQ0NFU1NPUl9SVU5USU1FX0VOQUJMRVIoRE9NV2luZG93QXVkaW8pOwog
I2VuZGlmCiAKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoRE9NV2lu
ZG93SW1hZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01X
aW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwCmluZGV4IDBkYzVhOTYuLmE1NzljOTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlNjaGVk
dWxlZEFjdGlvbi5oIgpAQCAtMjM1LDYgKzIzNiwxMSBAQCBBQ0NFU1NPUl9HRVRURVIoRE9NV2lu
ZG93QXVkaW8pCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Z2V0Q29uc3RydWN0b3IoVjhDbGFz
c0luZGV4OjpBVURJTywgd2luZG93KTsKIH0KIAorQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKERP
TVdpbmRvd0F1ZGlvKQoreworICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsK
K30KKwogI2VuZGlmCiAKIEFDQ0VTU09SX0dFVFRFUihET01XaW5kb3dJbWFnZSkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwKaW5kZXggOWUzZGY0OC4uZGI2NGM2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTUyMyw3ICs1MjMs
NyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFN0b3JhZ2VFdmVudENvbnN0
cnVjdG9yIFN0b3JhZ2VFdmVudDsKICNlbmRpZgogCi0gICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9t
R2V0dGVyLENvbmRpdGlvbmFsPVZJREVPXSBIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IgQXVk
aW87IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKKyAgICAgICAgYXR0cmlidXRlIFtD
dXN0b21HZXR0ZXIsQ29uZGl0aW9uYWw9VklERU8sRW5hYmxlZEF0UnVudGltZV0gSFRNTEF1ZGlv
RWxlbWVudENvbnN0cnVjdG9yIEF1ZGlvOyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9y
CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU9dIEhUTUxBdWRpb0VsZW1lbnRD
b25zdHJ1Y3RvciBIVE1MQXVkaW9FbGVtZW50OwogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlv
bmFsPVZJREVPXSBIVE1MTWVkaWFFbGVtZW50Q29uc3RydWN0b3IgSFRNTE1lZGlhRWxlbWVudDsK
ICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFT10gSFRNTFZpZGVvRWxlbWVudENv
bnN0cnVjdG9yIEhUTUxWaWRlb0VsZW1lbnQ7Cg==
</data>
<flag name="review"
          id="22402"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="22403"
          type_id="3"
          status="-"
          setter="atwilson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41120</attachid>
            <date>2009-10-13 13:19:24 -0700</date>
            <delta_ts>2009-10-13 13:22:28 -0700</delta_ts>
            <desc>Combined two patches into a single one.</desc>
            <filename>z</filename>
            <type>text/plain</type>
            <size>19550</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmQ1OTFlOC4uMjJiOTQ4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0xMC0wOCAgRHJldyBXaWxzb24g
IDxhdHdpbHNvbkBhdHdpbHNvbi1tYWNwcm8ubG9jYWw+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2luZG93IGF0dHJpYnV0ZXMgKGxpa2UgbG9jYWxT
dG9yYWdlKSB0aGF0IGFyZSBkaXNhYmxlZCBhdCBydW50aW1lIGFyZSBzdGlsbCB2aXNpYmxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI0MAorCisg
ICAgICAgIEFkZGluZyBjb2RlZ2VuL2JpbmRpbmdzIHRvIHN1cHBvcnQgcnVudGltZSBkaXNhYmxp
bmcgb2YgYXR0cmlidXRlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgKG9ubHkgc3VwcG9ydGVk
IGJ5IGNocm9tZSBjdXJyZW50bHkpCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbToKKyAgICAgICAgUmVmYWN0b3JlZCB0aGUgZ3V0cyBvZiBHZW5lcmF0ZUJh
dGNoZWRBdHRyaWJ1dGVEYXRhIGludG8gYSBzZXBhcmF0ZSBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRB
dHRyaWJ1dGUgd2l0aCBhIHBhc3NlZC1pbiBpbmRlbnRhdGlvbiBsZXZlbCB0byBhbGxvdyBnZW5l
cmF0aW5nIGEgc2luZ2xlIEJhdGNoZWRBdHRyaWJ1dGUgc3RydWN0LgorICAgICAgICBBZGRlZCBz
dXBwb3J0IGZvciB0aGUgRW5hYmxlZEF0UnVudGltZSBleHRlbmRlZCBhdHRyaWJ1dGUsIHdoaWNo
IGdlbmVyYXRlcyBhIGNhbGwgdG8gdGhlIGFwcHJvcHJpYXRlIFhYWFhFbmFibGVkKCkgQVBJIGJl
Zm9yZSBhZGRpbmcgdGhlIGF0dHJpYnV0ZSB0byB0aGUgaW5zdGFuY2UuCisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiYXRjaENvbmZpZ3VyZUF0
dHJpYnV0ZXMpOgorICAgICAgICBSZWZhY3RvcmVkIGF0dHJpYnV0ZSBzZXR0aW5nIGNvZGUgaW50
byBhIGNvbW1vbiBpbmxpbmUgcm91dGluZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpjb25maWd1cmVBdHRyaWJ1dGUpOgorICAgICAgICBJbmxp
bmUgZnVuY3Rpb24gd2hpY2ggY29uZmlndXJlcyBhIHNpbmdsZSBhdHRyaWJ1dGUgZ2l2ZW4gYSBC
YXRjaGVkQXR0cmlidXRlIHN0cnVjdC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmg6CisgICAgICAgIEFkZGVkIChERUNMQVJFXylBQ0NFU1NPUl9SVU5USU1F
X0VOQUJMRVIgdG8gYWxsb3cgZW5hYmxpbmcgYXR0cmlidXRlcyBhdCBydW50aW1lLgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIEFk
ZGVkIGNvZGUgdG8gZW5hYmxlIHdpbmRvdy5BdWRpbyBvbmx5IGlmIE1lZGlhUGxheWVyLmlzQXZh
aWxhYmxlKCkgPT0gdHJ1ZQorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAg
QWRkZWQgW0VuYWJsZWRBdFJ1bnRpbWVdIGV4dGVuZGVkIGF0dHJpYnV0ZSB0byB0aGUgQXVkaW8g
YXR0cmlidXRlLgorCiAyMDA5LTEwLTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgV2luZG93cyAoQ2Fpcm8p
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZDgz
YjBlZi4uZTAyN2I3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCkBAIC05NDQsMTI2ICs5NDQsMTM0IEBAIHN1YiBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1
dGVEYXRhCiAgICAgbXkgJGF0dHJpYnV0ZXMgPSBzaGlmdDsKIAogICAgIGZvcmVhY2ggbXkgJGF0
dHJpYnV0ZSAoQCRhdHRyaWJ1dGVzKSB7Ci0gICAgICAgIG15ICRhdHRyTmFtZSA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZTsKLSAgICAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKLQotICAgICAgICBteSAkYWNjZXNzQ29udHJv
bCA9ICJ2ODo6REVGQVVMVCI7Ci0gICAgICAgIGlmICgkYXR0ckV4dC0+eyJEb05vdENoZWNrRG9t
YWluU2VjdXJpdHlPbkdldCJ9KSB7Ci0gICAgICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6
QUxMX0NBTl9SRUFEIjsKLSAgICAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiRG9Ob3RDaGVja0Rv
bWFpblNlY3VyaXR5T25TZXQifSkgewotICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6
OkFMTF9DQU5fV1JJVEUiOwotICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJEb05vdENoZWNr
RG9tYWluU2VjdXJpdHkifSkgewotICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFM
TF9DQU5fUkVBRCI7Ci0gICAgICAgICAgICBpZiAoISgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVh
ZG9ubHkvKSAmJiAhKCRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkpIHsKLSAgICAgICAgICAgICAg
ICAkYWNjZXNzQ29udHJvbCAuPSAifHY4OjpBTExfQ0FOX1dSSVRFIjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9
KSB7Ci0gICAgICAgICAgICAkYWNjZXNzQ29udHJvbCAuPSAifHY4OjpQUk9ISUJJVFNfT1ZFUldS
SVRJTkciOwotICAgICAgICB9Ci0gICAgICAgICRhY2Nlc3NDb250cm9sID0gInN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPigiIC4gJGFjY2Vzc0NvbnRyb2wgLiAiKSI7Ci0KLSAgICAgICAg
bXkgJGN1c3RvbUFjY2Vzc29yID0KLSAgICAgICAgICAgICRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8
Ci0gICAgICAgICAgICAkYXR0ckV4dC0+eyJDdXN0b21TZXR0ZXIifSB8fAotICAgICAgICAgICAg
JGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0gfHwKLSAgICAgICAgICAgICRhdHRyRXh0LT57IlY4
Q3VzdG9tIn0gfHwKLSAgICAgICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwK
LSAgICAgICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVyIn0gfHwKLSAgICAgICAgICAg
ICIiOwotICAgICAgICBpZiAoJGN1c3RvbUFjY2Vzc29yIGVxIDEpIHsKLSAgICAgICAgICAgICMg
dXNlIHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50ZXJmYWNlICsgKGNhcGl0YWxpemUpIGF0dHIg
bmFtZQotICAgICAgICAgICAgJGN1c3RvbUFjY2Vzc29yID0gJGludGVyZmFjZU5hbWUgLiAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0ck5hbWUpOwotICAgICAgICB9CisgICAgICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICBHZW5lcmF0
ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUsICIsIiwg
IiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgfQorfQogCi0gICAgICAg
IG15ICRnZXR0ZXI7Ci0gICAgICAgIG15ICRzZXR0ZXI7Ci0gICAgICAgIG15ICRwcm9wQXR0ciA9
ICJ2ODo6Tm9uZSI7Ci0gICAgICAgIG15ICRoYXNDdXN0b21TZXR0ZXIgPSAwOworc3ViIEdlbmVy
YXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZQoreworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hp
ZnQ7CisgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OworICAgIG15ICRkZWxpbWl0ZXIgPSBzaGlm
dDsKKyAgICBteSAkaW5kZW50ID0gc2hpZnQ7CisgICAgbXkgJGF0dHJOYW1lID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgIG15ICRhdHRyRXh0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXM7CiAKLSAgICAgICAgIyBDaGVjayBhdHRyaWJ1dGVzLgot
ICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRG9udEVudW0ifSkgewotICAgICAgICAgICAgJHByb3BB
dHRyIC49ICJ8djg6OkRvbnRFbnVtIjsKLSAgICAgICAgfQotICAgICAgICBpZiAoJGF0dHJFeHQt
PnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Ci0gICAgICAgICAgICAkcHJvcEF0dHIgLj0gInx2
ODo6RG9udERlbGV0ZSI7CisgICAgbXkgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkRFRkFVTFQiOwor
ICAgIGlmICgkYXR0ckV4dC0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHlPbkdldCJ9KSB7Cisg
ICAgICAgICRhY2Nlc3NDb250cm9sID0gInY4OjpBTExfQ0FOX1JFQUQiOworICAgIH0gZWxzaWYg
KCRhdHRyRXh0LT57IkRvTm90Q2hlY2tEb21haW5TZWN1cml0eU9uU2V0In0pIHsKKyAgICAgICAg
JGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fV1JJVEUiOworICAgIH0gZWxzaWYgKCRhdHRy
RXh0LT57IkRvTm90Q2hlY2tEb21haW5TZWN1cml0eSJ9KSB7CisgICAgICAgICRhY2Nlc3NDb250
cm9sID0gInY4OjpBTExfQ0FOX1JFQUQiOworICAgICAgICBpZiAoISgkYXR0cmlidXRlLT50eXBl
ID1+IC9ecmVhZG9ubHkvKSAmJiAhKCRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkpIHsKKyAgICAg
ICAgICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OkFMTF9DQU5fV1JJVEUiOwogICAgICAgICB9
CisgICAgfQorICAgIGlmICgkYXR0ckV4dC0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKKyAg
ICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6UFJPSElCSVRTX09WRVJXUklUSU5HIjsKKyAg
ICB9CisgICAgJGFjY2Vzc0NvbnRyb2wgPSAic3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KCIgLiAkYWNjZXNzQ29udHJvbCAuICIpIjsKIAotICAgICAgICBteSAkb25fcHJvdG8gPSAiMCAv
KiBvbiBpbnN0YW5jZSAqLyI7Ci0gICAgICAgIG15ICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6SU5W
QUxJRF9DTEFTU19JTkRFWCAvKiBubyBkYXRhICovIjsKKyAgICBteSAkY3VzdG9tQWNjZXNzb3Ig
PQorICAgICAgICAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fAorICAgICAgICAkYXR0ckV4dC0+eyJD
dXN0b21TZXR0ZXIifSB8fAorICAgICAgICAkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSB8fAor
ICAgICAgICAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9IHx8CisgICAgICAgICRhdHRyRXh0LT57IlY4
Q3VzdG9tU2V0dGVyIn0gfHwKKyAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21HZXR0ZXIifSB8
fAorICAgICAgICAiIjsKKyAgICBpZiAoJGN1c3RvbUFjY2Vzc29yIGVxIDEpIHsKKyAgICAgICAg
IyB1c2UgdGhlIG5hbWluZyBjb252ZW5zaW9uLCBpbnRlcmZhY2UgKyAoY2FwaXRhbGl6ZSkgYXR0
ciBuYW1lCisgICAgICAgICRjdXN0b21BY2Nlc3NvciA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVH
ZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJOYW1lKTsKKyAgICB9CiAKLSAgICAgICAgIyBDb25z
dHJ1Y3RvcgotICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25z
dHJ1Y3RvciQvKSB7Ci0gICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGNvZGVHZW5l
cmF0b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7Ci0gICAgICAg
ICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87Ci0gICAgICAgICAgICBt
eSAkY29uc3RydWN0b3JJbmRleCA9IHVjKCRjb25zdHJ1Y3RvclR5cGUpOwotICAgICAgICAgICAg
aWYgKCRjdXN0b21BY2Nlc3NvcikgewotICAgICAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0
b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvckdldHRlciI7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6JHtjb25zdHJ1Y3Rv
ckluZGV4fSI7Ci0gICAgICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50
ZXJuYWw6OiR7aW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3RvckdldHRlciI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAkc2V0dGVyID0gIjAiOwotICAgICAgICAgICAgJHByb3BBdHRyID0gInY4
OjpSZWFkT25seSI7CisgICAgbXkgJGdldHRlcjsKKyAgICBteSAkc2V0dGVyOworICAgIG15ICRw
cm9wQXR0ciA9ICJ2ODo6Tm9uZSI7CisgICAgbXkgJGhhc0N1c3RvbVNldHRlciA9IDA7CiAKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICMgRGVmYXVsdCBHZXR0ZXIgYW5kIFNldHRlcgot
ICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5h
bWV9QXR0ckdldHRlciI7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1J
bnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKLQotICAgICAgICAgICAgIyBDdXN0b20g
U2V0dGVyCi0gICAgICAgICAgICBpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0
dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fCAkYXR0
ckV4dC0+eyJWOEN1c3RvbSJ9KSB7Ci0gICAgICAgICAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9
IDE7Ci0gICAgICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vz
c29yfUFjY2Vzc29yU2V0dGVyIjsKLSAgICAgICAgICAgIH0KKyAgICAjIENoZWNrIGF0dHJpYnV0
ZXMuCisgICAgaWYgKCRhdHRyRXh0LT57IkRvbnRFbnVtIn0pIHsKKyAgICAgICAgJHByb3BBdHRy
IC49ICJ8djg6OkRvbnRFbnVtIjsKKyAgICB9CisgICAgaWYgKCRhdHRyRXh0LT57IlY4RGlzYWxs
b3dTaGFkb3dpbmcifSkgeworICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udERlbGV0ZSI7
CisgICAgfQogCi0gICAgICAgICAgICAjIEN1c3RvbSBHZXR0ZXIKLSAgICAgICAgICAgIGlmICgk
YXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fCAkYXR0
ckV4dC0+eyJWOEN1c3RvbSJ9KSB7Ci0gICAgICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3Rv
bTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKLSAgICAgICAgICAgIH0KKyAg
ICBteSAkb25fcHJvdG8gPSAiMCAvKiBvbiBpbnN0YW5jZSAqLyI7CisgICAgbXkgJGRhdGEgPSAi
VjhDbGFzc0luZGV4OjpJTlZBTElEX0NMQVNTX0lOREVYIC8qIG5vIGRhdGEgKi8iOworCisgICAg
IyBDb25zdHJ1Y3RvcgorICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0Nv
bnN0cnVjdG9yJC8pIHsKKyAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRjb2RlR2VuZXJh
dG9yLT5TdHJpcE1vZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAk
Y29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CisgICAgICAgIG15ICRjb25zdHJ1
Y3RvckluZGV4ID0gdWMoJGNvbnN0cnVjdG9yVHlwZSk7CisgICAgICAgIGlmICgkY3VzdG9tQWNj
ZXNzb3IpIHsKKyAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nl
c3Nvcn1BY2Nlc3NvckdldHRlciI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkZGF0
YSA9ICJWOENsYXNzSW5kZXg6OiR7Y29uc3RydWN0b3JJbmRleH0iOworICAgICAgICAgICAgJGdl
dHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7aW50ZXJmYWNlTmFtZX1Db25zdHJ1
Y3RvckdldHRlciI7CiAgICAgICAgIH0KKyAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICAgICAg
JHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7CiAKLSAgICAgICAgIyBSZXBsYWNlYWJsZQotICAg
ICAgICBpZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSAmJiAhJGhhc0N1c3RvbVNldHRlcikg
ewotICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKLSAgICAgICAgICAgICMgSGFuZGxlIHRoZSBz
cGVjaWFsIGNhc2Ugb2Ygd2luZG93LnRvcCBiZWluZyBtYXJrZWQgYXMgUmVwbGFjZWFibGUuCi0g
ICAgICAgICAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aGV0aGVyIHdlIGNvdWxkIHRyZWF0IHdp
bmRvdy50b3AgYXMgcmVwbGFjZWFibGUgCi0gICAgICAgICAgICAjIGFuZCBhbGxvdyBzaGFkb3dp
bmcgd2l0aG91dCBpdCBiZWluZyBhIHNlY3VyaXR5IGhvbGUuCi0gICAgICAgICAgICBpZiAoISgk
aW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiBhbmQgJGF0dHJOYW1lIGVxICJ0b3AiKSkgeyAK
LSAgICAgICAgICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6UmVhZE9ubHkiOwotICAgICAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgICMgRGVmYXVsdCBHZXR0ZXIgYW5kIFNldHRlcgor
ICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1B
dHRyR2V0dGVyIjsKKyAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6
OiR7YXR0ck5hbWV9QXR0clNldHRlciI7CisKKyAgICAgICAgIyBDdXN0b20gU2V0dGVyCisgICAg
ICAgIGlmICgkYXR0ckV4dC0+eyJDdXN0b21TZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3Rv
bVNldHRlciJ9IHx8ICRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9t
In0pIHsKKyAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOworICAgICAgICAgICAgJHNl
dHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yU2V0dGVyIjsKICAg
ICAgICAgfQogCi0gICAgICAgICMgUmVhZCBvbmx5IGF0dHJpYnV0ZXMKLSAgICAgICAgaWYgKCRh
dHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8gfHwgJGF0dHJFeHQtPnsiVjhSZWFkT25seSJ9
KSB7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIjAiOworICAgICAgICAjIEN1c3RvbSBHZXR0ZXIK
KyAgICAgICAgaWYgKCRhdHRyRXh0LT57IkN1c3RvbUdldHRlciJ9IHx8ICRhdHRyRXh0LT57IkN1
c3RvbSJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0pIHsKKyAgICAgICAgICAgICRnZXR0ZXIg
PSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvckdldHRlciI7CiAgICAgICAg
IH0KKyAgICB9CiAKLSAgICAgICAgIyBBbiBhY2Nlc3NvciBjYW4gYmUgaW5zdGFsbGVkIG9uIHRo
ZSBwcm90bwotICAgICAgICBpZiAoJGF0dHJFeHQtPnsidjhPblByb3RvIn0pIHsKLSAgICAgICAg
ICAgICRvbl9wcm90byA9ICIxIC8qIG9uIHByb3RvICovIjsKKyAgICAjIFJlcGxhY2VhYmxlCisg
ICAgaWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0gJiYgISRoYXNDdXN0b21TZXR0ZXIpIHsK
KyAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICAgICAgIyBIYW5kbGUgdGhlIHNwZWNpYWwgY2Fz
ZSBvZiB3aW5kb3cudG9wIGJlaW5nIG1hcmtlZCBhcyBSZXBsYWNlYWJsZS4KKyAgICAgICAgIyBG
SVhNRTogSW52ZXN0aWdhdGUgd2hldGhlciB3ZSBjb3VsZCB0cmVhdCB3aW5kb3cudG9wIGFzIHJl
cGxhY2VhYmxlCisgICAgICAgICMgYW5kIGFsbG93IHNoYWRvd2luZyB3aXRob3V0IGl0IGJlaW5n
IGEgc2VjdXJpdHkgaG9sZS4KKyAgICAgICAgaWYgKCEoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdp
bmRvdyIgYW5kICRhdHRyTmFtZSBlcSAidG9wIikpIHsKKyAgICAgICAgICAgICRwcm9wQXR0ciAu
PSAifHY4OjpSZWFkT25seSI7CiAgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgbXkgJGNvbW1l
bnRJbmZvID0gIkF0dHJpYnV0ZSAnJGF0dHJOYW1lJyAoVHlwZTogJyIgLiAkYXR0cmlidXRlLT50
eXBlIC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIicgRXh0QXR0cjogJyIgLiBqb2luKCcg
Jywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsKLSAgICAgICAgCi0gICAgICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICMgUmVhZCBvbmx5IGF0dHJp
YnV0ZXMKKyAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5LyB8fCAkYXR0ckV4
dC0+eyJWOFJlYWRPbmx5In0pIHsKKyAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICB9CiAKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgLy8gJGNvbW1lbnRJbmZvCi0gIHsg
IiRhdHRyTmFtZSIsCi0gICAgJGdldHRlciwKLSAgICAkc2V0dGVyLAotICAgICRkYXRhLAotICAg
ICRhY2Nlc3NDb250cm9sLAotICAgIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
JHByb3BBdHRyKSwKLSAgICAkb25fcHJvdG8gfSwKLUVORAotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CisgICAgIyBBbiBhY2Nlc3NvciBjYW4gYmUgaW5zdGFsbGVkIG9uIHRoZSBwcm90
bworICAgIGlmICgkYXR0ckV4dC0+eyJ2OE9uUHJvdG8ifSkgeworICAgICAgICAkb25fcHJvdG8g
PSAiMSAvKiBvbiBwcm90byAqLyI7CiAgICAgfQotfQogCisgICAgbXkgJGNvbW1lbnRJbmZvID0g
IkF0dHJpYnV0ZSAnJGF0dHJOYW1lJyAoVHlwZTogJyIgLiAkYXR0cmlidXRlLT50eXBlIC4KKyAg
ICAgICAgICAgICAgICAgICAgICAiJyBFeHRBdHRyOiAnIiAuIGpvaW4oJyAnLCBrZXlzKCV7JGF0
dHJFeHR9KSkgLiAiJykiOworCisgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAg
IHtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICAgICAgXC9cLyAk
Y29tbWVudEluZm9cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICAg
ICAgXCIkYXR0ck5hbWVcIixcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4g
IiAgICAgICAgJGdldHRlcixcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4g
IiAgICAgICAgJHNldHRlcixcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4g
IiAgICAgICAgJGRhdGEsXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIg
ICAgICAgICRhY2Nlc3NDb250cm9sLFxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRl
bnQgLiAiICAgICAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9wQXR0
ciksXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgICAgICRvbl9w
cm90b1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIH0iIC4gJGRl
bGltaXRlciAuICJcbiIpOworRU5ECit9CiAKIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiB7
CkBAIC0xMTc2LDIwICsxMTg0LDI0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAjIEZvciB0aGUgRE9NV2luZG93IGludGVyZmFjZSB3ZSBwYXJ0aXRpb24gdGhlIGF0dHJpYnV0
ZXMgaW50byB0aGUKICAgICAjIG9uZXMgdGhhdCBkaXNhbGxvd3Mgc2hhZG93aW5nIGFuZCB0aGUg
cmVzdC4KLSAgICBteSBAZGlzYWxsb3dzX3NoYWRvd2luZzsKKyAgICBteSBAZGlzYWxsb3dzU2hh
ZG93aW5nOworICAgICMgQWxzbyBzZXBhcmF0ZSBvdXQgYXR0cmlidXRlcyB0aGF0IGFyZSBlbmFi
bGVkIGF0IHJ1bnRpbWUgc28gd2UgY2FuIHByb2Nlc3MgdGhlbSBzcGVjaWFsbHkuCisgICAgbXkg
QGVuYWJsZWRBdFJ1bnRpbWU7CiAgICAgbXkgQG5vcm1hbDsKLSAgICBpZiAoJGludGVyZmFjZU5h
bWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAJGF0
dHJpYnV0ZXMpIHsKLSAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBkaXNhbGxvd3Nfc2hhZG93aW5nLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAbm9ybWFsLCAkYXR0cmlidXRlKTsKLSAgICAg
ICAgICAgIH0KKyAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEAkYXR0cmlidXRlcykgeworICAg
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgJiYgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Cisg
ICAgICAgICAgICBwdXNoKEBkaXNhbGxvd3NTaGFkb3dpbmcsICRhdHRyaWJ1dGUpOworICAgICAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJF
bmFibGVkQXRSdW50aW1lIn0pIHsKKyAgICAgICAgICAgIHB1c2goQGVuYWJsZWRBdFJ1bnRpbWUs
ICRhdHRyaWJ1dGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAbm9ybWFs
LCAkYXR0cmlidXRlKTsKICAgICAgICAgfQotICAgICAgICAjIFB1dCB0aGUgYXR0cmlidXRlcyB0
aGF0IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUgc2hhZG93IG9iamVjdC4KLSAgICAgICAgJGF0
dHJpYnV0ZXMgPSBcQG5vcm1hbDsKKyAgICB9CisgICAgJGF0dHJpYnV0ZXMgPSBcQG5vcm1hbDsK
KyAgICAjIFB1dCB0aGUgYXR0cmlidXRlcyB0aGF0IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUg
c2hhZG93IG9iamVjdC4KKyAgICBpZiAoQGRpc2FsbG93c1NoYWRvd2luZykgewogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIHNoYWRvd19h
dHRyc1tdID0ge1xuIik7Ci0gICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRh
dGFOb2RlLCBcQGRpc2FsbG93c19zaGFkb3dpbmcpOworICAgICAgICBHZW5lcmF0ZUJhdGNoZWRB
dHRyaWJ1dGVEYXRhKCRkYXRhTm9kZSwgXEBkaXNhbGxvd3NTaGFkb3dpbmcpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn07XG4iKTsKICAgICB9CiAKQEAgLTEyNzEsNiArMTI4MywyMSBA
QCBFTkQKIEVORAogICAgIH0KIAorICAgICMgU2V0dXAgdGhlIGVuYWJsZS1hdC1ydW50aW1lIGF0
dHJzIGlmIHdlIGhhdmUgdGhlbQorICAgIGZvcmVhY2ggbXkgJHJ1bnRpbWVfYXR0ciAoQGVuYWJs
ZWRBdFJ1bnRpbWUpIHsKKyAgICAgICAgJGVuYWJsZV9mdW5jdGlvbiA9ICRpbnRlcmZhY2VOYW1l
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJHJ1bnRpbWVfYXR0ci0+c2lnbmF0dXJlLT5u
YW1lKTsKKyAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRpb25h
bFN0cmluZygkcnVudGltZV9hdHRyLT5zaWduYXR1cmUpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChWOEN1c3RvbTo6djgke2Vu
YWJsZV9mdW5jdGlvbn1FbmFibGVkKCkpIHtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVxcXG4i
KTsKKyAgICAgICAgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKCRpbnRlcmZhY2VOYW1l
LCAkcnVudGltZV9hdHRyLCAiOyIsICIgICAgIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCA8PEVORCk7CisgICAgICAgIGNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0
dHJEYXRhKTsKKyAgICB9CitFTkQKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRp
ZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAg
IH0KKwogICAgICMgRGVmaW5lIG91ciBmdW5jdGlvbnMgd2l0aCBTZXQoKSBvciBTZXRBY2Nlc3Nv
cigpCiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7
CiAgICAgICAgIG15ICRhdHRyRXh0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IDU2NjRlYmQuLjAwOGY3ZjUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtNzIsMTUgKzcyLDggQEAgY29uc3QgY2hhciogVjhQ
cm94eTo6a0NvbnRleHREZWJ1Z0RhdGFWYWx1ZSA9ICJ2YWx1ZSI7CiAKIHZvaWQgYmF0Y2hDb25m
aWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvLCBjb25zdCBCYXRjaGVkQXR0cmli
dXRlKiBhdHRyaWJ1dGVzLCBzaXplX3QgYXR0cmlidXRlQ291bnQpCiB7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEJhdGNo
ZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9ICZhdHRyaWJ1dGVzW2ldOwotICAgICAgICAoYXR0cmli
dXRlLT5vblByb3RvID8gcHJvdG8gOiBpbnN0YW5jZSktPlNldEFjY2Vzc29yKHY4OjpTdHJpbmc6
Ok5ldyhhdHRyaWJ1dGUtPm5hbWUpLAotICAgICAgICAgICAgYXR0cmlidXRlLT5nZXR0ZXIsCi0g
ICAgICAgICAgICBhdHRyaWJ1dGUtPnNldHRlciwKLSAgICAgICAgICAgIGF0dHJpYnV0ZS0+ZGF0
YSA9PSBWOENsYXNzSW5kZXg6OklOVkFMSURfQ0xBU1NfSU5ERVggPyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKSA6IHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFzc0luZGV4OjpUb0ludChhdHRyaWJ1dGUt
PmRhdGEpKSwKLSAgICAgICAgICAgIGF0dHJpYnV0ZS0+c2V0dGluZ3MsCi0gICAgICAgICAgICBh
dHRyaWJ1dGUtPmF0dHJpYnV0ZSk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXR0cmlidXRlQ291bnQ7ICsraSkKKyAgICAgICAgY29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNl
LCBwcm90bywgYXR0cmlidXRlc1tpXSk7CiB9CiAKIHZvaWQgYmF0Y2hDb25maWd1cmVDb25zdGFu
dHModjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25EZXNjcmlwdG9yLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sIGNvbnN0IEJhdGNoZWRDb25zdGFu
dCogY29uc3RhbnRzLCBzaXplX3QgY29uc3RhbnRDb3VudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQcm94eS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKaW5k
ZXggMDRjMTEzZS4uMjc2MDk4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKQEAgLTgxLDYgKzgxLDE2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHZvaWQgYmF0Y2hDb25maWd1cmVBdHRyaWJ1
dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
VGVtcGxhdGU+LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiwgc2l6ZV90IGF0dHJpYnV0ZUNvdW50
KTsKIAorICAgIGlubGluZSB2b2lkIGNvbmZpZ3VyZUF0dHJpYnV0ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBw
cm90bywgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSYgYXR0cmlidXRlKQorICAgIHsKKyAgICAgICAg
KGF0dHJpYnV0ZS5vblByb3RvID8gcHJvdG8gOiBpbnN0YW5jZSktPlNldEFjY2Vzc29yKHY4OjpT
dHJpbmc6Ok5ldyhhdHRyaWJ1dGUubmFtZSksCisgICAgICAgICAgICBhdHRyaWJ1dGUuZ2V0dGVy
LAorICAgICAgICAgICAgYXR0cmlidXRlLnNldHRlciwKKyAgICAgICAgICAgIGF0dHJpYnV0ZS5k
YXRhID09IFY4Q2xhc3NJbmRleDo6SU5WQUxJRF9DTEFTU19JTkRFWCA/IHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpIDogdjg6OkludGVnZXI6Ok5ldyhWOENsYXNzSW5kZXg6OlRvSW50KGF0dHJpYnV0
ZS5kYXRhKSksCisgICAgICAgICAgICBhdHRyaWJ1dGUuc2V0dGluZ3MsCisgICAgICAgICAgICBh
dHRyaWJ1dGUuYXR0cmlidXRlKTsKKyAgICB9CisKICAgICAvLyBCYXRjaGVkQ29uc3RhbnQgdHJh
bnNsYXRlcyBpbnRvIGNhbGxzIHRvIFNldCgpIGZvciBzZXR0aW5nIHVwIGFuIG9iamVjdCdzCiAg
ICAgLy8gY29uc3RhbnRzLiBJdCBzZXRzIHRoZSBjb25zdGFudCBvbiBib3RoIHRoZSBGdW5jdGlv
blRlbXBsYXRlIGFuZCB0aGUKICAgICAvLyBPYmplY3RUZW1wbGF0ZS4gUHJvcGVydHlBdHRyaWJ1
dGVzIGlzIGFsd2F5cyBSZWFkT25seS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmgKaW5kZXggMmZmNGVhOS4uY2E1ZDIwZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKQEAgLTc4LDYgKzc4LDggQEAgc3RydWN0
IE5QT2JqZWN0OwogICAgIGJvb2wgVjhDdXN0b206OnY4IyNOQU1FIyNJbmRleGVkU2VjdXJpdHlD
aGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgXAogICAgICAgICB1aW50MzJfdCBpbmRl
eCwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSkKIAorI2Rl
ZmluZSBBQ0NFU1NPUl9SVU5USU1FX0VOQUJMRVIoTkFNRSkgYm9vbCBWOEN1c3RvbTo6djgjI05B
TUUjI0VuYWJsZWQoKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBET01XaW5k
b3c7CkBAIC0yMzIsNiArMjM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHN0YXRpYyBi
b29sIHY4IyNOQU1FIyNJbmRleGVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4g
aG9zdCwgXAogICAgICAgICB1aW50MzJfdCBpbmRleCwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSkKIAorI2RlZmluZSBERUNMQVJFX0FDQ0VTU09SX1JVTlRJ
TUVfRU5BQkxFUihOQU1FKSBzdGF0aWMgYm9vbCB2OCMjTkFNRSMjRW5hYmxlZCgpCisKICAgICAg
ICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTdHJv
a2VTdHlsZSk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJERmlsbFN0eWxlKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
UihET01XaW5kb3dFdmVudCk7CkBAIC0yNDEsNiArMjQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
X0dFVFRFUihET01XaW5kb3dBdWRpbyk7CisgICAgICAgIERFQ0xBUkVfQUNDRVNTT1JfUlVOVElN
RV9FTkFCTEVSKERPTVdpbmRvd0F1ZGlvKTsKICNlbmRpZgogCiAgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0ltYWdlKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAwZGM1YTk2Li5hNTc5
Yzk4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5j
bHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TY3JlZW4uaCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKQEAgLTIzNSw2ICsyMzYs
MTEgQEAgQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0F1ZGlvKQogICAgIHJldHVybiBWOERPTVdy
YXBwZXI6OmdldENvbnN0cnVjdG9yKFY4Q2xhc3NJbmRleDo6QVVESU8sIHdpbmRvdyk7CiB9CiAK
K0FDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUihET01XaW5kb3dBdWRpbykKK3sKKyAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9CisKICNlbmRpZgogCiBBQ0NFU1NPUl9HRVRU
RVIoRE9NV2luZG93SW1hZ2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDllM2RmNDguLmRiNjRjNjAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCkBAIC01MjMsNyArNTIzLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAg
IGF0dHJpYnV0ZSBTdG9yYWdlRXZlbnRDb25zdHJ1Y3RvciBTdG9yYWdlRXZlbnQ7CiAjZW5kaWYK
IAotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlcixDb25kaXRpb25hbD1WSURFT10gSFRN
TEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yIEF1ZGlvOyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9w
ZXJhdG9yCisgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyLENvbmRpdGlvbmFsPVZJREVP
LEVuYWJsZWRBdFJ1bnRpbWVdIEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3RvciBBdWRpbzsgLy8g
VXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlv
bmFsPVZJREVPXSBIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IgSFRNTEF1ZGlvRWxlbWVudDsK
ICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFT10gSFRNTE1lZGlhRWxlbWVudENv
bnN0cnVjdG9yIEhUTUxNZWRpYUVsZW1lbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9u
YWw9VklERU9dIEhUTUxWaWRlb0VsZW1lbnRDb25zdHJ1Y3RvciBIVE1MVmlkZW9FbGVtZW50Owo=
</data>
<flag name="review"
          id="22444"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="22445"
          type_id="3"
          status="-"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>