<?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>37373</bug_id>
          
          <creation_ts>2010-04-09 16:39:54 -0700</creation_ts>
          <short_desc>Overloads auto-generation in V8</short_desc>
          <delta_ts>2010-04-15 10:33:49 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          <blocked>37453</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yaar Schnitman">yaar</reporter>
          <assigned_to name="Yaar Schnitman">yaar</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yaar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>211022</commentid>
    <comment_count>0</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-09 16:39:54 -0700</bug_when>
    <thetext>Overloads auto-generation in V8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211029</commentid>
    <comment_count>1</comment_count>
      <attachid>53016</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-09 16:56:43 -0700</bug_when>
    <thetext>Created attachment 53016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211032</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-09 17:01:09 -0700</bug_when>
    <thetext>Attachment 53016 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/test/V8TestObj.cpp:268:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:420:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211033</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-04-09 17:08:14 -0700</bug_when>
    <thetext>Attachment 53016 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1626339</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211041</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-09 17:24:50 -0700</bug_when>
    <thetext>Attachment 53016 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1655273</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211055</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-09 17:43:13 -0700</bug_when>
    <thetext>Attachment 53016 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/1577375</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211648</commentid>
    <comment_count>6</comment_count>
      <attachid>53175</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-12 10:11:00 -0700</bug_when>
    <thetext>Created attachment 53175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211649</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-12 10:12:53 -0700</bug_when>
    <thetext>Attachment 53175 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/test/V8TestObj.cpp:268:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:277:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:290:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:298:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:306:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:308:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:465:  overloadedMethod_argc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:466:  overloadedMethod_argv is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:467:  overloadedMethod_signature is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 9 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211749</commentid>
    <comment_count>8</comment_count>
      <attachid>53175</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-04-12 16:22:05 -0700</bug_when>
    <thetext>Comment on attachment 53175
Patch

The core of this patch looks right, just a couple of small changes + comment requests in the code generator changes.

Also, please forgive my grammar nitpicks...

&gt; +        This will be used by XHR.send/open, Canvas.*, WebGL.* methods that are currently custom. When more then a single overload exists for a method, the right overload is determined based on total number of arguments passed as well as the values passed to non-primitive arguments.

&quot;When more then&quot; -&gt; &quot;When more than&quot; ?

&gt; Overloads better be specified from the most precise (overloads with wrapper type arguments) to the least precise (overloads with only primitive type arguments).

This wording confuses me slightly....did you mean &quot;Overloads need to be...&quot;?


&gt; -    return 1 if $primitiveTypeHash{$type};
&gt; +    return 1 if $nonNumberPrimitiveTypeHash{$type} || $numberPrimitiveTypeHash{$type};
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +sub IsNumberType
&gt; +{
&gt; +    my $object = shift;
&gt; +    my $type = shift;
&gt; +
&gt; +    return 1 if $numberPrimitiveTypeHash{$type};
&gt;      return 0;
&gt;  }

I don&apos;t think IsNumberType is called anywhere, and it&apos;s a duplicate of $numberPrimitiveTypeHash{$type} anyway.  Perhaps a IsPrimitiveType that checks both $numberPrimitiveTypeHash and $nonNumberPrimitiveTypeHash instead?


&gt;      my $dataNode = shift;
&gt;      my $defines = shift;
&gt;  
&gt; +    LinkOverloadedFunctions($dataNode);
&gt; +
&gt;      # Start actual generation
&gt;      $object-&gt;GenerateHeader($dataNode);
&gt;      $object-&gt;GenerateImplementation($dataNode);

Can this call to LinkOverloadedFunctions go in GenerateImplementation? If I&apos;m reading it correctly, it won&apos;t ever affect the .h file output.



&gt; +    if (@{$function-&gt;{overloads}} &gt; 1) {
&gt; +        $name = $name . $function-&gt;{overloadIndex};
&gt; +    }
&gt; +

Would you mind commenting this?


