<?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>50828</bug_id>
          
          <creation_ts>2010-12-10 10:26:39 -0800</creation_ts>
          <short_desc>[v8] More CSS wrappers GC work: keep document&apos;s style sheets, style sheet and css rule lists&apos; items in proper object groups</short_desc>
          <delta_ts>2010-12-13 05:34:27 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="anton muhin">antonm</reporter>
          <assigned_to name="anton muhin">antonm</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>320229</commentid>
    <comment_count>0</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-12-10 10:26:39 -0800</bug_when>
    <thetext>[v8] More CSS wrappers GC work: keep document&apos;s style sheets, style sheet and css rule lists&apos; items in proper object groups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320332</commentid>
    <comment_count>1</comment_count>
      <attachid>76238</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-12-10 12:34:20 -0800</bug_when>
    <thetext>Created attachment 76238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320334</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-10 12:37:20 -0800</bug_when>
    <thetext>Attachment 76238 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/dom/StyleSheet/gc-rule-children-wrappers-expected.txt&apos;, u&apos;LayoutTests/fast/dom/StyleSheet/gc-rule-children-wrappers.html&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/bindings/v8/DOMData.h&apos;, u&apos;WebCore/bindings/v8/DOMDataStore.h&apos;, u&apos;WebCore/bindings/v8/V8DOMMap.cpp&apos;, u&apos;WebCore/bindings/v8/V8DOMMap.h&apos;, u&apos;WebCore/bindings/v8/V8GCController.cpp&apos;]&quot; exit_code: 1
WebCore/bindings/v8/V8DOMMap.h:39:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320383</commentid>
    <comment_count>3</comment_count>
      <attachid>76238</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-10 13:53:35 -0800</bug_when>
    <thetext>Comment on attachment 76238
Patch

Thanks for working on these bugs!  I caused some of these problems but I couldn&apos;t figure out how to fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320584</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-10 21:52:56 -0800</bug_when>
    <thetext>Are you positive that the new subtests belong to gc-rule-children-wrappers? Are they about rule children wrappers?

Please don&apos;t land unless the answer is yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320606</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-10 22:31:26 -0800</bug_when>
    <thetext>I&apos;m not sure I understand your question.  If you&apos;d prefer the new tests to be in a separate file, we can certainly do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320612</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-10 23:13:13 -0800</bug_when>
    <thetext>I didn&apos;t try very hard to understand what the new tests do - but yes, it seems like they do not test &quot;rule children wrappers&quot; behavior, and need to be in a different file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321001</commentid>
    <comment_count>7</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-12-13 02:30:18 -0800</bug_when>
    <thetext>Adam, Alexey, thanks a lot for comments.

I&apos;ll revert my changes to layout tests for now and would add another layout test later.

(In reply to comment #6)
&gt; I didn&apos;t try very hard to understand what the new tests do - but yes, it seems like they do not test &quot;rule children wrappers&quot; behavior, and need to be in a different file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321032</commentid>
    <comment_count>8</comment_count>
      <attachid>76366</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-12-13 04:03:25 -0800</bug_when>
    <thetext>Created attachment 76366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321034</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 04:05:45 -0800</bug_when>
    <thetext>Attachment 76366 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/bindings/v8/DOMData.h&apos;, u&apos;WebCore/bindings/v8/DOMDataStore.h&apos;, u&apos;WebCore/bindings/v8/V8DOMMap.cpp&apos;, u&apos;WebCore/bindings/v8/V8DOMMap.h&apos;, u&apos;WebCore/bindings/v8/V8GCController.cpp&apos;]&quot; exit_code: 1
WebCore/bindings/v8/V8DOMMap.h:39:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321036</commentid>
    <comment_count>10</comment_count>
      <attachid>76366</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-13 04:10:31 -0800</bug_when>
    <thetext>Comment on attachment 76366
Patch

Rubber stamping revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321063</commentid>
    <comment_count>11</comment_count>
      <attachid>76366</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 05:34:21 -0800</bug_when>
    <thetext>Comment on attachment 76366
Patch

Clearing flags on attachment: 76366

Committed r73907: &lt;http://trac.webkit.org/changeset/73907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321064</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 05:34:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76238</attachid>
            <date>2010-12-10 12:34:20 -0800</date>
            <delta_ts>2010-12-13 04:03:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50828-20101210233418.patch</filename>
            <type>text/plain</type>
            <size>22211</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mzc0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMTItMTAgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
