<?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>50570</bug_id>
          
          <creation_ts>2010-12-06 09:20:05 -0800</creation_ts>
          <short_desc>REGRESSION (r73065?): A regex no longer works</short_desc>
          <delta_ts>2010-12-09 13:06:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Francisco Tolmasky">tolmasky</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>antoine.mercadal</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>klesper</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>317662</commentid>
    <comment_count>0</comment_count>
      <attachid>75703</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2010-12-06 09:20:05 -0800</bug_when>
    <thetext>Created attachment 75703
URL regex that matches in FF, IE, and Safari but not nightlies.

After this change I believe: http://trac.webkit.org/changeset/73065, regexes that were succeeding before (and succeed in other browsers) now no longer match. I have included a reduction.

In the reduction I&apos;ve attached, Safari logs the following:

[&quot;file:///Users/tolmasky/Desktop/HelloWorld/index.html&quot;, &quot;file&quot;, &quot;//&quot;, &quot;&quot;, undefined, undefined, undefined, &quot;&quot;, undefined, &quot;/Users/tolmasky/Desktop/HelloWorld/index.html&quot;, undefined, undefined]

But the nightly logs &quot;null&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318400</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-07 12:35:58 -0800</bug_when>
    <thetext>&lt;rdar://problem/8739603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319111</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-12-08 16:21:32 -0800</bug_when>
    <thetext>*** Bug 50673 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319524</commentid>
    <comment_count>3</comment_count>
      <attachid>76077</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-12-09 09:54:24 -0800</bug_when>
    <thetext>Created attachment 76077
Patch to fix linking of parentheses tail code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319561</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-09 10:30:23 -0800</bug_when>
    <thetext>+        Changed the handling of adjacent parentheses backtracks in two ways.
+        First, only outer most paren backtracks default to back tracking
+        to the &quot;next character&quot; looping code.  Second, added a jump around 
+        backtracks that fall through to the next backtrack where the
+        second backtrack has some greedy processing before the backtracking
+        from outside the parentheses code.
+        https://bugs.webkit.org/show_bug.cgi?id=50570

A somewhat more readable and common format would be:

+        REGRESSION (r73065): A regex no longer works
+        https://bugs.webkit.org/show_bug.cgi?id=50570
+
+        Changed the handling of adjacent parentheses backtracks in two ways.
+        First, only outer most paren backtracks default to back tracking
+        to the &quot;next character&quot; looping code.  Second, added a jump around 
+        backtracks that fall through to the next backtrack where the
+        second backtrack has some greedy processing before the backtracking
+        from outside the parentheses code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319570</commentid>
    <comment_count>5</comment_count>
      <attachid>76089</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-12-09 10:38:59 -0800</bug_when>
    <thetext>Created attachment 76089
New Patch with redundant {increment/decrement}ParenNestingLevel calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319614</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-12-09 11:27:01 -0800</bug_when>
    <thetext>Hi Michael,

(1) please fix the change log comment per alexey&apos;s request.
(2) please remove the superfluous indent.
(3) please switch JumpList -&gt; Jump.
(4) please comment the new check, with a simple example.

cheers,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319658</commentid>
    <comment_count>7</comment_count>
      <attachid>76111</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-12-09 12:32:52 -0800</bug_when>
    <thetext>Created attachment 76111
Patch addressing reviewers comments

Note that I also cleaned up ALL of the extra whitespace in the file JavaScriptCore/yarr/RegexJIT.cpp.  Therefore the resulting patch is large.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319674</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-12-09 13:06:39 -0800</bug_when>
    <thetext>Committed r73640: &lt;http://trac.webkit.org/changeset/73640&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>75703</attachid>
            <date>2010-12-06 09:20:05 -0800</date>
            <delta_ts>2010-12-06 09:20:05 -0800</delta_ts>
            <desc>URL regex that matches in FF, IE, and Safari but not nightlies.</desc>
            <filename>re_reduction.html</filename>
            <type>text/plain</type>
            <size>762</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KCnZhciBVUkxfUkUgPSBuZXcgUmVnRXhwKCAvKiB1cmwgKi8KICAgICJeIiArCiAg
ICAiKD86IiArCiAgICAgICAgIihbXjovPyNdKyk6IiArIC8qIHNjaGVtZSAqLwogICAgIik/IiAr
CiAgICAiKD86IiArCiAgICAgICAgIigvLykiICsgLyogYXV0aG9yaXR5Um9vdCAqLwogICAgICAg
ICIoIiArIC8qIGF1dGhvcml0eSAqLwogICAgICAgICAgICAiKD86IiArCiAgICAgICAgICAgICAg
ICAiKCIgKyAvKiB1c2VySW5mbyAqLwogICAgICAgICAgICAgICAgICAgICIoW146QF0qKSIgKyAv
KiB1c2VyICovCiAgICAgICAgICAgICAgICAgICAgIjo/IiArCiAgICAgICAgICAgICAgICAgICAg
IihbXjpAXSopIiArIC8qIHBhc3N3b3JkICovCiAgICAgICAgICAgICAgICAiKT8iICsKICAgICAg
ICAgICAgICAgICJAIiArCiAgICAgICAgICAgICIpPyIgKwogICAgICAgICAgICAiKFteOi8/I10q
KSIgKyAvKiBkb21haW4gKi8KICAgICAgICAgICAgIig/OjooXFxkKikpPyIgKyAvKiBwb3J0ICov
CiAgICAgICAgIikiICsKICAgICIpPyIgKwogICAgIihbXj8jXSopIiArIC8qcGF0aCovCiAgICAi
KD86XFw/KFteI10qKSk/IiArIC8qIHF1ZXJ5U3RyaW5nICovCiAgICAiKD86IyguKikpPyIgLypm
cmFnbWVudCAqLwopOwoKdmFyIFVSTFN0cmluZyA9ICJmaWxlOi8vL1VzZXJzL3RvbG1hc2t5L0Rl
c2t0b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sIjsKCmNvbnNvbGUubG9nKFVSTF9SRS5leGVjKFVS
TFN0cmluZykpOwoKPC9zY3JpcHQ+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76077</attachid>
            <date>2010-12-09 09:54:24 -0800</date>
            <delta_ts>2010-12-09 10:38:59 -0800</delta_ts>
            <desc>Patch to fix linking of parentheses tail code.</desc>
            <filename>50570-3.patch</filename>
            <type>text/plain</type>
            <size>12081</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNjE5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMTItMDkgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCB0aGUgaGFuZGxpbmcgb2YgYWRqYWNlbnQgcGFy
ZW50aGVzZXMgYmFja3RyYWNrcyBpbiB0d28gd2F5cy4KKyAgICAgICAgRmlyc3QsIG9ubHkgb3V0
ZXIgbW9zdCBwYXJlbiBiYWNrdHJhY2tzIGRlZmF1bHQgdG8gYmFjayB0cmFja2luZworICAgICAg
ICB0byB0aGUgIm5leHQgY2hhcmFjdGVyIiBsb29waW5nIGNvZGUuICBTZWNvbmQsIGFkZGVkIGEg
anVtcCBhcm91bmQgCisgICAgICAgIGJhY2t0cmFja3MgdGhhdCBmYWxsIHRocm91Z2ggdG8gdGhl
IG5leHQgYmFja3RyYWNrIHdoZXJlIHRoZQorICAgICAgICBzZWNvbmQgYmFja3RyYWNrIGhhcyBz
b21lIGdyZWVkeSBwcm9jZXNzaW5nIGJlZm9yZSB0aGUgYmFja3RyYWNraW5nCisgICAgICAgIGZy
b20gb3V0c2lkZSB0aGUgcGFyZW50aGVzZXMgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNTcwCisKKyAgICAgICAgKiB5YXJyL1JlZ2V4SklU
LmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6OkdlbmVyYXRpb25TdGF0
ZTo6R2VuZXJhdGlvblN0YXRlKToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6
OkdlbmVyYXRpb25TdGF0ZTo6aW5jcmVtZW50UGFyZW5OZXN0aW5nTGV2ZWwpOgorICAgICAgICAo
SlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6R2VuZXJhdGlvblN0YXRlOjpkZWNyZW1lbnRQYXJl
bk5lc3RpbmdMZXZlbCk6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpHZW5l
cmF0aW9uU3RhdGU6OmFkZFBhcmVudGhlc2VzVGFpbCk6CisgICAgICAgIChKU0M6OllhcnI6OlJl
Z2V4R2VuZXJhdG9yOjpHZW5lcmF0aW9uU3RhdGU6OmVtaXRQYXJlbnRoZXNlc1RhaWwpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6UGFyZW50aGVzZXNUYWlsOjpQYXJlbnRo
ZXNlc1RhaWwpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6UGFyZW50aGVz
ZXNUYWlsOjpzZXROZXh0SXRlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5l
cmF0b3I6OlBhcmVudGhlc2VzVGFpbDo6Z2VuZXJhdGVDb2RlKToKKyAgICAgICAgKEpTQzo6WWFy
cjo6UmVnZXhHZW5lcmF0b3I6OmdlbmVyYXRlUGFyZW50aGVzZXNTaW5nbGUpOgorCiAyMDEwLTEy
LTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEpJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEpJVC5jcHAJKHJldmlz
aW9uIDczNjE1KQorKysgSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7Ci0KKyAgICAKIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDog
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgZnJpZW5kIHZvaWQgaml0Q29tcGlsZVJlZ2V4
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgUmVnZXhDb2RlQmxvY2smIGppdE9iamVjdCwgY29u
c3QgVVN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQmIG51bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFy
KiYgZXJyb3IsIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUpOwogCkBAIC0zMjYsNiAr
MzI2LDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50LCBJbmRpcmVjdEp1bXBFbnRyeSosIFdURjo6SW50SGFzaDx1
aW50MzJfdD4sIFVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQzMl90PiA+IEluZGly
ZWN0SnVtcEhhc2hNYXA7CiAgICAgICAgIAogICAgICAgICBHZW5lcmF0aW9uU3RhdGUoKQorICAg
ICAgICAgICAgOiBtX3BhcmVuTmVzdGluZ0xldmVsKDApCiAgICAgICAgIHsKICAgICAgICAgfQog
ICAgICAgICAKQEAgLTM2Myw5ICszNjQsMTkgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2
YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAorICAgICAg
ICB2b2lkIGluY3JlbWVudFBhcmVuTmVzdGluZ0xldmVsKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgKyttX3BhcmVuTmVzdGluZ0xldmVsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2
b2lkIGRlY3JlbWVudFBhcmVuTmVzdGluZ0xldmVsKCkKKyAgICAgICAgeworICAgICAgICAgICAg
LS1tX3BhcmVuTmVzdGluZ0xldmVsOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBQYXJl
bnRoZXNlc1RhaWwqIGFkZFBhcmVudGhlc2VzVGFpbChQYXR0ZXJuVGVybSYgdGVybSkKICAgICAg
ICAgewotICAgICAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBwYXJlbnRoZXNlc1RhaWwgPSBuZXcg
UGFyZW50aGVzZXNUYWlsKHRlcm0pOworICAgICAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBwYXJl
bnRoZXNlc1RhaWwgPSBuZXcgUGFyZW50aGVzZXNUYWlsKHRlcm0sIG1fcGFyZW5OZXN0aW5nTGV2
ZWwpOwogICAgICAgICAgICAgbV9wYXJlblRhaWxzLmFwcGVuZChwYXJlbnRoZXNlc1RhaWwpOwog
ICAgICAgICAgICAgbV9wYXJlblRhaWxzRm9ySXRlcmF0aW9uLmFwcGVuZChwYXJlbnRoZXNlc1Rh
aWwpOwogICAgICAgICAgICAgCkBAIC0zNzUsMTEgKzM4NiwxMiBAQCBjbGFzcyBSZWdleEdlbmVy
YXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgIHZvaWQgZW1pdFBhcmVudGhlc2VzVGFp
bChSZWdleEdlbmVyYXRvciogZ2VuZXJhdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNp
Z25lZCB2ZWN0b3JTaXplID0gbV9wYXJlblRhaWxzLnNpemUoKTsKKyAgICAgICAgICAgIGJvb2wg
cHJpb3JCYWNrdHJhY2tGYWxsVGhyb3VnaCA9IGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBFbWl0IGluIHJldmVyc2Ugb3JkZXIgc28gcGFyZW50VGFpbCBOIGNhbiBmYWxsIHRo
cm91Z2ggdG8gTi0xCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gdmVjdG9yU2l6
ZTsgaW5kZXggPiAwOyAtLWluZGV4KSB7CiAgICAgICAgICAgICAgICAgSnVtcExpc3QganVtcHNU
b05leHQ7Ci0gICAgICAgICAgICAgICAgbV9wYXJlblRhaWxzW2luZGV4LTFdLmdldCgpLT5nZW5l
cmF0ZUNvZGUoZ2VuZXJhdG9yLCBqdW1wc1RvTmV4dCwgaW5kZXggPiAxKTsKKyAgICAgICAgICAg
ICAgICBwcmlvckJhY2t0cmFja0ZhbGxUaHJvdWdoID0gbV9wYXJlblRhaWxzW2luZGV4LTFdLmdl
dCgpLT5nZW5lcmF0ZUNvZGUoZ2VuZXJhdG9yLCBqdW1wc1RvTmV4dCwgcHJpb3JCYWNrdHJhY2tG
YWxsVGhyb3VnaCwgaW5kZXggPiAxKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAxKQog
ICAgICAgICAgICAgICAgICAgICBqdW1wc1RvTmV4dC5saW5rVG8oZ2VuZXJhdG9yLT5sYWJlbCgp
LCBnZW5lcmF0b3IpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTQyMyw2ICs0MzUsNyBAQCBj
bGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICBtX2p1
bXBzVG9OZXh0SW50ZXJhdGlvbi5saW5rVG8obV9uZXh0SXRlcmF0aW9uLCBnZW5lcmF0b3IpOwog
ICAgICAgICB9ICAgICAgICAKICAgICAgICAgCisgICAgICAgIGludCBtX3BhcmVuTmVzdGluZ0xl
dmVsOwogICAgICAgICBWZWN0b3I8QWx0ZXJuYXRpdmVCYWNrdHJhY2tSZWNvcmQ+IG1fYmFja3Ry
YWNrUmVjb3JkczsKICAgICAgICAgSW5kaXJlY3RKdW1wSGFzaE1hcCBtX2luZGlyZWN0SnVtcE1h
cDsKICAgICAgICAgTGFiZWwgbV9uZXh0SXRlcmF0aW9uOwpAQCAtOTQyLDggKzk1NSw5IEBAIGNs
YXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICB9OwogCiAgICAgc3Ry
dWN0IFBhcmVudGhlc2VzVGFpbCB7Ci0gICAgICAgIFBhcmVudGhlc2VzVGFpbChQYXR0ZXJuVGVy
bSYgdGVybSkKKyAgICAgICAgUGFyZW50aGVzZXNUYWlsKFBhdHRlcm5UZXJtJiB0ZXJtLCBpbnQg
bmVzdGluZ0xldmVsKQogICAgICAgICAgICAgOiBtX3Rlcm0odGVybSkKKyAgICAgICAgICAgICwg
bV9uZXN0aW5nTGV2ZWwobmVzdGluZ0xldmVsKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAg
ICAgCkBAIC05NzcsNyArOTkxLDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1h
Y3JvQXNzZQogCiAgICAgICAgIHZvaWQgc2V0TmV4dEl0ZXJhdGlvbihMYWJlbCBuZXh0SXRlcmF0
aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fYmFja3RyYWNrVG9MYWJlbC5pc1Nl
dCgpKQorICAgICAgICAgICAgaWYgKCFtX25lc3RpbmdMZXZlbCAmJiAhbV9iYWNrdHJhY2tUb0xh
YmVsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tUb0xhYmVsID0gbmV4dEl0
ZXJhdGlvbjsKICAgICAgICAgfQogCkBAIC05ODYsMTEgKzEwMDAsMTggQEAgY2xhc3MgUmVnZXhH
ZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgbV9wYXR0QmFja3RyYWNr
SnVtcHMuYXBwZW5kKGp1bXApOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIGdl
bmVyYXRlQ29kZShSZWdleEdlbmVyYXRvciogZ2VuZXJhdG9yLCBKdW1wTGlzdCYganVtcHNUb05l
eHQsIGJvb2wgbmV4dEJhY2t0cmFja0ZhbGxUaHJvdWdoKQorICAgICAgICBib29sIGdlbmVyYXRl
Q29kZShSZWdleEdlbmVyYXRvciogZ2VuZXJhdG9yLCBKdW1wTGlzdCYganVtcHNUb05leHQsIGJv
b2wgcHJpb3JCYWNrVHJhY2tGYWxsVGhyb3VnaCwgYm9vbCBuZXh0QmFja3RyYWNrRmFsbFRocm91
Z2gpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXhUZW1wb3Jh
cnkgPSByZWdUMDsKICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biA9IG1fdGVybS5mcmFtZUxvY2F0aW9uOwotICAgICAgICAgICAgCisgICAgICAgICAgICBKdW1w
TGlzdCBmcm9tUHJpb3JCYWNrdHJhY2s7CisgCisgICAgICAgICAgICBpZiAocHJpb3JCYWNrVHJh
Y2tGYWxsVGhyb3VnaAorICAgICAgICAgICAgICAgICYmICgobV90ZXJtLnF1YW50aXR5VHlwZSA9
PSBRdWFudGlmaWVyR3JlZWR5KQorICAgICAgICAgICAgICAgICB8fCAobV90ZXJtLnF1YW50aXR5
VHlwZSA9PSBRdWFudGlmaWVyTm9uR3JlZWR5KQorICAgICAgICAgICAgICAgICB8fCAoIW1fZG9E
aXJlY3RCYWNrdHJhY2sgJiYgbV9wYXJlbkJhY2t0cmFjay5oYXNEZXN0aW5hdGlvbigpKSkpCisg
ICAgICAgICAgICAgICAgZnJvbVByaW9yQmFja3RyYWNrLmFwcGVuZChnZW5lcmF0b3ItPmp1bXAo
KSk7CisKICAgICAgICAgICAgIGlmICghbV9iYWNrdHJhY2suaGFzRGVzdGluYXRpb24oKSkgewog
ICAgICAgICAgICAgICAgIGlmIChtX2JhY2t0cmFja1RvTGFiZWwuaXNTZXQoKSkgewogICAgICAg
ICAgICAgICAgICAgICBtX2JhY2t0cmFjay5zZXRMYWJlbChtX2JhY2t0cmFja1RvTGFiZWwpOwpA
QCAtMTAyMiw2ICsxMDQzLDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3Jv
QXNzZQogICAgICAgICAgICAgICAgIG1fcGFyZW5CYWNrdHJhY2sucGxhbnRKdW1wVG9CYWNrdHJh
Y2tJZkV4aXN0cyhnZW5lcmF0b3IpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBBIGZh
aWx1cmUgV0lUSElOIHRoZSBwYXJlbnMganVtcHMgaGVyZQorICAgICAgICAgICAgZnJvbVByaW9y
QmFja3RyYWNrLmxpbmsoZ2VuZXJhdG9yKTsKICAgICAgICAgICAgIG1fcGFyZW5CYWNrdHJhY2su
bGlua0FsdGVybmF0aXZlQmFja3RyYWNrcyhnZW5lcmF0b3IpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobV90ZXJtLmNhcHR1cmUoKSkKQEAgLTEwMzAsMTQgKzEwNTIsMTggQEAgY2xh
c3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgaWYgKG1f
dGVybS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVkeSkgewogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c3RvcmVUb0ZyYW1lKEltbTMyKC0xKSwgcGFyZW50aGVzZXNGcmFtZUxvY2F0
aW9uKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmp1bXAoKS5saW5rVG8obV9mYWxsVGhy
b3VnaCwgZ2VuZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBuZXh0QmFja3RyYWNrRmFsbFRocm91
Z2ggPSBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW5leHRCYWNrdHJhY2tGYWxsVGhy
b3VnaCkKICAgICAgICAgICAgICAgICBtX2JhY2t0cmFjay5qdW1wVG9CYWNrdHJhY2soZ2VuZXJh
dG9yKTsKIAogICAgICAgICAgICAgaWYgKCFtX2RvRGlyZWN0QmFja3RyYWNrKQogICAgICAgICAg
ICAgICAgIG1fYmFja3RyYWNrLnNldE5leHRCYWNrdHJhY2tMYWJlbChtX2JhY2t0cmFja0Zyb21B
ZnRlclBhcmVucyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBuZXh0QmFja3Ry
YWNrRmFsbFRocm91Z2g7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFBhdHRlcm5UZXJt
JiBtX3Rlcm07CisgICAgICAgIGludCBtX25lc3RpbmdMZXZlbDsKICAgICAgICAgTGFiZWwgbV9u
b25HcmVlZHlUcnlQYXJlbnRoZXNlczsKICAgICAgICAgTGFiZWwgbV9mYWxsVGhyb3VnaDsKICAg
ICAgICAgTGFiZWwgbV9iYWNrdHJhY2tUb0xhYmVsOwpAQCAtMTA0OSw3ICsxMDc1LDYgQEAgY2xh
c3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICBib29sIG1fZG9E
aXJlY3RCYWNrdHJhY2s7CiAgICAgfTsKICAgICAKLSAgICAKICAgICB2b2lkIGdlbmVyYXRlQXNz
ZXJ0aW9uQk9MKFRlcm1HZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIHsKICAgICAgICAgUGF0
dGVyblRlcm0mIHRlcm0gPSBzdGF0ZS50ZXJtKCk7CkBAIC0xNTY3LDYgKzE1OTIsMTAgQEAgY2xh
c3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogCiAgICAgICAgICAgICBQYXJl
bnRoZXNlc1RhaWwqIHBhcmVudGhlc2VzVGFpbCA9IG1fZXhwcmVzc2lvblN0YXRlLmFkZFBhcmVu
dGhlc2VzVGFpbCh0ZXJtKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgbV9leHByZXNzaW9u
U3RhdGUuaW5jcmVtZW50UGFyZW5OZXN0aW5nTGV2ZWwoKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgbV9leHByZXNzaW9uU3RhdGUuaW5jcmVtZW50UGFyZW5OZXN0aW5nTGV2ZWwoKTsKKyAg
ICAgICAgICAgIAogICAgICAgICAgICAgLy8gZ2VuZXJhdGUgdGhlIGJvZHkgb2YgdGhlIHBhcmVu
dGhlc2VzCiAgICAgICAgICAgICBUZXJtR2VuZXJhdGlvblN0YXRlIHBhcmVudGhlc2VzU3RhdGUo
ZGlzanVuY3Rpb24sIHN0YXRlLmNoZWNrZWRUb3RhbCk7CiAgICAgICAgICAgICBnZW5lcmF0ZVBh
cmVudGhlc2VzRGlzanVuY3Rpb24oc3RhdGUudGVybSgpLCBwYXJlbnRoZXNlc1N0YXRlLCBhbHRl
cm5hdGl2ZUZyYW1lTG9jYXRpb24pOwpAQCAtMTU4Niw2ICsxNjE1LDEwIEBAIGNsYXNzIFJlZ2V4
R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgICAgICAgICAgICAgc3RvcmUz
MihpbmRleCwgQWRkcmVzcyhvdXRwdXQsICgodGVybS5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQg
PDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
KyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YXRlLmRlY3JlbWVudFBhcmVuTmVzdGluZ0xldmVs
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YXRlLmRlY3JlbWVu
dFBhcmVuTmVzdGluZ0xldmVsKCk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIHBhcmVudGhl
c2VzVGFpbC0+cHJvY2Vzc0JhY2t0cmFja3ModGhpcywgc3RhdGUsIHBhcmVudGhlc2VzU3RhdGUs
IG5vbkdyZWVkeVRyeVBhcmVudGhlc2VzLCBsYWJlbCgpKTsKIAogICAgICAgICAgICAgcGFyZW50
aGVzZXNTdGF0ZS5nZXRCYWNrdHJhY2tEZXN0aW5hdGlvbigpLmNsZWFyKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3MzYxOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDEwLTEyLTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHRlc3RzIHRoYXQgY2FtZSBmcm9tIHN1Ym1pdHRlciB0byB2YWxpZGF0ZSBjaGFuZ2Uu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDU3MAor
CisgICAgICAgICogZmFzdC9yZWdleC9wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9yZWdleC9zY3JpcHQtdGVzdHMvcGFyZW50aGVzZXMuanM6CisKIDIwMTAtMTItMDkg
IEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKZXJlbXkgT3Jsb3cuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3BhcmVudGhlc2Vz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3BhcmVu
dGhlc2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzM2MTUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3JlZ2V4L3BhcmVudGhlc2VzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsOCBAQCBQQVNTIHJlZ2V4cDI0LmV4ZWMoJzEyMycpIGlzIG51bGwKIFBBU1MgcmVnZXhwMjUu
ZXhlYygndGhpcyBpcyBhIHRlc3QnKSBpcyBbJ3RoaXMnLCd0aGlzJyx1bmRlZmluZWRdCiBQQVNT
IHJlZ2V4cDI1LmV4ZWMoJyF0aGlzIGlzIGEgdGVzdCcpIGlzIG51bGwKIFBBU1MgcmVnZXhwMjYu
ZXhlYygnYWFhJykgaXMgWydhYWEnLHVuZGVmaW5lZCx1bmRlZmluZWRdCitQQVNTIHJlZ2V4cDI3
LmV4ZWMoJ2ZpbGU6Ly8vVXNlcnMvU29tZW9uZS9EZXNrdG9wL0hlbGxvV29ybGQvaW5kZXguaHRt
bCcpIGlzIFsnZmlsZTovLy9Vc2Vycy9Tb21lb25lL0Rlc2t0b3AvSGVsbG9Xb3JsZC9pbmRleC5o
dG1sJywnZmlsZScsJy8vJywnJyx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCwnJyx1bmRl
ZmluZWQsJy9Vc2Vycy9Tb21lb25lL0Rlc2t0b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sJyx1bmRl
ZmluZWQsdW5kZWZpbmVkXQorUEFTUyByZWdleHAyOC5leGVjKCdmaWxlOi8vL1VzZXJzL1NvbWVv
bmUvRGVza3RvcC9IZWxsb1dvcmxkL2luZGV4Lmh0bWwnKSBpcyBbJ2ZpbGU6JywnZmlsZScsdW5k
ZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZF0KIFBBU1MgJ0hp
IEJvYicubWF0Y2goLyhSb2IpfChCb2IpfChSb2JlcnQpfChCb2JieSkvKSBpcyBbJ0JvYicsdW5k
ZWZpbmVkLCdCb2InLHVuZGVmaW5lZCx1bmRlZmluZWRdCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3Bh
cmVudGhlc2VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0
LXRlc3RzL3BhcmVudGhlc2VzLmpzCShyZXZpc2lvbiA3MzYxNSkKKysrIExheW91dFRlc3RzL2Zh
c3QvcmVnZXgvc2NyaXB0LXRlc3RzL3BhcmVudGhlc2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC04
MCw2ICs4MCw1MSBAQCBzaG91bGRCZU51bGwoInJlZ2V4cDI1LmV4ZWMoJyF0aGlzIGlzIGEgCiB2
YXIgcmVnZXhwMjYgPSAvYShiKShhKil8YWFhLzsKIHNob3VsZEJlKCJyZWdleHAyNi5leGVjKCdh
YWEnKSIsICJbJ2FhYScsdW5kZWZpbmVkLHVuZGVmaW5lZF0iKTsKIAordmFyIHJlZ2V4cDI3ID0g
bmV3IFJlZ0V4cCgKKyAgICAiXiIgKworICAgICIoPzoiICsKKyAgICAgICAgIihbXjovPyNdKyk6
IiArIC8qIHNjaGVtZSAqLworICAgICIpPyIgKworICAgICIoPzoiICsKKyAgICAgICAgIigvLyki
ICsgLyogYXV0aG9yaXR5Um9vdCAqLworICAgICAgICAiKCIgKyAvKiBhdXRob3JpdHkgKi8KKyAg
ICAgICAgICAgICIoPzoiICsKKyAgICAgICAgICAgICAgICAiKCIgKyAvKiB1c2VySW5mbyAqLwor
ICAgICAgICAgICAgICAgICAgICAiKFteOkBdKikiICsgLyogdXNlciAqLworICAgICAgICAgICAg
ICAgICAgICAiOj8iICsKKyAgICAgICAgICAgICAgICAgICAgIihbXjpAXSopIiArIC8qIHBhc3N3
b3JkICovCisgICAgICAgICAgICAgICAgIik/IiArCisgICAgICAgICAgICAgICAgIkAiICsKKyAg
ICAgICAgICAgICIpPyIgKworICAgICAgICAgICAgIihbXjovPyNdKikiICsgLyogZG9tYWluICov
CisgICAgICAgICAgICAiKD86OihcXGQqKSk/IiArIC8qIHBvcnQgKi8KKyAgICAgICAgIikiICsK
KyAgICAiKT8iICsKKyAgICAiKFtePyNdKikiICsgLypwYXRoKi8KKyAgICAiKD86XFw/KFteI10q
KSk/IiArIC8qIHF1ZXJ5U3RyaW5nICovCisgICAgIig/OiMoLiopKT8iIC8qZnJhZ21lbnQgKi8K
Kyk7CitzaG91bGRCZSgicmVnZXhwMjcuZXhlYygnZmlsZTovLy9Vc2Vycy9Tb21lb25lL0Rlc2t0
b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sJykiLCAiWydmaWxlOi8vL1VzZXJzL1NvbWVvbmUvRGVz
a3RvcC9IZWxsb1dvcmxkL2luZGV4Lmh0bWwnLCdmaWxlJywnLy8nLCcnLHVuZGVmaW5lZCx1bmRl
ZmluZWQsdW5kZWZpbmVkLCcnLHVuZGVmaW5lZCwnL1VzZXJzL1NvbWVvbmUvRGVza3RvcC9IZWxs
b1dvcmxkL2luZGV4Lmh0bWwnLHVuZGVmaW5lZCx1bmRlZmluZWRdIik7CisKK3ZhciByZWdleHAy
OCA9IG5ldyBSZWdFeHAoCisgICAgIl4iICsKKyAgICAiKD86IiArCisgICAgICAgICIoW146Lz8j
XSspOiIgKyAvKiBzY2hlbWUgKi8KKyAgICAiKT8iICsKKyAgICAiKD86IiArCisgICAgICAgICIo
Ly8pIiArIC8qIGF1dGhvcml0eVJvb3QgKi8KKyAgICAgICAgIigiICsgLyogYXV0aG9yaXR5ICov
CisgICAgICAgICAgICAiKCIgKyAvKiB1c2VySW5mbyAqLworICAgICAgICAgICAgICAgICIoW146
QF0qKSIgKyAvKiB1c2VyICovCisgICAgICAgICAgICAgICAgIjo/IiArCisgICAgICAgICAgICAg
ICAgIihbXjpAXSopIiArIC8qIHBhc3N3b3JkICovCisgICAgICAgICAgICAiKT8iICsKKyAgICAg
ICAgICAgICJAIiArCisgICAgICAgICIpIiArCisgICAgIik/IgorKTsKK3Nob3VsZEJlKCJyZWdl
eHAyOC5leGVjKCdmaWxlOi8vL1VzZXJzL1NvbWVvbmUvRGVza3RvcC9IZWxsb1dvcmxkL2luZGV4
Lmh0bWwnKSIsICJbJ2ZpbGU6JywnZmlsZScsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQs
dW5kZWZpbmVkLHVuZGVmaW5lZF0iKTsKKwogc2hvdWxkQmUoIidIaSBCb2InLm1hdGNoKC8oUm9i
KXwoQm9iKXwoUm9iZXJ0KXwoQm9iYnkpLykiLCAiWydCb2InLHVuZGVmaW5lZCwnQm9iJyx1bmRl
ZmluZWQsdW5kZWZpbmVkXSIpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76089</attachid>
            <date>2010-12-09 10:38:59 -0800</date>
            <delta_ts>2010-12-09 12:32:52 -0800</delta_ts>
            <desc>New Patch with redundant {increment/decrement}ParenNestingLevel calls </desc>
            <filename>50570-4.patch</filename>
            <type>text/plain</type>
            <size>11935</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNjIzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMTItMDkgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCB0aGUgaGFuZGxpbmcgb2YgYWRqYWNlbnQgcGFy
ZW50aGVzZXMgYmFja3RyYWNrcyBpbiB0d28gd2F5cy4KKyAgICAgICAgRmlyc3QsIG9ubHkgb3V0
ZXIgbW9zdCBwYXJlbiBiYWNrdHJhY2tzIGRlZmF1bHQgdG8gYmFjayB0cmFja2luZworICAgICAg
ICB0byB0aGUgIm5leHQgY2hhcmFjdGVyIiBsb29waW5nIGNvZGUuICBTZWNvbmQsIGFkZGVkIGEg
anVtcCBhcm91bmQgCisgICAgICAgIGJhY2t0cmFja3MgdGhhdCBmYWxsIHRocm91Z2ggdG8gdGhl
IG5leHQgYmFja3RyYWNrIHdoZXJlIHRoZQorICAgICAgICBzZWNvbmQgYmFja3RyYWNrIGhhcyBz
b21lIGdyZWVkeSBwcm9jZXNzaW5nIGJlZm9yZSB0aGUgYmFja3RyYWNraW5nCisgICAgICAgIGZy
b20gb3V0c2lkZSB0aGUgcGFyZW50aGVzZXMgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNTcwCisKKyAgICAgICAgKiB5YXJyL1JlZ2V4SklU
LmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6OkdlbmVyYXRpb25TdGF0
ZTo6R2VuZXJhdGlvblN0YXRlKToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6
OkdlbmVyYXRpb25TdGF0ZTo6aW5jcmVtZW50UGFyZW5OZXN0aW5nTGV2ZWwpOgorICAgICAgICAo
SlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6R2VuZXJhdGlvblN0YXRlOjpkZWNyZW1lbnRQYXJl
bk5lc3RpbmdMZXZlbCk6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpHZW5l
cmF0aW9uU3RhdGU6OmFkZFBhcmVudGhlc2VzVGFpbCk6CisgICAgICAgIChKU0M6OllhcnI6OlJl
Z2V4R2VuZXJhdG9yOjpHZW5lcmF0aW9uU3RhdGU6OmVtaXRQYXJlbnRoZXNlc1RhaWwpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6UGFyZW50aGVzZXNUYWlsOjpQYXJlbnRo
ZXNlc1RhaWwpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6UGFyZW50aGVz
ZXNUYWlsOjpzZXROZXh0SXRlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5l
cmF0b3I6OlBhcmVudGhlc2VzVGFpbDo6Z2VuZXJhdGVDb2RlKToKKyAgICAgICAgKEpTQzo6WWFy
cjo6UmVnZXhHZW5lcmF0b3I6OmdlbmVyYXRlUGFyZW50aGVzZXNTaW5nbGUpOgorCiAyMDEwLTEy
LTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEpJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEpJVC5jcHAJKHJl
dmlzaW9uIDczNjIxKQorKysgSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEpJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7Ci0KKyAgICAKIGNsYXNzIFJlZ2V4R2VuZXJhdG9y
IDogcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgZnJpZW5kIHZvaWQgaml0Q29tcGlsZVJl
Z2V4KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgUmVnZXhDb2RlQmxvY2smIGppdE9iamVjdCwg
Y29uc3QgVVN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQmIG51bVN1YnBhdHRlcm5zLCBjb25zdCBj
aGFyKiYgZXJyb3IsIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUpOwogCkBAIC0zMjYs
NiArMzI2LDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAg
ICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBJbmRpcmVjdEp1bXBFbnRyeSosIFdURjo6SW50SGFz
aDx1aW50MzJfdD4sIFVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQzMl90PiA+IElu
ZGlyZWN0SnVtcEhhc2hNYXA7CiAgICAgICAgIAogICAgICAgICBHZW5lcmF0aW9uU3RhdGUoKQor
ICAgICAgICAgICAgOiBtX3BhcmVuTmVzdGluZ0xldmVsKDApCiAgICAgICAgIHsKICAgICAgICAg
fQogICAgICAgICAKQEAgLTM2Myw5ICszNjQsMTkgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBw
cml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAorICAg
ICAgICB2b2lkIGluY3JlbWVudFBhcmVuTmVzdGluZ0xldmVsKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgKyttX3BhcmVuTmVzdGluZ0xldmVsOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICB2b2lkIGRlY3JlbWVudFBhcmVuTmVzdGluZ0xldmVsKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgLS1tX3BhcmVuTmVzdGluZ0xldmVsOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBQ
YXJlbnRoZXNlc1RhaWwqIGFkZFBhcmVudGhlc2VzVGFpbChQYXR0ZXJuVGVybSYgdGVybSkKICAg
ICAgICAgewotICAgICAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBwYXJlbnRoZXNlc1RhaWwgPSBu
ZXcgUGFyZW50aGVzZXNUYWlsKHRlcm0pOworICAgICAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBw
YXJlbnRoZXNlc1RhaWwgPSBuZXcgUGFyZW50aGVzZXNUYWlsKHRlcm0sIG1fcGFyZW5OZXN0aW5n
TGV2ZWwpOwogICAgICAgICAgICAgbV9wYXJlblRhaWxzLmFwcGVuZChwYXJlbnRoZXNlc1RhaWwp
OwogICAgICAgICAgICAgbV9wYXJlblRhaWxzRm9ySXRlcmF0aW9uLmFwcGVuZChwYXJlbnRoZXNl
c1RhaWwpOwogICAgICAgICAgICAgCkBAIC0zNzUsMTEgKzM4NiwxMiBAQCBjbGFzcyBSZWdleEdl
bmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgIHZvaWQgZW1pdFBhcmVudGhlc2Vz
VGFpbChSZWdleEdlbmVyYXRvciogZ2VuZXJhdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICB1
bnNpZ25lZCB2ZWN0b3JTaXplID0gbV9wYXJlblRhaWxzLnNpemUoKTsKKyAgICAgICAgICAgIGJv
b2wgcHJpb3JCYWNrdHJhY2tGYWxsVGhyb3VnaCA9IGZhbHNlOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBFbWl0IGluIHJldmVyc2Ugb3JkZXIgc28gcGFyZW50VGFpbCBOIGNhbiBmYWxs
IHRocm91Z2ggdG8gTi0xCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gdmVjdG9y
U2l6ZTsgaW5kZXggPiAwOyAtLWluZGV4KSB7CiAgICAgICAgICAgICAgICAgSnVtcExpc3QganVt
cHNUb05leHQ7Ci0gICAgICAgICAgICAgICAgbV9wYXJlblRhaWxzW2luZGV4LTFdLmdldCgpLT5n
ZW5lcmF0ZUNvZGUoZ2VuZXJhdG9yLCBqdW1wc1RvTmV4dCwgaW5kZXggPiAxKTsKKyAgICAgICAg
ICAgICAgICBwcmlvckJhY2t0cmFja0ZhbGxUaHJvdWdoID0gbV9wYXJlblRhaWxzW2luZGV4LTFd
LmdldCgpLT5nZW5lcmF0ZUNvZGUoZ2VuZXJhdG9yLCBqdW1wc1RvTmV4dCwgcHJpb3JCYWNrdHJh
Y2tGYWxsVGhyb3VnaCwgaW5kZXggPiAxKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAx
KQogICAgICAgICAgICAgICAgICAgICBqdW1wc1RvTmV4dC5saW5rVG8oZ2VuZXJhdG9yLT5sYWJl
bCgpLCBnZW5lcmF0b3IpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTQyMyw2ICs0MzUsNyBA
QCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICBt
X2p1bXBzVG9OZXh0SW50ZXJhdGlvbi5saW5rVG8obV9uZXh0SXRlcmF0aW9uLCBnZW5lcmF0b3Ip
OwogICAgICAgICB9ICAgICAgICAKICAgICAgICAgCisgICAgICAgIGludCBtX3BhcmVuTmVzdGlu
Z0xldmVsOwogICAgICAgICBWZWN0b3I8QWx0ZXJuYXRpdmVCYWNrdHJhY2tSZWNvcmQ+IG1fYmFj
a3RyYWNrUmVjb3JkczsKICAgICAgICAgSW5kaXJlY3RKdW1wSGFzaE1hcCBtX2luZGlyZWN0SnVt
cE1hcDsKICAgICAgICAgTGFiZWwgbV9uZXh0SXRlcmF0aW9uOwpAQCAtOTQyLDggKzk1NSw5IEBA
IGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICB9OwogCiAgICAg
c3RydWN0IFBhcmVudGhlc2VzVGFpbCB7Ci0gICAgICAgIFBhcmVudGhlc2VzVGFpbChQYXR0ZXJu
VGVybSYgdGVybSkKKyAgICAgICAgUGFyZW50aGVzZXNUYWlsKFBhdHRlcm5UZXJtJiB0ZXJtLCBp
bnQgbmVzdGluZ0xldmVsKQogICAgICAgICAgICAgOiBtX3Rlcm0odGVybSkKKyAgICAgICAgICAg
ICwgbV9uZXN0aW5nTGV2ZWwobmVzdGluZ0xldmVsKQogICAgICAgICB7CiAgICAgICAgIH0KICAg
ICAgICAgCkBAIC05NzcsNyArOTkxLDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRl
IE1hY3JvQXNzZQogCiAgICAgICAgIHZvaWQgc2V0TmV4dEl0ZXJhdGlvbihMYWJlbCBuZXh0SXRl
cmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fYmFja3RyYWNrVG9MYWJlbC5p
c1NldCgpKQorICAgICAgICAgICAgaWYgKCFtX25lc3RpbmdMZXZlbCAmJiAhbV9iYWNrdHJhY2tU
b0xhYmVsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tUb0xhYmVsID0gbmV4
dEl0ZXJhdGlvbjsKICAgICAgICAgfQogCkBAIC05ODYsMTEgKzEwMDAsMTggQEAgY2xhc3MgUmVn
ZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgbV9wYXR0QmFja3Ry
YWNrSnVtcHMuYXBwZW5kKGp1bXApOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lk
IGdlbmVyYXRlQ29kZShSZWdleEdlbmVyYXRvciogZ2VuZXJhdG9yLCBKdW1wTGlzdCYganVtcHNU
b05leHQsIGJvb2wgbmV4dEJhY2t0cmFja0ZhbGxUaHJvdWdoKQorICAgICAgICBib29sIGdlbmVy
YXRlQ29kZShSZWdleEdlbmVyYXRvciogZ2VuZXJhdG9yLCBKdW1wTGlzdCYganVtcHNUb05leHQs
IGJvb2wgcHJpb3JCYWNrVHJhY2tGYWxsVGhyb3VnaCwgYm9vbCBuZXh0QmFja3RyYWNrRmFsbFRo
cm91Z2gpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXhUZW1w
b3JhcnkgPSByZWdUMDsKICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2Nh
dGlvbiA9IG1fdGVybS5mcmFtZUxvY2F0aW9uOwotICAgICAgICAgICAgCisgICAgICAgICAgICBK
dW1wTGlzdCBmcm9tUHJpb3JCYWNrdHJhY2s7CisgCisgICAgICAgICAgICBpZiAocHJpb3JCYWNr
VHJhY2tGYWxsVGhyb3VnaAorICAgICAgICAgICAgICAgICYmICgobV90ZXJtLnF1YW50aXR5VHlw
ZSA9PSBRdWFudGlmaWVyR3JlZWR5KQorICAgICAgICAgICAgICAgICB8fCAobV90ZXJtLnF1YW50
aXR5VHlwZSA9PSBRdWFudGlmaWVyTm9uR3JlZWR5KQorICAgICAgICAgICAgICAgICB8fCAoIW1f
ZG9EaXJlY3RCYWNrdHJhY2sgJiYgbV9wYXJlbkJhY2t0cmFjay5oYXNEZXN0aW5hdGlvbigpKSkp
CisgICAgICAgICAgICAgICAgZnJvbVByaW9yQmFja3RyYWNrLmFwcGVuZChnZW5lcmF0b3ItPmp1
bXAoKSk7CisKICAgICAgICAgICAgIGlmICghbV9iYWNrdHJhY2suaGFzRGVzdGluYXRpb24oKSkg
ewogICAgICAgICAgICAgICAgIGlmIChtX2JhY2t0cmFja1RvTGFiZWwuaXNTZXQoKSkgewogICAg
ICAgICAgICAgICAgICAgICBtX2JhY2t0cmFjay5zZXRMYWJlbChtX2JhY2t0cmFja1RvTGFiZWwp
OwpAQCAtMTAyMiw2ICsxMDQzLDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1h
Y3JvQXNzZQogICAgICAgICAgICAgICAgIG1fcGFyZW5CYWNrdHJhY2sucGxhbnRKdW1wVG9CYWNr
dHJhY2tJZkV4aXN0cyhnZW5lcmF0b3IpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBB
IGZhaWx1cmUgV0lUSElOIHRoZSBwYXJlbnMganVtcHMgaGVyZQorICAgICAgICAgICAgZnJvbVBy
aW9yQmFja3RyYWNrLmxpbmsoZ2VuZXJhdG9yKTsKICAgICAgICAgICAgIG1fcGFyZW5CYWNrdHJh
Y2subGlua0FsdGVybmF0aXZlQmFja3RyYWNrcyhnZW5lcmF0b3IpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAobV90ZXJtLmNhcHR1cmUoKSkKQEAgLTEwMzAsMTQgKzEwNTIsMTggQEAg
Y2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgaWYg
KG1fdGVybS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVkeSkgewogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+c3RvcmVUb0ZyYW1lKEltbTMyKC0xKSwgcGFyZW50aGVzZXNGcmFtZUxv
Y2F0aW9uKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmp1bXAoKS5saW5rVG8obV9mYWxs
VGhyb3VnaCwgZ2VuZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBuZXh0QmFja3RyYWNrRmFsbFRo
cm91Z2ggPSBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW5leHRCYWNrdHJhY2tGYWxs
VGhyb3VnaCkKICAgICAgICAgICAgICAgICBtX2JhY2t0cmFjay5qdW1wVG9CYWNrdHJhY2soZ2Vu
ZXJhdG9yKTsKIAogICAgICAgICAgICAgaWYgKCFtX2RvRGlyZWN0QmFja3RyYWNrKQogICAgICAg
ICAgICAgICAgIG1fYmFja3RyYWNrLnNldE5leHRCYWNrdHJhY2tMYWJlbChtX2JhY2t0cmFja0Zy
b21BZnRlclBhcmVucyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBuZXh0QmFj
a3RyYWNrRmFsbFRocm91Z2g7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFBhdHRlcm5U
ZXJtJiBtX3Rlcm07CisgICAgICAgIGludCBtX25lc3RpbmdMZXZlbDsKICAgICAgICAgTGFiZWwg
bV9ub25HcmVlZHlUcnlQYXJlbnRoZXNlczsKICAgICAgICAgTGFiZWwgbV9mYWxsVGhyb3VnaDsK
ICAgICAgICAgTGFiZWwgbV9iYWNrdHJhY2tUb0xhYmVsOwpAQCAtMTA0OSw3ICsxMDc1LDYgQEAg
Y2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICBib29sIG1f
ZG9EaXJlY3RCYWNrdHJhY2s7CiAgICAgfTsKICAgICAKLSAgICAKICAgICB2b2lkIGdlbmVyYXRl
QXNzZXJ0aW9uQk9MKFRlcm1HZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIHsKICAgICAgICAg
UGF0dGVyblRlcm0mIHRlcm0gPSBzdGF0ZS50ZXJtKCk7CkBAIC0xNTY3LDYgKzE1OTIsOCBAQCBj
bGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAKICAgICAgICAgICAgIFBh
cmVudGhlc2VzVGFpbCogcGFyZW50aGVzZXNUYWlsID0gbV9leHByZXNzaW9uU3RhdGUuYWRkUGFy
ZW50aGVzZXNUYWlsKHRlcm0pOwogICAgICAgICAgICAgCisgICAgICAgICAgICBtX2V4cHJlc3Np
b25TdGF0ZS5pbmNyZW1lbnRQYXJlbk5lc3RpbmdMZXZlbCgpOworICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBnZW5lcmF0ZSB0aGUgYm9keSBvZiB0aGUgcGFyZW50aGVzZXMKICAgICAgICAg
ICAgIFRlcm1HZW5lcmF0aW9uU3RhdGUgcGFyZW50aGVzZXNTdGF0ZShkaXNqdW5jdGlvbiwgc3Rh
dGUuY2hlY2tlZFRvdGFsKTsKICAgICAgICAgICAgIGdlbmVyYXRlUGFyZW50aGVzZXNEaXNqdW5j
dGlvbihzdGF0ZS50ZXJtKCksIHBhcmVudGhlc2VzU3RhdGUsIGFsdGVybmF0aXZlRnJhbWVMb2Nh
dGlvbik7CkBAIC0xNTg2LDYgKzE2MTMsOCBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZh
dGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3Mo
b3V0cHV0LCAoKHRlcm0ucGFyZW50aGVzZXMuc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXpl
b2YoaW50KSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBtX2V4
cHJlc3Npb25TdGF0ZS5kZWNyZW1lbnRQYXJlbk5lc3RpbmdMZXZlbCgpOworICAgICAgICAgICAg
CiAgICAgICAgICAgICBwYXJlbnRoZXNlc1RhaWwtPnByb2Nlc3NCYWNrdHJhY2tzKHRoaXMsIHN0
YXRlLCBwYXJlbnRoZXNlc1N0YXRlLCBub25HcmVlZHlUcnlQYXJlbnRoZXNlcywgbGFiZWwoKSk7
CiAKICAgICAgICAgICAgIHBhcmVudGhlc2VzU3RhdGUuZ2V0QmFja3RyYWNrRGVzdGluYXRpb24o
KS5jbGVhcigpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzM2MjMpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMi0wOSAgTWljaGFl
bCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyB0aGF0IGNhbWUgZnJvbSBzdWJtaXR0
ZXIgdG8gdmFsaWRhdGUgY2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTA1NzAKKworICAgICAgICAqIGZhc3QvcmVnZXgvcGFyZW50aGVzZXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3BhcmVudGhl
c2VzLmpzOgorCiAyMDEwLTEyLTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9yZWdleC9wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9yZWdleC9wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcz
NjIxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAgUEFTUyByZWdleHAyNC5leGVjKCcxMjMn
KSBpcyBudWxsCiBQQVNTIHJlZ2V4cDI1LmV4ZWMoJ3RoaXMgaXMgYSB0ZXN0JykgaXMgWyd0aGlz
JywndGhpcycsdW5kZWZpbmVkXQogUEFTUyByZWdleHAyNS5leGVjKCchdGhpcyBpcyBhIHRlc3Qn
KSBpcyBudWxsCiBQQVNTIHJlZ2V4cDI2LmV4ZWMoJ2FhYScpIGlzIFsnYWFhJyx1bmRlZmluZWQs
dW5kZWZpbmVkXQorUEFTUyByZWdleHAyNy5leGVjKCdmaWxlOi8vL1VzZXJzL1NvbWVvbmUvRGVz
a3RvcC9IZWxsb1dvcmxkL2luZGV4Lmh0bWwnKSBpcyBbJ2ZpbGU6Ly8vVXNlcnMvU29tZW9uZS9E
ZXNrdG9wL0hlbGxvV29ybGQvaW5kZXguaHRtbCcsJ2ZpbGUnLCcvLycsJycsdW5kZWZpbmVkLHVu
ZGVmaW5lZCx1bmRlZmluZWQsJycsdW5kZWZpbmVkLCcvVXNlcnMvU29tZW9uZS9EZXNrdG9wL0hl
bGxvV29ybGQvaW5kZXguaHRtbCcsdW5kZWZpbmVkLHVuZGVmaW5lZF0KK1BBU1MgcmVnZXhwMjgu
ZXhlYygnZmlsZTovLy9Vc2Vycy9Tb21lb25lL0Rlc2t0b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1s
JykgaXMgWydmaWxlOicsJ2ZpbGUnLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVm
aW5lZCx1bmRlZmluZWRdCiBQQVNTICdIaSBCb2InLm1hdGNoKC8oUm9iKXwoQm9iKXwoUm9iZXJ0
KXwoQm9iYnkpLykgaXMgWydCb2InLHVuZGVmaW5lZCwnQm9iJyx1bmRlZmluZWQsdW5kZWZpbmVk
XQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy9wYXJlbnRoZXNlcy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy9wYXJlbnRoZXNlcy5qcwkocmV2aXNpb24g
NzM2MjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy9wYXJlbnRoZXNl
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNTEgQEAgc2hvdWxkQmVOdWxsKCJyZWdl
eHAyNS5leGVjKCchdGhpcyBpcyBhIAogdmFyIHJlZ2V4cDI2ID0gL2EoYikoYSopfGFhYS87CiBz
aG91bGRCZSgicmVnZXhwMjYuZXhlYygnYWFhJykiLCAiWydhYWEnLHVuZGVmaW5lZCx1bmRlZmlu
ZWRdIik7CiAKK3ZhciByZWdleHAyNyA9IG5ldyBSZWdFeHAoCisgICAgIl4iICsKKyAgICAiKD86
IiArCisgICAgICAgICIoW146Lz8jXSspOiIgKyAvKiBzY2hlbWUgKi8KKyAgICAiKT8iICsKKyAg
ICAiKD86IiArCisgICAgICAgICIoLy8pIiArIC8qIGF1dGhvcml0eVJvb3QgKi8KKyAgICAgICAg
IigiICsgLyogYXV0aG9yaXR5ICovCisgICAgICAgICAgICAiKD86IiArCisgICAgICAgICAgICAg
ICAgIigiICsgLyogdXNlckluZm8gKi8KKyAgICAgICAgICAgICAgICAgICAgIihbXjpAXSopIiAr
IC8qIHVzZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgIjo/IiArCisgICAgICAgICAgICAgICAg
ICAgICIoW146QF0qKSIgKyAvKiBwYXNzd29yZCAqLworICAgICAgICAgICAgICAgICIpPyIgKwor
ICAgICAgICAgICAgICAgICJAIiArCisgICAgICAgICAgICAiKT8iICsKKyAgICAgICAgICAgICIo
W146Lz8jXSopIiArIC8qIGRvbWFpbiAqLworICAgICAgICAgICAgIig/OjooXFxkKikpPyIgKyAv
KiBwb3J0ICovCisgICAgICAgICIpIiArCisgICAgIik/IiArCisgICAgIihbXj8jXSopIiArIC8q
cGF0aCovCisgICAgIig/OlxcPyhbXiNdKikpPyIgKyAvKiBxdWVyeVN0cmluZyAqLworICAgICIo
PzojKC4qKSk/IiAvKmZyYWdtZW50ICovCispOworc2hvdWxkQmUoInJlZ2V4cDI3LmV4ZWMoJ2Zp
bGU6Ly8vVXNlcnMvU29tZW9uZS9EZXNrdG9wL0hlbGxvV29ybGQvaW5kZXguaHRtbCcpIiwgIlsn
ZmlsZTovLy9Vc2Vycy9Tb21lb25lL0Rlc2t0b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sJywnZmls
ZScsJy8vJywnJyx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCwnJyx1bmRlZmluZWQsJy9V
c2Vycy9Tb21lb25lL0Rlc2t0b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sJyx1bmRlZmluZWQsdW5k
ZWZpbmVkXSIpOworCit2YXIgcmVnZXhwMjggPSBuZXcgUmVnRXhwKAorICAgICJeIiArCisgICAg
Iig/OiIgKworICAgICAgICAiKFteOi8/I10rKToiICsgLyogc2NoZW1lICovCisgICAgIik/IiAr
CisgICAgIig/OiIgKworICAgICAgICAiKC8vKSIgKyAvKiBhdXRob3JpdHlSb290ICovCisgICAg
ICAgICIoIiArIC8qIGF1dGhvcml0eSAqLworICAgICAgICAgICAgIigiICsgLyogdXNlckluZm8g
Ki8KKyAgICAgICAgICAgICAgICAiKFteOkBdKikiICsgLyogdXNlciAqLworICAgICAgICAgICAg
ICAgICI6PyIgKworICAgICAgICAgICAgICAgICIoW146QF0qKSIgKyAvKiBwYXNzd29yZCAqLwor
ICAgICAgICAgICAgIik/IiArCisgICAgICAgICAgICAiQCIgKworICAgICAgICAiKSIgKworICAg
ICIpPyIKKyk7CitzaG91bGRCZSgicmVnZXhwMjguZXhlYygnZmlsZTovLy9Vc2Vycy9Tb21lb25l
L0Rlc2t0b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sJykiLCAiWydmaWxlOicsJ2ZpbGUnLHVuZGVm
aW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWRdIik7CisKIHNob3Vs
ZEJlKCInSGkgQm9iJy5tYXRjaCgvKFJvYil8KEJvYil8KFJvYmVydCl8KEJvYmJ5KS8pIiwgIlsn
Qm9iJyx1bmRlZmluZWQsJ0JvYicsdW5kZWZpbmVkLHVuZGVmaW5lZF0iKTsKIAogdmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76111</attachid>
            <date>2010-12-09 12:32:52 -0800</date>
            <delta_ts>2010-12-09 12:35:02 -0800</delta_ts>
            <desc>Patch addressing reviewers comments</desc>
            <filename>50570-6.patch</filename>
            <type>text/plain</type>
            <size>41922</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNjM1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMTItMDkgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjczMDY1Pyk6IEEgcmVnZXggbm8gbG9u
Z2VyIHdvcmtzIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA1NzAKKworICAgICAgICBDaGFuZ2VkIHRoZSBoYW5kbGluZyBvZiBhZGphY2VudCBwYXJl
bnRoZXNlcyBiYWNrdHJhY2tzIGluIHR3byB3YXlzLgorICAgICAgICBGaXJzdCwgb25seSBvdXRl
ciBtb3N0IHBhcmVuIGJhY2t0cmFja3MgZGVmYXVsdCB0byBiYWNrIHRyYWNraW5nCisgICAgICAg
IHRvIHRoZSAibmV4dCBjaGFyYWN0ZXIiIGxvb3BpbmcgY29kZS4gIFNlY29uZCwgYWRkZWQgYSBq
dW1wIGFyb3VuZCAKKyAgICAgICAgYmFja3RyYWNrcyB0aGF0IGZhbGwgdGhyb3VnaCB0byB0aGUg
bmV4dCBiYWNrdHJhY2sgd2hlcmUgdGhlCisgICAgICAgIHNlY29uZCBiYWNrdHJhY2sgaGFzIHNv
bWUgZ3JlZWR5IHByb2Nlc3NpbmcgYmVmb3JlIHRoZSBiYWNrdHJhY2tpbmcKKyAgICAgICAgZnJv
bSBvdXRzaWRlIHRoZSBwYXJlbnRoZXNlcyBjb2RlLgorICAgICAgICBBbHNvIGNsZWFuZWQgdXAg
ZXh0cmFuZW91cyB3aGl0ZSBzcGNlLCByZW1vdmluZyB3aGl0ZSBzcGFjZSBhdCB0aGUKKyAgICAg
ICAgZW5kIG9mIG9yIHRoYXQgbWFrZXMgdXAgYSB3aG9sZSBsaW5lLgorCisgICAgICAgICogeWFy
ci9SZWdleEpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpHZW5l
cmF0aW9uU3RhdGU6OkdlbmVyYXRpb25TdGF0ZSk6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4
R2VuZXJhdG9yOjpHZW5lcmF0aW9uU3RhdGU6OmluY3JlbWVudFBhcmVuTmVzdGluZ0xldmVsKToK
KyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6OkdlbmVyYXRpb25TdGF0ZTo6ZGVj
cmVtZW50UGFyZW5OZXN0aW5nTGV2ZWwpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVy
YXRvcjo6R2VuZXJhdGlvblN0YXRlOjphZGRQYXJlbnRoZXNlc1RhaWwpOgorICAgICAgICAoSlND
OjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6R2VuZXJhdGlvblN0YXRlOjplbWl0UGFyZW50aGVzZXNU
YWlsKToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6OlBhcmVudGhlc2VzVGFp
bDo6UGFyZW50aGVzZXNUYWlsKToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6
OlBhcmVudGhlc2VzVGFpbDo6c2V0TmV4dEl0ZXJhdGlvbik6CisgICAgICAgIChKU0M6OllhcnI6
OlJlZ2V4R2VuZXJhdG9yOjpQYXJlbnRoZXNlc1RhaWw6OmdlbmVyYXRlQ29kZSk6CisgICAgICAg
IChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpnZW5lcmF0ZVBhcmVudGhlc2VzU2luZ2xlKToK
KwogMjAxMC0xMi0wOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3lh
cnIvUmVnZXhKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhK
SVQuY3BwCShyZXZpc2lvbiA3MzYzNSkKKysrIEphdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMTYgKzExMCwxNiBAQCBjbGFzcyBSZWdleEdlbmVy
YXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICBpbnQgd2hpY2ggPSBjb3VudCA+
PiAxOwogICAgICAgICAgICAgY2hhciBsbyA9IHJhbmdlc1t3aGljaF0uYmVnaW47CiAgICAgICAg
ICAgICBjaGFyIGhpID0gcmFuZ2VzW3doaWNoXS5lbmQ7Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSByYW5nZXMgb3IgbWF0Y2hlcyBiZWxvdyBs
by4gIElmIG5vdCwganVzdCBqbCB0byBmYWlsdXJlIC0KICAgICAgICAgICAgIC8vIGlmIHRoZXJl
IGlzIGFueXRoaW5nIGVsc2UgdG8gY2hlY2ssIGNoZWNrIHRoYXQgZmlyc3QsIGlmIGl0IGZhbGxz
IHRocm91Z2ggam1wIHRvIGZhaWx1cmUuCiAgICAgICAgICAgICBpZiAoKCptYXRjaEluZGV4IDwg
bWF0Y2hDb3VudCkgJiYgKG1hdGNoZXNbKm1hdGNoSW5kZXhdIDwgbG8pKSB7CiAgICAgICAgICAg
ICAgICAgSnVtcCBsb09yQWJvdmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIGNoYXJh
Y3RlciwgSW1tMzIoKHVuc2lnbmVkIHNob3J0KWxvKSk7Ci0gICAgICAgICAgICAgICAgCisKICAg
ICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSBjb2RlIGZvciBhbGwgcmFuZ2VzIGJlZm9yZSB0aGlz
IG9uZQogICAgICAgICAgICAgICAgIGlmICh3aGljaCkKICAgICAgICAgICAgICAgICAgICAgbWF0
Y2hDaGFyYWN0ZXJDbGFzc1JhbmdlKGNoYXJhY3RlciwgZmFpbHVyZXMsIG1hdGNoRGVzdCwgcmFu
Z2VzLCB3aGljaCwgbWF0Y2hJbmRleCwgbWF0Y2hlcywgbWF0Y2hDb3VudCk7Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgICAgICAgICB3aGlsZSAoKCptYXRjaEluZGV4IDwgbWF0Y2hDb3Vu
dCkgJiYgKG1hdGNoZXNbKm1hdGNoSW5kZXhdIDwgbG8pKSB7CiAgICAgICAgICAgICAgICAgICAg
IG1hdGNoRGVzdC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIGNoYXJhY3RlciwgSW1tMzIoKHVuc2ln
bmVkIHNob3J0KW1hdGNoZXNbKm1hdGNoSW5kZXhdKSkpOwogICAgICAgICAgICAgICAgICAgICAr
KyptYXRjaEluZGV4OwpAQCAtMTU0LDI1ICsxNTQsMjUgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3Ig
OiBwcml2YXRlIE1hY3JvQXNzZQogICAgIHsKICAgICAgICAgaWYgKGNoYXJDbGFzcy0+bV90YWJs
ZSkgewogICAgICAgICAgICAgRXh0ZW5kZWRBZGRyZXNzIHRhYmxlRW50cnkoY2hhcmFjdGVyLCBy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihjaGFyQ2xhc3MtPm1fdGFibGUtPm1fdGFibGUpKTsK
LSAgICAgICAgICAgIG1hdGNoRGVzdC5hcHBlbmQoYnJhbmNoVGVzdDgoY2hhckNsYXNzLT5tX3Rh
YmxlLT5tX2ludmVydGVkID8gWmVybyA6IE5vblplcm8sIHRhYmxlRW50cnkpKTsgICAKKyAgICAg
ICAgICAgIG1hdGNoRGVzdC5hcHBlbmQoYnJhbmNoVGVzdDgoY2hhckNsYXNzLT5tX3RhYmxlLT5t
X2ludmVydGVkID8gWmVybyA6IE5vblplcm8sIHRhYmxlRW50cnkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBKdW1wIHVuaWNvZGVGYWlsOwogICAgICAgICBpZiAo
Y2hhckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLnNpemUoKSB8fCBjaGFyQ2xhc3MtPm1fcmFuZ2Vz
VW5pY29kZS5zaXplKCkpIHsKICAgICAgICAgICAgIEp1bXAgaXNBc2NpaSA9IGJyYW5jaDMyKExl
c3NUaGFuT3JFcXVhbCwgY2hhcmFjdGVyLCBJbW0zMigweDdmKSk7Ci0gICAgICAgIAorCiAgICAg
ICAgICAgICBpZiAoY2hhckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLnNpemUoKSkgewogICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGFyQ2xhc3MtPm1fbWF0Y2hlc1Vu
aWNvZGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgVUNoYXIgY2ggPSBjaGFy
Q2xhc3MtPm1fbWF0Y2hlc1VuaWNvZGVbaV07CiAgICAgICAgICAgICAgICAgICAgIG1hdGNoRGVz
dC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIGNoYXJhY3RlciwgSW1tMzIoY2gpKSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlm
IChjaGFyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hhckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgVUNoYXIgbG8gPSBjaGFyQ2xhc3MtPm1fcmFu
Z2VzVW5pY29kZVtpXS5iZWdpbjsKICAgICAgICAgICAgICAgICAgICAgVUNoYXIgaGkgPSBjaGFy
Q2xhc3MtPm1fcmFuZ2VzVW5pY29kZVtpXS5lbmQ7Ci0gICAgICAgICAgICAgICAgICAgIAorCiAg
ICAgICAgICAgICAgICAgICAgIEp1bXAgYmVsb3cgPSBicmFuY2gzMihMZXNzVGhhbiwgY2hhcmFj
dGVyLCBJbW0zMihsbykpOwogICAgICAgICAgICAgICAgICAgICBtYXRjaERlc3QuYXBwZW5kKGJy
YW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgY2hhcmFjdGVyLCBJbW0zMihoaSkpKTsKICAgICAgICAg
ICAgICAgICAgICAgYmVsb3cubGluayh0aGlzKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBjbGFzcyBS
ZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAKICAgICAgICAgaWYgKGNoYXJDbGFz
cy0+bV9yYW5nZXMuc2l6ZSgpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBtYXRjaEluZGV4ID0g
MDsKLSAgICAgICAgICAgIEp1bXBMaXN0IGZhaWx1cmVzOyAKKyAgICAgICAgICAgIEp1bXBMaXN0
IGZhaWx1cmVzOwogICAgICAgICAgICAgbWF0Y2hDaGFyYWN0ZXJDbGFzc1JhbmdlKGNoYXJhY3Rl
ciwgZmFpbHVyZXMsIG1hdGNoRGVzdCwgY2hhckNsYXNzLT5tX3Jhbmdlcy5iZWdpbigpLCBjaGFy
Q2xhc3MtPm1fcmFuZ2VzLnNpemUoKSwgJm1hdGNoSW5kZXgsIGNoYXJDbGFzcy0+bV9tYXRjaGVz
LmJlZ2luKCksIGNoYXJDbGFzcy0+bV9tYXRjaGVzLnNpemUoKSk7CiAgICAgICAgICAgICB3aGls
ZSAobWF0Y2hJbmRleCA8IGNoYXJDbGFzcy0+bV9tYXRjaGVzLnNpemUoKSkKICAgICAgICAgICAg
ICAgICBtYXRjaERlc3QuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBjaGFyYWN0ZXIsIEltbTMyKCh1
bnNpZ25lZCBzaG9ydCljaGFyQ2xhc3MtPm1fbWF0Y2hlc1ttYXRjaEluZGV4KytdKSkpOwpAQCAt
Mjk4LDE2ICsyOTgsMTYgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNz
ZQogICAgICAgICB7CiAgICAgICAgICAgICBhZGRKdW1wKGp1bXApOwogICAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICAgIHZvaWQgYWRkSnVtcChKdW1wIGp1bXApCiAgICAgICAgIHsKICAgICAg
ICAgICAgIG1fcmVsSnVtcHMuYXBwZW5kKGp1bXApOwogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIGludDMyX3QgbV9zdGFja09mZnNldDsKICAgICAgICAgSnVtcExpc3QgbV9yZWxKdW1w
czsKICAgICB9OwotICAgICAgICAKKwogICAgIHN0cnVjdCBBbHRlcm5hdGl2ZUJhY2t0cmFja1Jl
Y29yZCB7CiAgICAgICAgIERhdGFMYWJlbFB0ciBkYXRhTGFiZWw7CiAgICAgICAgIExhYmVsIGJh
Y2t0cmFja0xvY2F0aW9uOwpAQCAtMzIxLDM4ICszMjEsMzkgQEAgY2xhc3MgUmVnZXhHZW5lcmF0
b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogCiAgICAgc3RydWN0IFBhcmVudGhlc2VzVGFpbDsKICAg
ICBzdHJ1Y3QgVGVybUdlbmVyYXRpb25TdGF0ZTsKLSAgICAKKwogICAgIHN0cnVjdCBHZW5lcmF0
aW9uU3RhdGUgewogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBJbmRpcmVjdEp1bXBFbnRy
eSosIFdURjo6SW50SGFzaDx1aW50MzJfdD4sIFVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVpbnQzMl90PiA+IEluZGlyZWN0SnVtcEhhc2hNYXA7Ci0gICAgICAgIAorCiAgICAgICAgIEdl
bmVyYXRpb25TdGF0ZSgpCisgICAgICAgICAgICA6IG1fcGFyZW5OZXN0aW5nTGV2ZWwoMCkKICAg
ICAgICAgewogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgYWRkSW5kaXJlY3RK
dW1wRW50cnkoaW50MzJfdCBzdGFja09mZnNldCwgSnVtcCBqdW1wKQogICAgICAgICB7CiAgICAg
ICAgICAgICBJbmRpcmVjdEp1bXBIYXNoTWFwOjppdGVyYXRvciByZXN1bHQgPSBtX2luZGlyZWN0
SnVtcE1hcC5maW5kKHN0YWNrT2Zmc2V0KTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBB
U1NFUlQoc3RhY2tPZmZzZXQgPj0gMCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgdWlu
dDMyX3Qgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0YWNrT2Zmc2V0KTsKLSAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IG1faW5kaXJlY3RKdW1wTWFwLmVu
ZCgpKQogICAgICAgICAgICAgICAgIG1faW5kaXJlY3RKdW1wTWFwLmFkZChvZmZzZXQsIG5ldyBJ
bmRpcmVjdEp1bXBFbnRyeShzdGFja09mZnNldCwganVtcCkpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIHJlc3VsdC0+c2Vjb25kLT5hZGRKdW1wKGp1bXApOwogICAgICAgICB9
Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgYWRkSW5kaXJlY3RKdW1wRW50cnkoaW50MzJfdCBz
dGFja09mZnNldCwgSnVtcExpc3QganVtcHMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEp1bXBM
aXN0OjpKdW1wVmVjdG9yIGp1bXBWZWN0b3IgPSBqdW1wcy5qdW1wcygpOwogICAgICAgICAgICAg
c2l6ZV90IHNpemUgPSBqdW1wVmVjdG9yLnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICAgICAgIGFkZEluZGlyZWN0SnVtcEVu
dHJ5KHN0YWNrT2Zmc2V0LCBqdW1wVmVjdG9yW2ldKTsKLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBqdW1wcy5lbXB0eSgpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQg
ZW1pdEluZGlyZWN0SnVtcFRhYmxlKE1hY3JvQXNzZW1ibGVyKiBtYXNtKQogICAgICAgICB7CiAg
ICAgICAgICAgICBmb3IgKEluZGlyZWN0SnVtcEhhc2hNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2lu
ZGlyZWN0SnVtcE1hcC5iZWdpbigpOyBpdGVyICE9IG1faW5kaXJlY3RKdW1wTWFwLmVuZCgpOyAr
K2l0ZXIpIHsKQEAgLTM2Miw2NyArMzYzLDc5IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJp
dmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgICAgICAgICBkZWxldGUgaW5kSnVtcEVudHJ5OwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIHZvaWQgaW5jcmVtZW50
UGFyZW5OZXN0aW5nTGV2ZWwoKQorICAgICAgICB7CisgICAgICAgICAgICArK21fcGFyZW5OZXN0
aW5nTGV2ZWw7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRlY3JlbWVudFBhcmVuTmVzdGlu
Z0xldmVsKCkKKyAgICAgICAgeworICAgICAgICAgICAgLS1tX3BhcmVuTmVzdGluZ0xldmVsOwor
ICAgICAgICB9CisKICAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBhZGRQYXJlbnRoZXNlc1RhaWwo
UGF0dGVyblRlcm0mIHRlcm0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIFBhcmVudGhlc2VzVGFp
bCogcGFyZW50aGVzZXNUYWlsID0gbmV3IFBhcmVudGhlc2VzVGFpbCh0ZXJtKTsKKyAgICAgICAg
ICAgIFBhcmVudGhlc2VzVGFpbCogcGFyZW50aGVzZXNUYWlsID0gbmV3IFBhcmVudGhlc2VzVGFp
bCh0ZXJtLCBtX3BhcmVuTmVzdGluZ0xldmVsKTsKICAgICAgICAgICAgIG1fcGFyZW5UYWlscy5h
cHBlbmQocGFyZW50aGVzZXNUYWlsKTsKICAgICAgICAgICAgIG1fcGFyZW5UYWlsc0Zvckl0ZXJh
dGlvbi5hcHBlbmQocGFyZW50aGVzZXNUYWlsKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICByZXR1cm4gcGFyZW50aGVzZXNUYWlsOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IHZvaWQgZW1pdFBhcmVudGhlc2VzVGFpbChSZWdleEdlbmVyYXRvciogZ2VuZXJhdG9yKQogICAg
ICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JTaXplID0gbV9wYXJlblRhaWxzLnNp
emUoKTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgYm9vbCBwcmlvckJhY2t0cmFja0ZhbGxU
aHJvdWdoID0gZmFsc2U7CisKICAgICAgICAgICAgIC8vIEVtaXQgaW4gcmV2ZXJzZSBvcmRlciBz
byBwYXJlbnRUYWlsIE4gY2FuIGZhbGwgdGhyb3VnaCB0byBOLTEKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSB2ZWN0b3JTaXplOyBpbmRleCA+IDA7IC0taW5kZXgpIHsKICAgICAg
ICAgICAgICAgICBKdW1wTGlzdCBqdW1wc1RvTmV4dDsKLSAgICAgICAgICAgICAgICBtX3BhcmVu
VGFpbHNbaW5kZXgtMV0uZ2V0KCktPmdlbmVyYXRlQ29kZShnZW5lcmF0b3IsIGp1bXBzVG9OZXh0
LCBpbmRleCA+IDEpOworICAgICAgICAgICAgICAgIHByaW9yQmFja3RyYWNrRmFsbFRocm91Z2gg
PSBtX3BhcmVuVGFpbHNbaW5kZXgtMV0uZ2V0KCktPmdlbmVyYXRlQ29kZShnZW5lcmF0b3IsIGp1
bXBzVG9OZXh0LCBwcmlvckJhY2t0cmFja0ZhbGxUaHJvdWdoLCBpbmRleCA+IDEpOwogICAgICAg
ICAgICAgICAgIGlmIChpbmRleCA+IDEpCiAgICAgICAgICAgICAgICAgICAgIGp1bXBzVG9OZXh0
LmxpbmtUbyhnZW5lcmF0b3ItPmxhYmVsKCksIGdlbmVyYXRvcik7CiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICBhZGRKdW1wc1RvTmV4dEludGVyYXRpb24oanVtcHNU
b05leHQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9wYXJlblRhaWxzLmNsZWFyKCk7
Ci0gICAgICAgIH0gICAgICAgIAotICAgICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQg
YWRkSnVtcFRvTmV4dEludGVyYXRpb24oSnVtcCBqdW1wKQogICAgICAgICB7CiAgICAgICAgICAg
ICBtX2p1bXBzVG9OZXh0SW50ZXJhdGlvbi5hcHBlbmQoanVtcCk7CiAgICAgICAgIH0KLSAgICAg
ICAgCisKICAgICAgICAgdm9pZCBhZGRKdW1wc1RvTmV4dEludGVyYXRpb24oSnVtcExpc3QganVt
cHMpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fanVtcHNUb05leHRJbnRlcmF0aW9uLmFwcGVu
ZChqdW1wcyk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgdm9pZCBhZGREYXRhTGFi
ZWxUb05leHRJdGVyYXRpb24oRGF0YUxhYmVsUHRyIGRhdGFMYWJlbCkKICAgICAgICAgewogICAg
ICAgICAgICAgbV9kYXRhUHRyc1RvTmV4dEl0ZXJhdGlvbi5hcHBlbmQoZGF0YUxhYmVsKTsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICB2b2lkIGxpbmtUb05leHRJdGVyYXRpb24oTGFi
ZWwgbGFiZWwpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fbmV4dEl0ZXJhdGlvbiA9IGxhYmVs
OwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2RhdGFQdHJzVG9OZXh0SXRlcmF0aW9uLnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIG1f
YmFja3RyYWNrUmVjb3Jkcy5hcHBlbmQoQWx0ZXJuYXRpdmVCYWNrdHJhY2tSZWNvcmQobV9kYXRh
UHRyc1RvTmV4dEl0ZXJhdGlvbltpXSwgbV9uZXh0SXRlcmF0aW9uKSk7Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgbV9kYXRhUHRyc1RvTmV4dEl0ZXJhdGlvbi5jbGVhcigpOwogCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJlblRhaWxzRm9ySXRlcmF0aW9u
LnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIG1fcGFyZW5UYWlsc0Zvckl0ZXJhdGlvbltp
XS0+c2V0TmV4dEl0ZXJhdGlvbihtX25leHRJdGVyYXRpb24pOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBtX3BhcmVuVGFpbHNGb3JJdGVyYXRpb24uY2xlYXIoKTsgICAgICAgICAgICAKKwor
ICAgICAgICAgICAgbV9wYXJlblRhaWxzRm9ySXRlcmF0aW9uLmNsZWFyKCk7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIGxpbmtUb05leHRJdGVyYXRpb24oUmVnZXhHZW5lcmF0b3IqIGdlbmVy
YXRvcikKICAgICAgICAgewogICAgICAgICAgICAgbV9qdW1wc1RvTmV4dEludGVyYXRpb24ubGlu
a1RvKG1fbmV4dEl0ZXJhdGlvbiwgZ2VuZXJhdG9yKTsKLSAgICAgICAgfSAgICAgICAgCi0gICAg
ICAgIAorICAgICAgICB9CisKKyAgICAgICAgaW50IG1fcGFyZW5OZXN0aW5nTGV2ZWw7CiAgICAg
ICAgIFZlY3RvcjxBbHRlcm5hdGl2ZUJhY2t0cmFja1JlY29yZD4gbV9iYWNrdHJhY2tSZWNvcmRz
OwogICAgICAgICBJbmRpcmVjdEp1bXBIYXNoTWFwIG1faW5kaXJlY3RKdW1wTWFwOwogICAgICAg
ICBMYWJlbCBtX25leHRJdGVyYXRpb247CkBAIC00NDAsNyArNDUzLDcgQEAgY2xhc3MgUmVnZXhH
ZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgQmFja3RyYWNrSnVtcExp
c3QsCiAgICAgICAgICAgICBCYWNrdHJhY2tMaW5rZWQKICAgICAgICAgfSBCYWNrdHJhY2tUeXBl
OwotICAgICAgICAKKwogICAgICAgICBCYWNrdHJhY2tEZXN0aW5hdGlvbigpCiAgICAgICAgICAg
ICA6IG1fYmFja3RyYWNrVHlwZShOb0JhY2t0cmFjaykKICAgICAgICAgICAgICwgbV9iYWNrdHJh
Y2tUb0xhYmVsKDApCkBAIC00NTAsOCArNDYzLDggQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBw
cml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgLCBtX2JhY2t0cmFja1NvdXJjZUp1bXBzKDAp
CiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgQmFja3RyYWNrRGVzdGlu
YXRpb24oaW50MzJfdCBzdGFja09mZnNldCkgCisKKyAgICAgICAgQmFja3RyYWNrRGVzdGluYXRp
b24oaW50MzJfdCBzdGFja09mZnNldCkKICAgICAgICAgICAgIDogbV9iYWNrdHJhY2tUeXBlKEJh
Y2t0cmFja1N0YWNrT2Zmc2V0KQogICAgICAgICAgICAgLCBtX2JhY2t0cmFja1N0YWNrT2Zmc2V0
KHN0YWNrT2Zmc2V0KQogICAgICAgICAgICAgLCBtX2JhY2t0cmFja1RvTGFiZWwoMCkKQEAgLTQ2
MSw4ICs0NzQsOCBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAg
ICAgICAgICAgICAsIG1fYmFja3RyYWNrU291cmNlSnVtcHMoMCkKICAgICAgICAgewogICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBCYWNrdHJhY2tEZXN0aW5hdGlvbihMYWJlbCBsYWJlbCkg
CisKKyAgICAgICAgQmFja3RyYWNrRGVzdGluYXRpb24oTGFiZWwgbGFiZWwpCiAgICAgICAgICAg
ICA6IG1fYmFja3RyYWNrVHlwZShCYWNrdHJhY2tMYWJlbCkKICAgICAgICAgICAgICwgbV9iYWNr
dHJhY2tMYWJlbChsYWJlbCkKICAgICAgICAgICAgICwgbV9iYWNrdHJhY2tUb0xhYmVsKDApCkBA
IC00NzIsNDQgKzQ4NSw0NCBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9B
c3NlCiAgICAgICAgICAgICAsIG1fYmFja3RyYWNrU291cmNlSnVtcHMoMCkKICAgICAgICAgewog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgY2xlYXIoKQogICAgICAgICB7CiAg
ICAgICAgICAgICBtX2JhY2t0cmFja1R5cGUgPSBOb0JhY2t0cmFjazsKICAgICAgICAgICAgIGNs
ZWFyRGF0YUxhYmVsKCk7CiAgICAgICAgICAgICBtX25leHRCYWNrdHJhY2sgPSAwOwogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgY2xlYXJEYXRhTGFiZWwoKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX2RhdGFMYWJlbFB0ciA9IERhdGFMYWJlbFB0cigpOwogICAgICAgICB9
Ci0gICAgICAgIAorCiAgICAgICAgIGJvb2wgaGFzRGVzdGluYXRpb24oKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gKG1fYmFja3RyYWNrVHlwZSAhPSBOb0JhY2t0cmFjayk7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYm9vbCBpc1N0YWNrT2Zmc2V0KCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIChtX2JhY2t0cmFja1R5cGUgPT0gQmFja3RyYWNrU3RhY2tP
ZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGJvb2wgaXNMYWJlbCgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAobV9iYWNrdHJhY2tUeXBlID09IEJhY2t0cmFj
a0xhYmVsKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBib29sIGlzSnVtcExpc3Qo
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKG1fYmFja3RyYWNrVHlwZSA9PSBCYWNr
dHJhY2tKdW1wTGlzdCk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYm9vbCBoYXNE
YXRhTGFiZWwoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9kYXRhTGFiZWxQdHIu
aXNTZXQoKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB2b2lkIGNvcHlUYXJnZXQo
QmFja3RyYWNrRGVzdGluYXRpb24mIHJocywgYm9vbCBjb3B5RGF0YUxhYmVsID0gdHJ1ZSkKICAg
ICAgICAgewogICAgICAgICAgICAgbV9iYWNrdHJhY2tUeXBlID0gcmhzLm1fYmFja3RyYWNrVHlw
ZTsKQEAgLTUyMiw3ICs1MzUsNyBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFj
cm9Bc3NlCiAgICAgICAgICAgICBtX2JhY2t0cmFja1NvdXJjZUp1bXBzID0gcmhzLm1fYmFja3Ry
YWNrU291cmNlSnVtcHM7CiAgICAgICAgICAgICBtX2JhY2t0cmFja1NvdXJjZUxhYmVsID0gcmhz
Lm1fYmFja3RyYWNrU291cmNlTGFiZWw7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
dm9pZCBjb3B5VG8oQmFja3RyYWNrRGVzdGluYXRpb24mIGxocykKICAgICAgICAgewogICAgICAg
ICAgICAgbGhzLm1fYmFja3RyYWNrVHlwZSA9IG1fYmFja3RyYWNrVHlwZTsKQEAgLTUzNSw3ICs1
NDgsNyBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAg
ICAgICBsaHMubV9kYXRhTGFiZWxQdHIgPSBtX2RhdGFMYWJlbFB0cjsKICAgICAgICAgICAgIGxo
cy5tX2JhY2tUcmFja0p1bXBzID0gbV9iYWNrVHJhY2tKdW1wczsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICB2b2lkIGFkZEJhY2t0cmFja0p1bXAoSnVtcCBqdW1wKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX2JhY2tUcmFja0p1bXBzLmFwcGVuZChqdW1wKTsKQEAgLTU0NiwzNiAr
NTU5LDM2IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAg
ICAgICAgIG1fYmFja3RyYWNrVHlwZSA9IEJhY2t0cmFja1N0YWNrT2Zmc2V0OwogICAgICAgICAg
ICAgbV9iYWNrdHJhY2tTdGFja09mZnNldCA9IHN0YWNrT2Zmc2V0OwogICAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICAgIHZvaWQgc2V0TGFiZWwoTGFiZWwgbGFiZWwpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIG1fYmFja3RyYWNrVHlwZSA9IEJhY2t0cmFja0xhYmVsOwogICAgICAgICAgICAg
bV9iYWNrdHJhY2tMYWJlbCA9IGxhYmVsOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IHZvaWQgc2V0TmV4dEJhY2t0cmFja0xhYmVsKExhYmVsIGxhYmVsKQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAobV9uZXh0QmFja3RyYWNrKQogICAgICAgICAgICAgICAgIG1fbmV4dEJhY2t0
cmFjay0+c2V0TGFiZWwobGFiZWwpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZv
aWQgc2V0QmFja3RyYWNrVG9MYWJlbChMYWJlbCogYmFja3RyYWNrVG9MYWJlbCkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2JhY2t0cmFja1RvTGFiZWwpCiAgICAgICAgICAgICAgICAg
bV9iYWNrdHJhY2tUb0xhYmVsID0gYmFja3RyYWNrVG9MYWJlbDsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICB2b2lkIHNldEJhY2t0cmFja0p1bXBMaXN0KEp1bXBMaXN0KiBqdW1wTGlz
dCkKICAgICAgICAgewogICAgICAgICAgICAgbV9iYWNrdHJhY2tUeXBlID0gQmFja3RyYWNrSnVt
cExpc3Q7CiAgICAgICAgICAgICBtX2JhY2t0cmFja1NvdXJjZUp1bXBzID0ganVtcExpc3Q7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgdm9pZCBzZXRCYWNrdHJhY2tTb3VyY2VMYWJl
bChMYWJlbCogYmFja3RyYWNrU291cmNlTGFiZWwpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1f
YmFja3RyYWNrU291cmNlTGFiZWwgPSBiYWNrdHJhY2tTb3VyY2VMYWJlbDsKICAgICAgICAgfQot
ICAgICAgICAKKwogICAgICAgICB2b2lkIHNldERhdGFMYWJlbChEYXRhTGFiZWxQdHIgZHApCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX3N1YkRhdGFMYWJlbFB0cikgewpAQCAtNTg0LDcg
KzU5Nyw3IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1fZGF0YUxhYmVsUHRyID0gZHA7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgdm9pZCBzZXRTdWJEYXRhTGFiZWxQdHIoRGF0YUxh
YmVsUHRyKiBzdWJEYXRhTGFiZWxQdHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fc3ViRGF0
YUxhYmVsUHRyID0gc3ViRGF0YUxhYmVsUHRyOwpAQCAtNTk0LDI5ICs2MDcsMjkgQEAgY2xhc3Mg
UmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICB7CiAgICAgICAgICAg
ICBtX25leHRCYWNrdHJhY2sgPSBuZXh0QmFja3RyYWNrOwogICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKKwogICAgICAgICBpbnQzMl90IGdldFN0YWNrT2Zmc2V0
KCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1fYmFja3RyYWNrVHlwZSA9PSBCYWNr
dHJhY2tTdGFja09mZnNldCk7CiAgICAgICAgICAgICByZXR1cm4gbV9iYWNrdHJhY2tTdGFja09m
ZnNldDsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBMYWJlbCBnZXRMYWJlbCgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2JhY2t0cmFja1R5cGUgPT0gQmFja3RyYWNr
TGFiZWwpOwogICAgICAgICAgICAgcmV0dXJuIG1fYmFja3RyYWNrTGFiZWw7CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgSnVtcExpc3QmIGdldEJhY2t0cmFja0p1bXBzKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIG1fYmFja1RyYWNrSnVtcHM7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgRGF0YUxhYmVsUHRyJiBnZXREYXRhTGFiZWwoKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gbV9kYXRhTGFiZWxQdHI7CiAgICAgICAgIH0KLSAgICAgICAg
CisKICAgICAgICAgdm9pZCBqdW1wVG9CYWNrdHJhY2soTWFjcm9Bc3NlbWJsZXIqIG1hc20pCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChpc0p1bXBMaXN0KCkpIHsKQEAgLTYzMSw3ICs2NDQs
NyBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgbV9iYWNrVHJhY2tKdW1wcy5hcHBlbmQobWFzbS0+anVt
cCgpKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB2b2lkIGp1bXBUb0JhY2t0cmFj
ayhSZWdleEdlbmVyYXRvciogZ2VuZXJhdG9yLCBKdW1wIGp1bXApCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChpc0p1bXBMaXN0KCkpIHsKQEAgLTY0Niw3ICs2NTksNyBAQCBjbGFzcyBSZWdl
eEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgbV9iYWNrVHJhY2tKdW1wcy5hcHBlbmQoanVtcCk7CiAgICAgICAgIH0KLSAgICAg
ICAgCisKICAgICAgICAgdm9pZCBqdW1wVG9CYWNrdHJhY2soUmVnZXhHZW5lcmF0b3IqIGdlbmVy
YXRvciwgSnVtcExpc3QmIGp1bXBzKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaXNKdW1w
TGlzdCgpKSB7CkBAIC02NjksMTAgKzY4MiwxMCBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHBy
aXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICAgICAgY2xlYXJEYXRhTGFiZWwoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gICAgICAgIAotICAgICAgICAgICAg
ICAgIAorICAgICAgICB9CisKICAgICAgICAgYm9vbCBwbGFudEp1bXBUb0JhY2t0cmFja0lmRXhp
c3RzKFJlZ2V4R2VuZXJhdG9yKiBnZW5lcmF0b3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChpc0p1bXBMaXN0KCkpIHsKQEAgLTY4OCw1NCArNzAxLDU0IEBAIGNsYXNzIFJlZ2V4R2VuZXJh
dG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmp1bXAo
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZ2V0U3RhY2tPZmZzZXQoKSkpOwogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAg
ICAgICAgICAgIGlmIChpc0xhYmVsKCkpIHsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmp1
bXAoZ2V0TGFiZWwoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0RhdGFMYWJlbCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+bV9leHByZXNzaW9uU3RhdGUubV9iYWNrdHJh
Y2tSZWNvcmRzLmFwcGVuZChBbHRlcm5hdGl2ZUJhY2t0cmFja1JlY29yZChnZXREYXRhTGFiZWwo
KSwgZ2V0TGFiZWwoKSkpOwogICAgICAgICAgICAgICAgICAgICBjbGVhckRhdGFMYWJlbCgpOwot
ICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgbGlu
a0FsdGVybmF0aXZlQmFja3RyYWNrcyhSZWdleEdlbmVyYXRvciogZ2VuZXJhdG9yLCBib29sIG5l
eHRJdGVyYXRpb24gPSBmYWxzZSkKICAgICAgICAgewogICAgICAgICAgICAgTGFiZWwgaGVyZUxh
YmVsID0gZ2VuZXJhdG9yLT5sYWJlbCgpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlm
IChtX2JhY2t0cmFja1RvTGFiZWwpIHsKICAgICAgICAgICAgICAgICAqbV9iYWNrdHJhY2tUb0xh
YmVsID0gaGVyZUxhYmVsOwogICAgICAgICAgICAgICAgIG1fYmFja3RyYWNrVG9MYWJlbCA9IDA7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgbV9iYWNrVHJhY2tK
dW1wcy5saW5rKGdlbmVyYXRvcik7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKG5l
eHRJdGVyYXRpb24pCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5tX2V4cHJlc3Npb25TdGF0
ZS5saW5rVG9OZXh0SXRlcmF0aW9uKGhlcmVMYWJlbCk7Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgaWYgKGhhc0RhdGFMYWJlbCgpKSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5t
X2V4cHJlc3Npb25TdGF0ZS5tX2JhY2t0cmFja1JlY29yZHMuYXBwZW5kKEFsdGVybmF0aXZlQmFj
a3RyYWNrUmVjb3JkKGdldERhdGFMYWJlbCgpLCBoZXJlTGFiZWwpKTsKICAgICAgICAgICAgICAg
ICAvLyBkYXRhIGxhYmVsIGNsZWFyZWQgYXMgYSByZXN1bHQgb2YgdGhlIGNsZWFyKCkgYmVsb3cK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBjbGVhcigpOwogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgbGlua0FsdGVybmF0aXZlQmFja3RyYWNr
c1RvKFJlZ2V4R2VuZXJhdG9yKiBnZW5lcmF0b3IsIExhYmVsIGxhYmVsLCBib29sIG5leHRJdGVy
YXRpb24gPSBmYWxzZSkKICAgICAgICAgewogICAgICAgICAgICAgbV9iYWNrVHJhY2tKdW1wcy5s
aW5rVG8obGFiZWwsIGdlbmVyYXRvcik7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYg
KG5leHRJdGVyYXRpb24pCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5tX2V4cHJlc3Npb25T
dGF0ZS5saW5rVG9OZXh0SXRlcmF0aW9uKGxhYmVsKTsKLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBpZiAoaGFzRGF0YUxhYmVsKCkpIHsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPm1f
ZXhwcmVzc2lvblN0YXRlLm1fYmFja3RyYWNrUmVjb3Jkcy5hcHBlbmQoQWx0ZXJuYXRpdmVCYWNr
dHJhY2tSZWNvcmQoZ2V0RGF0YUxhYmVsKCksIGxhYmVsKSk7CiAgICAgICAgICAgICAgICAgY2xl
YXJEYXRhTGFiZWwoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAg
IHByaXZhdGU6CiAgICAgICAgIEJhY2t0cmFja1R5cGUgbV9iYWNrdHJhY2tUeXBlOwogICAgICAg
ICBpbnQzMl90IG1fYmFja3RyYWNrU3RhY2tPZmZzZXQ7CkBAIC03NDgsNyArNzYxLDcgQEAgY2xh
c3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICBKdW1wTGlzdCog
bV9iYWNrdHJhY2tTb3VyY2VKdW1wczsKICAgICAgICAgSnVtcExpc3QgbV9iYWNrVHJhY2tKdW1w
czsKICAgICB9OwotICAgICAgICAKKwogICAgIHN0cnVjdCBUZXJtR2VuZXJhdGlvblN0YXRlIHsK
ICAgICAgICAgVGVybUdlbmVyYXRpb25TdGF0ZShQYXR0ZXJuRGlzanVuY3Rpb24qIGRpc2p1bmN0
aW9uLCB1bnNpZ25lZCBjaGVja2VkVG90YWwpCiAgICAgICAgICAgICA6IGRpc2p1bmN0aW9uKGRp
c2p1bmN0aW9uKQpAQCAtNzc4LDcgKzc5MSw3IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJp
dmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIChhbHQgKyAxKSA9
PSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgpOwogICAgICAgICB9Ci0gICAgICAg
IAorCiAgICAgICAgIHZvaWQgcmVzZXRUZXJtKCkKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKGFsdGVybmF0aXZlVmFsaWQoKSk7CkBAIC04MzQsMTIgKzg0NywxMiBAQCBjbGFzcyBSZWdl
eEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICBtX2JhY2t0cmFjay5j
bGVhcigpOwogICAgICAgICAgICAgbV9saW5rZWRCYWNrdHJhY2sgPSAwOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIHZvaWQganVtcFRvQmFja3RyYWNrKE1hY3JvQXNzZW1ibGVyKiBt
YXNtKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2JhY2t0cmFjay5qdW1wVG9CYWNrdHJhY2so
bWFzbSk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgdm9pZCBqdW1wVG9CYWNrdHJh
Y2soUmVnZXhHZW5lcmF0b3IqIGdlbmVyYXRvciwgSnVtcCBqdW1wKQogICAgICAgICB7CiAgICAg
ICAgICAgICBtX2JhY2t0cmFjay5qdW1wVG9CYWNrdHJhY2soZ2VuZXJhdG9yLCBqdW1wKTsKQEAg
LTg0OSwxMiArODYyLDEyIEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fz
c2UKICAgICAgICAgewogICAgICAgICAgICAgbV9iYWNrdHJhY2suanVtcFRvQmFja3RyYWNrKGdl
bmVyYXRvciwganVtcHMpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGJvb2wgcGxh
bnRKdW1wVG9CYWNrdHJhY2tJZkV4aXN0cyhSZWdleEdlbmVyYXRvciogZ2VuZXJhdG9yKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9iYWNrdHJhY2sucGxhbnRKdW1wVG9CYWNrdHJh
Y2tJZkV4aXN0cyhnZW5lcmF0b3IpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGJv
b2wgbGlua0RhdGFMYWJlbFRvQmFja3RyYWNrSWZFeGlzdHMoUmVnZXhHZW5lcmF0b3IqIGdlbmVy
YXRvcikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKChtX2JhY2t0cmFjay5pc0xhYmVsKCkp
ICYmIChtX2JhY2t0cmFjay5oYXNEYXRhTGFiZWwoKSkpIHsKQEAgLTg2Miw5ICs4NzUsOSBAQCBj
bGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICAgICAg
bV9iYWNrdHJhY2suY2xlYXJEYXRhTGFiZWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0gICAgICAgIAorICAgICAgICB9CiAKICAgICAgICAgdm9pZCBhZGRCYWNr
dHJhY2tKdW1wKEp1bXAganVtcCkKICAgICAgICAgewpAQCAtODgwLDcgKzg5Myw3IEBAIGNsYXNz
IFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgewogICAgICAgICAg
ICAgbV9iYWNrdHJhY2suc2V0U3RhY2tPZmZzZXQoc3RhY2tPZmZzZXQpOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIHZvaWQgc2V0QmFja3RyYWNrTGFiZWwoTGFiZWwgbGFiZWwpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1fYmFja3RyYWNrLnNldExhYmVsKGxhYmVsKTsKQEAgLTkw
MSwxOSArOTE0LDE5IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UK
ICAgICAgICAgewogICAgICAgICAgICAgbV9saW5rZWRCYWNrdHJhY2sgPSBsaW5rZWRCYWNrdHJh
Y2s7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgdm9pZCBjaGFpbkJhY2t0cmFja3Mo
QmFja3RyYWNrRGVzdGluYXRpb24qIGZvbGxvd29uQmFja3RyYWNrKQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAobV9saW5rZWRCYWNrdHJhY2spCiAgICAgICAgICAgICAgICAgbV9saW5rZWRC
YWNrdHJhY2stPmxpbmtUb05leHRCYWNrdHJhY2soZm9sbG93b25CYWNrdHJhY2spOwogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgY2hhaW5CYWNrdHJhY2tKdW1wcyhKdW1wTGlz
dCoganVtcExpc3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2xpbmtlZEJhY2t0cmFj
ayAmJiAhKG1fbGlua2VkQmFja3RyYWNrLT5oYXNEZXN0aW5hdGlvbigpKSkKICAgICAgICAgICAg
ICAgICBtX2xpbmtlZEJhY2t0cmFjay0+c2V0QmFja3RyYWNrSnVtcExpc3QoanVtcExpc3QpOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIEJhY2t0cmFja0Rlc3RpbmF0aW9uJiBnZXRC
YWNrdHJhY2tEZXN0aW5hdGlvbigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2Jh
Y2t0cmFjazsKQEAgLTkyNiw3ICs5MzksNyBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZh
dGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICBpZiAoYmFja3RyYWNrLmhhc0Rlc3RpbmF0aW9uKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAobV9iYWNrdHJhY2suaGFzRGF0YUxhYmVsKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+bV9leHByZXNzaW9uU3RhdGUuYWRkRGF0YUxhYmVs
VG9OZXh0SXRlcmF0aW9uKG1fYmFja3RyYWNrLmdldERhdGFMYWJlbCgpKTsKLSAgICAgICAgICAg
ICAgICAKKwogICAgICAgICAgICAgICAgIG1fYmFja3RyYWNrLmNvcHlUYXJnZXQoYmFja3RyYWNr
LCBkb0p1bXApOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MzgsMTUgKzk1MSwxNiBA
QCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgIHVuc2ln
bmVkIHQ7CiAgICAgICAgIEJhY2t0cmFja0Rlc3RpbmF0aW9uIG1fYmFja3RyYWNrOwogICAgICAg
ICBCYWNrdHJhY2tEZXN0aW5hdGlvbiogbV9saW5rZWRCYWNrdHJhY2s7Ci0gICAgICAgIAorCiAg
ICAgfTsKIAogICAgIHN0cnVjdCBQYXJlbnRoZXNlc1RhaWwgewotICAgICAgICBQYXJlbnRoZXNl
c1RhaWwoUGF0dGVyblRlcm0mIHRlcm0pCisgICAgICAgIFBhcmVudGhlc2VzVGFpbChQYXR0ZXJu
VGVybSYgdGVybSwgaW50IG5lc3RpbmdMZXZlbCkKICAgICAgICAgICAgIDogbV90ZXJtKHRlcm0p
CisgICAgICAgICAgICAsIG1fbmVzdGluZ0xldmVsKG5lc3RpbmdMZXZlbCkKICAgICAgICAgewog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgcHJvY2Vzc0JhY2t0cmFja3MoUmVn
ZXhHZW5lcmF0b3IqIGdlbmVyYXRvciwgVGVybUdlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIFRlcm1H
ZW5lcmF0aW9uU3RhdGUmIHBhcmVudGhlc2VzU3RhdGUsIExhYmVsIG5vbkdyZWVkeVRyeVBhcmVu
dGhlc2VzLCBMYWJlbCBmYWxsVGhyb3VnaCkKICAgICAgICAgewogICAgICAgICAgICAgbV9ub25H
cmVlZHlUcnlQYXJlbnRoZXNlcyA9IG5vbkdyZWVkeVRyeVBhcmVudGhlc2VzOwpAQCAtOTU5LDkg
Kzk3Myw5IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAg
ICAgICAgIHN0YXRlQmFja3RyYWNrLnNldEJhY2t0cmFja1RvTGFiZWwoJm1fYmFja3RyYWNrVG9M
YWJlbCk7CiAgICAgICAgICAgICBzdGF0ZS5zZXRCYWNrdHJhY2tMaW5rKCZtX2JhY2t0cmFjayk7
CiAgICAgICAgICAgICBzdGF0ZUJhY2t0cmFjay5zZXRTdWJEYXRhTGFiZWxQdHIoJm1fZGF0YUFm
dGVyTGFiZWxQdHIpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIG1fZG9EaXJlY3RCYWNr
dHJhY2sgPSBtX3BhcmVuQmFja3RyYWNrLmhhc0Rlc3RpbmF0aW9uKCk7Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgaWYgKChtX3Rlcm0ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVl
ZHkpIHx8IChtX3Rlcm0ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJOb25HcmVlZHkpKQogICAg
ICAgICAgICAgICAgIG1fZG9EaXJlY3RCYWNrdHJhY2sgPSBmYWxzZTsKIApAQCAtOTcxLDEzICs5
ODUsMTMgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAg
ICAgICAgICAgIHN0YXRlQmFja3RyYWNrLnNldEJhY2t0cmFja0p1bXBMaXN0KCZtX3BhdHRCYWNr
dHJhY2tKdW1wcyk7CiAgICAgICAgICAgICAgICAgc3RhdGVCYWNrdHJhY2suc2V0QmFja3RyYWNr
U291cmNlTGFiZWwoJm1fYmFja3RyYWNrRnJvbUFmdGVyUGFyZW5zKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBwYXJlbnRoZXNlc1N0YXRlLmNoYWluQmFja3Ry
YWNrSnVtcHMoJm1fcGF0dEJhY2t0cmFja0p1bXBzKTsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgc2V0TmV4dEl0ZXJhdGlvbihMYWJlbCBuZXh0SXRlcmF0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fYmFja3RyYWNrVG9MYWJlbC5pc1NldCgpKQorICAgICAgICAgICAgaWYg
KCFtX25lc3RpbmdMZXZlbCAmJiAhbV9iYWNrdHJhY2tUb0xhYmVsLmlzU2V0KCkpCiAgICAgICAg
ICAgICAgICAgbV9iYWNrdHJhY2tUb0xhYmVsID0gbmV4dEl0ZXJhdGlvbjsKICAgICAgICAgfQog
CkBAIC05ODUsMTIgKzk5OSwyNiBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFj
cm9Bc3NlCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fcGF0dEJhY2t0cmFja0p1bXBzLmFwcGVu
ZChqdW1wKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBnZW5lcmF0ZUNvZGUo
UmVnZXhHZW5lcmF0b3IqIGdlbmVyYXRvciwgSnVtcExpc3QmIGp1bXBzVG9OZXh0LCBib29sIG5l
eHRCYWNrdHJhY2tGYWxsVGhyb3VnaCkKKworICAgICAgICBib29sIGdlbmVyYXRlQ29kZShSZWdl
eEdlbmVyYXRvciogZ2VuZXJhdG9yLCBKdW1wTGlzdCYganVtcHNUb05leHQsIGJvb2wgcHJpb3JC
YWNrVHJhY2tGYWxsVGhyb3VnaCwgYm9vbCBuZXh0QmFja3RyYWNrRmFsbFRocm91Z2gpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXhUZW1wb3JhcnkgPSByZWdU
MDsKICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9IG1fdGVy
bS5mcmFtZUxvY2F0aW9uOwotICAgICAgICAgICAgCisgICAgICAgICAgICBKdW1wIGZyb21Qcmlv
ckJhY2t0cmFjazsKKyAgICAgICAgICAgIGJvb2wgbmVlZEp1bXBGb3JQcmlvclBhcmVuVGFpbCA9
IGZhbHNlOworCisgICAgICAgICAgICBpZiAocHJpb3JCYWNrVHJhY2tGYWxsVGhyb3VnaAorICAg
ICAgICAgICAgICAgICYmICgobV90ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5
KQorICAgICAgICAgICAgICAgICB8fCAobV90ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVy
Tm9uR3JlZWR5KQorICAgICAgICAgICAgICAgICB8fCAoIW1fZG9EaXJlY3RCYWNrdHJhY2sgJiYg
bV9wYXJlbkJhY2t0cmFjay5oYXNEZXN0aW5hdGlvbigpKSkpIHsKKyAgICAgICAgICAgICAgICAv
LyBJZiB0aGUgcHJpb3IgcGFyZW4gdGFpbCBjb2RlIGFzc3VtZWQgdGhhdCBpdCBjb3VsZCBmYWxs
IHRocm91Z2gsCisgICAgICAgICAgICAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZ2VuZXJhdGUgYWZ0
ZXIgcGFyZW4gYmFja3RyYWNrIGNvZGUsIHRoZW4gcHJvdmlkZQorICAgICAgICAgICAgICAgIC8v
IGEganVtcCBhcm91bmQgdGhhdCBjb2RlIGZvciB0aGUgcHJpb3IgcGFyZW4gdGFpbCBjb2RlLgor
ICAgICAgICAgICAgICAgIC8vIEEgcmVndWxhciBleHByZXNzaW5nIGxpa2UgKCh4eHgpLi4uKT8g
bmVlZHMgdGhpcy4KKyAgICAgICAgICAgICAgICBmcm9tUHJpb3JCYWNrdHJhY2sgPSBnZW5lcmF0
b3ItPmp1bXAoKTsKKyAgICAgICAgICAgICAgICBuZWVkSnVtcEZvclByaW9yUGFyZW5UYWlsID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCFtX2JhY2t0cmFjay5oYXNE
ZXN0aW5hdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fYmFja3RyYWNrVG9MYWJlbC5p
c1NldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNrLnNldExhYmVsKG1fYmFj
a3RyYWNrVG9MYWJlbCk7CkBAIC05OTksMTUgKzEwMjcsMTUgQEAgY2xhc3MgUmVnZXhHZW5lcmF0
b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFjay5z
ZXRCYWNrdHJhY2tKdW1wTGlzdCgmanVtcHNUb05leHQpOwogICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgbmV4dEJhY2t0cmFja0ZhbGxUaHJvdWdoID0gZmFsc2U7Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgLy8gQSBmYWlsdXJlIEFGVEVSIHRoZSBwYXJlbnMganVtcHMg
aGVyZSAtIEJhY2t0cmFjayB0byB0aGlzIHBhcmVuCiAgICAgICAgICAgICBtX2JhY2t0cmFja0Zy
b21BZnRlclBhcmVucyA9IGdlbmVyYXRvci0+bGFiZWwoKTsKLSAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICBpZiAobV9kYXRhQWZ0ZXJMYWJlbFB0ci5pc1NldCgpKQogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+bV9leHByZXNzaW9uU3RhdGUubV9iYWNrdHJhY2tSZWNvcmRzLmFwcGVuZChB
bHRlcm5hdGl2ZUJhY2t0cmFja1JlY29yZChtX2RhdGFBZnRlckxhYmVsUHRyLCBtX2JhY2t0cmFj
a0Zyb21BZnRlclBhcmVucykpOwogCiAgICAgICAgICAgICBtX3BhdHRCYWNrdHJhY2tKdW1wcy5s
aW5rKGdlbmVyYXRvcik7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKG1fdGVybS5x
dWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVkeSkgewogICAgICAgICAgICAgICAgIC8vIElm
IHRoaXMgaXMgLTEgd2UgaGF2ZSBub3cgdGVzdGVkIHdpdGggYm90aCB3aXRoIGFuZCB3aXRob3V0
IHRoZSBwYXJlbnMuCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5sb2FkRnJvbUZyYW1lKHBh
cmVudGhlc2VzRnJhbWVMb2NhdGlvbiwgaW5kZXhUZW1wb3JhcnkpOwpAQCAtMTAxNywyNyArMTA0
NSwzMyBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5sb2FkRnJvbUZyYW1lKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biwgaW5kZXhUZW1wb3JhcnkpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+YnJhbmNoMzIo
RXF1YWwsIGluZGV4VGVtcG9yYXJ5LCBJbW0zMigtMSkpLmxpbmtUbyhtX25vbkdyZWVkeVRyeVBh
cmVudGhlc2VzLCBnZW5lcmF0b3IpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAg
ICAgICAgICAgIGlmICghbV9kb0RpcmVjdEJhY2t0cmFjaykKICAgICAgICAgICAgICAgICBtX3Bh
cmVuQmFja3RyYWNrLnBsYW50SnVtcFRvQmFja3RyYWNrSWZFeGlzdHMoZ2VuZXJhdG9yKTsKLSAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICAvLyBBIGZhaWx1cmUgV0lUSElOIHRoZSBwYXJlbnMg
anVtcHMgaGVyZQorICAgICAgICAgICAgaWYgKG5lZWRKdW1wRm9yUHJpb3JQYXJlblRhaWwpCisg
ICAgICAgICAgICAgICAgZnJvbVByaW9yQmFja3RyYWNrLmxpbmsoZ2VuZXJhdG9yKTsKICAgICAg
ICAgICAgIG1fcGFyZW5CYWNrdHJhY2subGlua0FsdGVybmF0aXZlQmFja3RyYWNrcyhnZW5lcmF0
b3IpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChtX3Rlcm0uY2FwdHVyZSgpKQog
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3RvcmUzMihJbW0zMigtMSksIEFkZHJlc3Mob3V0
cHV0LCAobV90ZXJtLnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQp
KSk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKG1fdGVybS5xdWFudGl0eVR5cGUg
PT0gUXVhbnRpZmllckdyZWVkeSkgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3RvcmVU
b0ZyYW1lKEltbTMyKC0xKSwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uKTsKICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPmp1bXAoKS5saW5rVG8obV9mYWxsVGhyb3VnaCwgZ2VuZXJhdG9yKTsK
KyAgICAgICAgICAgICAgICBuZXh0QmFja3RyYWNrRmFsbFRocm91Z2ggPSBmYWxzZTsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIW5leHRCYWNrdHJhY2tGYWxsVGhyb3VnaCkKICAgICAgICAgICAg
ICAgICBtX2JhY2t0cmFjay5qdW1wVG9CYWNrdHJhY2soZ2VuZXJhdG9yKTsKIAogICAgICAgICAg
ICAgaWYgKCFtX2RvRGlyZWN0QmFja3RyYWNrKQogICAgICAgICAgICAgICAgIG1fYmFja3RyYWNr
LnNldE5leHRCYWNrdHJhY2tMYWJlbChtX2JhY2t0cmFja0Zyb21BZnRlclBhcmVucyk7CisKKyAg
ICAgICAgICAgIHJldHVybiBuZXh0QmFja3RyYWNrRmFsbFRocm91Z2g7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgUGF0dGVyblRlcm0mIG1fdGVybTsKKyAgICAgICAgaW50IG1fbmVz
dGluZ0xldmVsOwogICAgICAgICBMYWJlbCBtX25vbkdyZWVkeVRyeVBhcmVudGhlc2VzOwogICAg
ICAgICBMYWJlbCBtX2ZhbGxUaHJvdWdoOwogICAgICAgICBMYWJlbCBtX2JhY2t0cmFja1RvTGFi
ZWw7CkBAIC0xMDQ4LDggKzEwODIsNyBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUg
TWFjcm9Bc3NlCiAgICAgICAgIEJhY2t0cmFja0Rlc3RpbmF0aW9uIG1fYmFja3RyYWNrOwogICAg
ICAgICBib29sIG1fZG9EaXJlY3RCYWNrdHJhY2s7CiAgICAgfTsKLSAgICAKLSAgICAKKwogICAg
IHZvaWQgZ2VuZXJhdGVBc3NlcnRpb25CT0woVGVybUdlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAg
ICAgewogICAgICAgICBQYXR0ZXJuVGVybSYgdGVybSA9IHN0YXRlLnRlcm0oKTsKQEAgLTExNTIs
NyArMTE4NSw3IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAg
ICAgICAgfQogCiAgICAgICAgIHN0YXRlLmp1bXBUb0JhY2t0cmFjayh0aGlzLCB3b3JkQ2hhclRo
ZW5Xb3JkQ2hhcik7Ci0gICAgICAgIAorCiAgICAgICAgIG5vbldvcmRDaGFyVGhlbldvcmRDaGFy
LmxpbmsodGhpcyk7CiAgICAgICAgIHdvcmRDaGFyVGhlbk5vbldvcmRDaGFyLmxpbmsodGhpcyk7
CiAgICAgfQpAQCAtMTE4MCw3ICsxMjEzLDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2
YXRlIE1hY3JvQXNzZQogCiAgICAgICAgIGludCBtYXNrID0gMDsKICAgICAgICAgaW50IGNoUGFp
ciA9IGNoMSB8IChjaDIgPDwgMTYpOwotICAgICAgICAKKwogICAgICAgICBpZiAobV9wYXR0ZXJu
Lm1faWdub3JlQ2FzZSkgewogICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYShjaDEpKQogICAg
ICAgICAgICAgICAgIG1hc2sgfD0gMzI7CkBAIC0xMjI1LDcgKzEyNTgsNyBAQCBjbGFzcyBSZWdl
eEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQg
Y291bnRSZWdpc3RlciA9IHJlZ1QxOwogICAgICAgICBQYXR0ZXJuVGVybSYgdGVybSA9IHN0YXRl
LnRlcm0oKTsKICAgICAgICAgVUNoYXIgY2ggPSB0ZXJtLnBhdHRlcm5DaGFyYWN0ZXI7Ci0gICAg
CisKICAgICAgICAgbW92ZShJbW0zMigwKSwgY291bnRSZWdpc3Rlcik7CiAKICAgICAgICAgSnVt
cExpc3QgZmFpbHVyZXM7CkBAIC0xMjY3LDcgKzEzMDAsNyBAQCBjbGFzcyBSZWdleEdlbmVyYXRv
ciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgY291bnRSZWdp
c3RlciA9IHJlZ1QxOwogICAgICAgICBQYXR0ZXJuVGVybSYgdGVybSA9IHN0YXRlLnRlcm0oKTsK
ICAgICAgICAgVUNoYXIgY2ggPSB0ZXJtLnBhdHRlcm5DaGFyYWN0ZXI7Ci0gICAgCisKICAgICAg
ICAgbW92ZShJbW0zMigwKSwgY291bnRSZWdpc3Rlcik7CiAKICAgICAgICAgSnVtcCBmaXJzdFRp
bWVEb05vdGhpbmcgPSBqdW1wKCk7CkBAIC0xMzQ3LDcgKzEzODAsNyBAQCBjbGFzcyBSZWdleEdl
bmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgY2hh
cmFjdGVyID0gcmVnVDA7CiAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgY291bnRSZWdpc3RlciA9
IHJlZ1QxOwogICAgICAgICBQYXR0ZXJuVGVybSYgdGVybSA9IHN0YXRlLnRlcm0oKTsKLSAgICAK
KwogICAgICAgICBtb3ZlKEltbTMyKDApLCBjb3VudFJlZ2lzdGVyKTsKIAogICAgICAgICBKdW1w
TGlzdCBmYWlsdXJlczsKQEAgLTEzOTEsNyArMTQyNCw3IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9y
IDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBjaGFyYWN0ZXIg
PSByZWdUMDsKICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBjb3VudFJlZ2lzdGVyID0gcmVnVDE7
CiAgICAgICAgIFBhdHRlcm5UZXJtJiB0ZXJtID0gc3RhdGUudGVybSgpOwotICAgIAorCiAgICAg
ICAgIG1vdmUoSW1tMzIoMCksIGNvdW50UmVnaXN0ZXIpOwogCiAgICAgICAgIEp1bXAgZmlyc3RU
aW1lRG9Ob3RoaW5nID0ganVtcCgpOwpAQCAtMTQzMCw3ICsxNDYzLDcgQEAgY2xhc3MgUmVnZXhH
ZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgIHsKICAgICAgICAgQVNTRVJUKChwYXJl
bnRoZXNlc1Rlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVy
bikgfHwgKHBhcmVudGhlc2VzVGVybS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0
aWNhbEFzc2VydGlvbikpOwogICAgICAgICBBU1NFUlQocGFyZW50aGVzZXNUZXJtLnF1YW50aXR5
Q291bnQgPT0gMSk7Ci0gICAgCisKICAgICAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5j
dGlvbiA9IHBhcmVudGhlc2VzVGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbjsKICAgICAgICAg
dW5zaWduZWQgcHJlQ2hlY2tlZENvdW50ID0gKChwYXJlbnRoZXNlc1Rlcm0ucXVhbnRpdHlUeXBl
ID09IFF1YW50aWZpZXJGaXhlZENvdW50KSAmJiAocGFyZW50aGVzZXNUZXJtLnR5cGUgIT0gUGF0
dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkgPyBkaXNqdW5jdGlvbi0+bV9t
aW5pbXVtU2l6ZSA6IDA7CiAKQEAgLTE0NTIsNyArMTQ4NSw3IEBAIGNsYXNzIFJlZ2V4R2VuZXJh
dG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgICAgICAgICBMYWJlbCBiYWNrdHJhY2tC
ZWdpbih0aGlzKTsKICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihjb3VudFRvQ2hlY2spLCBp
bmRleCk7CiAgICAgICAgICAgICAgICAgc3RhdGUuYWRkQmFja3RyYWNrSnVtcChqdW1wKCkpOwot
ICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgc2tpcC5saW5rKHRoaXMpOwogCiAg
ICAgICAgICAgICAgICAgc3RhdGUuc2V0QmFja3RyYWNrTGFiZWwoYmFja3RyYWNrQmVnaW4pOwpA
QCAtMTQ4NiwxNSArMTUxOSwxNSBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFj
cm9Bc3NlCiAKICAgICAgICAgICAgICAgICAvLyBNYXRjaGVkIGFuIGFsdGVybmF0aXZlLgogICAg
ICAgICAgICAgICAgIERhdGFMYWJlbFB0ciBkYXRhTGFiZWwgPSBzdG9yZVRvRnJhbWVXaXRoUGF0
Y2goYWx0ZXJuYXRpdmVGcmFtZUxvY2F0aW9uKTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAg
ICAgICAgICAgIGlmICghc3RhdGUuaXNMYXN0QWx0ZXJuYXRpdmUoKSB8fCBjb3VudFRvQ2hlY2sp
CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3Nlcy5hcHBlbmQoanVtcCgpKTsKIAogICAgICAg
ICAgICAgICAgIC8vIEFsdGVybmF0aXZlIGRpZCBub3QgbWF0Y2guCiAKICAgICAgICAgICAgICAg
ICBzdGF0ZS5zZXRCYWNrdHJhY2tEYXRhTGFiZWwoZGF0YUxhYmVsKTsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAvLyBEbyB3ZSBoYXZlIGEgYmFja3RyYWNrIGRlc3RpbmF0aW9u
PyAKKworICAgICAgICAgICAgICAgIC8vIERvIHdlIGhhdmUgYSBiYWNrdHJhY2sgZGVzdGluYXRp
b24/CiAgICAgICAgICAgICAgICAgLy8gICAgaWYgc28sIGxpbmsgdGhlIGRhdGEgbGFiZWwgdG8g
aXQuCiAgICAgICAgICAgICAgICAgc3RhdGUubGlua0RhdGFMYWJlbFRvQmFja3RyYWNrSWZFeGlz
dHModGhpcyk7CiAKQEAgLTE1NjYsNyArMTU5OSw5IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDog
cHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUGFyZW50aGVz
ZXNUYWlsKiBwYXJlbnRoZXNlc1RhaWwgPSBtX2V4cHJlc3Npb25TdGF0ZS5hZGRQYXJlbnRoZXNl
c1RhaWwodGVybSk7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgbV9leHByZXNzaW9uU3Rh
dGUuaW5jcmVtZW50UGFyZW5OZXN0aW5nTGV2ZWwoKTsKKwogICAgICAgICAgICAgLy8gZ2VuZXJh
dGUgdGhlIGJvZHkgb2YgdGhlIHBhcmVudGhlc2VzCiAgICAgICAgICAgICBUZXJtR2VuZXJhdGlv
blN0YXRlIHBhcmVudGhlc2VzU3RhdGUoZGlzanVuY3Rpb24sIHN0YXRlLmNoZWNrZWRUb3RhbCk7
CiAgICAgICAgICAgICBnZW5lcmF0ZVBhcmVudGhlc2VzRGlzanVuY3Rpb24oc3RhdGUudGVybSgp
LCBwYXJlbnRoZXNlc1N0YXRlLCBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24pOwpAQCAtMTU3NCw3
ICsxNjA5LDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAg
ICAgICAgICAgLy8gRm9yIG5vbi1maXhlZCBjb3VudHMsIGJhY2t0cmFjayBpZiB3ZSBkaWRuJ3Qg
bWF0Y2ggYW55dGhpbmcuCiAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eVR5cGUgIT0gUXVh
bnRpZmllckZpeGVkQ291bnQpCiAgICAgICAgICAgICAgICAgcGFyZW50aGVzZXNUYWlsLT5hZGRB
ZnRlclBhcmVuSnVtcChicmFuY2gzMihFcXVhbCwgaW5kZXgsIEFkZHJlc3Moc3RhY2tQb2ludGVy
UmVnaXN0ZXIsIChwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSkpKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgICAgICAvLyBzdG9yZSB0aGUgbWF0Y2ggZW5kIGluZGV4
CiAgICAgICAgICAgICBpZiAodGVybS5jYXB0dXJlKCkpIHsKICAgICAgICAgICAgICAgICBpbnQg
aW5wdXRPZmZzZXQgPSBzdGF0ZS5pbnB1dE9mZnNldCgpOwpAQCAtMTU4NSwxMSArMTYyMCwxMyBA
QCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3Mob3V0
cHV0LCAoKHRlcm0ucGFyZW50aGVzZXMuc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2Yo
aW50KSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAgICAgICAgIG1fZXhw
cmVzc2lvblN0YXRlLmRlY3JlbWVudFBhcmVuTmVzdGluZ0xldmVsKCk7CisKICAgICAgICAgICAg
IHBhcmVudGhlc2VzVGFpbC0+cHJvY2Vzc0JhY2t0cmFja3ModGhpcywgc3RhdGUsIHBhcmVudGhl
c2VzU3RhdGUsIG5vbkdyZWVkeVRyeVBhcmVudGhlc2VzLCBsYWJlbCgpKTsKIAogICAgICAgICAg
ICAgcGFyZW50aGVzZXNTdGF0ZS5nZXRCYWNrdHJhY2tEZXN0aW5hdGlvbigpLmNsZWFyKCk7Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlID09IFF1YW50
aWZpZXJOb25HcmVlZHkpCiAgICAgICAgICAgICAgICAgbm9uR3JlZWR5U2tpcFBhcmVudGhlc2Vz
LmxpbmsodGhpcyk7CiAgICAgICAgIH0KQEAgLTE3MDgsMTUgKzE3NDUsMTUgQEAgY2xhc3MgUmVn
ZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlQXNzZXJ0aW9uQk9MOgogICAgICAgICAgICAgZ2VuZXJhdGVBc3NlcnRpb25CT0woc3Rh
dGUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGVBc3NlcnRpb25FT0w6CiAgICAgICAgICAgICBnZW5lcmF0ZUFzc2VydGlvbkVP
TChzdGF0ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgCisKICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeToKICAgICAgICAgICAgIGdlbmVy
YXRlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5KHN0YXRlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKKwogICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlcjoK
ICAgICAgICAgICAgIHN3aXRjaCAodGVybS5xdWFudGl0eVR5cGUpIHsKICAgICAgICAgICAgIGNh
c2UgUXVhbnRpZmllckZpeGVkQ291bnQ6CkBAIC0xNzk1LDcgKzE4MzIsNyBAQCBjbGFzcyBSZWdl
eEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgIC8vIHN1ZmZpY2llbnQgaW5w
dXQgYXZhaWxhYmxlIHRvIHJ1biB0aGUgZmlyc3QgcmVwZWF0aW5nIGFsdGVybmF0aXZlLgogICAg
ICAgICAvLyBUaGUgbGFiZWwgJ2ZpcnN0QWx0ZXJuYXRpdmVJbnB1dENoZWNrZWQnIHdpbGwganVt
cCBkaXJlY3RseSB0byBtYXRjaGluZyAKICAgICAgICAgLy8gdGhlIGZpcnN0IHJlcGVhdGluZyBh
bHRlcm5hdGl2ZSBoYXZpbmcgc2tpcHBlZCB0aGlzIGNoZWNrLgotICAgICAgICAKKwogICAgICAg
ICBpZiAoc3RhdGUuYWx0ZXJuYXRpdmVWYWxpZCgpKSB7CiAgICAgICAgICAgICBQYXR0ZXJuQWx0
ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gc3RhdGUuYWx0ZXJuYXRpdmUoKTsKICAgICAgICAgICAg
IGlmICghYWx0ZXJuYXRpdmUtPm9uY2VUaHJvdWdoKCkpIHsKQEAgLTE4MTksNyArMTg1Niw3IEBA
IGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgICAgIC8v
IFRyYWNrIHdoZXRoZXIgYW55IGFsdGVybmF0aXZlcyBhcmUgc2hvcnRlciB0aGFuIHRoZSBmaXJz
dCBvbmUuCiAgICAgICAgICAgICBpZiAoIWFsdGVybmF0aXZlLT5vbmNlVGhyb3VnaCgpKQogICAg
ICAgICAgICAgICAgIGhhc1Nob3J0ZXJBbHRlcm5hdGl2ZXMgPSBoYXNTaG9ydGVyQWx0ZXJuYXRp
dmVzIHx8IChjb3VudENoZWNrZWRGb3JDdXJyZW50QWx0ZXJuYXRpdmUgPCBjb3VudFRvQ2hlY2tG
b3JGaXJzdEFsdGVybmF0aXZlKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBmb3IgKHN0
YXRlLnJlc2V0VGVybSgpOyBzdGF0ZS50ZXJtVmFsaWQoKTsgc3RhdGUubmV4dFRlcm0oKSkKICAg
ICAgICAgICAgICAgICBnZW5lcmF0ZVRlcm0oc3RhdGUpOwogCkBAIC0xODUyLDQyICsxODg5LDQy
IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgICAg
ICAgICAgICAgLy8gV2UgaGF2ZSBoYW5kbGVkIG5vbi1yZXBlYXRpbmcgYWx0ZXJuYXRpdmVzLCBq
dW1wIHRvIG5leHQgaXRlcmF0aW9uIAogICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbG9vcCBv
dmVyIHJlcGVhdGluZyBhbHRlcm5hdGl2ZXMuCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmp1
bXBUb0JhY2t0cmFjayh0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAgICAg
ICAgICAgICAgY291bnRUb0NoZWNrRm9yRmlyc3RBbHRlcm5hdGl2ZSA9IG5leHRBbHRlcm5hdGl2
ZS0+bV9taW5pbXVtU2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZXJlIHRoZSBsYXN0IGlucHV0IGNoZWNrZWQgZmFp
bGVkLgogICAgICAgICAgICAgICAgICAgICBub3RFbm91Z2hJbnB1dEZvclByZXZpb3VzQWx0ZXJu
YXRpdmUubGluayh0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUubGlua0FsdGVybmF0aXZlQmFja3RyYWNrcyh0aGlzKTsKIAogICAgICAgICAg
ICAgICAgICAgICAvLyBCYWNrIHVwIHRvIHN0YXJ0IHRoZSBsb29waW5nIGFsdGVybmF0aXZlcy4K
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50Q2hlY2tlZEZvckN1cnJlbnRBbHRlcm5hdGl2
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKGNvdW50Q2hlY2tlZEZvckN1
cnJlbnRBbHRlcm5hdGl2ZSksIGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgCisKICAgICAg
ICAgICAgICAgICAgICAgZmlyc3RBbHRlcm5hdGl2ZSA9IExhYmVsKHRoaXMpOwotICAgICAgICAg
ICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jaGVja2VkVG90YWwgPSBj
b3VudFRvQ2hlY2tGb3JGaXJzdEFsdGVybmF0aXZlOwogICAgICAgICAgICAgICAgICAgICBpZiAo
Y291bnRUb0NoZWNrRm9yRmlyc3RBbHRlcm5hdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IG5vdEVub3VnaElucHV0Rm9yUHJldmlvdXNBbHRlcm5hdGl2ZS5hcHBlbmQoanVtcElmTm9BdmFp
bGFibGVJbnB1dChjb3VudFRvQ2hlY2tGb3JGaXJzdEFsdGVybmF0aXZlKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgICAgIGNvdW50Q2hlY2tlZEZvckN1cnJlbnRB
bHRlcm5hdGl2ZSA9IGNvdW50VG9DaGVja0ZvckZpcnN0QWx0ZXJuYXRpdmU7Ci0gICAgICAgICAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgICAgIGZpcnN0QWx0ZXJuYXRpdmVJbnB1dENo
ZWNrZWQgPSBMYWJlbCh0aGlzKTsKIAogICAgICAgICAgICAgICAgICAgICBzZXRSZXBlYXRBbHRl
cm5hdGl2ZUxhYmVscyA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgaW50IGNvdW50VG9DaGVja0Zvck5leHRBbHRlcm5hdGl2ZSA9IG5leHRBbHRl
cm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvdW50Q2hlY2tlZEZvckN1cnJlbnRBbHRlcm5hdGl2ZSA+IGNvdW50
VG9DaGVja0Zvck5leHRBbHRlcm5hdGl2ZSkgeyAvLyBDQVNFIDE6IGN1cnJlbnQgYWx0ZXJuYXRp
dmUgd2FzIGxvbmdlciB0aGFuIHRoZSBuZXh0IG9uZS4KICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHRoZSBsYXN0IGlucHV0IGNoZWNrZWQgZmFpbGVkLgog
ICAgICAgICAgICAgICAgICAgICAgICAgbm90RW5vdWdoSW5wdXRGb3JQcmV2aW91c0FsdGVybmF0
aXZlLmxpbmsodGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgc3VmZmljZW50IGlucHV0IGF2YWlsYWJsZSB0byBydW4g
dGhlIG5leHQgYWx0ZXJuYXRpdmUgCiAgICAgICAgICAgICAgICAgICAgICAgICBub3RFbm91Z2hJ
bnB1dEZvclByZXZpb3VzQWx0ZXJuYXRpdmUuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQo
Y291bnRUb0NoZWNrRm9yTmV4dEFsdGVybmF0aXZlIC0gY291bnRDaGVja2VkRm9yQ3VycmVudEFs
dGVybmF0aXZlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgbm93IGluIHRo
ZSBjb3JyZWN0IHN0YXRlIHRvIGVudGVyIHRoZSBuZXh0IGFsdGVybmF0aXZlOyB0aGlzIGFkZCBp
cyBvbmx5IHJlcXVpcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBtaXJyb3IgYW5k
IHJldmVydCBvcGVyYXRpb24gb2YgdGhlIHN1YjMyLCBqdXN0IGJlbG93LgogICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkMzIoSW1tMzIoY291bnRDaGVja2VkRm9yQ3VycmVudEFsdGVybmF0aXZl
IC0gY291bnRUb0NoZWNrRm9yTmV4dEFsdGVybmF0aXZlKSwgaW5kZXgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJl
LCB0aGVuIHRoZSBsYXN0IGlucHV0IGNoZWNrZWQgcGFzc2VkLgogICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUubGlua0FsdGVybmF0aXZlQmFja3RyYWNrcyh0aGlzKTsKIApAQCAtMTkwMiwx
NCArMTkzOSwxNCBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAg
ICAgICAgICAgICAgICAgICAgICAgICBub3RFbm91Z2hJbnB1dEZvclByZXZpb3VzQWx0ZXJuYXRp
dmUubGluayh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKGNvdW50
VG9DaGVja0Zvck5leHRBbHRlcm5hdGl2ZSAtIGNvdW50Q2hlY2tlZEZvckN1cnJlbnRBbHRlcm5h
dGl2ZSksIGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdEVub3VnaElucHV0Rm9y
UHJldmlvdXNBbHRlcm5hdGl2ZS5hcHBlbmQoanVtcCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBhbHRlcm5hdGl2ZSBp
cyBsb25nZXIgdGhhbiB0aGUgY3VycmVudCBvbmU7IGNoZWNrIHRoZSBkaWZmZXJlbmNlLgogICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGUubGlua0FsdGVybmF0aXZlQmFja3RyYWNrcyh0aGlz
KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgbm90RW5vdWdoSW5wdXRGb3JQcmV2aW91c0Fs
dGVybmF0aXZlLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGNvdW50VG9DaGVja0Zvck5l
eHRBbHRlcm5hdGl2ZSAtIGNvdW50Q2hlY2tlZEZvckN1cnJlbnRBbHRlcm5hdGl2ZSkpOwogICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBDQVNFIDM6IEJvdGggYWx0ZXJuYXRpdmVzIGFy
ZSB0aGUgc2FtZSBsZW5ndGguCiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY291bnRD
aGVja2VkRm9yQ3VycmVudEFsdGVybmF0aXZlID09IGNvdW50VG9DaGVja0Zvck5leHRBbHRlcm5h
dGl2ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIG5leHQgYWx0ZXJhdGl2ZSBpcyB0aGUgc2FtZSBsZW5ndGggYXMgdGhpcyBv
bmUsIHRoZW4gbm8gbmVlZCB0byBjaGVjayB0aGUgaW5wdXQgLQogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgdGhlcmUgd2FzIHN1ZmZpY2VudCBpbnB1dCB0byBydW4gdGhlIGN1cnJlbnQg
YWx0ZXJuYXRpdmUgdGhlbiB0aGVyZSBpcyBzdWZmaWNpZW50CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpbnB1dCB0byBydW4gdGhlIG5leHQgb25lOyBpZiBub3QsIHRoZXJlIGlzbid0LgpA
QCAtMTkyMSw3ICsxOTU4LDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3Jv
QXNzZQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgYWxsIEFsdGVybmF0aXZlcyBmYWlsZWQu
Li4KIAogICAgICAgICBzdGF0ZS5jaGVja2VkVG90YWwgLT0gY291bnRDaGVja2VkRm9yQ3VycmVu
dEFsdGVybmF0aXZlOwpAQCAtMTk3OSw3ICsyMDE2LDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3Ig
OiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICBzdG9yZTMyKGluZGV4LCBBZGRyZXNzKG91dHB1dCkpOwogICAgICAgICAgICAgfQot
ICAgICAgICAKKwogICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgc3VmZmljZW50IGlu
cHV0IHRvIHJ1biB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUgYWdhaW4uCiAgICAgICAgICAgICBqdW1w
SWZBdmFpbGFibGVJbnB1dChpbmNyZW1lbnRGb3JOZXh0SXRlcikubGlua1RvKGZpcnN0QWx0ZXJu
YXRpdmVJbnB1dENoZWNrZWQsIHRoaXMpOwogICAgICAgICAgICAgLy8gTm8gLSBpbnN1ZmZpY2Vu
dCBpbnB1dCB0byBydW4gdGhlIGZpcnN0IGFsdGVyYW5hdGl2ZSwgYXJlIHRoZXJlIGFueSBvdGhl
ciBhbHRlcm5hdGl2ZXMgd2UKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNjM1KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTItMDkg
IE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjczMDY1Pyk6IEEgcmVn
ZXggbm8gbG9uZ2VyIHdvcmtzIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTA1NzAKKworICAgICAgICBBZGRlZCB0ZXN0cyB0aGF0IGNhbWUgZnJvbSBz
dWJtaXR0ZXIgdG8gdmFsaWRhdGUgY2hhbmdlLgorCisgICAgICAgICogZmFzdC9yZWdleC9wYXJl
bnRoZXNlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9yZWdleC9zY3JpcHQtdGVzdHMv
cGFyZW50aGVzZXMuanM6CisKIDIwMTAtMTItMDkgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3JlZ2V4L3BhcmVudGhlc2VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3BhcmVudGhlc2VzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNzM2MzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3BhcmVudGhlc2VzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQCBQQVNTIHJlZ2V4cDI0LmV4ZWMo
JzEyMycpIGlzIG51bGwKIFBBU1MgcmVnZXhwMjUuZXhlYygndGhpcyBpcyBhIHRlc3QnKSBpcyBb
J3RoaXMnLCd0aGlzJyx1bmRlZmluZWRdCiBQQVNTIHJlZ2V4cDI1LmV4ZWMoJyF0aGlzIGlzIGEg
dGVzdCcpIGlzIG51bGwKIFBBU1MgcmVnZXhwMjYuZXhlYygnYWFhJykgaXMgWydhYWEnLHVuZGVm
aW5lZCx1bmRlZmluZWRdCitQQVNTIHJlZ2V4cDI3LmV4ZWMoJ2ZpbGU6Ly8vVXNlcnMvU29tZW9u
ZS9EZXNrdG9wL0hlbGxvV29ybGQvaW5kZXguaHRtbCcpIGlzIFsnZmlsZTovLy9Vc2Vycy9Tb21l
b25lL0Rlc2t0b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sJywnZmlsZScsJy8vJywnJyx1bmRlZmlu
ZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCwnJyx1bmRlZmluZWQsJy9Vc2Vycy9Tb21lb25lL0Rlc2t0
b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sJyx1bmRlZmluZWQsdW5kZWZpbmVkXQorUEFTUyByZWdl
eHAyOC5leGVjKCdmaWxlOi8vL1VzZXJzL1NvbWVvbmUvRGVza3RvcC9IZWxsb1dvcmxkL2luZGV4
Lmh0bWwnKSBpcyBbJ2ZpbGU6JywnZmlsZScsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQs
dW5kZWZpbmVkLHVuZGVmaW5lZF0KIFBBU1MgJ0hpIEJvYicubWF0Y2goLyhSb2IpfChCb2IpfChS
b2JlcnQpfChCb2JieSkvKSBpcyBbJ0JvYicsdW5kZWZpbmVkLCdCb2InLHVuZGVmaW5lZCx1bmRl
ZmluZWRdCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3BhcmVudGhlc2VzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3BhcmVudGhlc2VzLmpzCShyZXZp
c2lvbiA3MzYzNSkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3BhcmVu
dGhlc2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw1MSBAQCBzaG91bGRCZU51bGwo
InJlZ2V4cDI1LmV4ZWMoJyF0aGlzIGlzIGEgCiB2YXIgcmVnZXhwMjYgPSAvYShiKShhKil8YWFh
LzsKIHNob3VsZEJlKCJyZWdleHAyNi5leGVjKCdhYWEnKSIsICJbJ2FhYScsdW5kZWZpbmVkLHVu
ZGVmaW5lZF0iKTsKIAordmFyIHJlZ2V4cDI3ID0gbmV3IFJlZ0V4cCgKKyAgICAiXiIgKworICAg
ICIoPzoiICsKKyAgICAgICAgIihbXjovPyNdKyk6IiArIC8qIHNjaGVtZSAqLworICAgICIpPyIg
KworICAgICIoPzoiICsKKyAgICAgICAgIigvLykiICsgLyogYXV0aG9yaXR5Um9vdCAqLworICAg
ICAgICAiKCIgKyAvKiBhdXRob3JpdHkgKi8KKyAgICAgICAgICAgICIoPzoiICsKKyAgICAgICAg
ICAgICAgICAiKCIgKyAvKiB1c2VySW5mbyAqLworICAgICAgICAgICAgICAgICAgICAiKFteOkBd
KikiICsgLyogdXNlciAqLworICAgICAgICAgICAgICAgICAgICAiOj8iICsKKyAgICAgICAgICAg
ICAgICAgICAgIihbXjpAXSopIiArIC8qIHBhc3N3b3JkICovCisgICAgICAgICAgICAgICAgIik/
IiArCisgICAgICAgICAgICAgICAgIkAiICsKKyAgICAgICAgICAgICIpPyIgKworICAgICAgICAg
ICAgIihbXjovPyNdKikiICsgLyogZG9tYWluICovCisgICAgICAgICAgICAiKD86OihcXGQqKSk/
IiArIC8qIHBvcnQgKi8KKyAgICAgICAgIikiICsKKyAgICAiKT8iICsKKyAgICAiKFtePyNdKiki
ICsgLypwYXRoKi8KKyAgICAiKD86XFw/KFteI10qKSk/IiArIC8qIHF1ZXJ5U3RyaW5nICovCisg
ICAgIig/OiMoLiopKT8iIC8qZnJhZ21lbnQgKi8KKyk7CitzaG91bGRCZSgicmVnZXhwMjcuZXhl
YygnZmlsZTovLy9Vc2Vycy9Tb21lb25lL0Rlc2t0b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sJyki
LCAiWydmaWxlOi8vL1VzZXJzL1NvbWVvbmUvRGVza3RvcC9IZWxsb1dvcmxkL2luZGV4Lmh0bWwn
LCdmaWxlJywnLy8nLCcnLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLCcnLHVuZGVmaW5l
ZCwnL1VzZXJzL1NvbWVvbmUvRGVza3RvcC9IZWxsb1dvcmxkL2luZGV4Lmh0bWwnLHVuZGVmaW5l
ZCx1bmRlZmluZWRdIik7CisKK3ZhciByZWdleHAyOCA9IG5ldyBSZWdFeHAoCisgICAgIl4iICsK
KyAgICAiKD86IiArCisgICAgICAgICIoW146Lz8jXSspOiIgKyAvKiBzY2hlbWUgKi8KKyAgICAi
KT8iICsKKyAgICAiKD86IiArCisgICAgICAgICIoLy8pIiArIC8qIGF1dGhvcml0eVJvb3QgKi8K
KyAgICAgICAgIigiICsgLyogYXV0aG9yaXR5ICovCisgICAgICAgICAgICAiKCIgKyAvKiB1c2Vy
SW5mbyAqLworICAgICAgICAgICAgICAgICIoW146QF0qKSIgKyAvKiB1c2VyICovCisgICAgICAg
ICAgICAgICAgIjo/IiArCisgICAgICAgICAgICAgICAgIihbXjpAXSopIiArIC8qIHBhc3N3b3Jk
ICovCisgICAgICAgICAgICAiKT8iICsKKyAgICAgICAgICAgICJAIiArCisgICAgICAgICIpIiAr
CisgICAgIik/IgorKTsKK3Nob3VsZEJlKCJyZWdleHAyOC5leGVjKCdmaWxlOi8vL1VzZXJzL1Nv
bWVvbmUvRGVza3RvcC9IZWxsb1dvcmxkL2luZGV4Lmh0bWwnKSIsICJbJ2ZpbGU6JywnZmlsZScs
dW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZF0iKTsKKwog
c2hvdWxkQmUoIidIaSBCb2InLm1hdGNoKC8oUm9iKXwoQm9iKXwoUm9iZXJ0KXwoQm9iYnkpLyki
LCAiWydCb2InLHVuZGVmaW5lZCwnQm9iJyx1bmRlZmluZWQsdW5kZWZpbmVkXSIpOwogCiB2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="66988"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>