&gt; @@ -1624,6 +1723,7 @@ sub GenerateImplementation
&gt;      $num_callbacks = 0;
&gt;      $has_callbacks = 0;
&gt;      foreach my $function (@{$dataNode-&gt;functions}) {
&gt; +        next if $function-&gt;{overloadIndex} &gt; 1;
&gt;          my $attrExt = $function-&gt;signature-&gt;extendedAttributes;
&gt;          # Don&apos;t put any nonstandard functions into this table:
&gt;          if ($attrExt-&gt;{&quot;V8OnInstance&quot;}) {
&gt; @@ -1785,6 +1885,7 @@ END
&gt;      # Define our functions with Set() or SetAccessor()
&gt;      $total_functions = 0;
&gt;      foreach my $function (@{$dataNode-&gt;functions}) {
&gt; +        next if $function-&gt;{overloadIndex} &gt; 1;
&gt;          $total_functions++;
&gt;          my $attrExt = $function-&gt;signature-&gt;extendedAttributes;
&gt;          my $name = $function-&gt;signature-&gt;name;

Same for these, please comment why this is necessary. I&apos;m going to forget otherwise :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212683</commentid>
    <comment_count>9</comment_count>
      <attachid>53393</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-14 18:15:59 -0700</bug_when>
    <thetext>Created attachment 53393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212684</commentid>
    <comment_count>10</comment_count>
      <attachid>53393</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-14 18:17:10 -0700</bug_when>
    <thetext>Comment on attachment 53393
Patch

I undid the changes in CodeGenerator.pm, since I ended up not using them (as you noticed yourself). Rest of feedback is incorporated. Please cq+ if LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212685</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-14 18:17:56 -0700</bug_when>
    <thetext>Attachment 53393 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/test/V8TestObj.cpp:268:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:277:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:290:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:298:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:306:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:308:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:465:  overloadedMethod_argc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:466:  overloadedMethod_argv is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:467:  overloadedMethod_signature is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 9 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212898</commentid>
    <comment_count>12</comment_count>
      <attachid>53393</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-04-15 10:04:13 -0700</bug_when>
    <thetext>Comment on attachment 53393
Patch

Awesome, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212918</commentid>
    <comment_count>13</comment_count>
      <attachid>53393</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-15 10:33:43 -0700</bug_when>
    <thetext>Comment on attachment 53393
Patch

Clearing flags on attachment: 53393

Committed r57653: &lt;http://trac.webkit.org/changeset/57653&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212919</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-15 10:33:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53016</attachid>
            <date>2010-04-09 16:56:43 -0700</date>
            <delta_ts>2010-04-12 10:10:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37373-20100409165642.patch</filename>
            <type>text/plain</type>
            <size>13789</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWQ2OGJmZC4uM2JkNDJkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNSBAQAogMjAxMC0wNC0wOSAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPdmVybG9hZHMgYXV0by1nZW5lcmF0aW9uIGluIFY4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzM3MworCisgICAgICAg
IFRoaXMgd2lsbCBiZSB1c2VkIGJ5IFhIUi5zZW5kL29wZW4sIENhbnZhcywgV2ViRyBtZXRob2Rz
IHRoYXQgYXJlIGN1cnJlbnRseSBjdXN0b20uIFRoZSByaWdodCBvdmVybG9hZHMgaXMgZGV0ZXJt
aW5lZCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgYW5kIHRoZSB2YWx1
ZSB0eXBlcy4KKworICAgICAgICBBIGZldyB0aGluZ3MgdG8gbm90ZToKKyAgICAgICAgMS4gT3V0
cHV0IGlzIHBvb3JseSBpbmRlbnRlZC4gRml4aW5nIHRoYXQgbWlnaHQgbm90IGJlIHdvcnRoIGl0
IGFuZCBiZXR0ZXIgYmUgZG9uZSBhcyBhIHNlcGFyYXRlIHBhdGNoLgorICAgICAgICAyLiBPdmVy
bG9hZCBkaXNwYXRjaCBhdHRlbXB0IG9yZGVyIGRlcGVuZHMgb24gdGhlIG9yZGVyIHRoZSBvdmVy
bG9hZHMgd2VyZSBkZWZpbmVkIGluIHRoZSBJREwgKGl0cyBub3QgY2xlYXIgaWYgdGhpcyBpcyBh
IGNhdmVhdCBvciBhbmQgYWR2YW50YWdlKS4KKyAgICAgICAgMy4gSWYgc29tZSBvZiB0aGUgb3Zl
cmxvYWRzIGhhdmUgd3JhcHBlci10eXBlIGFyZ3VtZW50cyBhbmQgb3RoZXJzIGRvbid0LCBvbmx5
IGEgc2luZ2xlIEpTIGZ1bmN0aW9uIHRlbXBsYXRlIHdpbGwgYmUgY3JlYXRlZCBvbiB0aGUgSlMg
cHJvdG90eXBlIGFuZCBpdCB3aWxsIGJlIGN1c3RvbSBvciBub3QgZGVwZW5kaW5nIG9uIHRoZSBh
cmd1bWVudHMgZm9yIHRoZSBmaXJzdCBvdmVybG9hZCBmb3VuZCBpbiB0aGUgSURMLgorCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOiBNaW5vciByZWZhY3Rvcmlu
ZyB0byBzdXBwb3J0IElzTnVtYmVyVHlwZS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbTogSWRlbnRpZnkgYW5kIG91dHB1dCBvdmVybG9hZHMgZGlzcGF0Y2hp
bmcgY29kZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC90ZXN0L1Rlc3RPYmouaWRsOiBPdmVybG9h
ZHMgc2FtcGxlLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L3Rlc3QvVjhUZXN0T2JqLmNwcDogT3V0
cHV0IGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6b3ZlcmxvYWRl
ZE1ldGhvZENhbGxiYWNrKToKKworMjAxMC0wNC0wOSAgWWFhciBTY2huaXRtYW4gIDx5YWFyQGNo
cm9taXVtLm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KIAogICAgICAg
ICBUZXN0aW5nIHV0aWxpdHkgZm9yIENvZGVHZW5lcmF0b3JWOC5wbQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQppbmRleCA0ODdhNGIzLi4zYjY5ZWI1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMzksMTIgKzM5LDEyIEBA
IG15ICRjb2RlR2VuZXJhdG9yID0gMDsKIAogbXkgJHZlcmJvc2UgPSAwOwogCi1teSAlcHJpbWl0
aXZlVHlwZUhhc2ggPSAoImludCIgPT4gMSwgInNob3J0IiA9PiAxLCAibG9uZyIgPT4gMSwgImxv
bmcgbG9uZyIgPT4gMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAidW5zaWduZWQgaW50IiA9
PiAxLCAidW5zaWduZWQgc2hvcnQiID0+IDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInVu
c2lnbmVkIGxvbmciID0+IDEsICJ1bnNpZ25lZCBsb25nIGxvbmciID0+IDEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgImZsb2F0IiA9PiAxLCAiZG91YmxlIiA9PiAxLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICJib29sZWFuIiA9PiAxLCAidm9pZCIgPT4gMSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAiRGF0ZSIgPT4gMSk7CitteSAlbnVtYmVyVHlwZUhhc2ggPSAoImludCIgPT4g
MSwgInNob3J0IiA9PiAxLCAibG9uZyIgPT4gMSwgImxvbmcgbG9uZyIgPT4gMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAidW5zaWduZWQgaW50IiA9PiAxLCAidW5zaWduZWQgc2hvcnQiID0+IDEs
CisgICAgICAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmciID0+IDEsICJ1bnNpZ25lZCBs
b25nIGxvbmciID0+IDEsCisgICAgICAgICAgICAgICAgICAgICAgImZsb2F0IiA9PiAxLCAiZG91
YmxlIiA9PiAxKTsKKworbXkgJXByaW1pdGl2ZVR5cGVIYXNoID0gKCJib29sZWFuIiA9PiAxLCAi
dm9pZCIgPT4gMSwgIkRhdGUiID0+IDEpOwogCiBteSAlcG9kVHlwZUhhc2ggPSAoIlNWR051bWJl
ciIgPT4gMSwgIlNWR1RyYW5zZm9ybSIgPT4gMSk7CiBteSAlcG9kVHlwZXNXaXRoV3JpdGFibGVQ
cm9wZXJ0aWVzSGFzaCA9ICgiU1ZHQW5nbGUiID0+IDEsICJTVkdMZW5ndGgiID0+IDEsICJTVkdN
YXRyaXgiID0+IDEsICJTVkdQb2ludCIgPT4gMSwgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8iID0+
IDEsICJTVkdSZWN0IiA9PiAxKTsKQEAgLTMwMCw3ICszMDAsMTYgQEAgc3ViIElzUHJpbWl0aXZl
VHlwZQogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKICAgICBteSAkdHlwZSA9IHNoaWZ0OwogCi0g
ICAgcmV0dXJuIDEgaWYgJHByaW1pdGl2ZVR5cGVIYXNoeyR0eXBlfTsKKyAgICByZXR1cm4gMSBp
ZiAkbm9uTnVtYmVyVHlwZUhhc2h7JHR5cGV9IHx8ICRudW1iZXJUeXBlSGFzaHskdHlwZX07Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3N1YiBJc051bWJlclR5cGUKK3sKKyAgICBteSAkb2JqZWN0ID0g
c2hpZnQ7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKworICAgIHJldHVybiAxIGlmICRudW1iZXJU
eXBlSGFzaHskdHlwZX07CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTMxOCw3ICszMjcsNyBAQCBz
dWIgSXNOb25Qb2ludGVyVHlwZQogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKICAgICBteSAkdHlw
ZSA9IHNoaWZ0OwogCi0gICAgcmV0dXJuIDEgaWYgJG5vblBvaW50ZXJUeXBlSGFzaHskdHlwZX0g
b3IgJHByaW1pdGl2ZVR5cGVIYXNoeyR0eXBlfTsKKyAgICByZXR1cm4gMSBpZiAkbm9uUG9pbnRl
clR5cGVIYXNoeyR0eXBlfSBvciBJc1ByaW1pdGl2ZVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAw
OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRl
eCBkNzYyZjZkLi44MGExOWNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KQEAgLTk4LDYgKzk4LDggQEAgc3ViIEdlbmVyYXRlSW50ZXJmYWNlCiAgICAg
bXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGRlZmluZXMgPSBzaGlmdDsKIAorICAgIExp
bmtPdmVybG9hZGVkRnVuY3Rpb25zKCRkYXRhTm9kZSk7CisKICAgICAjIFN0YXJ0IGFjdHVhbCBn
ZW5lcmF0aW9uCiAgICAgJG9iamVjdC0+R2VuZXJhdGVIZWFkZXIoJGRhdGFOb2RlKTsKICAgICAk
b2JqZWN0LT5HZW5lcmF0ZUltcGxlbWVudGF0aW9uKCRkYXRhTm9kZSk7CkBAIC0xOTUsNiArMTk3
LDIzIEBAIHN1YiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nCiAgICAgfQogfQogCitzdWIgTGlu
a092ZXJsb2FkZWRGdW5jdGlvbnMKK3sKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKworICAg
ICMgSWRlbnRpZmllcyBvdmVybG9hZGVkIGZ1bmN0aW9ucyBhbmQgZm9yIGVhY2ggZnVuY3Rpb24g
YWRkcyBhbiBhcnJheSB3aXRoCisgICAgIyBsaW5rcyB0byBpdHMgcmVzcGVjdGl2ZSBvdmVybG9h
ZHMgKGluY2x1ZGluZyBpdHNlbGYpLgorICAgIG15ICVuYW1lVG9GdW5jdGlvbnNNYXAgPSAoKTsK
KyAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKKyAg
ICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgJG5h
bWVUb0Z1bmN0aW9uc01hcHskbmFtZX0gPSBbXSBpZiAhZXhpc3RzICRuYW1lVG9GdW5jdGlvbnNN
YXB7JG5hbWV9OworICAgICAgICBwdXNoKEB7JG5hbWVUb0Z1bmN0aW9uc01hcHskbmFtZX19LCAk
ZnVuY3Rpb24pOworICAgICAgICAkZnVuY3Rpb24tPntvdmVybG9hZHN9ID0gJG5hbWVUb0Z1bmN0
aW9uc01hcHskbmFtZX07CisgICAgICAgICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID0gQHsk
bmFtZVRvRnVuY3Rpb25zTWFweyRuYW1lfX07CisgICAgfQorCit9CisKIHN1YiBHZW5lcmF0ZUhl
YWRlcgogewogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKQEAgLTEwMDEsMTMgKzEwMjAsNDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1bmN0aW9uTmFtZX1FdmVudExpc3RlbmVy
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3UKIEVORAogfQogCitzdWIgR2VuZXJhdGVQYXJhbWV0ZXJz
Q2hlY2tFeHByZXNzaW9uCit7CisgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBzaGlmdDsKKyAgICBt
eSAkZnVuY3Rpb24gPSBzaGlmdDsKKworICAgIG15IEBleHByZXNzaW9uID0gKCk7CisgICAgbXkg
JHBhcmFtZXRlckluZGV4ID0gMDsKKyAgICBwdXNoKEBleHByZXNzaW9uLCAiYXJncy5MZW5ndGgo
KSA9PSAkbnVtUGFyYW1ldGVycyIpOworICAgIGZvcmVhY2ggJHBhcmFtZXRlciAoQHskZnVuY3Rp
b24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAgIG5leHQgaWYgJHBhcmFtZXRlckluZGV4ID49ICRu
dW1QYXJhbWV0ZXJzOworICAgICAgICBteSAkY2hlY2sgPSBHZW5lcmF0ZUlzVHlwZSgkcGFyYW1l
dGVyLCAiYXJnc1skcGFyYW1ldGVySW5kZXhdIik7CisgICAgICAgIHB1c2goQGV4cHJlc3Npb24s
ICIkY2hlY2siKSBpZiAkY2hlY2s7CisgICAgICAgICRwYXJhbWV0ZXJJbmRleCsrOworICAgIH0K
KyAgICByZXR1cm4gam9pbigiICYmICIsIEBleHByZXNzaW9uKTsKK30KKworc3ViIEdlbmVyYXRl
RnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2sKK3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKwor
ICAgIG15IEBleHByZXNzaW9uID0gKCk7CisgICAgbXkgJG51bVBhcmFtZXRlcnMgPSAwOworICAg
IGZvcmVhY2ggJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAg
IGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgeworICAg
ICAgICAgICAgcHVzaChAZXhwcmVzc2lvbiwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNz
aW9uKCRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb24pKTsKKyAgICAgICAgfQorICAgICAgICAkbnVt
UGFyYW1ldGVycysrOworICAgICAgICBwdXNoKEBzdWJFeHByZXNzaW9uLCAkcGFyYW1ldGVyLT5u
YW1lKTsKKyAgICB9CisKKyAgICBwdXNoKEBleHByZXNzaW9uLCBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVja0V4cHJlc3Npb24oJG51bVBhcmFtZXRlcnMsICRmdW5jdGlvbikpOworICAgIHJldHVybiBq
b2luKCIgfHwgIiwgQGV4cHJlc3Npb24pOworfQorCiBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxi
YWNrCiB7CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hp
ZnQ7CiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKIAotICAgIG15ICRpbnRlcmZhY2VO
YW1lID0gJGRhdGFOb2RlLT5uYW1lOwogICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWU7CiAKICAgICAjIEFkZGluZyBhbmQgcmVtb3ZpbmcgZXZlbnQgbGlzdGVuZXJzIGFy
ZSBub3Qgc3RhbmRhcmQgY2FsbGJhY2sgYmVoYXZpb3IsCkBAIC0xMDI2LDEwICsxMDc5LDQyIEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpIHsKICAgICBJTkNfU1RBVFMoXCJET00uJGltcGxDbGFzc05hbWUuJG5h
bWVcIik7CiBFTkQKIAorICAgIGlmIChAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID09IDEpIHsK
KyAgICAgICAgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrQm9keSgkZnVuY3Rpb24sICRkYXRhTm9k
ZSwgJGltcGxDbGFzc05hbWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvcmVhY2ggbXkgJG92
ZXJsb2FkIChAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319KSB7CisgICAgICAgICAgICBteSAkcGFy
YW1ldGVyTWF0Y2hDaGVjayA9IEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2soJG92ZXJs
b2FkKTsKKyAgICAgICAgICAgIGlmICgkb3ZlcmxvYWQtPntvdmVybG9hZEluZGV4fSA9PSAxKSB7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoJHBhcmFt
ZXRlck1hdGNoQ2hlY2spIHtcbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH0gZWxzZSBpZiAoJHBhcmFtZXRlck1h
dGNoQ2hlY2spIHtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICAvLyBvdmVybG9hZCAiIC4gJG92ZXJsb2FkLT57b3ZlcmxvYWRJbmRl
eH0gLiAiXG4iKTsKKyAgICAgICAgICAgIEdlbmVyYXRlRnVuY3Rpb25DYWxsYmFja0JvZHkoJG92
ZXJsb2FkLCAkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lKTsKKyAgICAgICAgfQorICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVjhQ
cm94eTo6c2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIH0KK0VORAorICAgIH0KKworICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICJ9XG5cbiIpOworfQorCitzdWIgR2VuZXJhdGVGdW5jdGlvbkNh
bGxiYWNrQm9keQoreworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9k
ZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgCisgICAgbXkg
JGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7CisgICAgbXkgJG5hbWUgPSAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9u
LT5wYXJhbWV0ZXJzfTsKIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlJlcXVpcmVzQWxsQXJndW1lbnRzIn0pIHsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8ICRudW1QYXJhbWV0ZXJzKSBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgIGlmIChhcmdzLkxlbmd0aCgpIDwgJG51bVBhcmFtZXRlcnMpIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIpOwogICAgIH0KIAogICAgIGlmIChJc1BvZFR5
cGUoJGltcGxDbGFzc05hbWUpKSB7CkBAIC0xMDQzLDcgKzExMjgsNyBAQCBFTkQKIEVORAogICAg
IH0KIAotICAjIENoZWNrIGRvbWFpbiBzZWN1cml0eSBpZiBuZWVkZWQKKyAgICAjIENoZWNrIGRv
bWFpbiBzZWN1cml0eSBpZiBuZWVkZWQKICAgICBpZiAoKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifQogICAgICAgIHx8ICRpbnRlcmZhY2VOYW1l
IGVxICJET01XaW5kb3ciKQogICAgICAgICYmICEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tEb21haW5TZWN1cml0eSJ9KSB7CkBAIC0xMTQ5LDgg
KzEyMzQsNiBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBWOFBy
b3h5OjpzZXRET01FeGNlcHRpb24oZWMpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7CiAgICAgfQot
Ci0gICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIn1cblxuIik7CiB9CiAKIHN1YiBHZW5lcmF0
ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhCkBAIC0xNTY1LDYgKzE2NDgsOCBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgIG15ICRuYW1lZFByb3BlcnR5R2V0dGVyOwogICAgICMgR2VuZXJh
dGUgbWV0aG9kcyBmb3IgZnVuY3Rpb25zLgogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRk
YXRhTm9kZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+e292ZXJs
b2FkSW5kZXh9ID4gMTsKKwogICAgICAgICBpZiAoISgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b20ifSkpIHsKICAgICAgICAgICAgIEdlbmVyYXRlRnVu
Y3Rpb25DYWxsYmFjaygkZnVuY3Rpb24sICRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUpOwogICAg
ICAgICB9CkBAIC0xNjI0LDYgKzE3MDksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICRudW1fY2FsbGJhY2tzID0gMDsKICAgICAkaGFzX2NhbGxiYWNrcyA9IDA7CiAgICAgZm9y
ZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgIG5l
eHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAgICBteSAkYXR0ckV4
dCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXM7CiAgICAgICAgICMg
RG9uJ3QgcHV0IGFueSBub25zdGFuZGFyZCBmdW5jdGlvbnMgaW50byB0aGlzIHRhYmxlOgogICAg
ICAgICBpZiAoJGF0dHJFeHQtPnsiVjhPbkluc3RhbmNlIn0pIHsKQEAgLTE3ODUsNiArMTg3MSw3
IEBAIEVORAogICAgICMgRGVmaW5lIG91ciBmdW5jdGlvbnMgd2l0aCBTZXQoKSBvciBTZXRBY2Nl
c3NvcigpCiAgICAgJHRvdGFsX2Z1bmN0aW9ucyA9IDA7CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rp
b24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9u
LT57b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAgICAkdG90YWxfZnVuY3Rpb25zKys7CiAgICAg
ICAgIG15ICRhdHRyRXh0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
czsKICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKQEAgLTI0
NjksNiArMjU1NiwyMCBAQCBzdWIgVHlwZUNhbkZhaWxDb252ZXJzaW9uCiAgICAgcmV0dXJuIEJh
c2ljVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRzaWduYXR1cmUpOwogfQogCitzdWIgR2VuZXJhdGVJ
c1R5cGUKK3sKKyAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7CisgICAgbXkgJHZhbHVlID0gc2hp
ZnQ7CisgICAgbXkgJHR5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVyZSgkc2lnbmF0dXJlKTsKKwor
ICAgIHJldHVybiAiJHt2YWx1ZX0uSXNCb29sZWFuKCkiIGlmICR0eXBlIGVxICJib29sZWFuIjsK
KyAgICByZXR1cm4gIiR7dmFsdWV9LklzT2JqZWN0KCkiIGlmICR0eXBlIGVxICJKU09iamVjdCIg
b3IgJHR5cGUgZXEgIkRPTU9iamVjdCI7CisgICAgcmV0dXJuICIke3ZhbHVlfS5Jc051bWJlcigp
IiBpZiAkY29kZUdlbmVyYXRvci0+SXNOdW1iZXJUeXBlKCR0eXBlKTsKKyAgICByZXR1cm4gIiR7
dmFsdWV9LklzU3RyaW5nKCkiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUp
OworICAgIHJldHVybiAiVjgke3R5cGV9OjpIYXNJbnN0YW5jZSgkdmFsdWUpIiBpZiBJc1dyYXBw
ZXJUeXBlKCR0eXBlKTsKKyAgICByZXR1cm4gMDsKK30KKwogc3ViIEpTVmFsdWVUb05hdGl2ZQog
ewogICAgIG15ICRzaWduYXR1cmUgPSBzaGlmdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvdGVzdC9UZXN0T2JqLmlkbCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9UZXN0T2Jq
LmlkbAppbmRleCA2MjhiNjE4Li44NTNiMDAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC90ZXN0L1Rlc3RP
YmouaWRsCkBAIC02MSw1ICs2MSwxMSBAQCBtb2R1bGUgdGVzdCB7CiAgICAgICAgIHZvaWQgICAg
bWV0aG9kV2l0aE9wdGlvbmFsQXJnKGluIFtPcHRpb25hbF0gbG9uZyBvcHQpOwogICAgICAgICB2
b2lkICAgIG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKGluIGxvbmcgbm9u
T3B0LCBpbiBbT3B0aW9uYWxdIGxvbmcgb3B0KTsKICAgICAgICAgdm9pZCAgICBtZXRob2RXaXRo
Tm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoaW4gbG9uZyBub25PcHQsIGluIFtPcHRp
b25hbF0gbG9uZyBvcHQxLCBpbiBsb25nIG9wdDIpOworCisgICAgICAgIC8vIE92ZXJsb2Fkcwor
ICAgICAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoaW4gbG9uZyBpbnRBcmcpOworICAgICAg
ICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoaW4gVGVzdE9iaiBvYmpBcmcsIGluIFtPcHRpb25h
bF0gbG9uZyBpbnRBcmcpOworICAgICAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoaW4gVGVz
dE9iaiBvYmpBcmcsIGluIERPTVN0cmluZyBzdHJBcmcpOworICAgICAgICB2b2lkICAgIG92ZXJs
b2FkZWRNZXRob2QoaW4gRE9NU3RyaW5nIHN0ckFyZyk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9WOFRlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC90ZXN0L1Y4VGVzdE9iai5jcHAKaW5kZXggMDJkOTE0My4uMTk0Y2MyNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC90ZXN0L1Y4VGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC90ZXN0L1Y4VGVzdE9iai5jcHAKQEAgLTI2NSw2ICsyNjUsNDQgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRp
b25hbEFyZ3NDYWxsYmFjaygKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpIHsKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2Jq
Lm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAxICYmIGFyZ3Nb
MF0uSXNOdW1iZXIoKSkgeworICAgIC8vIG92ZXJsb2FkIDEKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGludCBpbnRBcmcgPSB0b0lu
dDMyKGFyZ3NbMF0pOworICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChpbnRBcmcpOworICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICB9IGVsc2UgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPT0gMSAmJiBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pIHx8IGFyZ3MuTGVuZ3Ro
KCkgPT0gMiAmJiBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pICYmIGFyZ3NbMV0uSXNO
dW1iZXIoKSkgeworICAgIC8vIG92ZXJsb2FkIDIKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIG9iakFyZyA9IFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBpZiAoYXJncy5MZW5ndGgo
KSA8PSAxKSB7CisgICAgICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpBcmcpOworICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgfQorICAgIGludCBpbnRBcmcg
PSB0b0ludDMyKGFyZ3NbMV0pOworICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpBcmcsIGlu
dEFyZyk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIH0gZWxzZSBp
ZiAoYXJncy5MZW5ndGgoKSA9PSAyICYmIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSkg
JiYgYXJnc1sxXS5Jc1N0cmluZygpKSB7CisgICAgLy8gb3ZlcmxvYWQgMworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgVGVzdE9iaiog
b2JqQXJnID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdKSA/IFY4VGVzdE9iajo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOworICAgIFY4
UGFyYW1ldGVyPD4gc3RyQXJnID0gYXJnc1sxXTsKKyAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qo
b2JqQXJnLCBzdHJBcmcpOworICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAg
ICB9IGVsc2UgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiBhcmdzWzBdLklzU3RyaW5nKCkpIHsK
KyAgICAvLyBvdmVybG9hZCA0CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKKyAgICBWOFBhcmFtZXRlcjw+IHN0ckFyZyA9IGFyZ3NbMF07Cisg
ICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKHN0ckFyZyk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpOworICAgIH0gZWxzZSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2Vw
dGlvbihUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RPYmpJbnRlcm5hbAogCiBz
dGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0T2JqX2F0dHJzW10gPSB7CkBAIC0zNzks
NiArNDE3LDcgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRDYWxsYmFjayBUZXN0T2JqX2NhbGxiYWNr
c1tdID0gewogICB7Im1ldGhvZFdpdGhPcHRpb25hbEFyZyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0
aG9kV2l0aE9wdGlvbmFsQXJnQ2FsbGJhY2t9LAogICB7Im1ldGhvZFdpdGhOb25PcHRpb25hbEFy
Z0FuZE9wdGlvbmFsQXJnIiwgVGVzdE9iakludGVybmFsOjptZXRob2RXaXRoTm9uT3B0aW9uYWxB
cmdBbmRPcHRpb25hbEFyZ0NhbGxiYWNrfSwKICAgeyJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdB
bmRUd29PcHRpb25hbEFyZ3MiLCBUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0FuZFR3b09wdGlvbmFsQXJnc0NhbGxiYWNrfSwKKyAgeyJvdmVybG9hZGVkTWV0aG9kIiwg
VGVzdE9iakludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kQ2FsbGJhY2t9LAogfTsKIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVt
cGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53175</attachid>
            <date>2010-04-12 10:11:00 -0700</date>
            <delta_ts>2010-04-14 18:15:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37373-20100412101059.patch</filename>
            <type>text/plain</type>
            <size>14088</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWQ2OGJmZC4uYWM2NTdhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMSBAQAogMjAxMC0wNC0wOSAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPdmVybG9hZHMgYXV0by1nZW5lcmF0aW9uIGluIFY4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzM3MworCisgICAgICAg
IFRoaXMgd2lsbCBiZSB1c2VkIGJ5IFhIUi5zZW5kL29wZW4sIENhbnZhcy4qLCBXZWJHTC4qIG1l
dGhvZHMgdGhhdCBhcmUgY3VycmVudGx5IGN1c3RvbS4gV2hlbiBtb3JlIHRoZW4gYSBzaW5nbGUg
b3ZlcmxvYWQgZXhpc3RzIGZvciBhIG1ldGhvZCwgdGhlIHJpZ2h0IG92ZXJsb2FkIGlzIGRldGVy
bWluZWQgYmFzZWQgb24gdG90YWwgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgYXMgd2VsbCBh
cyB0aGUgdmFsdWVzIHBhc3NlZCB0byBub24tcHJpbWl0aXZlIGFyZ3VtZW50cy4KKworICAgICAg
ICBPdmVybG9hZCBkaXNwYXRjaCBvcmRlciBkZXBlbmRzIG9uIHRoZSBvcmRlciB0aGUgZnVuY3Rp
b25zIHdlcmUgZGVmaW5lZCBpbiB0aGUgSURMLiBPdmVybG9hZHMgYmV0dGVyIGJlIHNwZWNpZmll
ZCBmcm9tIHRoZSBtb3N0IHByZWNpc2UgKG92ZXJsb2FkcyB3aXRoIHdyYXBwZXIgdHlwZSBhcmd1
bWVudHMpIHRvIHRoZSBsZWFzdCBwcmVjaXNlIChvdmVybG9hZHMgd2l0aCBvbmx5IHByaW1pdGl2
ZSB0eXBlIGFyZ3VtZW50cykuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG06IE1pbm9yIHJlZmFjdG9yaW5nIHRvIHN1cHBvcnQgSXNOdW1iZXJUeXBlLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOiBJZGVudGlmeSBhbmQg
b3V0cHV0IG92ZXJsb2FkcyBjYWxsYmFja3MgYW5kIGRpc3BhdGNoIGNvZGUuCisgICAgICAgICog
YmluZGluZ3MvdjgvdGVzdC9UZXN0T2JqLmlkbDogT3ZlcmxvYWRzIHNhbXBsZS4KKyAgICAgICAg
KiBiaW5kaW5ncy92OC90ZXN0L1Y4VGVzdE9iai5jcHA6IE91dHB1dCBjaGFuZ2UuCisKKzIwMTAt
MDQtMDkgIFlhYXIgU2Nobml0bWFuICA8eWFhckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2
aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCiAKICAgICAgICAgVGVzdGluZyB1dGlsaXR5IGZvciBDb2Rl
R2VuZXJhdG9yVjgucG0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0K
aW5kZXggNDg3YTRiMy4uYWVkMmJkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0KQEAgLTM5LDEyICszOSwxMyBAQCBteSAkY29kZUdlbmVyYXRvciA9IDA7CiAK
IG15ICR2ZXJib3NlID0gMDsKIAotbXkgJXByaW1pdGl2ZVR5cGVIYXNoID0gKCJpbnQiID0+IDEs
ICJzaG9ydCIgPT4gMSwgImxvbmciID0+IDEsICJsb25nIGxvbmciID0+IDEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgInVuc2lnbmVkIGludCIgPT4gMSwgInVuc2lnbmVkIHNob3J0IiA9PiAx
LAotICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnNpZ25lZCBsb25nIiA9PiAxLCAidW5zaWdu
ZWQgbG9uZyBsb25nIiA9PiAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCIgPT4g
MSwgImRvdWJsZSIgPT4gMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYm9vbGVhbiIgPT4g
MSwgInZvaWQiID0+IDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkRhdGUiID0+IDEpOwor
bXkgJW51bWJlclByaW1pdGl2ZVR5cGVIYXNoID0gKCJpbnQiID0+IDEsICJzaG9ydCIgPT4gMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9uZyIgPT4gMSwgImxvbmcgbG9uZyIg
PT4gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5zaWduZWQgaW50IiA9PiAx
LCAidW5zaWduZWQgc2hvcnQiID0+IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InVuc2lnbmVkIGxvbmciID0+IDEsICJ1bnNpZ25lZCBsb25nIGxvbmciID0+IDEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0IiA9PiAxLCAiZG91YmxlIiA9PiAxKTsKKwor
bXkgJW5vbk51bWJlclByaW1pdGl2ZVR5cGVIYXNoID0gKCJib29sZWFuIiA9PiAxLCAidm9pZCIg
PT4gMSwgIkRhdGUiID0+IDEpOwogCiBteSAlcG9kVHlwZUhhc2ggPSAoIlNWR051bWJlciIgPT4g
MSwgIlNWR1RyYW5zZm9ybSIgPT4gMSk7CiBteSAlcG9kVHlwZXNXaXRoV3JpdGFibGVQcm9wZXJ0
aWVzSGFzaCA9ICgiU1ZHQW5nbGUiID0+IDEsICJTVkdMZW5ndGgiID0+IDEsICJTVkdNYXRyaXgi
ID0+IDEsICJTVkdQb2ludCIgPT4gMSwgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8iID0+IDEsICJT
VkdSZWN0IiA9PiAxKTsKQEAgLTMwMCw3ICszMDEsMTYgQEAgc3ViIElzUHJpbWl0aXZlVHlwZQog
ICAgIG15ICRvYmplY3QgPSBzaGlmdDsKICAgICBteSAkdHlwZSA9IHNoaWZ0OwogCi0gICAgcmV0
dXJuIDEgaWYgJHByaW1pdGl2ZVR5cGVIYXNoeyR0eXBlfTsKKyAgICByZXR1cm4gMSBpZiAkbm9u
TnVtYmVyUHJpbWl0aXZlVHlwZUhhc2h7JHR5cGV9IHx8ICRudW1iZXJQcmltaXRpdmVUeXBlSGFz
aHskdHlwZX07CisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBJc051bWJlclR5cGUKK3sKKyAgICBt
eSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKworICAgIHJldHVybiAx
IGlmICRudW1iZXJQcmltaXRpdmVUeXBlSGFzaHskdHlwZX07CiAgICAgcmV0dXJuIDA7CiB9CiAK
QEAgLTMxOCw3ICszMjgsNyBAQCBzdWIgSXNOb25Qb2ludGVyVHlwZQogICAgIG15ICRvYmplY3Qg
PSBzaGlmdDsKICAgICBteSAkdHlwZSA9IHNoaWZ0OwogCi0gICAgcmV0dXJuIDEgaWYgJG5vblBv
aW50ZXJUeXBlSGFzaHskdHlwZX0gb3IgJHByaW1pdGl2ZVR5cGVIYXNoeyR0eXBlfTsKKyAgICBy
ZXR1cm4gMSBpZiAkbm9uUG9pbnRlclR5cGVIYXNoeyR0eXBlfSB8fCBJc1ByaW1pdGl2ZVR5cGUo
JHR5cGUpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQppbmRleCBkNzYyZjZkLi41ZDM4MWE2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTk4LDYgKzk4LDggQEAgc3ViIEdl
bmVyYXRlSW50ZXJmYWNlCiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGRlZmlu
ZXMgPSBzaGlmdDsKIAorICAgIExpbmtPdmVybG9hZGVkRnVuY3Rpb25zKCRkYXRhTm9kZSk7CisK
ICAgICAjIFN0YXJ0IGFjdHVhbCBnZW5lcmF0aW9uCiAgICAgJG9iamVjdC0+R2VuZXJhdGVIZWFk
ZXIoJGRhdGFOb2RlKTsKICAgICAkb2JqZWN0LT5HZW5lcmF0ZUltcGxlbWVudGF0aW9uKCRkYXRh
Tm9kZSk7CkBAIC0xOTUsNiArMTk3LDIzIEBAIHN1YiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5n
CiAgICAgfQogfQogCitzdWIgTGlua092ZXJsb2FkZWRGdW5jdGlvbnMKK3sKKyAgICBteSAkZGF0
YU5vZGUgPSBzaGlmdDsKKworICAgICMgSWRlbnRpZmllcyBvdmVybG9hZGVkIGZ1bmN0aW9ucyBh
bmQgZm9yIGVhY2ggZnVuY3Rpb24gYWRkcyBhbiBhcnJheSB3aXRoCisgICAgIyBsaW5rcyB0byBp
dHMgcmVzcGVjdGl2ZSBvdmVybG9hZHMgKGluY2x1ZGluZyBpdHNlbGYpLgorICAgIG15ICVuYW1l
VG9GdW5jdGlvbnNNYXAgPSAoKTsKKyAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5v
ZGUtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+bmFtZTsKKyAgICAgICAgJG5hbWVUb0Z1bmN0aW9uc01hcHskbmFtZX0gPSBbXSBpZiAhZXhp
c3RzICRuYW1lVG9GdW5jdGlvbnNNYXB7JG5hbWV9OworICAgICAgICBwdXNoKEB7JG5hbWVUb0Z1
bmN0aW9uc01hcHskbmFtZX19LCAkZnVuY3Rpb24pOworICAgICAgICAkZnVuY3Rpb24tPntvdmVy
bG9hZHN9ID0gJG5hbWVUb0Z1bmN0aW9uc01hcHskbmFtZX07CisgICAgICAgICRmdW5jdGlvbi0+
e292ZXJsb2FkSW5kZXh9ID0gQHskbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1lfX07CisgICAgfQor
Cit9CisKIHN1YiBHZW5lcmF0ZUhlYWRlcgogewogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKQEAg
LTEwMDEsNiArMTAyMCw3OSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7ZnVuY3Rp
b25OYW1lfUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndQogRU5ECiB9CiAKK3N1
YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24KK3sKKyAgICBteSAkbnVtUGFyYW1l
dGVycyA9IHNoaWZ0OworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworCisgICAgbXkgQGFuZEV4
cHJlc3Npb24gPSAoKTsKKyAgICBwdXNoKEBhbmRFeHByZXNzaW9uLCAiYXJncy5MZW5ndGgoKSA9
PSAkbnVtUGFyYW1ldGVycyIpOworICAgIG15ICRwYXJhbWV0ZXJJbmRleCA9IDA7CisgICAgZm9y
ZWFjaCAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgbGFz
dCBpZiAkcGFyYW1ldGVySW5kZXggPj0gJG51bVBhcmFtZXRlcnM7CisgICAgICAgIG15ICR2YWx1
ZSA9ICJhcmdzWyRwYXJhbWV0ZXJJbmRleF0iOworICAgICAgICBteSAkdHlwZSA9IEdldFR5cGVG
cm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpOworCisgICAgICAgICMgT25seSBET01TdHJpbmcgb3Ig
d3JhcHBlciB0eXBlcyBhcmUgY2hlY2tlZC4KKyAgICAgICAgIyBGb3IgRE9NU3RyaW5nLCBOdWxs
IG9yIFVuZGVmaW5lZCBhcmUgYWNjZXB0ZWQgdG9vLCBhcyB0aGVzZSBhcmUKKyAgICAgICAgIyB1
c3VhbGx5IGFjY2VwdGFibGUgdmFsdWVzIGZvciBhIERPTVN0cmluZyBhcmd1bWVudC4KKyAgICAg
ICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS5Jc051bGwoKSB8fCAke3ZhbHVlfS5J
c1VuZGVmaW5lZCgpIHx8ICR7dmFsdWV9LklzU3RyaW5nKCkpIikgaWYgJGNvZGVHZW5lcmF0b3It
PklzU3RyaW5nVHlwZSgkdHlwZSk7CisgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICJWOCR7
dHlwZX06Okhhc0luc3RhbmNlKCR2YWx1ZSkiKSBpZiBJc1dyYXBwZXJUeXBlKCR0eXBlKTsKKwor
ICAgICAgICAkcGFyYW1ldGVySW5kZXgrKzsKKyAgICB9CisgICAgbXkgJHJlcyA9IGpvaW4oIiAm
JiAiLCBAYW5kRXhwcmVzc2lvbik7CisgICAgJHJlcyA9ICIoJHJlcykiIGlmIEBhbmRFeHByZXNz
aW9uID4gMTsKKyAgICByZXR1cm4gJHJlczsKK30KKworc3ViIEdlbmVyYXRlRnVuY3Rpb25QYXJh
bWV0ZXJzQ2hlY2sKK3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKworICAgIG15IEBvckV4
cHJlc3Npb24gPSAoKTsKKyAgICBteSAkbnVtUGFyYW1ldGVycyA9IDA7CisgICAgZm9yZWFjaCAk
cGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgaWYgKCRwYXJh
bWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7CisgICAgICAgICAgICBw
dXNoKEBvckV4cHJlc3Npb24sIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbigkbnVt
UGFyYW1ldGVycywgJGZ1bmN0aW9uKSk7CisgICAgICAgIH0KKyAgICAgICAgJG51bVBhcmFtZXRl
cnMrKzsKKyAgICB9CisgICAgcHVzaChAb3JFeHByZXNzaW9uLCBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVja0V4cHJlc3Npb24oJG51bVBhcmFtZXRlcnMsICRmdW5jdGlvbikpOworICAgIHJldHVybiBq
b2luKCIgfHwgIiwgQG9yRXhwcmVzc2lvbik7Cit9CisKK3N1YiBHZW5lcmF0ZU92ZXJsb2FkZWRG
dW5jdGlvbkNhbGxiYWNrCit7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJGRh
dGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKworICAgIG15
ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisKKyAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCA8PEVORCk7CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1D
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7CisgICAgSU5DX1NUQVRTKFwiRE9N
LiRpbXBsQ2xhc3NOYW1lLiRuYW1lXCIpOworRU5ECisgICAgZm9yZWFjaCBteSAkb3ZlcmxvYWQg
KEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0pIHsKKyAgICAgICAgbXkgJHBhcmFtZXRlcnNDaGVj
ayA9IEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2soJG92ZXJsb2FkKTsKKyAgICAgICAg
aWYgKCRvdmVybG9hZC0+e292ZXJsb2FkSW5kZXh9ID09IDEpIHsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCRwYXJhbWV0ZXJzQ2hlY2spIHtcbiIpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9
IGVsc2UgaWYgKCRwYXJhbWV0ZXJzQ2hlY2spIHtcbiIpOworICAgICAgICB9CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiAke25hbWV9JG92ZXJsb2FkLT57
b3ZlcmxvYWRJbmRleH1DYWxsYmFjayhhcmdzKTtcbiIpOworICAgIH0KKyAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCA8PEVORCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVjhQcm94eTo6c2V0
RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50
ZXJjZXB0b3IoKTsKKyAgICB9CitFTkQKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifVxu
XG4iKTsKK30KKworCiBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrCiB7CiAgICAgbXkgJGZ1
bmN0aW9uID0gc2hpZnQ7CkBAIC0xMDEwLDYgKzExMDIsMTAgQEAgc3ViIEdlbmVyYXRlRnVuY3Rp
b25DYWxsYmFjawogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOwogICAg
IG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAKKyAgICBpZiAoQHskZnVu
Y3Rpb24tPntvdmVybG9hZHN9fSA+IDEpIHsKKyAgICAgICAgJG5hbWUgPSAkbmFtZSAuICRmdW5j
dGlvbi0+e292ZXJsb2FkSW5kZXh9OworICAgIH0KKwogICAgICMgQWRkaW5nIGFuZCByZW1vdmlu
ZyBldmVudCBsaXN0ZW5lcnMgYXJlIG5vdCBzdGFuZGFyZCBjYWxsYmFjayBiZWhhdmlvciwKICAg
ICAjIGJ1dCB0aGV5IGFyZSBleHRyZW1lbHkgY29uc2lzdGVudCBhY3Jvc3MgdGhlIHZhcmlvdXMg
Y2xhc3NlcyB0aGF0IHRha2UgZXZlbnQgbGlzdGVuZXJzLAogICAgICMgc28gd2UgY2FuIGdlbmVy
YXRlIHRoZW0gYXMgYSAic3BlY2lhbCBjYXNlIi4KQEAgLTEwNDMsNyArMTEzOSw3IEBAIEVORAog
RU5ECiAgICAgfQogCi0gICMgQ2hlY2sgZG9tYWluIHNlY3VyaXR5IGlmIG5lZWRlZAorICAgICMg
Q2hlY2sgZG9tYWluIHNlY3VyaXR5IGlmIG5lZWRlZAogICAgIGlmICgoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tEb21haW5TZWN1cml0eSJ9CiAgICAgICAgfHwgJGludGVy
ZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpCiAgICAgICAgJiYgISRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0pIHsKQEAg
LTE1NjcsNiArMTY2Myw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgIGlmICgh
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0gfHwg
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbSJ9KSkg
ewogICAgICAgICAgICAgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrKCRmdW5jdGlvbiwgJGRhdGFO
b2RlLCAkaW1wbENsYXNzTmFtZSk7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT57b3Zlcmxv
YWRJbmRleH0gPiAxICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID09IEB7JGZ1bmN0aW9u
LT57b3ZlcmxvYWRzfX0pIHsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5j
dGlvbkNhbGxiYWNrKCRmdW5jdGlvbiwgJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
Pm5hbWUgZXEgIml0ZW0iKSB7CkBAIC0xNjI0LDYgKzE3MjMsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICRudW1fY2FsbGJhY2tzID0gMDsKICAgICAkaGFzX2NhbGxiYWNrcyA9
IDA7CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7
CisgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAg
ICBteSAkYXR0ckV4dCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXM7
CiAgICAgICAgICMgRG9uJ3QgcHV0IGFueSBub25zdGFuZGFyZCBmdW5jdGlvbnMgaW50byB0aGlz
IHRhYmxlOgogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhPbkluc3RhbmNlIn0pIHsKQEAgLTE3
ODUsNiArMTg4NSw3IEBAIEVORAogICAgICMgRGVmaW5lIG91ciBmdW5jdGlvbnMgd2l0aCBTZXQo
KSBvciBTZXRBY2Nlc3NvcigpCiAgICAgJHRvdGFsX2Z1bmN0aW9ucyA9IDA7CiAgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgIG5leHQg
aWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAgICAkdG90YWxfZnVuY3Rp
b25zKys7CiAgICAgICAgIG15ICRhdHRyRXh0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlczsKICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
bmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9UZXN0T2JqLmlkbCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9UZXN0T2JqLmlkbAppbmRleCA2MjhiNjE4Li42NjJh
YzY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVGVzdE9iai5pZGwKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC90ZXN0L1Rlc3RPYmouaWRsCkBAIC02MSw1ICs2MSwxMSBA
QCBtb2R1bGUgdGVzdCB7CiAgICAgICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQXJnKGlu
IFtPcHRpb25hbF0gbG9uZyBvcHQpOwogICAgICAgICB2b2lkICAgIG1ldGhvZFdpdGhOb25PcHRp
b25hbEFyZ0FuZE9wdGlvbmFsQXJnKGluIGxvbmcgbm9uT3B0LCBpbiBbT3B0aW9uYWxdIGxvbmcg
b3B0KTsKICAgICAgICAgdm9pZCAgICBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRp
b25hbEFyZ3MoaW4gbG9uZyBub25PcHQsIGluIFtPcHRpb25hbF0gbG9uZyBvcHQxLCBpbiBsb25n
IG9wdDIpOworCisgICAgICAgIC8vIE92ZXJsb2FkcworICAgICAgICB2b2lkICAgIG92ZXJsb2Fk
ZWRNZXRob2QoaW4gVGVzdE9iaiBvYmpBcmcsIGluIERPTVN0cmluZyBzdHJBcmcpOworICAgICAg
ICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoaW4gVGVzdE9iaiBvYmpBcmcsIGluIFtPcHRpb25h
bF0gbG9uZyBpbnRBcmcpOworICAgICAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoaW4gRE9N
U3RyaW5nIHN0ckFyZyk7CisgICAgICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBsb25n
IGludEFyZyk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvdGVz
dC9WOFRlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC90ZXN0L1Y4VGVzdE9iai5jcHAK
aW5kZXggMDJkOTE0My4uOGY4M2ZjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC90
ZXN0L1Y4VGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC90ZXN0L1Y4VGVzdE9i
ai5jcHAKQEAgLTI2NSw2ICsyNjUsNjAgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBt
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3NDYWxsYmFjaygKICAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKSB7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0aG9kMSIpOwor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Cisg
ICAgVGVzdE9iaiogb2JqQXJnID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdKSA/IFY4
VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkg
OiAwOworICAgIFY4UGFyYW1ldGVyPD4gc3RyQXJnID0gYXJnc1sxXTsKKyAgICBpbXAtPm92ZXJs
b2FkZWRNZXRob2Qob2JqQXJnLCBzdHJBcmcpOworICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0
aG9kMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpIHsKKyAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2QyIik7CisgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiBvYmpBcmcgPSBW
OFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CisgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPD0gMSkgeworICAgICAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qob2JqQXJnKTsKKyAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIH0KKyAgICBpbnQgaW50
QXJnID0gdG9JbnQzMihhcmdzWzFdKTsKKyAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qob2JqQXJn
LCBpbnRBcmcpOworICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30KKworc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kM0NhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpIHsKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJs
b2FkZWRNZXRob2QzIik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKKyAgICBWOFBhcmFtZXRlcjw+IHN0ckFyZyA9IGFyZ3NbMF07CisgICAg
aW1wLT5vdmVybG9hZGVkTWV0aG9kKHN0ckFyZyk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRN
ZXRob2Q0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeworICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGludCBpbnRBcmcgPSB0b0lu
dDMyKGFyZ3NbMF0pOworICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChpbnRBcmcpOworICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykgeworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZCIpOworICAg
IGlmICgoYXJncy5MZW5ndGgoKSA9PSAyICYmIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1sw
XSkgJiYgKGFyZ3NbMV0uSXNOdWxsKCkgfHwgYXJnc1sxXS5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3Nb
MV0uSXNTdHJpbmcoKSkpKSB7CisgICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kMUNhbGxi
YWNrKGFyZ3MpOworICAgIH0gZWxzZSBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiBWOFRlc3RP
Ymo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSB8fCAoYXJncy5MZW5ndGgoKSA9PSAyICYmIFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSkpKSB7CisgICAgICAgIHJldHVybiBvdmVybG9hZGVk
TWV0aG9kMkNhbGxiYWNrKGFyZ3MpOworICAgIH0gZWxzZSBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0g
MSAmJiAoYXJnc1swXS5Jc051bGwoKSB8fCBhcmdzWzBdLklzVW5kZWZpbmVkKCkgfHwgYXJnc1sw
XS5Jc1N0cmluZygpKSkpIHsKKyAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2QzQ2FsbGJh
Y2soYXJncyk7CisgICAgfSBlbHNlIGlmIChhcmdzLkxlbmd0aCgpID09IDEpIHsKKyAgICAgICAg
cmV0dXJuIG92ZXJsb2FkZWRNZXRob2Q0Q2FsbGJhY2soYXJncyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1
cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFRlc3RPYmpJbnRlcm5hbAogCiBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0T2Jq
X2F0dHJzW10gPSB7CkBAIC00MDcsNiArNDYxLDEyIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNp
CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBvYmpNZXRob2RXaXRoQXJnc19zaWduYXR1
cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgb2JqTWV0aG9kV2l0aEFyZ3NfYXJnYywgb2Jq
TWV0aG9kV2l0aEFyZ3NfYXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoIm9i
ak1ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVy
bmFsOjpvYmpNZXRob2RXaXRoQXJnc0NhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwg
b2JqTWV0aG9kV2l0aEFyZ3Nfc2lnbmF0dXJlKSk7CiAKKyAgICAvLyBDdXN0b20gU2lnbmF0dXJl
ICdvdmVybG9hZGVkTWV0aG9kJworICAgIGNvbnN0IGludCBvdmVybG9hZGVkTWV0aG9kX2FyZ2Mg
PSAyOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG92ZXJsb2FkZWRNZXRo
b2RfYXJndltvdmVybG9hZGVkTWV0aG9kX2FyZ2NdID0geyBWOFRlc3RPYmo6OkdldFJhd1RlbXBs
YXRlKCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCkgfTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IG92ZXJsb2FkZWRNZXRob2Rfc2lnbmF0dXJlID0gdjg6OlNpZ25h
dHVyZTo6TmV3KGRlc2MsIG92ZXJsb2FkZWRNZXRob2RfYXJnYywgb3ZlcmxvYWRlZE1ldGhvZF9h
cmd2KTsKKyAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ldygib3ZlcmxvYWRlZE1ldGhvZCIp
LCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpJbnRlcm5hbDo6b3ZlcmxvYWRlZE1l
dGhvZENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgb3ZlcmxvYWRlZE1ldGhvZF9z
aWduYXR1cmUpKTsKKwogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQogICAgIGRlc2Mt
PlNldChnZXRUb1N0cmluZ05hbWUoKSwgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpKTsKICAgICByZXR1
cm4gZGVzYzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53393</attachid>
            <date>2010-04-14 18:15:59 -0700</date>
            <delta_ts>2010-04-15 10:33:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37373-20100414181557.patch</filename>
            <type>text/plain</type>
            <size>12476</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTE4MTkzZS4uMmYxZjU2MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNC0xNCAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPdmVybG9hZHMgYXV0by1nZW5lcmF0aW9uIGluIFY4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzM3MworCisgICAgICAg
IFRoaXMgd2lsbCBiZSB1c2VkIGJ5IFhIUi5zZW5kL29wZW4sIENhbnZhcy4qLCBXZWJHTC4qIG1l
dGhvZHMgdGhhdCBhcmUgY3VycmVudGx5IGN1c3RvbS4gV2hlbiBtb3JlIHRoYW4gYSBzaW5nbGUg
b3ZlcmxvYWQgZXhpc3RzIGZvciBhIG1ldGhvZCwgdGhlIGNvcnJlY3Qgb3ZlcmxvYWQgaXMgY2hv
c2VuIGJhc2VkIG9uIHRoZSB0b3RhbCBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCBhcyB3ZWxs
IGFzIHRoZSB2YWx1ZXMgcGFzc2VkIHRvIG5vbi1wcmltaXRpdmUgYXJndW1lbnRzLgorCisgICAg
ICAgIE92ZXJsb2FkIGRpc3BhdGNoIG9yZGVyIGRlcGVuZHMgb24gdGhlIG9yZGVyIHRoZSBmdW5j
dGlvbnMgYXJlIGRlZmluZWQgaW4gdGhlIElETC4gT3ZlcmxvYWRzIG11c3QgYmUgc3BlY2lmaWVk
IGZyb20gdGhlIG1vc3QgcHJlY2lzZSAob3ZlcmxvYWRzIHdpdGggd3JhcHBlciB0eXBlIGFyZ3Vt
ZW50cykgdG8gdGhlIGxlYXN0IHByZWNpc2UgKG92ZXJsb2FkcyB3aXRoIG9ubHkgcHJpbWl0aXZl
IHR5cGUgYXJndW1lbnRzKS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOiBJZGVudGlmeSBhbmQgb3V0cHV0IG92ZXJsb2FkcyBjYWxsYmFja3MgYW5kIGRp
c3BhdGNoIGNvZGUuCisgICAgICAgICogYmluZGluZ3MvdjgvdGVzdC9UZXN0T2JqLmlkbDogT3Zl
cmxvYWRzIHNhbXBsZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC90ZXN0L1Y4VGVzdE9iai5jcHA6
IE91dHB1dCBjaGFuZ2UuCisKIDIwMTAtMDQtMTQgIEFudG9uIE11aGluICA8YW50b25tQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3LCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAwNzYzYjM2Li44ZWMxMTVkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisr
KyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE5NSw2
ICsxOTUsMjMgQEAgc3ViIEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcKICAgICB9CiB9CiAKK3N1
YiBMaW5rT3ZlcmxvYWRlZEZ1bmN0aW9ucworeworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0Owor
CisgICAgIyBJZGVudGlmaWVzIG92ZXJsb2FkZWQgZnVuY3Rpb25zIGFuZCBmb3IgZWFjaCBmdW5j
dGlvbiBhZGRzIGFuIGFycmF5IHdpdGgKKyAgICAjIGxpbmtzIHRvIGl0cyByZXNwZWN0aXZlIG92
ZXJsb2FkcyAoaW5jbHVkaW5nIGl0c2VsZikuCisgICAgbXkgJW5hbWVUb0Z1bmN0aW9uc01hcCA9
ICgpOworICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkg
eworICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAg
ICAkbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1lfSA9IFtdIGlmICFleGlzdHMgJG5hbWVUb0Z1bmN0
aW9uc01hcHskbmFtZX07CisgICAgICAgIHB1c2goQHskbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1l
fX0sICRmdW5jdGlvbik7CisgICAgICAgICRmdW5jdGlvbi0+e292ZXJsb2Fkc30gPSAkbmFtZVRv
RnVuY3Rpb25zTWFweyRuYW1lfTsKKyAgICAgICAgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0g
PSBAeyRuYW1lVG9GdW5jdGlvbnNNYXB7JG5hbWV9fTsKKyAgICB9CisKK30KKwogc3ViIEdlbmVy
YXRlSGVhZGVyCiB7CiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwpAQCAtMTAwMSw2ICsxMDE4LDgz
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jdGlvbk5hbWV9RXZlbnRMaXN0
ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1CiBFTkQKIH0KIAorc3ViIEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrRXhwcmVzc2lvbgoreworICAgIG15ICRudW1QYXJhbWV0ZXJzID0gc2hpZnQ7Cisg
ICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisKKyAgICBteSBAYW5kRXhwcmVzc2lvbiA9ICgpOwor
ICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICJhcmdzLkxlbmd0aCgpID09ICRudW1QYXJhbWV0ZXJz
Iik7CisgICAgbXkgJHBhcmFtZXRlckluZGV4ID0gMDsKKyAgICBmb3JlYWNoICRwYXJhbWV0ZXIg
KEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICBsYXN0IGlmICRwYXJhbWV0ZXJJ
bmRleCA+PSAkbnVtUGFyYW1ldGVyczsKKyAgICAgICAgbXkgJHZhbHVlID0gImFyZ3NbJHBhcmFt
ZXRlckluZGV4XSI7CisgICAgICAgIG15ICR0eXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJHBh
cmFtZXRlcik7CisKKyAgICAgICAgIyBPbmx5IERPTVN0cmluZyBvciB3cmFwcGVyIHR5cGVzIGFy
ZSBjaGVja2VkLgorICAgICAgICAjIEZvciBET01TdHJpbmcsIE51bGwgb3IgVW5kZWZpbmVkIGFy
ZSBhY2NlcHRlZCB0b28sIGFzIHRoZXNlIGFyZQorICAgICAgICAjIHVzdWFsbHkgYWNjZXB0YWJs
ZSB2YWx1ZXMgZm9yIGEgRE9NU3RyaW5nIGFyZ3VtZW50LgorICAgICAgICBwdXNoKEBhbmRFeHBy
ZXNzaW9uLCAiKCR7dmFsdWV9LklzTnVsbCgpIHx8ICR7dmFsdWV9LklzVW5kZWZpbmVkKCkgfHwg
JHt2YWx1ZX0uSXNTdHJpbmcoKSkiKSBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0
eXBlKTsKKyAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIlY4JHt0eXBlfTo6SGFzSW5zdGFu
Y2UoJHZhbHVlKSIpIGlmIElzV3JhcHBlclR5cGUoJHR5cGUpOworCisgICAgICAgICRwYXJhbWV0
ZXJJbmRleCsrOworICAgIH0KKyAgICBteSAkcmVzID0gam9pbigiICYmICIsIEBhbmRFeHByZXNz
aW9uKTsKKyAgICAkcmVzID0gIigkcmVzKSIgaWYgQGFuZEV4cHJlc3Npb24gPiAxOworICAgIHJl
dHVybiAkcmVzOworfQorCitzdWIgR2VuZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjaworewor
ICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworCisgICAgbXkgQG9yRXhwcmVzc2lvbiA9ICgpOwor
ICAgIG15ICRudW1QYXJhbWV0ZXJzID0gMDsKKyAgICBmb3JlYWNoICRwYXJhbWV0ZXIgKEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKKyAgICAgICAgICAgIHB1c2goQG9yRXhwcmVzc2lv
biwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uKCRudW1QYXJhbWV0ZXJzLCAkZnVu
Y3Rpb24pKTsKKyAgICAgICAgfQorICAgICAgICAkbnVtUGFyYW1ldGVycysrOworICAgIH0KKyAg
ICBwdXNoKEBvckV4cHJlc3Npb24sIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbigk
bnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uKSk7CisgICAgcmV0dXJuIGpvaW4oIiB8fCAiLCBAb3JF
eHByZXNzaW9uKTsKK30KKworc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uQ2FsbGJhY2sK
K3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
KyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworCisgICAgIyBHZW5lcmF0ZSBjb2RlIGZv
ciBjaG9vc2luZyB0aGUgY29ycmVjdCBvdmVybG9hZCB0byBjYWxsLiBPdmVybG9hZHMgYXJlCisg
ICAgIyBjaG9zZW4gYmFzZWQgb24gdGhlIHRvdGFsIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2Vk
IGFuZCB0aGUgdHlwZSBvZgorICAgICMgdmFsdWVzIHBhc3NlZCBpbiBub24tcHJpbWl0aXZlIGFy
Z3VtZW50IHNsb3RzLiBXaGVuIG1vcmUgdGhhbiBhIHNpbmdsZQorICAgICMgb3ZlcmxvYWQgaXMg
YXBwbGljYWJsZSwgcHJlY2VkZW5jZSBpcyBnaXZlbiBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIG9m
CisgICAgIyBkZWNsYXJhdGlvbiBpbiB0aGUgSURMLgorCisgICAgbXkgJG5hbWUgPSAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1DYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKSB7CisgICAgSU5DX1NUQVRTKFwiRE9NLiRpbXBsQ2xhc3NOYW1lLiRu
YW1lXCIpOworRU5ECisgICAgZm9yZWFjaCBteSAkb3ZlcmxvYWQgKEB7JGZ1bmN0aW9uLT57b3Zl
cmxvYWRzfX0pIHsKKyAgICAgICAgbXkgJHBhcmFtZXRlcnNDaGVjayA9IEdlbmVyYXRlRnVuY3Rp
b25QYXJhbWV0ZXJzQ2hlY2soJG92ZXJsb2FkKTsKKyAgICAgICAgaWYgKCRvdmVybG9hZC0+e292
ZXJsb2FkSW5kZXh9ID09IDEpIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgaWYgKCRwYXJhbWV0ZXJzQ2hlY2spIHtcbiIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9IGVsc2UgaWYgKCRwYXJhbWV0
ZXJzQ2hlY2spIHtcbiIpOworICAgICAgICB9CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgICAgIHJldHVybiAke25hbWV9JG92ZXJsb2FkLT57b3ZlcmxvYWRJbmRleH1DYWxs
YmFjayhhcmdzKTtcbiIpOworICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVO
RCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRB
WF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9
CitFTkQKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifVxuXG4iKTsKK30KKwogc3ViIEdl
bmVyYXRlRnVuY3Rpb25DYWxsYmFjawogewogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwpAQCAt
MTAxMCw2ICsxMTA0LDExIEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2sKICAgICBteSAk
aW50ZXJmYWNlTmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKICAgICBteSAkbmFtZSA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lOwogCisgICAgaWYgKEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0g
PiAxKSB7CisgICAgICAgICMgQXBwZW5kIGEgbnVtYmVyIHRvIGFuIG92ZXJsb2FkZWQgbWV0aG9k
J3MgbmFtZSB0byBtYWtlIGl0IHVuaXF1ZToKKyAgICAgICAgJG5hbWUgPSAkbmFtZSAuICRmdW5j
dGlvbi0+e292ZXJsb2FkSW5kZXh9OworICAgIH0KKwogICAgICMgQWRkaW5nIGFuZCByZW1vdmlu
ZyBldmVudCBsaXN0ZW5lcnMgYXJlIG5vdCBzdGFuZGFyZCBjYWxsYmFjayBiZWhhdmlvciwKICAg
ICAjIGJ1dCB0aGV5IGFyZSBleHRyZW1lbHkgY29uc2lzdGVudCBhY3Jvc3MgdGhlIHZhcmlvdXMg
Y2xhc3NlcyB0aGF0IHRha2UgZXZlbnQgbGlzdGVuZXJzLAogICAgICMgc28gd2UgY2FuIGdlbmVy
YXRlIHRoZW0gYXMgYSAic3BlY2lhbCBjYXNlIi4KQEAgLTEwNDMsNyArMTE0Miw3IEBAIEVORAog
RU5ECiAgICAgfQogCi0gICMgQ2hlY2sgZG9tYWluIHNlY3VyaXR5IGlmIG5lZWRlZAorICAgICMg
Q2hlY2sgZG9tYWluIHNlY3VyaXR5IGlmIG5lZWRlZAogICAgIGlmICgoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tEb21haW5TZWN1cml0eSJ9CiAgICAgICAgfHwgJGludGVy
ZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpCiAgICAgICAgJiYgISRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0pIHsKQEAg
LTE1NjEsMTIgKzE2NjAsMTcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
R2VuZXJhdGVDb25zdHJ1Y3RvckdldHRlcigkaW1wbENsYXNzTmFtZSk7CiAgICAgfQogCisgICAg
TGlua092ZXJsb2FkZWRGdW5jdGlvbnMoJGRhdGFOb2RlKTsKKwogICAgIG15ICRpbmRleGVyOwog
ICAgIG15ICRuYW1lZFByb3BlcnR5R2V0dGVyOwogICAgICMgR2VuZXJhdGUgbWV0aG9kcyBmb3Ig
ZnVuY3Rpb25zLgogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+ZnVuY3Rp
b25zfSkgewogICAgICAgICBpZiAoISgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVjhDdXN0b20ifSkpIHsKICAgICAgICAgICAgIEdlbmVyYXRlRnVuY3Rpb25DYWxs
YmFjaygkZnVuY3Rpb24sICRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUpOworICAgICAgICAgICAg
aWYgKCRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMSAmJiAkZnVuY3Rpb24tPntvdmVybG9h
ZEluZGV4fSA9PSBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319KSB7CisgICAgICAgICAgICAgICAg
R2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFjaygkZnVuY3Rpb24sICRkYXRhTm9kZSwg
JGltcGxDbGFzc05hbWUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJpdGVtIikgewpAQCAtMTYyNCw2ICsxNzI4
LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAkbnVtX2NhbGxiYWNrcyA9IDA7
CiAgICAgJGhhc19jYWxsYmFja3MgPSAwOwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRk
YXRhTm9kZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICAjIE9ubHkgb25lIHRhYmxlIGVudHJ5IGlz
IG5lZWRlZCBmb3Igb3ZlcmxvYWRlZCBtZXRob2RzOgorICAgICAgICBuZXh0IGlmICRmdW5jdGlv
bi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKKwogICAgICAgICBteSAkYXR0ckV4dCA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXM7CiAgICAgICAgICMgRG9uJ3QgcHV0IGFu
eSBub25zdGFuZGFyZCBmdW5jdGlvbnMgaW50byB0aGlzIHRhYmxlOgogICAgICAgICBpZiAoJGF0
dHJFeHQtPnsiVjhPbkluc3RhbmNlIn0pIHsKQEAgLTE3ODUsNiArMTg5Miw5IEBAIEVORAogICAg
ICMgRGVmaW5lIG91ciBmdW5jdGlvbnMgd2l0aCBTZXQoKSBvciBTZXRBY2Nlc3NvcigpCiAgICAg
JHRvdGFsX2Z1bmN0aW9ucyA9IDA7CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFO
b2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgICMgT25seSBvbmUgYWNjZXNzb3IgaXMgbmVlZGVk
IGZvciBvdmVybG9hZGVkIG1ldGhvZHM6CisgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3Zl
cmxvYWRJbmRleH0gPiAxOworCiAgICAgICAgICR0b3RhbF9mdW5jdGlvbnMrKzsKICAgICAgICAg
bXkgJGF0dHJFeHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwog
ICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC90ZXN0L1Rlc3RPYmouaWRsIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDYyOGI2MTguLjY2MmFjNjQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L3Rlc3QvVGVzdE9iai5pZGwKQEAgLTYxLDUgKzYxLDExIEBAIG1vZHVsZSB0ZXN0IHsK
ICAgICAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxBcmcoaW4gW09wdGlvbmFsXSBsb25n
IG9wdCk7CiAgICAgICAgIHZvaWQgICAgbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9u
YWxBcmcoaW4gbG9uZyBub25PcHQsIGluIFtPcHRpb25hbF0gbG9uZyBvcHQpOwogICAgICAgICB2
b2lkICAgIG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhpbiBsb25n
IG5vbk9wdCwgaW4gW09wdGlvbmFsXSBsb25nIG9wdDEsIGluIGxvbmcgb3B0Mik7CisKKyAgICAg
ICAgLy8gT3ZlcmxvYWRzCisgICAgICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBUZXN0
T2JqIG9iakFyZywgaW4gRE9NU3RyaW5nIHN0ckFyZyk7CisgICAgICAgIHZvaWQgICAgb3Zlcmxv
YWRlZE1ldGhvZChpbiBUZXN0T2JqIG9iakFyZywgaW4gW09wdGlvbmFsXSBsb25nIGludEFyZyk7
CisgICAgICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBET01TdHJpbmcgc3RyQXJnKTsK
KyAgICAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKGluIGxvbmcgaW50QXJnKTsKICAgICB9
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC90ZXN0L1Y4VGVzdE9iai5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVjhUZXN0T2JqLmNwcAppbmRleCAwMmQ5MTQzLi44
ZjgzZmM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVjhUZXN0T2JqLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVjhUZXN0T2JqLmNwcApAQCAtMjY1LDYg
KzI2NSw2MCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhOb25PcHRp
b25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnc0NhbGxiYWNrKAogICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9h
ZGVkTWV0aG9kMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpIHsKKyAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2QxIik7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiBvYmpB
cmcgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pID8gVjhUZXN0T2JqOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CisgICAgVjhQYXJh
bWV0ZXI8PiBzdHJBcmcgPSBhcmdzWzFdOworICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpB
cmcsIHN0ckFyZyk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworfQorCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QyQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3Zl
cmxvYWRlZE1ldGhvZDIiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIG9iakFyZyA9IFY4VGVzdE9iajo6SGFzSW5z
dGFuY2UoYXJnc1swXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAxKSB7Cisg
ICAgICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpBcmcpOworICAgICAgICByZXR1cm4gdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgfQorICAgIGludCBpbnRBcmcgPSB0b0ludDMyKGFy
Z3NbMV0pOworICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpBcmcsIGludEFyZyk7CisgICAg
cmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykgeworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDMiKTsK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwor
ICAgIFY4UGFyYW1ldGVyPD4gc3RyQXJnID0gYXJnc1swXTsKKyAgICBpbXAtPm92ZXJsb2FkZWRN
ZXRob2Qoc3RyQXJnKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDRDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5v
dmVybG9hZGVkTWV0aG9kNCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CisgICAgaW50IGludEFyZyA9IHRvSW50MzIoYXJnc1swXSk7Cisg
ICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKGludEFyZyk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2Fk
ZWRNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7CisgICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0aG9kIik7CisgICAgaWYgKChhcmdzLkxlbmd0
aCgpID09IDIgJiYgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdKSAmJiAoYXJnc1sxXS5J
c051bGwoKSB8fCBhcmdzWzFdLklzVW5kZWZpbmVkKCkgfHwgYXJnc1sxXS5Jc1N0cmluZygpKSkp
IHsKKyAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2QxQ2FsbGJhY2soYXJncyk7CisgICAg
fSBlbHNlIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uo
YXJnc1swXSkpIHx8IChhcmdzLkxlbmd0aCgpID09IDIgJiYgVjhUZXN0T2JqOjpIYXNJbnN0YW5j
ZShhcmdzWzBdKSkpIHsKKyAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2QyQ2FsbGJhY2so
YXJncyk7CisgICAgfSBlbHNlIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChhcmdzWzBdLklz
TnVsbCgpIHx8IGFyZ3NbMF0uSXNVbmRlZmluZWQoKSB8fCBhcmdzWzBdLklzU3RyaW5nKCkpKSkg
eworICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDNDYWxsYmFjayhhcmdzKTsKKyAgICB9
IGVsc2UgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMSkgeworICAgICAgICByZXR1cm4gb3ZlcmxvYWRl
ZE1ldGhvZDRDYWxsYmFjayhhcmdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBWOFByb3h5Ojpz
ZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJ
bnRlcmNlcHRvcigpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdE9iakludGVybmFs
CiAKIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIFRlc3RPYmpfYXR0cnNbXSA9IHsKQEAg
LTQwNyw2ICs0NjEsMTIgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICB2ODo6SGFuZGxl
PHY4OjpTaWduYXR1cmU+IG9iak1ldGhvZFdpdGhBcmdzX3NpZ25hdHVyZSA9IHY4OjpTaWduYXR1
cmU6Ok5ldyhkZXNjLCBvYmpNZXRob2RXaXRoQXJnc19hcmdjLCBvYmpNZXRob2RXaXRoQXJnc19h
cmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ldygib2JqTWV0aG9kV2l0aEFyZ3Mi
KSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqSW50ZXJuYWw6Om9iak1ldGhvZFdp
dGhBcmdzQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCBvYmpNZXRob2RXaXRoQXJn
c19zaWduYXR1cmUpKTsKIAorICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ292ZXJsb2FkZWRNZXRo
b2QnCisgICAgY29uc3QgaW50IG92ZXJsb2FkZWRNZXRob2RfYXJnYyA9IDI7CisgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb3ZlcmxvYWRlZE1ldGhvZF9hcmd2W292ZXJsb2Fk
ZWRNZXRob2RfYXJnY10gPSB7IFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoKSwgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSB9OworICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gb3ZlcmxvYWRlZE1ldGhvZF9zaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywg
b3ZlcmxvYWRlZE1ldGhvZF9hcmdjLCBvdmVybG9hZGVkTWV0aG9kX2FyZ3YpOworICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3KCJvdmVybG9hZGVkTWV0aG9kIiksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVGVzdE9iakludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kQ2FsbGJhY2ssIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpLCBvdmVybG9hZGVkTWV0aG9kX3NpZ25hdHVyZSkpOworCiAg
ICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KGdldFRvU3RyaW5n
TmFtZSgpLCBnZXRUb1N0cmluZ1RlbXBsYXRlKCkpOwogICAgIHJldHVybiBkZXNjOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>