djhdIE1vcmUgQ1NTIHdyYXBwZXJzIEdDIHdvcms6IGtlZXAgZG9jdW1lbnQncyBzdHlsZSBzaGVl
dHMsIHN0eWxlIHNoZWV0IGFuZCBjc3MgcnVsZSBsaXN0cycgaXRlbXMgaW4gcHJvcGVyIG9iamVj
dCBncm91cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwODI4CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01EYXRhOjpXcmFwcGVyTWFwT2JqZWN0UmVtb3Zlcjo6dmlzaXRET01XcmFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGE6OnJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHVua2VkVGFibGU6OnZpc2l0KToKKyAgICAgICAgKFdlYkNvcmU6OkNodW5rZWRUYWJsZTo6
dmlzaXRFbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6SW50cnVzaXZl
RE9NV3JhcHBlck1hcDo6dmlzaXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpJ
bnRydXNpdmVET01XcmFwcGVyTWFwOjpDaHVua2VkVGFibGVUcmFpdHM6OnZpc2l0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOERPTU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVB
bGxET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0RE9N
Tm9kZXNJbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6dmlzaXRET01PYmplY3Rz
SW5DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0QWN0aXZlRE9NT2JqZWN0
c0luQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjp2aXNpdERPTVNWR0VsZW1lbnRJ
bnN0YW5jZXNJbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NTWFw
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWFrUmVmZXJlbmNlTWFwOjp2aXNpdCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
T2JqZWN0VmlzaXRvcjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVuc3Vy
ZVdlYWtET01Ob2RlVmlzaXRvcjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdDUHJvbG9ndWVWaXNpdG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUdyb3VwZXJWaXNpdG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUdyb3VwZXJWaXNpdG9yOjphcHBseUdyb3VwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TU9iamVjdEdyb3VwZXJWaXNpdG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R0NFcGlsb2d1ZVZpc2l0b3I6OnZpc2l0RE9NV3JhcHBlcik6CisKIDIwMTAtMTItMTAgTmF0
ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
dHRpIEtvaXZpc3RvLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgJKHJldmlzaW9uIDczNzM5KQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCBoYW5kbGVX
ZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1hcFR5cGUsIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+LCBUKiBkb21PYmplY3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIHJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcChBYnN0
cmFjdFdlYWtSZWZlcmVuY2VNYXA8VCwgdjg6Ok9iamVjdD4mIGRvbU1hcCk7CisgICAgICAgIHN0
YXRpYyB2b2lkIHJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcChET01EYXRhU3RvcmUqIHN0b3Jl
LCBBYnN0cmFjdFdlYWtSZWZlcmVuY2VNYXA8VCwgdjg6Ok9iamVjdD4mIGRvbU1hcCk7CiAKICAg
ICAgICAgVGhyZWFkSWRlbnRpZmllciBvd25pbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX293
bmluZ1RocmVhZDsgfQogCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICAgICAgY2xhc3MgV3JhcHBlck1hcE9iamVj
dFJlbW92ZXIgOiBwdWJsaWMgV2Vha1JlZmVyZW5jZU1hcDxULCB2ODo6T2JqZWN0Pjo6VmlzaXRv
ciB7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdERPTVdy
YXBwZXIoVCogZG9tT2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB2OE9iamVjdCkK
KyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBz
dG9yZSwgVCogZG9tT2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB2OE9iamVjdCkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGUgPSBW
OERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHY4T2JqZWN0KTsKICAgICAgICAgICAgICAgICBk
ZXJlZk9iamVjdCh0eXBlLCBkb21PYmplY3QpOwpAQCAtMTAyLDEwICsxMDIsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9p
ZCBET01EYXRhOjpyZW1vdmVPYmplY3RzRnJvbVdyYXBwZXJNYXAoQWJzdHJhY3RXZWFrUmVmZXJl
bmNlTWFwPFQsIHY4OjpPYmplY3Q+JiBkb21NYXApCisgICAgdm9pZCBET01EYXRhOjpyZW1vdmVP
YmplY3RzRnJvbVdyYXBwZXJNYXAoRE9NRGF0YVN0b3JlKiBzdG9yZSwgQWJzdHJhY3RXZWFrUmVm
ZXJlbmNlTWFwPFQsIHY4OjpPYmplY3Q+JiBkb21NYXApCiAgICAgewogICAgICAgICBXcmFwcGVy
TWFwT2JqZWN0UmVtb3ZlcjxUPiByZW1vdmVyOwotICAgICAgICBkb21NYXAudmlzaXQoJnJlbW92
ZXIpOworICAgICAgICBkb21NYXAudmlzaXQoc3RvcmUsICZyZW1vdmVyKTsKICAgICAgICAgZG9t
TWFwLmNsZWFyKCk7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFT
dG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgJ
KHJldmlzaW9uIDczNzM5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDE0ICsxMDYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgbV9sYXN0ID0gbV9jdXJyZW50ICsgQ0hVTktfU0laRTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgdmlzaXQodHlwZW5hbWUgVHJhaXRzOjpWaXNpdG9yKiB2aXNpdG9yKQor
ICAgICAgICB2b2lkIHZpc2l0KERPTURhdGFTdG9yZSogc3RvcmUsIHR5cGVuYW1lIFRyYWl0czo6
VmlzaXRvciogdmlzaXRvcikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NodW5rcykK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHZpc2l0RW50cmllcyhtX2No
dW5rcy0+bV9lbnRyaWVzLCBtX2N1cnJlbnQsIHZpc2l0b3IpOworICAgICAgICAgICAgdmlzaXRF
bnRyaWVzKHN0b3JlLCBtX2NodW5rcy0+bV9lbnRyaWVzLCBtX2N1cnJlbnQsIHZpc2l0b3IpOwog
ICAgICAgICAgICAgZm9yIChDaHVuayogY2h1bmsgPSBtX2NodW5rcy0+bV9wcmV2aW91czsgY2h1
bms7IGNodW5rID0gY2h1bmstPm1fcHJldmlvdXMpCi0gICAgICAgICAgICAgICAgdmlzaXRFbnRy
aWVzKGNodW5rLT5tX2VudHJpZXMsIGNodW5rLT5tX2VudHJpZXMgKyBDSFVOS19TSVpFLCB2aXNp
dG9yKTsKKyAgICAgICAgICAgICAgICB2aXNpdEVudHJpZXMoc3RvcmUsIGNodW5rLT5tX2VudHJp
ZXMsIGNodW5rLT5tX2VudHJpZXMgKyBDSFVOS19TSVpFLCB2aXNpdG9yKTsKICAgICAgICAgfQog
CiAgICAgICBwcml2YXRlOgpAQCAtMTI5LDEwICsxMjksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgICAgIFRyYWl0czo6Y2xlYXIoZW50cnkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRFbnRyaWVzKFQqIGZpcnN0LCBUKiBsYXN0LCB0eXBlbmFt
ZSBUcmFpdHM6OlZpc2l0b3IqIHZpc2l0b3IpCisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0RW50
cmllcyhET01EYXRhU3RvcmUqIHN0b3JlLCBUKiBmaXJzdCwgVCogbGFzdCwgdHlwZW5hbWUgVHJh
aXRzOjpWaXNpdG9yKiB2aXNpdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKFQqIGVu
dHJ5ID0gZmlyc3Q7IGVudHJ5IDwgbGFzdDsgZW50cnkrKykKLSAgICAgICAgICAgICAgICBUcmFp
dHM6OnZpc2l0KGVudHJ5LCB2aXNpdG9yKTsKKyAgICAgICAgICAgICAgICBUcmFpdHM6OnZpc2l0
KHN0b3JlLCBlbnRyeSwgdmlzaXRvcik7CiAgICAgICAgIH0KIAogICAgICAgICBDaHVuayogbV9j
aHVua3M7CkBAIC0xODUsOSArMTg1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgICAgIHJldHVybiBvYmotPndyYXBwZXIoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgdmlydHVhbCB2b2lkIHZpc2l0KFZpc2l0b3IqIHZpc2l0b3IpCisgICAgICAgICAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoRE9NRGF0YVN0b3JlKiBzdG9yZSwgVmlzaXRvciogdmlzaXRvcikKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtX3RhYmxlLnZpc2l0KHZpc2l0b3IpOworICAg
ICAgICAgICAgICAgIG1fdGFibGUudmlzaXQoc3RvcmUsIHZpc2l0b3IpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlSWZQcmVzZW50KE5vZGUqIGtleSwg
djg6OlBlcnNpc3RlbnQ8djg6OkRhdGE+IHZhbHVlKTsKQEAgLTIyMCwxMiArMjIwLDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgZW50cnktPkRpc3Bvc2UoKTsK
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdCh2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiogZW50cnksIFZpc2l0b3IqIHZpc2l0b3IpCisgICAg
ICAgICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXQoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4qIGVudHJ5LCBWaXNpdG9yKiB2aXNpdG9yKQogICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IFY4Tm9kZTo6dG9OYXRp
dmUoKmVudHJ5KTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPndyYXBwZXIoKSA9
PSBlbnRyeSk7CiAKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRvci0+dmlzaXRET01XcmFwcGVy
KG5vZGUsICplbnRyeSk7CisgICAgICAgICAgICAgICAgICAgIHZpc2l0b3ItPnZpc2l0RE9NV3Jh
cHBlcihzdG9yZSwgbm9kZSwgKmVudHJ5KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9OwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAkocmV2aXNpb24gNzM3MzkpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAs
MjQgKzkwLDI2IEBAIERPTVdyYXBwZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNlPiYgZ2V0RE8KIAog
dm9pZCByZW1vdmVBbGxET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKCkKIHsKKyAgICBET01EYXRh
U3RvcmUmIHN0b3JlID0gZ2V0RE9NRGF0YVN0b3JlKCk7CisKICAgICB2ODo6SGFuZGxlU2NvcGUg
c2NvcGU7CiAKICAgICAvLyBUaGUgRE9NIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIHR5cGVz
IG9ubHkgZXhpc3Qgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIGlmIChXVEY6OmlzTWFpblRocmVh
ZCgpKSB7CiAgICAgICAgIC8vIFJlbW92ZSBhbGwgRE9NIG5vZGVzLgotICAgICAgICBET01EYXRh
OjpyZW1vdmVPYmplY3RzRnJvbVdyYXBwZXJNYXA8Tm9kZT4oZ2V0RE9NTm9kZU1hcCgpKTsKKyAg
ICAgICAgRE9NRGF0YTo6cmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwPE5vZGU+KCZzdG9yZSwg
c3RvcmUuZG9tTm9kZU1hcCgpKTsKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIC8vIFJlbW92
ZSBhbGwgU1ZHIGVsZW1lbnQgaW5zdGFuY2VzIGluIHRoZSB3cmFwcGVyIG1hcC4KLSAgICAgICAg
RE9NRGF0YTo6cmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwPFNWR0VsZW1lbnRJbnN0YW5jZT4o
Z2V0RE9NU1ZHRWxlbWVudEluc3RhbmNlTWFwKCkpOworICAgICAgICBET01EYXRhOjpyZW1vdmVP
YmplY3RzRnJvbVdyYXBwZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNlPigmc3RvcmUsIHN0b3JlLmRv
bVN2Z0VsZW1lbnRJbnN0YW5jZU1hcCgpKTsKICNlbmRpZgogICAgIH0KIAogICAgIC8vIFJlbW92
ZSBhbGwgRE9NIG9iamVjdHMgaW4gdGhlIHdyYXBwZXIgbWFwLgotICAgIERPTURhdGE6OnJlbW92
ZU9iamVjdHNGcm9tV3JhcHBlck1hcDx2b2lkPihnZXRET01PYmplY3RNYXAoKSk7CisgICAgRE9N
RGF0YTo6cmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwPHZvaWQ+KCZzdG9yZSwgc3RvcmUuZG9t
T2JqZWN0TWFwKCkpOwogCiAgICAgLy8gUmVtb3ZlIGFsbCBhY3RpdmUgRE9NIG9iamVjdHMgaW4g
dGhlIHdyYXBwZXIgbWFwLgotICAgIERPTURhdGE6OnJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1h
cDx2b2lkPihnZXRBY3RpdmVET01PYmplY3RNYXAoKSk7CisgICAgRE9NRGF0YTo6cmVtb3ZlT2Jq
ZWN0c0Zyb21XcmFwcGVyTWFwPHZvaWQ+KCZzdG9yZSwgc3RvcmUuYWN0aXZlRG9tT2JqZWN0TWFw
KCkpOwogfQogCiB2b2lkIHZpc2l0RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1h
cDxOb2RlPjo6VmlzaXRvciogdmlzaXRvcikKQEAgLTEyMSw3ICsxMjMsNyBAQCB2b2lkIHZpc2l0
RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhCiAgICAgICAgIGlmICghc3RvcmUtPmRvbURh
dGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBzdG9yZS0+ZG9tTm9kZU1hcCgpLnZpc2l0KHZpc2l0b3Ip
OworICAgICAgICBzdG9yZS0+ZG9tTm9kZU1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsKICAg
ICB9CiB9CiAKQEAgLTEzNiw3ICsxMzgsNyBAQCB2b2lkIHZpc2l0RE9NT2JqZWN0c0luQ3VycmVu
dFRocmVhZChET01XCiAgICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFk
KCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBzdG9yZS0+ZG9tT2JqZWN0TWFwKCkudmlzaXQodmlzaXRvcik7CisgICAgICAgIHN0b3Jl
LT5kb21PYmplY3RNYXAoKS52aXNpdChzdG9yZSwgdmlzaXRvcik7CiAgICAgfQogfQogCkBAIC0x
NTEsNyArMTUzLDcgQEAgdm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHNJbkN1cnJlbnRUaHJlYQog
ICAgICAgICBpZiAoIXN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6Y3Vy
cmVudFRocmVhZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgc3RvcmUtPmFj
dGl2ZURvbU9iamVjdE1hcCgpLnZpc2l0KHZpc2l0b3IpOworICAgICAgICBzdG9yZS0+YWN0aXZl
RG9tT2JqZWN0TWFwKCkudmlzaXQoc3RvcmUsIHZpc2l0b3IpOwogICAgIH0KIH0KIApAQCAtMTY4
LDcgKzE3MCw3IEBAIHZvaWQgdmlzaXRET01TVkdFbGVtZW50SW5zdGFuY2VzSW5DdXJyZW4KICAg
ICAgICAgaWYgKCFzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJl
bnRUaHJlYWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHN0b3JlLT5kb21T
dmdFbGVtZW50SW5zdGFuY2VNYXAoKS52aXNpdCh2aXNpdG9yKTsKKyAgICAgICAgc3RvcmUtPmRv
bVN2Z0VsZW1lbnRJbnN0YW5jZU1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsKICAgICB9CiB9
CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgJKHJldmlzaW9uIDczNzM5KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSA8djguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIERPTURh
dGFTdG9yZTsKICAgICBjbGFzcyBOb2RlOwogI2lmIEVOQUJMRShTVkcpCiAgICAgY2xhc3MgU1ZH
RWxlbWVudEluc3RhbmNlOwpAQCAtNTAsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydE1hcCgpIHsgfQog
ICAgICAgICAgICAgdmlydHVhbCB2b2lkIGVuZE1hcCgpIHsgfQotICAgICAgICAgICAgdmlydHVh
bCB2b2lkIHZpc2l0RE9NV3JhcHBlcihLZXlUeXBlKiBrZXksIHY4OjpQZXJzaXN0ZW50PFZhbHVl
VHlwZT4gb2JqZWN0KSA9IDA7CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRET01XcmFw
cGVyKERPTURhdGFTdG9yZSogc3RvcmUsIEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8VmFs
dWVUeXBlPiBvYmplY3QpID0gMDsKICAgICAgICAgcHJvdGVjdGVkOgogICAgICAgICAgICAgdmly
dHVhbCB+VmlzaXRvcigpIHsgfQogICAgICAgICB9OwpAQCAtNTgsNyArNTksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdjg6OlBlcnNpc3RlbnQ8VmFsdWVUeXBlPiBn
ZXQoS2V5VHlwZSogb2JqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXQoS2V5VHlwZSog
b2JqLCB2ODo6UGVyc2lzdGVudDxWYWx1ZVR5cGU+IHdyYXBwZXIpID0gMDsKICAgICAgICAgdmly
dHVhbCBib29sIGNvbnRhaW5zKEtleVR5cGUqIG9iaikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXQoVmlzaXRvciogdmlzaXRvcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoRE9NRGF0YVN0b3JlKiBzdG9yZSwgVmlzaXRvciogdmlzaXRvcikgPSAwOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgcmVtb3ZlSWZQcmVzZW50KEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8
djg6OkRhdGE+IHZhbHVlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0gMDsK
IApAQCAtMTIyLDEyICsxMjMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJv
b2wgY29udGFpbnMoS2V5VHlwZSogb2JqKSB7IHJldHVybiBtX21hcC5jb250YWlucyhvYmopOyB9
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0KHR5cGVuYW1lIFBhcmVudDo6VmlzaXRvciog
dmlzaXRvcikKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0KERPTURhdGFTdG9yZSogc3RvcmUs
IHR5cGVuYW1lIFBhcmVudDo6VmlzaXRvciogdmlzaXRvcikKICAgICAgICAgewogICAgICAgICAg
ICAgdmlzaXRvci0+c3RhcnRNYXAoKTsKICAgICAgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8S2V5
VHlwZSosIFZhbHVlVHlwZSo+OjppdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCk7CiAgICAgICAg
ICAgICBmb3IgKDsgaXQgIT0gbV9tYXAuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAgICAgdmlz
aXRvci0+dmlzaXRET01XcmFwcGVyKGl0LT5maXJzdCwgdjg6OlBlcnNpc3RlbnQ8VmFsdWVUeXBl
PihpdC0+c2Vjb25kKSk7CisgICAgICAgICAgICAgICAgdmlzaXRvci0+dmlzaXRET01XcmFwcGVy
KHN0b3JlLCBpdC0+Zmlyc3QsIHY4OjpQZXJzaXN0ZW50PFZhbHVlVHlwZT4oaXQtPnNlY29uZCkp
OwogICAgICAgICAgICAgdmlzaXRvci0+ZW5kTWFwKCk7CiAgICAgICAgIH0KIApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDczNzM5KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDExICs0NSwxMyBAQAogI2luY2x1ZGUgIlY4Q1NTRm9udEZhY2VSdWxlLmgiCiAjaW5jbHVkZSAi
VjhDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAiVjhDU1NNZWRpYVJ1bGUuaCIKKyNpbmNsdWRl
ICJWOENTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAiVjhDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRl
ICJWOENTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4
TWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhTdHlsZVNo
ZWV0TGlzdC5oIgogI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgogCiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgpAQCAtMTM1LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIGVudW1lcmF0ZURPTU9iamVj
dE1hcChET01PYmoKIAogY2xhc3MgRE9NT2JqZWN0VmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVy
TWFwPHZvaWQ+OjpWaXNpdG9yIHsKIHB1YmxpYzoKLSAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcih2
b2lkKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgdm9p
ZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogICAgIHsKICAgICAgICAgV3JhcHBlclR5
cGVJbmZvKiB0eXBlID0gVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh3cmFwcGVyKTsKICAg
ICAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOwpAQCAtMTQ1LDcgKzE0Nyw3IEBAIHB1YmxpYzoKIAog
Y2xhc3MgRW5zdXJlV2Vha0RPTU5vZGVWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJNYXA8Tm9k
ZT46OlZpc2l0b3IgewogcHVibGljOgotICAgIHZvaWQgdmlzaXRET01XcmFwcGVyKE5vZGUqIG9i
amVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICB2b2lkIHZpc2l0
RE9NV3JhcHBlcihET01EYXRhU3RvcmUqIHN0b3JlLCBOb2RlKiBvYmplY3QsIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0ob2Jq
ZWN0KTsKICAgICAgICAgQVNTRVJUKHdyYXBwZXIuSXNXZWFrKCkpOwpAQCAtMTkzLDcgKzE5NSw3
IEBAIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjVW5wcm90ZWN0KHZvaWQqIGQKIAogY2xhc3MgR0NQ
cm9sb2d1ZVZpc2l0b3IgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciB7CiBw
dWJsaWM6Ci0gICAgdm9pZCB2aXNpdERPTVdyYXBwZXIodm9pZCogb2JqZWN0LCB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURh
dGFTdG9yZSogc3RvcmUsIHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlcikKICAgICB7CiAgICAgICAgIFdyYXBwZXJUeXBlSW5mbyogdHlwZUluZm8gPSBWOERP
TVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHdyYXBwZXIpOyAgCiAKQEAgLTI4Nyw3ICsyODksNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIEZJWE1FOiBncm91cGVyXy5yZXNlcnZlQ2FwYWNpdHkobm9k
ZV9tYXAuc2l6ZSgpKTsgID8KICAgICB9CiAKLSAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcihOb2Rl
KiBub2RlLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgIHZvaWQgdmlz
aXRET01XcmFwcGVyKERPTURhdGFTdG9yZSogc3RvcmUsIE5vZGUqIG5vZGUsIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewogICAgICAgICAvLyBJZiB0aGUgbm9kZSBp
cyBpbiBkb2N1bWVudCwgcHV0IGl0IGluIHRoZSBvd25lckRvY3VtZW50J3Mgb2JqZWN0IGdyb3Vw
LgogICAgICAgICAvLwpAQCAtMzIwLDI4ICszMjIsMzAgQEAgcHVibGljOgogICAgICAgICAgICAg
Z3JvdXBJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihyb290KTsKICAgICAgICAgfQog
ICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVtKGdyb3VwSWQsIHdyYXBwZXIpKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGFwcGx5R3JvdXBpbmcoKQotICAgIHsKLSAgICAgICAgLyogRklY
TUU6IFJlLWVuYWJsZWQgdGhpcyBjb2RlIHRvIGF2b2lkIEdDaW5nIHRoZXNlIHdyYXBwZXJzIQot
ICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnRseSB0aGlzIGRlcGVuZHMgb24gbG9va2luZyB1
cCB0aGUgd3JhcHBlcgotICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBhIEdDLCBidXQgd2Ug
ZG9uJ3Qga25vdyB3aGljaCBpc29sYXRlZCB3b3JsZAotICAgICAgICAgICAgICAgICAgICAgIHdl
J3JlIGluLCBzbyBpdCdzIHVuY2xlYXIgd2hpY2ggbWFwIHRvIGxvb2sgaW4uLi4KIAogICAgICAg
ICAvLyBJZiB0aGUgbm9kZSBpcyBzdHlsZWQgYW5kIHRoZXJlIGlzIGEgd3JhcHBlciBmb3IgdGhl
IGlubGluZQogICAgICAgICAvLyBzdHlsZSBkZWNsYXJhdGlvbiwgd2UgbmVlZCB0byBrZWVwIHRo
YXQgc3R5bGUgZGVjbGFyYXRpb24KICAgICAgICAgLy8gd3JhcHBlciBhbGl2ZSBhcyB3ZWxsLCBz
byB3ZSBhZGQgaXQgdG8gdGhlIG9iamVjdCBncm91cC4KICAgICAgICAgaWYgKG5vZGUtPmlzU3R5
bGVkRWxlbWVudCgpKSB7Ci0gICAgICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUpOwotICAgICAgICAgIENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCk7Ci0gICAgICAgICAg
aWYgKHN0eWxlICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHdyYXBwZXIgPSBnZXRET01PYmplY3RN
YXAoKS5nZXQoc3R5bGUpOworICAgICAgICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUpOworICAgICAgICAgICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKTsKKyAgICAg
ICAgICAgIGlmIChzdHlsZSkgeworICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBzdG9yZS0+ZG9t
T2JqZWN0TWFwKCkuZ2V0KHN0eWxlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXdyYXBwZXIuSXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVt
KGdyb3VwSWQsIHdyYXBwZXIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGlmIChub2RlLT5pc0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSByZWludGVycHJldF9jYXN0PERvY3VtZW50Kj4obm9kZSk7CisgICAgICAgICAgICB3
cmFwcGVyID0gc3RvcmUtPmRvbU9iamVjdE1hcCgpLmdldChkb2N1bWVudC0+c3R5bGVTaGVldHMo
KSk7CiAgICAgICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICAgICAgICBn
cm91cC5hcHBlbmQod3JhcHBlcik7Ci0gICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fZ3Jv
dXBlci5hcHBlbmQoR3JvdXBlckl0ZW0oZ3JvdXBJZCwgd3JhcHBlcikpOwogICAgICAgICB9Ci0g
ICAgICAgICovCisgICAgfQorCisgICAgdm9pZCBhcHBseUdyb3VwaW5nKCkKKyAgICB7CiAgICAg
ICAgIG1ha2VWOE9iamVjdEdyb3VwcyhtX2dyb3VwZXIpOwogICAgIH0KIApAQCAtMzY1LDM0ICsz
NjksNTQgQEAgcHVibGljOgogICAgICAgICBtYWtlVjhPYmplY3RHcm91cHMobV9ncm91cGVyKTsK
ICAgICB9CiAKLSAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcih2b2lkKiBvYmplY3QsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9N
RGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiB3cmFwcGVyKQogICAgIHsKICAgICAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IFY4
RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUod3JhcHBlcik7Ci0gICAgICAgIC8vIEZJWE1FOiBl
eHRlbmQgV3JhcHBlclR5cGVJbmZvIHdpdGggaXNTdHlsZSB0byBzaW1wbGlmeSB0aGUgY2hlY2sg
YmVsb3cuCisgICAgICAgIC8vIEZJWE1FOiBleHRlbmQgV3JhcHBlclR5cGVJbmZvIHdpdGggaXNT
dHlsZSB0byBzaW1wbGlmeSB0aGUgY2hlY2sgYmVsb3cgb3IgY29uc2lkZXIKKyAgICAgICAgLy8g
YWRkaW5nIGEgdmlydHVhbCBtZXRob2QgdG8gV3JhcHBlclR5cGVJbmZvIHdoaWNoIHdvdWxkIGtu
b3cgaG93IHRvIGdyb3VwIG9iamVjdHMuCiAgICAgICAgIC8vIEZJWE1FOiBjaGVjayBpZiB0aGVy
ZSBhcmUgb3RoZXIgU3R5bGVCYXNlIHdyYXBwZXJzIHdlIHNob3VsZCBjYXJlIG9mLgotICAgICAg
ICBpZiAoIVY4Q1NTU3R5bGVTaGVldDo6aW5mby5lcXVhbHModHlwZUluZm8pCi0gICAgICAgICAg
ICAmJiAhVjhDU1NDaGFyc2V0UnVsZTo6aW5mby5lcXVhbHModHlwZUluZm8pCi0gICAgICAgICAg
ICAmJiAhVjhDU1NGb250RmFjZVJ1bGU6OmluZm8uZXF1YWxzKHR5cGVJbmZvKQotICAgICAgICAg
ICAgJiYgIVY4Q1NTU3R5bGVSdWxlOjppbmZvLmVxdWFscyh0eXBlSW5mbykKLSAgICAgICAgICAg
ICYmICFWOENTU0ltcG9ydFJ1bGU6OmluZm8uZXF1YWxzKHR5cGVJbmZvKQotICAgICAgICAgICAg
JiYgIVY4Q1NTTWVkaWFSdWxlOjppbmZvLmVxdWFscyh0eXBlSW5mbykpIHsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBTdHlsZUJhc2UqIHN0eWxlQmFzZSA9IHN0YXRp
Y19jYXN0PFN0eWxlQmFzZSo+KG9iamVjdCk7Ci0KLSAgICAgICAgLy8gV2UgcHV0IHRoZSB3aG9s
ZSB0cmVlIG9mIHN0eWxlIGVsZW1lbnRzIGludG8gYSBzaW5nbGUgb2JqZWN0IGdyb3VwLgotICAg
ICAgICAvLyBUbyBhY2hpZXZlIHRoYXQgd2UgZ3JvdXAgZWxlbWVudHMgYnkgdGhlIHJvb3RzIG9m
IHRoZWlyIHRyZWVzLgotICAgICAgICBTdHlsZUJhc2UqIHJvb3QgPSBzdHlsZUJhc2U7Ci0gICAg
ICAgIEFTU0VSVChyb290KTsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICBTdHls
ZUJhc2UqIHBhcmVudCA9IHJvb3QtPnBhcmVudCgpOwotICAgICAgICAgIGlmICghcGFyZW50KQot
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICByb290ID0gcGFyZW50OworICAgICAgICBp
ZiAoVjhDU1NTdHlsZVNoZWV0OjppbmZvLmVxdWFscyh0eXBlSW5mbykKKyAgICAgICAgICAgIHx8
IFY4Q1NTQ2hhcnNldFJ1bGU6OmluZm8uZXF1YWxzKHR5cGVJbmZvKQorICAgICAgICAgICAgfHwg
VjhDU1NGb250RmFjZVJ1bGU6OmluZm8uZXF1YWxzKHR5cGVJbmZvKQorICAgICAgICAgICAgfHwg
VjhDU1NTdHlsZVJ1bGU6OmluZm8uZXF1YWxzKHR5cGVJbmZvKQorICAgICAgICAgICAgfHwgVjhD
U1NJbXBvcnRSdWxlOjppbmZvLmVxdWFscyh0eXBlSW5mbykKKyAgICAgICAgICAgIHx8IFY4Q1NT
TWVkaWFSdWxlOjppbmZvLmVxdWFscyh0eXBlSW5mbykpIHsKKyAgICAgICAgICAgIFN0eWxlQmFz
ZSogc3R5bGVCYXNlID0gc3RhdGljX2Nhc3Q8U3R5bGVCYXNlKj4ob2JqZWN0KTsKKworICAgICAg
ICAgICAgLy8gV2UgcHV0IHRoZSB3aG9sZSB0cmVlIG9mIHN0eWxlIGVsZW1lbnRzIGludG8gYSBz
aW5nbGUgb2JqZWN0IGdyb3VwLgorICAgICAgICAgICAgLy8gVG8gYWNoaWV2ZSB0aGF0IHdlIGdy
b3VwIGVsZW1lbnRzIGJ5IHRoZSByb290cyBvZiB0aGVpciB0cmVlcy4KKyAgICAgICAgICAgIFN0
eWxlQmFzZSogcm9vdCA9IHN0eWxlQmFzZTsKKyAgICAgICAgICAgIEFTU0VSVChyb290KTsKKyAg
ICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgU3R5bGVCYXNlKiBwYXJl
bnQgPSByb290LT5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXBhcmVudCkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgcm9vdCA9IHBhcmVudDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEdyb3VwIGlkIGlzIGFuIGFkZHJlc3Mgb2YgdGhl
IHJvb3QuCisgICAgICAgICAgICB1aW50cHRyX3QgZ3JvdXBJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pihyb290KTsKKyAgICAgICAgICAgIG1fZ3JvdXBlci5hcHBlbmQoR3JvdXBlckl0
ZW0oZ3JvdXBJZCwgd3JhcHBlcikpOworICAgICAgICB9IGVsc2UgaWYgKFY4U3R5bGVTaGVldExp
c3Q6OmluZm8uZXF1YWxzKHR5cGVJbmZvKSkgeworICAgICAgICAgICAgU3R5bGVTaGVldExpc3Qq
IHN0eWxlU2hlZXRMaXN0ID0gc3RhdGljX2Nhc3Q8U3R5bGVTaGVldExpc3QqPihvYmplY3QpOwor
ICAgICAgICAgICAgdWludHB0cl90IGdyb3VwSWQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oc3R5bGVTaGVldExpc3QpOworICAgICAgICAgICAgbV9ncm91cGVyLmFwcGVuZChHcm91cGVy
SXRlbShncm91cElkLCB3cmFwcGVyKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc3R5bGVTaGVldExpc3QtPmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gc3R5bGVTaGVldExpc3QtPml0ZW0oaSk7CisgICAgICAg
ICAgICAgICAgd3JhcHBlciA9IHN0b3JlLT5kb21PYmplY3RNYXAoKS5nZXQoc3R5bGVTaGVldCk7
CisgICAgICAgICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncm91cGVyLmFwcGVuZChHcm91cGVySXRlbShncm91cElkLCB3cmFwcGVyKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoVjhDU1NSdWxlTGlzdDo6aW5mby5lcXVh
bHModHlwZUluZm8pKSB7CisgICAgICAgICAgICBDU1NSdWxlTGlzdCogY3NzUnVsZUxpc3QgPSBz
dGF0aWNfY2FzdDxDU1NSdWxlTGlzdCo+KG9iamVjdCk7CisgICAgICAgICAgICB1aW50cHRyX3Qg
Z3JvdXBJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjc3NSdWxlTGlzdCk7CisgICAg
ICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVtKGdyb3VwSWQsIHdyYXBwZXIpKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjc3NSdWxlTGlzdC0+bGVuZ3Ro
KCk7IGkrKykgeworICAgICAgICAgICAgICAgIENTU1J1bGUqIGNzc1J1bGUgPSBjc3NSdWxlTGlz
dC0+aXRlbShpKTsKKyAgICAgICAgICAgICAgICB3cmFwcGVyID0gc3RvcmUtPmRvbU9iamVjdE1h
cCgpLmdldChjc3NSdWxlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVtKGdyb3Vw
SWQsIHdyYXBwZXIpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAvLyBHcm91
cCBpZCBpcyBhbiBhZGRyZXNzIG9mIHRoZSByb290LgotICAgICAgICB1aW50cHRyX3QgZ3JvdXBJ
ZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihyb290KTsKLSAgICAgICAgbV9ncm91cGVy
LmFwcGVuZChHcm91cGVySXRlbShncm91cElkLCB3cmFwcGVyKSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtNDI5LDcgKzQ1Myw3IEBAIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUoKQog
CiBjbGFzcyBHQ0VwaWxvZ3VlVmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVyTWFwPHZvaWQ+OjpW
aXNpdG9yIHsKIHB1YmxpYzoKLSAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcih2b2lkKiBvYmplY3Qs
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgdm9pZCB2aXNpdERPTVdy
YXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVyKQogICAgIHsKICAgICAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBl
SW5mbyA9IFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUod3JhcHBlcik7CiAgICAgICAgIGlm
IChWOE1lc3NhZ2VQb3J0OjppbmZvLmVxdWFscyh0eXBlSW5mbykpIHsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDczNzQ5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTAtMTItMTAgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbdjhd
IE1vcmUgQ1NTIHdyYXBwZXJzIEdDIHdvcms6IGtlZXAgZG9jdW1lbnQncyBzdHlsZSBzaGVldHMs
IHN0eWxlIHNoZWV0IGFuZCBjc3MgcnVsZSBsaXN0cycgaXRlbXMgaW4gcHJvcGVyIG9iamVjdCBn
cm91cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUw
ODI4CisKKyAgICAgICAgKiBmYXN0L2RvbS9TdHlsZVNoZWV0L2djLXJ1bGUtY2hpbGRyZW4td3Jh
cHBlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1N0eWxlU2hlZXQvZ2MtcnVs
ZS1jaGlsZHJlbi13cmFwcGVycy5odG1sOgorCiAyMDEwLTEyLTEwICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL1N0eWxlU2hlZXQvZ2MtcnVsZS1jaGlsZHJlbi13cmFwcGVy
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vU3R5bGVT
aGVldC9nYy1ydWxlLWNoaWxkcmVuLXdyYXBwZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzM3
MzkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9TdHlsZVNoZWV0L2djLXJ1bGUtY2hpbGRyZW4t
d3JhcHBlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsMTQgQEAgVGVz
dCB0aGF0IGN1c3RvbSBwcm9wZXJ0aWVzIG9uIHJ1bGUgc3R5bAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCiAKK1BBU1MgZG9jdW1lbnQuc3R5bGVTaGVldHMuZm9vIGlzICdiYXInCitQQVNT
IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmZvbyBpcyAnYmFyJworUEFTUyBkb2N1bWVudC5zdHls
ZVNoZWV0c1swXS5jc3NSdWxlc1swXS5mb28gaXMgJ2JhcicKK1BBU1MgZG9jdW1lbnQuc3R5bGVT
aGVldHNbMF0uY3NzUnVsZXNbMV0uZm9vIGlzICdiYXInCitQQVNTIGRvY3VtZW50LnN0eWxlU2hl
ZXRzWzBdLmNzc1J1bGVzWzJdLmZvbyBpcyAnYmFyJworUEFTUyBkb2N1bWVudC5zdHlsZVNoZWV0
c1swXS5jc3NSdWxlc1szXS5mb28gaXMgJ2JhcicKK1BBU1MgZG9jdW1lbnQuc3R5bGVTaGVldHNb
MF0uY3NzUnVsZXNbNF0uZm9vIGlzICdiYXInCitQQVNTIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
LmNzc1J1bGVzWzVdLmZvbyBpcyAnYmFyJwogUEFTUyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5j
c3NSdWxlc1swXS50eXBlIGlzIENTU1J1bGUuSU1QT1JUX1JVTEUKIFBBU1MgZG9jdW1lbnQuc3R5
bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0ubWVkaWEuZm9vIGlzICdiYXInCiBQQVNTIGRvY3VtZW50
LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnR5cGUgaXMgQ1NTUnVsZS5JTVBPUlRfUlVMRQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vU3R5bGVTaGVldC9nYy1ydWxlLWNoaWxkcmVuLXdy
YXBwZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vU3R5bGVTaGVl
dC9nYy1ydWxlLWNoaWxkcmVuLXdyYXBwZXJzLmh0bWwJKHJldmlzaW9uIDczNzM5KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vU3R5bGVTaGVldC9nYy1ydWxlLWNoaWxkcmVuLXdyYXBwZXJzLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwyOCBAQAogPHNjcmlwdD4KICAgICBkZXNj
cmlwdGlvbigiVGVzdCB0aGF0IGN1c3RvbSBwcm9wZXJ0aWVzIG9uIHJ1bGUgc3R5bGUgZGVjbGFy
YXRpb25zIGFyZSBub3QgbG9zdCBhZnRlciBHQyIpOwogCisgICAgZnVuY3Rpb24gdGVzdF9zdXJ2
aXZlc19nYyhleHByKQorICAgIHsKKyAgICAgIGV2YWwoZXhwcikuZm9vID0gImJhciIKKyAgICAg
IGdjKCk7CisgICAgICBzaG91bGRCZShleHByICsgIi5mb28iLCAiJ2JhciciKTsKKyAgICB9CisK
ICAgICBmdW5jdGlvbiB0ZXN0KGV4cHIsIGV4cGVjdGVkVHlwZSwgdGVzdFdoYXQpCiAgICAgewog
ICAgICAgICBzaG91bGRCZShleHByICsgIi50eXBlIiwgZXhwZWN0ZWRUeXBlKTsKLSAgICAgICAg
ZXZhbChleHByICsgIi4iICsgdGVzdFdoYXQpLmZvbyA9ICJiYXIiCi0gICAgICAgIGdjKCk7Ci0g
ICAgICAgIHNob3VsZEJlKGV4cHIgKyAiLiIgKyB0ZXN0V2hhdCArICIuZm9vIiwgIidiYXInIik7
CisgICAgICAgIHRlc3Rfc3Vydml2ZXNfZ2MoZXhwciArICIuIiArIHRlc3RXaGF0KTsKICAgICB9
CiAKKyAgICAvLyB2YXIgbG9jYWwgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1sw
XTsKKyAgICB0ZXN0X3N1cnZpdmVzX2djKCJkb2N1bWVudC5zdHlsZVNoZWV0cyIpOworICAgIHRl
c3Rfc3Vydml2ZXNfZ2MoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBdIik7CisgICAgdGVzdF9zdXJ2
aXZlc19nYygiZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0iKTsKKyAgICB0ZXN0
X3N1cnZpdmVzX2djKCJkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1sxXSIpOworICAg
IHRlc3Rfc3Vydml2ZXNfZ2MoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzJdIik7
CisgICAgdGVzdF9zdXJ2aXZlc19nYygiZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNb
M10iKTsKKyAgICB0ZXN0X3N1cnZpdmVzX2djKCJkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NS
dWxlc1s0XSIpOworICAgIHRlc3Rfc3Vydml2ZXNfZ2MoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
LmNzc1J1bGVzWzVdIik7CiAgICAgdGVzdCgiZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVs
ZXNbMF0iLCAiQ1NTUnVsZS5JTVBPUlRfUlVMRSIsICJtZWRpYSIpOwogICAgIHRlc3QoImRvY3Vt
ZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdIiwgIkNTU1J1bGUuSU1QT1JUX1JVTEUiLCAi
c3R5bGVTaGVldCIpOwogICAgIHRlc3QoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVz
WzFdIiwgIkNTU1J1bGUuU1RZTEVfUlVMRSIsICJzdHlsZSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76366</attachid>
            <date>2010-12-13 04:03:25 -0800</date>
            <delta_ts>2010-12-13 05:34:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50828-20101213150323.patch</filename>
            <type>text/plain</type>
            <size>18795</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mzc0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMTItMTAgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
djhdIE1vcmUgQ1NTIHdyYXBwZXJzIEdDIHdvcms6IGtlZXAgZG9jdW1lbnQncyBzdHlsZSBzaGVl
dHMsIHN0eWxlIHNoZWV0IGFuZCBjc3MgcnVsZSBsaXN0cycgaXRlbXMgaW4gcHJvcGVyIG9iamVj
dCBncm91cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwODI4CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01EYXRhOjpXcmFwcGVyTWFwT2JqZWN0UmVtb3Zlcjo6dmlzaXRET01XcmFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGE6OnJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHVua2VkVGFibGU6OnZpc2l0KToKKyAgICAgICAgKFdlYkNvcmU6OkNodW5rZWRUYWJsZTo6
dmlzaXRFbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6SW50cnVzaXZl
RE9NV3JhcHBlck1hcDo6dmlzaXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpJ
bnRydXNpdmVET01XcmFwcGVyTWFwOjpDaHVua2VkVGFibGVUcmFpdHM6OnZpc2l0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOERPTU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVB
bGxET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0RE9N
Tm9kZXNJbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6dmlzaXRET01PYmplY3Rz
SW5DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0QWN0aXZlRE9NT2JqZWN0
c0luQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjp2aXNpdERPTVNWR0VsZW1lbnRJ
bnN0YW5jZXNJbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NTWFw
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWFrUmVmZXJlbmNlTWFwOjp2aXNpdCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
T2JqZWN0VmlzaXRvcjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVuc3Vy
ZVdlYWtET01Ob2RlVmlzaXRvcjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdDUHJvbG9ndWVWaXNpdG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUdyb3VwZXJWaXNpdG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUdyb3VwZXJWaXNpdG9yOjphcHBseUdyb3VwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TU9iamVjdEdyb3VwZXJWaXNpdG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R0NFcGlsb2d1ZVZpc2l0b3I6OnZpc2l0RE9NV3JhcHBlcik6CisKIDIwMTAtMTItMTAgTmF0
ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
dHRpIEtvaXZpc3RvLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgJKHJldmlzaW9uIDczNzM5KQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCBoYW5kbGVX
ZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1hcFR5cGUsIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+LCBUKiBkb21PYmplY3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIHJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcChBYnN0
cmFjdFdlYWtSZWZlcmVuY2VNYXA8VCwgdjg6Ok9iamVjdD4mIGRvbU1hcCk7CisgICAgICAgIHN0
YXRpYyB2b2lkIHJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcChET01EYXRhU3RvcmUqIHN0b3Jl
LCBBYnN0cmFjdFdlYWtSZWZlcmVuY2VNYXA8VCwgdjg6Ok9iamVjdD4mIGRvbU1hcCk7CiAKICAg
ICAgICAgVGhyZWFkSWRlbnRpZmllciBvd25pbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX293
bmluZ1RocmVhZDsgfQogCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICAgICAgY2xhc3MgV3JhcHBlck1hcE9iamVj
dFJlbW92ZXIgOiBwdWJsaWMgV2Vha1JlZmVyZW5jZU1hcDxULCB2ODo6T2JqZWN0Pjo6VmlzaXRv
ciB7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdERPTVdy
YXBwZXIoVCogZG9tT2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB2OE9iamVjdCkK
KyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBz
dG9yZSwgVCogZG9tT2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB2OE9iamVjdCkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGUgPSBW
OERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHY4T2JqZWN0KTsKICAgICAgICAgICAgICAgICBk
ZXJlZk9iamVjdCh0eXBlLCBkb21PYmplY3QpOwpAQCAtMTAyLDEwICsxMDIsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9p
ZCBET01EYXRhOjpyZW1vdmVPYmplY3RzRnJvbVdyYXBwZXJNYXAoQWJzdHJhY3RXZWFrUmVmZXJl
bmNlTWFwPFQsIHY4OjpPYmplY3Q+JiBkb21NYXApCisgICAgdm9pZCBET01EYXRhOjpyZW1vdmVP
YmplY3RzRnJvbVdyYXBwZXJNYXAoRE9NRGF0YVN0b3JlKiBzdG9yZSwgQWJzdHJhY3RXZWFrUmVm
ZXJlbmNlTWFwPFQsIHY4OjpPYmplY3Q+JiBkb21NYXApCiAgICAgewogICAgICAgICBXcmFwcGVy
TWFwT2JqZWN0UmVtb3ZlcjxUPiByZW1vdmVyOwotICAgICAgICBkb21NYXAudmlzaXQoJnJlbW92
ZXIpOworICAgICAgICBkb21NYXAudmlzaXQoc3RvcmUsICZyZW1vdmVyKTsKICAgICAgICAgZG9t
TWFwLmNsZWFyKCk7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFT
dG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgJ
KHJldmlzaW9uIDczNzM5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDE0ICsxMDYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgbV9sYXN0ID0gbV9jdXJyZW50ICsgQ0hVTktfU0laRTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgdmlzaXQodHlwZW5hbWUgVHJhaXRzOjpWaXNpdG9yKiB2aXNpdG9yKQor
ICAgICAgICB2b2lkIHZpc2l0KERPTURhdGFTdG9yZSogc3RvcmUsIHR5cGVuYW1lIFRyYWl0czo6
VmlzaXRvciogdmlzaXRvcikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NodW5rcykK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHZpc2l0RW50cmllcyhtX2No
dW5rcy0+bV9lbnRyaWVzLCBtX2N1cnJlbnQsIHZpc2l0b3IpOworICAgICAgICAgICAgdmlzaXRF
bnRyaWVzKHN0b3JlLCBtX2NodW5rcy0+bV9lbnRyaWVzLCBtX2N1cnJlbnQsIHZpc2l0b3IpOwog
ICAgICAgICAgICAgZm9yIChDaHVuayogY2h1bmsgPSBtX2NodW5rcy0+bV9wcmV2aW91czsgY2h1
bms7IGNodW5rID0gY2h1bmstPm1fcHJldmlvdXMpCi0gICAgICAgICAgICAgICAgdmlzaXRFbnRy
aWVzKGNodW5rLT5tX2VudHJpZXMsIGNodW5rLT5tX2VudHJpZXMgKyBDSFVOS19TSVpFLCB2aXNp
dG9yKTsKKyAgICAgICAgICAgICAgICB2aXNpdEVudHJpZXMoc3RvcmUsIGNodW5rLT5tX2VudHJp
ZXMsIGNodW5rLT5tX2VudHJpZXMgKyBDSFVOS19TSVpFLCB2aXNpdG9yKTsKICAgICAgICAgfQog
CiAgICAgICBwcml2YXRlOgpAQCAtMTI5LDEwICsxMjksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgICAgIFRyYWl0czo6Y2xlYXIoZW50cnkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRFbnRyaWVzKFQqIGZpcnN0LCBUKiBsYXN0LCB0eXBlbmFt
ZSBUcmFpdHM6OlZpc2l0b3IqIHZpc2l0b3IpCisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0RW50
cmllcyhET01EYXRhU3RvcmUqIHN0b3JlLCBUKiBmaXJzdCwgVCogbGFzdCwgdHlwZW5hbWUgVHJh
aXRzOjpWaXNpdG9yKiB2aXNpdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKFQqIGVu
dHJ5ID0gZmlyc3Q7IGVudHJ5IDwgbGFzdDsgZW50cnkrKykKLSAgICAgICAgICAgICAgICBUcmFp
dHM6OnZpc2l0KGVudHJ5LCB2aXNpdG9yKTsKKyAgICAgICAgICAgICAgICBUcmFpdHM6OnZpc2l0
KHN0b3JlLCBlbnRyeSwgdmlzaXRvcik7CiAgICAgICAgIH0KIAogICAgICAgICBDaHVuayogbV9j
aHVua3M7CkBAIC0xODUsOSArMTg1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgICAgIHJldHVybiBvYmotPndyYXBwZXIoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgdmlydHVhbCB2b2lkIHZpc2l0KFZpc2l0b3IqIHZpc2l0b3IpCisgICAgICAgICAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoRE9NRGF0YVN0b3JlKiBzdG9yZSwgVmlzaXRvciogdmlzaXRvcikKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtX3RhYmxlLnZpc2l0KHZpc2l0b3IpOworICAg
ICAgICAgICAgICAgIG1fdGFibGUudmlzaXQoc3RvcmUsIHZpc2l0b3IpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlSWZQcmVzZW50KE5vZGUqIGtleSwg
djg6OlBlcnNpc3RlbnQ8djg6OkRhdGE+IHZhbHVlKTsKQEAgLTIyMCwxMiArMjIwLDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgZW50cnktPkRpc3Bvc2UoKTsK
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdCh2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiogZW50cnksIFZpc2l0b3IqIHZpc2l0b3IpCisgICAg
ICAgICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXQoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4qIGVudHJ5LCBWaXNpdG9yKiB2aXNpdG9yKQogICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IFY4Tm9kZTo6dG9OYXRp
dmUoKmVudHJ5KTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPndyYXBwZXIoKSA9
PSBlbnRyeSk7CiAKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRvci0+dmlzaXRET01XcmFwcGVy
KG5vZGUsICplbnRyeSk7CisgICAgICAgICAgICAgICAgICAgIHZpc2l0b3ItPnZpc2l0RE9NV3Jh
cHBlcihzdG9yZSwgbm9kZSwgKmVudHJ5KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9OwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAkocmV2aXNpb24gNzM3MzkpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAs
MjQgKzkwLDI2IEBAIERPTVdyYXBwZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNlPiYgZ2V0RE8KIAog
dm9pZCByZW1vdmVBbGxET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKCkKIHsKKyAgICBET01EYXRh
U3RvcmUmIHN0b3JlID0gZ2V0RE9NRGF0YVN0b3JlKCk7CisKICAgICB2ODo6SGFuZGxlU2NvcGUg
c2NvcGU7CiAKICAgICAvLyBUaGUgRE9NIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIHR5cGVz
IG9ubHkgZXhpc3Qgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIGlmIChXVEY6OmlzTWFpblRocmVh
ZCgpKSB7CiAgICAgICAgIC8vIFJlbW92ZSBhbGwgRE9NIG5vZGVzLgotICAgICAgICBET01EYXRh
OjpyZW1vdmVPYmplY3RzRnJvbVdyYXBwZXJNYXA8Tm9kZT4oZ2V0RE9NTm9kZU1hcCgpKTsKKyAg
ICAgICAgRE9NRGF0YTo6cmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwPE5vZGU+KCZzdG9yZSwg
c3RvcmUuZG9tTm9kZU1hcCgpKTsKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIC8vIFJlbW92
ZSBhbGwgU1ZHIGVsZW1lbnQgaW5zdGFuY2VzIGluIHRoZSB3cmFwcGVyIG1hcC4KLSAgICAgICAg
RE9NRGF0YTo6cmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwPFNWR0VsZW1lbnRJbnN0YW5jZT4o
Z2V0RE9NU1ZHRWxlbWVudEluc3RhbmNlTWFwKCkpOworICAgICAgICBET01EYXRhOjpyZW1vdmVP
YmplY3RzRnJvbVdyYXBwZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNlPigmc3RvcmUsIHN0b3JlLmRv
bVN2Z0VsZW1lbnRJbnN0YW5jZU1hcCgpKTsKICNlbmRpZgogICAgIH0KIAogICAgIC8vIFJlbW92
ZSBhbGwgRE9NIG9iamVjdHMgaW4gdGhlIHdyYXBwZXIgbWFwLgotICAgIERPTURhdGE6OnJlbW92
ZU9iamVjdHNGcm9tV3JhcHBlck1hcDx2b2lkPihnZXRET01PYmplY3RNYXAoKSk7CisgICAgRE9N
RGF0YTo6cmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwPHZvaWQ+KCZzdG9yZSwgc3RvcmUuZG9t
T2JqZWN0TWFwKCkpOwogCiAgICAgLy8gUmVtb3ZlIGFsbCBhY3RpdmUgRE9NIG9iamVjdHMgaW4g
dGhlIHdyYXBwZXIgbWFwLgotICAgIERPTURhdGE6OnJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1h
cDx2b2lkPihnZXRBY3RpdmVET01PYmplY3RNYXAoKSk7CisgICAgRE9NRGF0YTo6cmVtb3ZlT2Jq
ZWN0c0Zyb21XcmFwcGVyTWFwPHZvaWQ+KCZzdG9yZSwgc3RvcmUuYWN0aXZlRG9tT2JqZWN0TWFw
KCkpOwogfQogCiB2b2lkIHZpc2l0RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1h
cDxOb2RlPjo6VmlzaXRvciogdmlzaXRvcikKQEAgLTEyMSw3ICsxMjMsNyBAQCB2b2lkIHZpc2l0
RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhCiAgICAgICAgIGlmICghc3RvcmUtPmRvbURh
dGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBzdG9yZS0+ZG9tTm9kZU1hcCgpLnZpc2l0KHZpc2l0b3Ip
OworICAgICAgICBzdG9yZS0+ZG9tTm9kZU1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsKICAg
ICB9CiB9CiAKQEAgLTEzNiw3ICsxMzgsNyBAQCB2b2lkIHZpc2l0RE9NT2JqZWN0c0luQ3VycmVu
dFRocmVhZChET01XCiAgICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFk
KCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBzdG9yZS0+ZG9tT2JqZWN0TWFwKCkudmlzaXQodmlzaXRvcik7CisgICAgICAgIHN0b3Jl
LT5kb21PYmplY3RNYXAoKS52aXNpdChzdG9yZSwgdmlzaXRvcik7CiAgICAgfQogfQogCkBAIC0x
NTEsNyArMTUzLDcgQEAgdm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHNJbkN1cnJlbnRUaHJlYQog
ICAgICAgICBpZiAoIXN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6Y3Vy
cmVudFRocmVhZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgc3RvcmUtPmFj
dGl2ZURvbU9iamVjdE1hcCgpLnZpc2l0KHZpc2l0b3IpOworICAgICAgICBzdG9yZS0+YWN0aXZl
RG9tT2JqZWN0TWFwKCkudmlzaXQoc3RvcmUsIHZpc2l0b3IpOwogICAgIH0KIH0KIApAQCAtMTY4
LDcgKzE3MCw3IEBAIHZvaWQgdmlzaXRET01TVkdFbGVtZW50SW5zdGFuY2VzSW5DdXJyZW4KICAg
ICAgICAgaWYgKCFzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJl
bnRUaHJlYWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHN0b3JlLT5kb21T
dmdFbGVtZW50SW5zdGFuY2VNYXAoKS52aXNpdCh2aXNpdG9yKTsKKyAgICAgICAgc3RvcmUtPmRv
bVN2Z0VsZW1lbnRJbnN0YW5jZU1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsKICAgICB9CiB9
CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgJKHJldmlzaW9uIDczNzM5KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSA8djguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIERPTURh
dGFTdG9yZTsKICAgICBjbGFzcyBOb2RlOwogI2lmIEVOQUJMRShTVkcpCiAgICAgY2xhc3MgU1ZH
RWxlbWVudEluc3RhbmNlOwpAQCAtNTAsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydE1hcCgpIHsgfQog
ICAgICAgICAgICAgdmlydHVhbCB2b2lkIGVuZE1hcCgpIHsgfQotICAgICAgICAgICAgdmlydHVh
bCB2b2lkIHZpc2l0RE9NV3JhcHBlcihLZXlUeXBlKiBrZXksIHY4OjpQZXJzaXN0ZW50PFZhbHVl
VHlwZT4gb2JqZWN0KSA9IDA7CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRET01XcmFw
cGVyKERPTURhdGFTdG9yZSogc3RvcmUsIEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8VmFs
dWVUeXBlPiBvYmplY3QpID0gMDsKICAgICAgICAgcHJvdGVjdGVkOgogICAgICAgICAgICAgdmly
dHVhbCB+VmlzaXRvcigpIHsgfQogICAgICAgICB9OwpAQCAtNTgsNyArNTksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdjg6OlBlcnNpc3RlbnQ8VmFsdWVUeXBlPiBn
ZXQoS2V5VHlwZSogb2JqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXQoS2V5VHlwZSog
b2JqLCB2ODo6UGVyc2lzdGVudDxWYWx1ZVR5cGU+IHdyYXBwZXIpID0gMDsKICAgICAgICAgdmly
dHVhbCBib29sIGNvbnRhaW5zKEtleVR5cGUqIG9iaikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXQoVmlzaXRvciogdmlzaXRvcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoRE9NRGF0YVN0b3JlKiBzdG9yZSwgVmlzaXRvciogdmlzaXRvcikgPSAwOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgcmVtb3ZlSWZQcmVzZW50KEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8
djg6OkRhdGE+IHZhbHVlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0gMDsK
IApAQCAtMTIyLDEyICsxMjMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJv
b2wgY29udGFpbnMoS2V5VHlwZSogb2JqKSB7IHJldHVybiBtX21hcC5jb250YWlucyhvYmopOyB9
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0KHR5cGVuYW1lIFBhcmVudDo6VmlzaXRvciog
dmlzaXRvcikKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0KERPTURhdGFTdG9yZSogc3RvcmUs
IHR5cGVuYW1lIFBhcmVudDo6VmlzaXRvciogdmlzaXRvcikKICAgICAgICAgewogICAgICAgICAg
ICAgdmlzaXRvci0+c3RhcnRNYXAoKTsKICAgICAgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8S2V5
VHlwZSosIFZhbHVlVHlwZSo+OjppdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCk7CiAgICAgICAg
ICAgICBmb3IgKDsgaXQgIT0gbV9tYXAuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAgICAgdmlz
aXRvci0+dmlzaXRET01XcmFwcGVyKGl0LT5maXJzdCwgdjg6OlBlcnNpc3RlbnQ8VmFsdWVUeXBl
PihpdC0+c2Vjb25kKSk7CisgICAgICAgICAgICAgICAgdmlzaXRvci0+dmlzaXRET01XcmFwcGVy
KHN0b3JlLCBpdC0+Zmlyc3QsIHY4OjpQZXJzaXN0ZW50PFZhbHVlVHlwZT4oaXQtPnNlY29uZCkp
OwogICAgICAgICAgICAgdmlzaXRvci0+ZW5kTWFwKCk7CiAgICAgICAgIH0KIApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDczNzM5KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDExICs0NSwxMyBAQAogI2luY2x1ZGUgIlY4Q1NTRm9udEZhY2VSdWxlLmgiCiAjaW5jbHVkZSAi
VjhDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAiVjhDU1NNZWRpYVJ1bGUuaCIKKyNpbmNsdWRl
ICJWOENTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAiVjhDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRl
ICJWOENTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4
TWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhTdHlsZVNo
ZWV0TGlzdC5oIgogI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgogCiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgpAQCAtMTM1LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIGVudW1lcmF0ZURPTU9iamVj
dE1hcChET01PYmoKIAogY2xhc3MgRE9NT2JqZWN0VmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVy
TWFwPHZvaWQ+OjpWaXNpdG9yIHsKIHB1YmxpYzoKLSAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcih2
b2lkKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgdm9p
ZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogICAgIHsKICAgICAgICAgV3JhcHBlclR5
cGVJbmZvKiB0eXBlID0gVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh3cmFwcGVyKTsKICAg
ICAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOwpAQCAtMTQ1LDcgKzE0Nyw3IEBAIHB1YmxpYzoKIAog
Y2xhc3MgRW5zdXJlV2Vha0RPTU5vZGVWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJNYXA8Tm9k
ZT46OlZpc2l0b3IgewogcHVibGljOgotICAgIHZvaWQgdmlzaXRET01XcmFwcGVyKE5vZGUqIG9i
amVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICB2b2lkIHZpc2l0
RE9NV3JhcHBlcihET01EYXRhU3RvcmUqIHN0b3JlLCBOb2RlKiBvYmplY3QsIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0ob2Jq
ZWN0KTsKICAgICAgICAgQVNTRVJUKHdyYXBwZXIuSXNXZWFrKCkpOwpAQCAtMTkzLDcgKzE5NSw3
IEBAIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjVW5wcm90ZWN0KHZvaWQqIGQKIAogY2xhc3MgR0NQ
cm9sb2d1ZVZpc2l0b3IgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciB7CiBw
dWJsaWM6Ci0gICAgdm9pZCB2aXNpdERPTVdyYXBwZXIodm9pZCogb2JqZWN0LCB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURh
dGFTdG9yZSogc3RvcmUsIHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlcikKICAgICB7CiAgICAgICAgIFdyYXBwZXJUeXBlSW5mbyogdHlwZUluZm8gPSBWOERP
TVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHdyYXBwZXIpOyAgCiAKQEAgLTI4Nyw3ICsyODksNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIEZJWE1FOiBncm91cGVyXy5yZXNlcnZlQ2FwYWNpdHkobm9k
ZV9tYXAuc2l6ZSgpKTsgID8KICAgICB9CiAKLSAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcihOb2Rl
KiBub2RlLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgIHZvaWQgdmlz
aXRET01XcmFwcGVyKERPTURhdGFTdG9yZSogc3RvcmUsIE5vZGUqIG5vZGUsIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewogICAgICAgICAvLyBJZiB0aGUgbm9kZSBp
cyBpbiBkb2N1bWVudCwgcHV0IGl0IGluIHRoZSBvd25lckRvY3VtZW50J3Mgb2JqZWN0IGdyb3Vw
LgogICAgICAgICAvLwpAQCAtMzIwLDI4ICszMjIsMzAgQEAgcHVibGljOgogICAgICAgICAgICAg
Z3JvdXBJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihyb290KTsKICAgICAgICAgfQog
ICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVtKGdyb3VwSWQsIHdyYXBwZXIpKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGFwcGx5R3JvdXBpbmcoKQotICAgIHsKLSAgICAgICAgLyogRklY
TUU6IFJlLWVuYWJsZWQgdGhpcyBjb2RlIHRvIGF2b2lkIEdDaW5nIHRoZXNlIHdyYXBwZXJzIQot
ICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnRseSB0aGlzIGRlcGVuZHMgb24gbG9va2luZyB1
cCB0aGUgd3JhcHBlcgotICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBhIEdDLCBidXQgd2Ug
ZG9uJ3Qga25vdyB3aGljaCBpc29sYXRlZCB3b3JsZAotICAgICAgICAgICAgICAgICAgICAgIHdl
J3JlIGluLCBzbyBpdCdzIHVuY2xlYXIgd2hpY2ggbWFwIHRvIGxvb2sgaW4uLi4KIAogICAgICAg
ICAvLyBJZiB0aGUgbm9kZSBpcyBzdHlsZWQgYW5kIHRoZXJlIGlzIGEgd3JhcHBlciBmb3IgdGhl
IGlubGluZQogICAgICAgICAvLyBzdHlsZSBkZWNsYXJhdGlvbiwgd2UgbmVlZCB0byBrZWVwIHRo
YXQgc3R5bGUgZGVjbGFyYXRpb24KICAgICAgICAgLy8gd3JhcHBlciBhbGl2ZSBhcyB3ZWxsLCBz
byB3ZSBhZGQgaXQgdG8gdGhlIG9iamVjdCBncm91cC4KICAgICAgICAgaWYgKG5vZGUtPmlzU3R5
bGVkRWxlbWVudCgpKSB7Ci0gICAgICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUpOwotICAgICAgICAgIENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCk7Ci0gICAgICAgICAg
aWYgKHN0eWxlICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHdyYXBwZXIgPSBnZXRET01PYmplY3RN
YXAoKS5nZXQoc3R5bGUpOworICAgICAgICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUpOworICAgICAgICAgICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKTsKKyAgICAg
ICAgICAgIGlmIChzdHlsZSkgeworICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBzdG9yZS0+ZG9t
T2JqZWN0TWFwKCkuZ2V0KHN0eWxlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXdyYXBwZXIuSXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVt
KGdyb3VwSWQsIHdyYXBwZXIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGlmIChub2RlLT5pc0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSByZWludGVycHJldF9jYXN0PERvY3VtZW50Kj4obm9kZSk7CisgICAgICAgICAgICB3
cmFwcGVyID0gc3RvcmUtPmRvbU9iamVjdE1hcCgpLmdldChkb2N1bWVudC0+c3R5bGVTaGVldHMo
KSk7CiAgICAgICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICAgICAgICBn
cm91cC5hcHBlbmQod3JhcHBlcik7Ci0gICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fZ3Jv
dXBlci5hcHBlbmQoR3JvdXBlckl0ZW0oZ3JvdXBJZCwgd3JhcHBlcikpOwogICAgICAgICB9Ci0g
ICAgICAgICovCisgICAgfQorCisgICAgdm9pZCBhcHBseUdyb3VwaW5nKCkKKyAgICB7CiAgICAg
ICAgIG1ha2VWOE9iamVjdEdyb3VwcyhtX2dyb3VwZXIpOwogICAgIH0KIApAQCAtMzY1LDM0ICsz
NjksNTQgQEAgcHVibGljOgogICAgICAgICBtYWtlVjhPYmplY3RHcm91cHMobV9ncm91cGVyKTsK
ICAgICB9CiAKLSAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcih2b2lkKiBvYmplY3QsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9N
RGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiB3cmFwcGVyKQogICAgIHsKICAgICAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IFY4
RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUod3JhcHBlcik7Ci0gICAgICAgIC8vIEZJWE1FOiBl
eHRlbmQgV3JhcHBlclR5cGVJbmZvIHdpdGggaXNTdHlsZSB0byBzaW1wbGlmeSB0aGUgY2hlY2sg
YmVsb3cuCisgICAgICAgIC8vIEZJWE1FOiBleHRlbmQgV3JhcHBlclR5cGVJbmZvIHdpdGggaXNT
dHlsZSB0byBzaW1wbGlmeSB0aGUgY2hlY2sgYmVsb3cgb3IgY29uc2lkZXIKKyAgICAgICAgLy8g
YWRkaW5nIGEgdmlydHVhbCBtZXRob2QgdG8gV3JhcHBlclR5cGVJbmZvIHdoaWNoIHdvdWxkIGtu
b3cgaG93IHRvIGdyb3VwIG9iamVjdHMuCiAgICAgICAgIC8vIEZJWE1FOiBjaGVjayBpZiB0aGVy
ZSBhcmUgb3RoZXIgU3R5bGVCYXNlIHdyYXBwZXJzIHdlIHNob3VsZCBjYXJlIG9mLgotICAgICAg
ICBpZiAoIVY4Q1NTU3R5bGVTaGVldDo6aW5mby5lcXVhbHModHlwZUluZm8pCi0gICAgICAgICAg
ICAmJiAhVjhDU1NDaGFyc2V0UnVsZTo6aW5mby5lcXVhbHModHlwZUluZm8pCi0gICAgICAgICAg
ICAmJiAhVjhDU1NGb250RmFjZVJ1bGU6OmluZm8uZXF1YWxzKHR5cGVJbmZvKQotICAgICAgICAg
ICAgJiYgIVY4Q1NTU3R5bGVSdWxlOjppbmZvLmVxdWFscyh0eXBlSW5mbykKLSAgICAgICAgICAg
ICYmICFWOENTU0ltcG9ydFJ1bGU6OmluZm8uZXF1YWxzKHR5cGVJbmZvKQotICAgICAgICAgICAg
JiYgIVY4Q1NTTWVkaWFSdWxlOjppbmZvLmVxdWFscyh0eXBlSW5mbykpIHsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBTdHlsZUJhc2UqIHN0eWxlQmFzZSA9IHN0YXRp
Y19jYXN0PFN0eWxlQmFzZSo+KG9iamVjdCk7Ci0KLSAgICAgICAgLy8gV2UgcHV0IHRoZSB3aG9s
ZSB0cmVlIG9mIHN0eWxlIGVsZW1lbnRzIGludG8gYSBzaW5nbGUgb2JqZWN0IGdyb3VwLgotICAg
ICAgICAvLyBUbyBhY2hpZXZlIHRoYXQgd2UgZ3JvdXAgZWxlbWVudHMgYnkgdGhlIHJvb3RzIG9m
IHRoZWlyIHRyZWVzLgotICAgICAgICBTdHlsZUJhc2UqIHJvb3QgPSBzdHlsZUJhc2U7Ci0gICAg
ICAgIEFTU0VSVChyb290KTsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICBTdHls
ZUJhc2UqIHBhcmVudCA9IHJvb3QtPnBhcmVudCgpOwotICAgICAgICAgIGlmICghcGFyZW50KQot
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICByb290ID0gcGFyZW50OworICAgICAgICBp
ZiAoVjhDU1NTdHlsZVNoZWV0OjppbmZvLmVxdWFscyh0eXBlSW5mbykKKyAgICAgICAgICAgIHx8
IFY4Q1NTQ2hhcnNldFJ1bGU6OmluZm8uZXF1YWxzKHR5cGVJbmZvKQorICAgICAgICAgICAgfHwg
VjhDU1NGb250RmFjZVJ1bGU6OmluZm8uZXF1YWxzKHR5cGVJbmZvKQorICAgICAgICAgICAgfHwg
VjhDU1NTdHlsZVJ1bGU6OmluZm8uZXF1YWxzKHR5cGVJbmZvKQorICAgICAgICAgICAgfHwgVjhD
U1NJbXBvcnRSdWxlOjppbmZvLmVxdWFscyh0eXBlSW5mbykKKyAgICAgICAgICAgIHx8IFY4Q1NT
TWVkaWFSdWxlOjppbmZvLmVxdWFscyh0eXBlSW5mbykpIHsKKyAgICAgICAgICAgIFN0eWxlQmFz
ZSogc3R5bGVCYXNlID0gc3RhdGljX2Nhc3Q8U3R5bGVCYXNlKj4ob2JqZWN0KTsKKworICAgICAg
ICAgICAgLy8gV2UgcHV0IHRoZSB3aG9sZSB0cmVlIG9mIHN0eWxlIGVsZW1lbnRzIGludG8gYSBz
aW5nbGUgb2JqZWN0IGdyb3VwLgorICAgICAgICAgICAgLy8gVG8gYWNoaWV2ZSB0aGF0IHdlIGdy
b3VwIGVsZW1lbnRzIGJ5IHRoZSByb290cyBvZiB0aGVpciB0cmVlcy4KKyAgICAgICAgICAgIFN0
eWxlQmFzZSogcm9vdCA9IHN0eWxlQmFzZTsKKyAgICAgICAgICAgIEFTU0VSVChyb290KTsKKyAg
ICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgU3R5bGVCYXNlKiBwYXJl
bnQgPSByb290LT5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXBhcmVudCkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgcm9vdCA9IHBhcmVudDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEdyb3VwIGlkIGlzIGFuIGFkZHJlc3Mgb2YgdGhl
IHJvb3QuCisgICAgICAgICAgICB1aW50cHRyX3QgZ3JvdXBJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pihyb290KTsKKyAgICAgICAgICAgIG1fZ3JvdXBlci5hcHBlbmQoR3JvdXBlckl0
ZW0oZ3JvdXBJZCwgd3JhcHBlcikpOworICAgICAgICB9IGVsc2UgaWYgKFY4U3R5bGVTaGVldExp
c3Q6OmluZm8uZXF1YWxzKHR5cGVJbmZvKSkgeworICAgICAgICAgICAgU3R5bGVTaGVldExpc3Qq
IHN0eWxlU2hlZXRMaXN0ID0gc3RhdGljX2Nhc3Q8U3R5bGVTaGVldExpc3QqPihvYmplY3QpOwor
ICAgICAgICAgICAgdWludHB0cl90IGdyb3VwSWQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oc3R5bGVTaGVldExpc3QpOworICAgICAgICAgICAgbV9ncm91cGVyLmFwcGVuZChHcm91cGVy
SXRlbShncm91cElkLCB3cmFwcGVyKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc3R5bGVTaGVldExpc3QtPmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gc3R5bGVTaGVldExpc3QtPml0ZW0oaSk7CisgICAgICAg
ICAgICAgICAgd3JhcHBlciA9IHN0b3JlLT5kb21PYmplY3RNYXAoKS5nZXQoc3R5bGVTaGVldCk7
CisgICAgICAgICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncm91cGVyLmFwcGVuZChHcm91cGVySXRlbShncm91cElkLCB3cmFwcGVyKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoVjhDU1NSdWxlTGlzdDo6aW5mby5lcXVh
bHModHlwZUluZm8pKSB7CisgICAgICAgICAgICBDU1NSdWxlTGlzdCogY3NzUnVsZUxpc3QgPSBz
dGF0aWNfY2FzdDxDU1NSdWxlTGlzdCo+KG9iamVjdCk7CisgICAgICAgICAgICB1aW50cHRyX3Qg
Z3JvdXBJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjc3NSdWxlTGlzdCk7CisgICAg
ICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVtKGdyb3VwSWQsIHdyYXBwZXIpKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjc3NSdWxlTGlzdC0+bGVuZ3Ro
KCk7IGkrKykgeworICAgICAgICAgICAgICAgIENTU1J1bGUqIGNzc1J1bGUgPSBjc3NSdWxlTGlz
dC0+aXRlbShpKTsKKyAgICAgICAgICAgICAgICB3cmFwcGVyID0gc3RvcmUtPmRvbU9iamVjdE1h
cCgpLmdldChjc3NSdWxlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVtKGdyb3Vw
SWQsIHdyYXBwZXIpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAvLyBHcm91
cCBpZCBpcyBhbiBhZGRyZXNzIG9mIHRoZSByb290LgotICAgICAgICB1aW50cHRyX3QgZ3JvdXBJ
ZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihyb290KTsKLSAgICAgICAgbV9ncm91cGVy
LmFwcGVuZChHcm91cGVySXRlbShncm91cElkLCB3cmFwcGVyKSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtNDI5LDcgKzQ1Myw3IEBAIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUoKQog
CiBjbGFzcyBHQ0VwaWxvZ3VlVmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVyTWFwPHZvaWQ+OjpW
aXNpdG9yIHsKIHB1YmxpYzoKLSAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcih2b2lkKiBvYmplY3Qs
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgdm9pZCB2aXNpdERPTVdy
YXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVyKQogICAgIHsKICAgICAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBl
SW5mbyA9IFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUod3JhcHBlcik7CiAgICAgICAgIGlm
IChWOE1lc3NhZ2VQb3J0OjppbmZvLmVxdWFscyh0eXBlSW5mbykpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>