<?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>128694</bug_id>
          
          <creation_ts>2014-02-12 14:38:43 -0800</creation_ts>
          <short_desc>Subpixel rendering: Make GraphicsLayer&apos;s offsetFromRenderer subpixel position based.</short_desc>
          <delta_ts>2014-02-19 20:57:24 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>128911</dependson>
          <blocked>128509</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>980021</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-02-12 14:38:43 -0800</bug_when>
    <thetext>In order to be able to put the renderer on a subpixel position off of the owning graphics layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981600</commentid>
    <comment_count>1</comment_count>
      <attachid>224410</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-02-17 12:01:40 -0800</bug_when>
    <thetext>Created attachment 224410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981621</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-02-17 12:45:37 -0800</bug_when>
    <thetext>this patch has dependencies on bug 128911. won&apos;t build at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981624</commentid>
    <comment_count>3</comment_count>
      <attachid>224415</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-02-17 13:17:50 -0800</bug_when>
    <thetext>Created attachment 224415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982658</commentid>
    <comment_count>4</comment_count>
      <attachid>224415</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-19 20:57:21 -0800</bug_when>
    <thetext>Comment on attachment 224415
Patch

Clearing flags on attachment: 224415

Committed r164415: &lt;http://trac.webkit.org/changeset/164415&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982659</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-19 20:57:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224410</attachid>
            <date>2014-02-17 12:01:40 -0800</date>
            <delta_ts>2014-02-17 13:17:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>22552</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNzI3MDMxLi45NGM0MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzkg
QEAKIDIwMTQtMDItMTcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAorICAgICAg
ICBTdWJwaXhlbCByZW5kZXJpbmc6IE1ha2UgR3JhcGhpY3NMYXllcidzIG9mZnNldEZyb21SZW5k
ZXJlciBzdWJwaXhlbCBwb3NpdGlvbiBiYXNlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODY5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENoYW5naW5nIGxheWVycyBmcm9tIHVzaW5nIGludGVncmFs
IHR5cGVzIHRvIHVzaW5nIEZsb2F0L0xheW91dFVuaXRzIHNvIHRoYXQKKyAgICAgICAgd2UgY2Fu
IHBvc2l0aW9uIHRoZW0gb24gc3VicGl4ZWxzLiBUaGV5IGFyZSBzdGlsbCBpbnRlZ3JhbCBwb3Np
dGlvbmVkIHRob3VnaC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRPZmZzZXRGcm9tUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6Om9mZnNldEZyb21SZW5kZXJlcik6IHJlbW92ZWQgaW5jb3JyZWN0
IGNvbW1lbnQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJH
ZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmFkanVzdEFu
Y2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1dGVQZXJzcGVj
dGl2ZU9yaWdpbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc093bkJhY2tpbmdTdG9yZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNdWx0aUNvbHVtblNldDo6YWRqdXN0UmVnaW9uQm91bmRzRnJvbUZsb3dUaHJlYWRQb3J0
aW9uUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJSZWdpb246OmFkanVzdFJlZ2lvbkJvdW5kc0Zyb21GbG93VGhyZWFkUG9ydGlvblJlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKworMjAxNC0wMi0xNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCiAgICAgICAgIFN1YnBpeGVsIHJlbmRlcmlu
ZzogKFJlbmRlckxheWVyKVBhc3Mgbm9uLWNzcy1waXhlbC1zbmFwcGVkIGRpcnR5IHJlY3RzIHRv
IFBhaW50SW5mbyB3aGVuIHBhaW50aW5nIHJlbmRlcmVyKCkuCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg5MTMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCAzZjU5OGI2Li5k
MzQ2MzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0
UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgbV9yZXBsaWNhTGF5
ZXIgPSBsYXllcjsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyOjpzZXRPZmZzZXRGcm9tUmVuZGVy
ZXIoY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBTaG91bGRTZXROZWVkc0Rpc3BsYXkgc2hvdWxkU2V0
TmVlZHNEaXNwbGF5KQordm9pZCBHcmFwaGljc0xheWVyOjpzZXRPZmZzZXRGcm9tUmVuZGVyZXIo
Y29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIFNob3VsZFNldE5lZWRzRGlzcGxheSBzaG91bGRTZXRO
ZWVkc0Rpc3BsYXkpCiB7CiAgICAgaWYgKG9mZnNldCA9PSBtX29mZnNldEZyb21SZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6
c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHZvaWQgR3JhcGhpY3NMYXll
cjo6cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGNsaXApCiB7CiAgICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgIElu
dFNpemUgb2Zmc2V0ID0gb2Zmc2V0RnJvbVJlbmRlcmVyKCk7CisgICAgICAgIEZsb2F0U2l6ZSBv
ZmZzZXQgPSBvZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUo
LW9mZnNldCk7CiAKICAgICAgICAgRmxvYXRSZWN0IGNsaXBSZWN0KGNsaXApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGQzY2Nh
M2YuLmQwNmI1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTI3OSw5ICsyNzksOSBAQCBwdWJsaWM6CiAgICAgICAgIFNldE5l
ZWRzRGlzcGxheQogICAgIH07CiAKLSAgICAvLyBPZmZzZXQgaXMgb3JpZ2luIG9mIHRoZSByZW5k
ZXJlciBtaW51cyBvcmlnaW4gb2YgdGhlIGdyYXBoaWNzIGxheWVyIChzbyBlaXRoZXIgemVybyBv
ciBuZWdhdGl2ZSkuCi0gICAgSW50U2l6ZSBvZmZzZXRGcm9tUmVuZGVyZXIoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldEZyb21SZW5kZXJlcjsgfQotICAgIHZvaWQgc2V0T2Zmc2V0RnJvbVJlbmRl
cmVyKGNvbnN0IEludFNpemUmLCBTaG91bGRTZXROZWVkc0Rpc3BsYXkgPSBTZXROZWVkc0Rpc3Bs
YXkpOworICAgIC8vIE9mZnNldCBpcyBvcmlnaW4gb2YgdGhlIHJlbmRlcmVyIG1pbnVzIG9yaWdp
biBvZiB0aGUgZ3JhcGhpY3MgbGF5ZXIuCisgICAgRmxvYXRTaXplIG9mZnNldEZyb21SZW5kZXJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0RnJvbVJlbmRlcmVyOyB9CisgICAgdm9pZCBzZXRP
ZmZzZXRGcm9tUmVuZGVyZXIoY29uc3QgRmxvYXRTaXplJiwgU2hvdWxkU2V0TmVlZHNEaXNwbGF5
ID0gU2V0TmVlZHNEaXNwbGF5KTsKIAogICAgIC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgbGF5ZXIg
KHRoZSBsb2NhdGlvbiBvZiBpdHMgdG9wLWxlZnQgY29ybmVyIGluIGl0cyBwYXJlbnQpCiAgICAg
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9
CkBAIC01NTUsNyArNTU1LDcgQEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBtX25hbWU7CiAgICAg
CiAgICAgLy8gT2Zmc2V0IGZyb20gdGhlIG93bmluZyByZW5kZXJlcgotICAgIEludFNpemUgbV9v
ZmZzZXRGcm9tUmVuZGVyZXI7CisgICAgRmxvYXRTaXplIG1fb2Zmc2V0RnJvbVJlbmRlcmVyOwog
ICAgIAogICAgIC8vIFBvc2l0aW9uIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQgR3JhcGhpY3NM
YXllcgogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYmY1NDYyNS4uNzllNDk0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTY4Niw3ICs2ODYsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NM
YXllckdlb21ldHJ5KCkKICAgICBSZW5kZXJMYXllciogY29tcEFuY2VzdG9yID0gbV9vd25pbmdM
YXllci5hbmNlc3RvckNvbXBvc2l0aW5nTGF5ZXIoKTsKICAgICAKICAgICAvLyBXZSBjb21wdXRl
IGV2ZXJ5dGhpbmcgcmVsYXRpdmUgdG8gdGhlIGVuY2xvc2luZyBjb21wb3NpdGluZyBsYXllci4K
LSAgICBJbnRSZWN0IGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHM7CisgICAgTGF5b3V0UmVjdCBh
bmNlc3RvckNvbXBvc2l0aW5nQm91bmRzOwogICAgIGlmIChjb21wQW5jZXN0b3IpIHsKICAgICAg
ICAgQVNTRVJUKGNvbXBBbmNlc3Rvci0+YmFja2luZygpKTsKICAgICAgICAgYW5jZXN0b3JDb21w
b3NpdGluZ0JvdW5kcyA9IHBpeGVsU25hcHBlZEludFJlY3QoY29tcEFuY2VzdG9yLT5iYWNraW5n
KCktPmNvbXBvc2l0ZWRCb3VuZHMoKSk7CkBAIC03MDAsMTcgKzcwMCwxNyBAQCB2b2lkIFJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICAvLyBNb3Zl
IHRoZSBib3VuZHMgYnkgdGhlIHN1YnBpeGVsIGFjY3VtdWxhdGlvbiBzbyB0aGF0IGl0IHBpeGVs
LXNuYXBzIHJlbGF0aXZlIHRvIGFic29sdXRlIHBpeGVscyBpbnN0ZWFkIG9mIGxvY2FsIGNvb3Jk
aW5hdGVzLgogICAgIGxvY2FsUmF3Q29tcG9zaXRpbmdCb3VuZHMubW92ZShtX3N1YnBpeGVsQWNj
dW11bGF0aW9uKTsKIAotICAgIEludFJlY3QgbG9jYWxDb21wb3NpdGluZ0JvdW5kcyA9IHBpeGVs
U25hcHBlZEludFJlY3QobG9jYWxSYXdDb21wb3NpdGluZ0JvdW5kcyk7Ci0gICAgSW50UmVjdCBy
ZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzKGxvY2FsQ29tcG9zaXRpbmdCb3VuZHMpOworICAgIExh
eW91dFJlY3QgbG9jYWxDb21wb3NpdGluZ0JvdW5kcyA9IHBpeGVsU25hcHBlZEludFJlY3QobG9j
YWxSYXdDb21wb3NpdGluZ0JvdW5kcyk7CisgICAgTGF5b3V0UmVjdCByZWxhdGl2ZUNvbXBvc2l0
aW5nQm91bmRzKGxvY2FsQ29tcG9zaXRpbmdCb3VuZHMpOwogICAgIHJlbGF0aXZlQ29tcG9zaXRp
bmdCb3VuZHMubW92ZUJ5KGRlbHRhKTsKIAogICAgIGFkanVzdEFuY2VzdG9yQ29tcG9zaXRpbmdC
b3VuZHNGb3JGbG93VGhyZWFkKGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMsIGNvbXBBbmNlc3Rv
cik7CiAKLSAgICBJbnRQb2ludCBncmFwaGljc0xheWVyUGFyZW50TG9jYXRpb247CisgICAgTGF5
b3V0UG9pbnQgZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uOwogICAgIGlmIChjb21wQW5jZXN0
b3IgJiYgY29tcEFuY2VzdG9yLT5iYWNraW5nKCktPmhhc0NsaXBwaW5nTGF5ZXIoKSkgewogICAg
ICAgICAvLyBJZiB0aGUgY29tcG9zaXRpbmcgYW5jZXN0b3IgaGFzIGEgbGF5ZXIgdG8gY2xpcCBj
aGlsZHJlbiwgd2UgcGFyZW50IGluIHRoYXQsIGFuZCB0aGVyZWZvcmUKICAgICAgICAgLy8gcG9z
aXRpb24gcmVsYXRpdmUgdG8gaXQuCi0gICAgICAgIEludFJlY3QgY2xpcHBpbmdCb3ggPSBjbGlw
Qm94KHRvUmVuZGVyQm94KGNvbXBBbmNlc3Rvci0+cmVuZGVyZXIoKSkpOworICAgICAgICBMYXlv
dXRSZWN0IGNsaXBwaW5nQm94ID0gY2xpcEJveCh0b1JlbmRlckJveChjb21wQW5jZXN0b3ItPnJl
bmRlcmVyKCkpKTsKICAgICAgICAgZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uID0gY2xpcHBp
bmdCb3gubG9jYXRpb24oKTsKICAgICB9IGVsc2UgaWYgKGNvbXBBbmNlc3RvcikKICAgICAgICAg
Z3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uID0gYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kcy5s
b2NhdGlvbigpOwpAQCAtNzIwLDE5ICs3MjAsMTkgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlm
IChjb21wQW5jZXN0b3IgJiYgY29tcEFuY2VzdG9yLT5oYXNBY2NlbGVyYXRlZFRvdWNoU2Nyb2xs
aW5nKCkpIHsKICAgICAgICAgUmVuZGVyQm94KiByZW5kZXJCb3ggPSB0b1JlbmRlckJveCgmY29t
cEFuY2VzdG9yLT5yZW5kZXJlcigpKTsKLSAgICAgICAgSW50UmVjdCBwYWRkaW5nQm94KHJlbmRl
ckJveC0+Ym9yZGVyTGVmdCgpLCByZW5kZXJCb3gtPmJvcmRlclRvcCgpLAorICAgICAgICBMYXlv
dXRSZWN0IHBhZGRpbmdCb3gocmVuZGVyQm94LT5ib3JkZXJMZWZ0KCksIHJlbmRlckJveC0+Ym9y
ZGVyVG9wKCksCiAgICAgICAgICAgICByZW5kZXJCb3gtPndpZHRoKCkgLSByZW5kZXJCb3gtPmJv
cmRlckxlZnQoKSAtIHJlbmRlckJveC0+Ym9yZGVyUmlnaHQoKSwKICAgICAgICAgICAgIHJlbmRl
ckJveC0+aGVpZ2h0KCkgLSByZW5kZXJCb3gtPmJvcmRlclRvcCgpIC0gcmVuZGVyQm94LT5ib3Jk
ZXJCb3R0b20oKSk7CiAKLSAgICAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQgPSBjb21wQW5jZXN0
b3ItPnNjcm9sbGVkQ29udGVudE9mZnNldCgpOworICAgICAgICBMYXlvdXRTaXplIHNjcm9sbE9m
ZnNldCA9IGNvbXBBbmNlc3Rvci0+c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CiAgICAgICAgIGdy
YXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbiA9IHBhZGRpbmdCb3gubG9jYXRpb24oKSAtIHNjcm9s
bE9mZnNldDsKICAgICB9CiAjZW5kaWYKIAogICAgIGlmIChjb21wQW5jZXN0b3IgJiYgY29tcEFu
Y2VzdG9yLT5uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSkgewogICAgICAgICBSZW5kZXJCb3gm
IHJlbmRlckJveCA9IHRvUmVuZGVyQm94KGNvbXBBbmNlc3Rvci0+cmVuZGVyZXIoKSk7Ci0gICAg
ICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0ID0gY29tcEFuY2VzdG9yLT5zY3JvbGxlZENvbnRlbnRP
ZmZzZXQoKTsKLSAgICAgICAgSW50UG9pbnQgc2Nyb2xsT3JpZ2luKHJlbmRlckJveC5ib3JkZXJM
ZWZ0KCksIHJlbmRlckJveC5ib3JkZXJUb3AoKSk7CisgICAgICAgIExheW91dFNpemUgc2Nyb2xs
T2Zmc2V0ID0gY29tcEFuY2VzdG9yLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsKKyAgICAgICAg
TGF5b3V0UG9pbnQgc2Nyb2xsT3JpZ2luKHJlbmRlckJveC5ib3JkZXJMZWZ0KCksIHJlbmRlckJv
eC5ib3JkZXJUb3AoKSk7CiAgICAgICAgIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbiA9IHNj
cm9sbE9yaWdpbiAtIHNjcm9sbE9mZnNldDsKICAgICB9CiAgICAgCkBAIC03NDEsOCArNzQxLDgg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgp
CiAgICAgICAgIC8vIGxheWVyLiBOb3RlIHRoYXQgd2UgY2FsbCBpdCB3aXRoIHRlbXBvcmFyeUNs
aXBSZWN0cyA9IHRydWUgYmVjYXVzZSBub3JtYWxseSB3aGVuIGNvbXB1dGluZyBjbGlwIHJlY3Rz
CiAgICAgICAgIC8vIGZvciBhIGNvbXBvc2l0aW5nIGxheWVyLCByb290TGF5ZXIgaXMgdGhlIGxh
eWVyIGl0c2VsZi4KICAgICAgICAgUmVuZGVyTGF5ZXI6OkNsaXBSZWN0c0NvbnRleHQgY2xpcFJl
Y3RzQ29udGV4dChjb21wQW5jZXN0b3IsIDAsIFRlbXBvcmFyeUNsaXBSZWN0cywgSWdub3JlT3Zl
cmxheVNjcm9sbGJhclNpemUsIElnbm9yZU92ZXJmbG93Q2xpcCk7Ci0gICAgICAgIEludFJlY3Qg
cGFyZW50Q2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG1fb3duaW5nTGF5ZXIuYmFja2dy
b3VuZENsaXBSZWN0KGNsaXBSZWN0c0NvbnRleHQpLnJlY3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJl
Y3QgZm9yIENTUyByZWdpb25zLgotICAgICAgICBBU1NFUlQocGFyZW50Q2xpcFJlY3QgIT0gSW50
UmVjdDo6aW5maW5pdGVSZWN0KCkpOworICAgICAgICBMYXlvdXRSZWN0IHBhcmVudENsaXBSZWN0
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX293bmluZ0xheWVyLmJhY2tncm91bmRDbGlwUmVjdChj
bGlwUmVjdHNDb250ZXh0KS5yZWN0KCkpOyAvLyBGSVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVn
aW9ucy4KKyAgICAgICAgQVNTRVJUKHBhcmVudENsaXBSZWN0ICE9IExheW91dFJlY3Q6OmluZmlu
aXRlUmVjdCgpKTsKICAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXItPnNldFBvc2l0aW9u
KEZsb2F0UG9pbnQocGFyZW50Q2xpcFJlY3QubG9jYXRpb24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJl
bnRMb2NhdGlvbikpOwogICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllci0+c2V0U2l6ZShw
YXJlbnRDbGlwUmVjdC5zaXplKCkpOwogCkBAIC03NTMsNyArNzUzLDcgQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgICAgIGdyYXBo
aWNzTGF5ZXJQYXJlbnRMb2NhdGlvbiA9IHBhcmVudENsaXBSZWN0LmxvY2F0aW9uKCk7CiAgICAg
fQogCi0gICAgRmxvYXRTaXplIGNvbnRlbnRzU2l6ZSA9IHJlbGF0aXZlQ29tcG9zaXRpbmdCb3Vu
ZHMuc2l6ZSgpOworICAgIExheW91dFNpemUgY29udGVudHNTaXplID0gcmVsYXRpdmVDb21wb3Np
dGluZ0JvdW5kcy5zaXplKCk7CiAgICAgCiAgICAgaWYgKG1fY29udGVudHNDb250YWlubWVudExh
eWVyKSB7CiAgICAgICAgIG1fY29udGVudHNDb250YWlubWVudExheWVyLT5zZXRQcmVzZXJ2ZXMz
RChwcmVzZXJ2ZXMzRCk7CkBAIC03NjUsMjYgKzc2NSwyNiBAQCB2b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKIAogICAgIG1fZ3JhcGhpY3NMYXll
ci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChyZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLmxvY2F0
aW9uKCkgLSBncmFwaGljc0xheWVyUGFyZW50TG9jYXRpb24pKTsKICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldFNpemUoY29udGVudHNTaXplKTsKLSAgICBJbnRTaXplIG9mZnNldEZyb21SZW5kZXJl
ciA9IHRvSW50U2l6ZShsb2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkpOworICAgIEZs
b2F0U2l6ZSBvZmZzZXRGcm9tUmVuZGVyZXIgPSB0b0xheW91dFNpemUobG9jYWxDb21wb3NpdGlu
Z0JvdW5kcy5sb2NhdGlvbigpKTsKICAgICBpZiAob2Zmc2V0RnJvbVJlbmRlcmVyICE9IG1fZ3Jh
cGhpY3NMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCkpIHsKLSAgICAgICAgbV9ncmFwaGljc0xh
eWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIodG9JbnRTaXplKGxvY2FsQ29tcG9zaXRpbmdCb3Vu
ZHMubG9jYXRpb24oKSkpOworICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE9mZnNldEZyb21S
ZW5kZXJlcihvZmZzZXRGcm9tUmVuZGVyZXIpOwogICAgICAgICBwb3NpdGlvbk92ZXJmbG93Q29u
dHJvbHNMYXllcnMoKTsKICAgICB9CiAKICAgICBpZiAoIW1faXNNYWluRnJhbWVSZW5kZXJWaWV3
TGF5ZXIpIHsKICAgICAgICAgLy8gRm9yIG5vbi1yb290IGxheWVycywgYmFja2dyb3VuZCBpcyBh
bHdheXMgcGFpbnRlZCBieSB0aGUgcHJpbWFyeSBncmFwaGljcyBsYXllci4KICAgICAgICAgQVNT
RVJUKCFtX2JhY2tncm91bmRMYXllcik7Ci0gICAgICAgIGJvb2wgaGFkU3VicGl4ZWxSb3VuZGlu
ZyA9IExheW91dFNpemUocmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcy5zaXplKCkpICE9IGxvY2Fs
UmF3Q29tcG9zaXRpbmdCb3VuZHMuc2l6ZSgpOworICAgICAgICBib29sIGhhZFN1YnBpeGVsUm91
bmRpbmcgPSByZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLnNpemUoKSAhPSBsb2NhbFJhd0NvbXBv
c2l0aW5nQm91bmRzLnNpemUoKTsKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50
c09wYXF1ZSghaGFkU3VicGl4ZWxSb3VuZGluZyAmJiBtX293bmluZ0xheWVyLmJhY2tncm91bmRJ
c0tub3duVG9CZU9wYXF1ZUluUmVjdChsb2NhbENvbXBvc2l0aW5nQm91bmRzKSk7CiAgICAgfQog
CiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxheWVyIHRoYXQgY2xpcHMgY2hpbGRyZW4sIHBvc2l0aW9u
IGl0LgotICAgIEludFJlY3QgY2xpcHBpbmdCb3g7CisgICAgTGF5b3V0UmVjdCBjbGlwcGluZ0Jv
eDsKICAgICBpZiAoR3JhcGhpY3NMYXllciogY2xpcExheWVyID0gY2xpcHBpbmdMYXllcigpKSB7
CiAgICAgICAgIGNsaXBwaW5nQm94ID0gY2xpcEJveCh0b1JlbmRlckJveChyZW5kZXJlcigpKSk7
CiAgICAgICAgIGNsaXBMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChjbGlwcGluZ0JveC5s
b2NhdGlvbigpIC0gbG9jYWxDb21wb3NpdGluZ0JvdW5kcy5sb2NhdGlvbigpKSk7CiAgICAgICAg
IGNsaXBMYXllci0+c2V0U2l6ZShjbGlwcGluZ0JveC5zaXplKCkpOwotICAgICAgICBjbGlwTGF5
ZXItPnNldE9mZnNldEZyb21SZW5kZXJlcih0b0ludFNpemUoY2xpcHBpbmdCb3gubG9jYXRpb24o
KSkpOworICAgICAgICBjbGlwTGF5ZXItPnNldE9mZnNldEZyb21SZW5kZXJlcih0b0Zsb2F0U2l6
ZShjbGlwcGluZ0JveC5sb2NhdGlvbigpKSk7CiAgICAgfQogICAgIAogICAgIGlmIChtX21hc2tM
YXllcikgewpAQCAtNzk0LDEwICs3OTQsMTAgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgfQogICAgIAogICAgIGlmIChtX293bmlu
Z0xheWVyLmhhc1RyYW5zZm9ybSgpKSB7Ci0gICAgICAgIGNvbnN0IEludFJlY3QgYm9yZGVyQm94
ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkucGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpOwor
ICAgICAgICBjb25zdCBMYXlvdXRSZWN0IGJvcmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVy
KCkpLnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKTsKIAogICAgICAgICAvLyBHZXQgbGF5b3V0
IGJvdW5kcyBpbiB0aGUgY29vcmRzIG9mIGNvbXBBbmNlc3RvciB0byBtYXRjaCByZWxhdGl2ZUNv
bXBvc2l0aW5nQm91bmRzLgotICAgICAgICBJbnRSZWN0IGxheWVyQm91bmRzKGRlbHRhLCBib3Jk
ZXJCb3guc2l6ZSgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kcyhkZWx0YSwgYm9y
ZGVyQm94LnNpemUoKSk7CiAKICAgICAgICAgLy8gVXBkYXRlIHByb3BlcnRpZXMgdGhhdCBkZXBl
bmQgb24gbGF5ZXIgZGltZW5zaW9ucwogICAgICAgICBGbG9hdFBvaW50M0QgdHJhbnNmb3JtT3Jp
Z2luID0gY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihib3JkZXJCb3gpOwpAQCAtODM2LDEyICs4MzYs
MTIgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRy
eSgpCiAgICAgaWYgKG1fZm9yZWdyb3VuZExheWVyKSB7CiAgICAgICAgIEZsb2F0UG9pbnQgZm9y
ZWdyb3VuZFBvc2l0aW9uOwogICAgICAgICBGbG9hdFNpemUgZm9yZWdyb3VuZFNpemUgPSBjb250
ZW50c1NpemU7Ci0gICAgICAgIEludFNpemUgZm9yZWdyb3VuZE9mZnNldCA9IG1fZ3JhcGhpY3NM
YXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCk7CisgICAgICAgIEZsb2F0U2l6ZSBmb3JlZ3JvdW5k
T2Zmc2V0ID0gbV9ncmFwaGljc0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICAgICAg
aWYgKGhhc0NsaXBwaW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGNs
aXBwaW5nIGxheWVyICh3aGljaCBjbGlwcyBkZXNjZW5kYW50cyksIHRoZW4gdGhlIGZvcmVncm91
bmQgbGF5ZXIgaXMgYSBjaGlsZCBvZiBpdCwKICAgICAgICAgICAgIC8vIHNvIHRoYXQgaXQgZ2V0
cyBjb3JyZWN0bHkgc29ydGVkIHdpdGggY2hpbGRyZW4uIEluIHRoYXQgY2FzZSwgcG9zaXRpb24g
cmVsYXRpdmUgdG8gdGhlIGNsaXBwaW5nIGxheWVyLgogICAgICAgICAgICAgZm9yZWdyb3VuZFNp
emUgPSBGbG9hdFNpemUoY2xpcHBpbmdCb3guc2l6ZSgpKTsKLSAgICAgICAgICAgIGZvcmVncm91
bmRPZmZzZXQgPSB0b0ludFNpemUoY2xpcHBpbmdCb3gubG9jYXRpb24oKSk7CisgICAgICAgICAg
ICBmb3JlZ3JvdW5kT2Zmc2V0ID0gdG9GbG9hdFNpemUoY2xpcHBpbmdCb3gubG9jYXRpb24oKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBtX2ZvcmVncm91bmRMYXllci0+c2V0UG9zaXRpb24oZm9y
ZWdyb3VuZFBvc2l0aW9uKTsKQEAgLTg4Myw3ICs4ODMsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKIAogICAgICAgICBtX3Njcm9sbGlu
Z0xheWVyLT5zZXRTaXplKHBhZGRpbmdCb3guc2l6ZSgpKTsKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgICAgIEludFNpemUgb2xkU2Nyb2xsaW5nTGF5ZXJPZmZzZXQgPSBtX3Njcm9sbGluZ0xheWVy
LT5vZmZzZXRGcm9tUmVuZGVyZXIoKTsKKyAgICAgICAgRmxvYXRTaXplIG9sZFNjcm9sbGluZ0xh
eWVyT2Zmc2V0ID0gbV9zY3JvbGxpbmdMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCk7CiAgICAg
ICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldE9mZnNldEZyb21SZW5kZXJlcihJbnRQb2ludCgpIC0g
cGFkZGluZ0JveC5sb2NhdGlvbigpKTsKICAgICAgICAgYm9vbCBwYWRkaW5nQm94T2Zmc2V0Q2hh
bmdlZCA9IG9sZFNjcm9sbGluZ0xheWVyT2Zmc2V0ICE9IG1fc2Nyb2xsaW5nTGF5ZXItPm9mZnNl
dEZyb21SZW5kZXJlcigpOwogCkBAIC05MDcsMTMgKzkwNywxMyBAQCB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICAgICAgbV9zY3JvbGxp
bmdDb250ZW50c0xheWVyLT5zZXRTaXplKHNjcm9sbFNpemUpOwogICAgICAgICAvLyBTY3JvbGxp
bmcgdGhlIGNvbnRlbnQgbGF5ZXIgZG9lcyBub3QgbmVlZCB0byB0cmlnZ2VyIGEgcmVwYWludC4g
VGhlIG9mZnNldCB3aWxsIGJlIGNvbXBlbnNhdGVkIGF3YXkgZHVyaW5nIHBhaW50aW5nLgogICAg
ICAgICAvLyBGSVhNRTogVGhlIHBhaW50IG9mZnNldCBhbmQgdGhlIHNjcm9sbCBvZmZzZXQgc2hv
dWxkIHJlYWxseSBiZSBzZXBhcmF0ZSBjb25jZXB0cy4KLSAgICAgICAgbV9zY3JvbGxpbmdDb250
ZW50c0xheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIocGFkZGluZ0JveC5sb2NhdGlvbigpIC0g
SW50UG9pbnQoKSAtIHNjcm9sbE9mZnNldCwgR3JhcGhpY3NMYXllcjo6RG9udFNldE5lZWRzRGlz
cGxheSk7CisgICAgICAgIG1fc2Nyb2xsaW5nQ29udGVudHNMYXllci0+c2V0T2Zmc2V0RnJvbVJl
bmRlcmVyKHBhZGRpbmdCb3gubG9jYXRpb24oKSAtIEZsb2F0UG9pbnQoKSAtIHNjcm9sbE9mZnNl
dCwgR3JhcGhpY3NMYXllcjo6RG9udFNldE5lZWRzRGlzcGxheSk7CiAgICAgICAgIAogICAgICAg
ICBjb21wb3NpdG9yKCkuc2Nyb2xsaW5nTGF5ZXJBZGRlZE9yVXBkYXRlZCgmbV9vd25pbmdMYXll
cik7CiAjZWxzZQogICAgICAgICBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPnNldFBvc2l0aW9u
KEZsb2F0UG9pbnQoLXNjcm9sbE9mZnNldC53aWR0aCgpLCAtc2Nyb2xsT2Zmc2V0LmhlaWdodCgp
KSk7CiAKLSAgICAgICAgSW50U2l6ZSBvbGRTY3JvbGxpbmdMYXllck9mZnNldCA9IG1fc2Nyb2xs
aW5nTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpOworICAgICAgICBGbG9hdFNpemUgb2xkU2Ny
b2xsaW5nTGF5ZXJPZmZzZXQgPSBtX3Njcm9sbGluZ0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIo
KTsKICAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKC10b0lu
dFNpemUocGFkZGluZ0JveC5sb2NhdGlvbigpKSk7CiAKICAgICAgICAgYm9vbCBwYWRkaW5nQm94
T2Zmc2V0Q2hhbmdlZCA9IG9sZFNjcm9sbGluZ0xheWVyT2Zmc2V0ICE9IG1fc2Nyb2xsaW5nTGF5
ZXItPm9mZnNldEZyb21SZW5kZXJlcigpOwpAQCAtOTUxLDcgKzk1MSw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgIGNvbXBvc2l0
b3IoKS51cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRTdGF0dXMobV9vd25pbmdMYXllcik7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjphZGp1c3RBbmNlc3RvckNvbXBvc2l0aW5nQm91bmRz
Rm9yRmxvd1RocmVhZChJbnRSZWN0JiBhbmNlc3RvckNvbXBvc2l0aW5nQm91bmRzLCBjb25zdCBS
ZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNlc3RvcikgY29uc3QKK3ZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjphZGp1c3RBbmNlc3RvckNvbXBvc2l0aW5nQm91bmRzRm9yRmxvd1RocmVhZChMYXlv
dXRSZWN0JiBhbmNlc3RvckNvbXBvc2l0aW5nQm91bmRzLCBjb25zdCBSZW5kZXJMYXllciogY29t
cG9zaXRpbmdBbmNlc3RvcikgY29uc3QKIHsKICAgICBpZiAoIW1fb3duaW5nTGF5ZXIuaXNJbnNp
ZGVGbG93VGhyZWFkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMjUsNyArMTIyNSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHNMYXllcnMoKQog
CiAgICAgY29uc3QgSW50UmVjdCBib3JkZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcigpKS5w
aXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCk7CiAKLSAgICBJbnRTaXplIG9mZnNldEZyb21SZW5k
ZXJlciA9IG1fZ3JhcGhpY3NMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCk7CisgICAgRmxvYXRT
aXplIG9mZnNldEZyb21SZW5kZXJlciA9IG1fZ3JhcGhpY3NMYXllci0+b2Zmc2V0RnJvbVJlbmRl
cmVyKCk7CiAgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJGb3JIb3Jpem9udGFs
U2Nyb2xsYmFyKCkpIHsKICAgICAgICAgSW50UmVjdCBoQmFyUmVjdCA9IG1fb3duaW5nTGF5ZXIu
cmVjdEZvckhvcml6b250YWxTY3JvbGxiYXIoYm9yZGVyQm94KTsKICAgICAgICAgbGF5ZXItPnNl
dFBvc2l0aW9uKGhCYXJSZWN0LmxvY2F0aW9uKCkgLSBvZmZzZXRGcm9tUmVuZGVyZXIpOwpAQCAt
MTkwNSw3ICsxOTA1LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29u
dGVudHMoKQogICAgIGltYWdlLT5zdGFydEFuaW1hdGlvbigpOwogfQogCi1GbG9hdFBvaW50M0Qg
UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IEludFJlY3Qm
IGJvcmRlckJveCkgY29uc3QKK0Zsb2F0UG9pbnQzRCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1
dGVUcmFuc2Zvcm1PcmlnaW4oY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94KSBjb25zdAogewog
ICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKIApAQCAt
MTkxNyw3ICsxOTE3LDcgQEAgRmxvYXRQb2ludDNEIFJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0
ZVRyYW5zZm9ybU9yaWdpbihjb25zdCBJbnRSZWN0JiBib3JkZXJCb3gKICAgICByZXR1cm4gb3Jp
Z2luOwogfQogCi1GbG9hdFBvaW50IFJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVBlcnNwZWN0
aXZlT3JpZ2luKGNvbnN0IEludFJlY3QmIGJvcmRlckJveCkgY29uc3QKK0Zsb2F0UG9pbnQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlUGVyc3BlY3RpdmVPcmlnaW4oY29uc3QgTGF5b3V0UmVj
dCYgYm9yZGVyQm94KSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJl
bmRlcmVyKCkuc3R5bGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5oCmluZGV4IDJmYzY1YjAuLjQxZDMzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTI0MSw5ICsyNDEsOSBAQCBwcml2
YXRlOgogICAgIAogICAgIExheW91dFNpemUgY29udGVudE9mZnNldEluQ29tcG9zdGluZ0xheWVy
KCkgY29uc3Q7CiAgICAgLy8gUmVzdWx0IGlzIHRyYW5zZm9ybSBvcmlnaW4gaW4gcGl4ZWxzLgot
ICAgIEZsb2F0UG9pbnQzRCBjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IEludFJlY3QmIGJv
cmRlckJveCkgY29uc3Q7CisgICAgRmxvYXRQb2ludDNEIGNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4o
Y29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94KSBjb25zdDsKICAgICAvLyBSZXN1bHQgaXMgcGVy
c3BlY3RpdmUgb3JpZ2luIGluIHBpeGVscy4KLSAgICBGbG9hdFBvaW50IGNvbXB1dGVQZXJzcGVj
dGl2ZU9yaWdpbihjb25zdCBJbnRSZWN0JiBib3JkZXJCb3gpIGNvbnN0OworICAgIEZsb2F0UG9p
bnQgY29tcHV0ZVBlcnNwZWN0aXZlT3JpZ2luKGNvbnN0IExheW91dFJlY3QmIGJvcmRlckJveCkg
Y29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZU9wYWNpdHkoY29uc3QgUmVuZGVyU3R5bGUqKTsKICAg
ICB2b2lkIHVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSopOwpAQCAtMjg2LDcgKzI4
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xh
eWVyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3Qs
IFBhaW50QmVoYXZpb3IsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlKTsKIAogICAgIC8vIEhl
bHBlciBmdW5jdGlvbiBmb3IgdXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5LgotICAgIHZvaWQg
YWRqdXN0QW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kc0ZvckZsb3dUaHJlYWQoSW50UmVjdCYgYW5j
ZXN0b3JDb21wb3NpdGluZ0JvdW5kcywgY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5j
ZXN0b3IpIGNvbnN0OworICAgIHZvaWQgYWRqdXN0QW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kc0Zv
ckZsb3dUaHJlYWQoTGF5b3V0UmVjdCYgYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kcywgY29uc3Qg
UmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXN0b3IpIGNvbnN0OwogCiAgICAgc3RhdGljIENT
U1Byb3BlcnR5SUQgZ3JhcGhpY3NMYXllclRvQ1NTUHJvcGVydHkoQW5pbWF0ZWRQcm9wZXJ0eUlE
KTsKICAgICBzdGF0aWMgQW5pbWF0ZWRQcm9wZXJ0eUlEIGNzc1RvR3JhcGhpY3NMYXllclByb3Bl
cnR5KENTU1Byb3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA3OTRhMDQ2Li5kNWNiODJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAt
MjAwOSw3ICsyMDA5LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNhbkJlQ29tcG9z
aXRlZChjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNPd25CYWNraW5nU3RvcmUo
Y29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdB
bmNlc3RvckxheWVyLCBjb25zdCBJbnRSZWN0JiBsYXllckNvbXBvc2l0ZWRCb3VuZHNJbkFuY2Vz
dG9yLCBjb25zdCBJbnRSZWN0JiBhbmNlc3RvckNvbXBvc2l0ZWRCb3VuZHMpIGNvbnN0Citib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNPd25CYWNraW5nU3RvcmUoY29uc3QgUmVu
ZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNlc3Rvckxh
eWVyLCBjb25zdCBMYXlvdXRSZWN0JiBsYXllckNvbXBvc2l0ZWRCb3VuZHNJbkFuY2VzdG9yLCBj
b25zdCBMYXlvdXRSZWN0JiBhbmNlc3RvckNvbXBvc2l0ZWRCb3VuZHMpIGNvbnN0CiB7CiAgICAg
YXV0byYgcmVuZGVyZXIgPSBsYXllci5yZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggZWVjNzU3Ni4uZDhkMmJl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcGFpbnRDb21wb3Np
dGVkTGF5ZXJzKGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIGdpdmVuIGxheWVyIG5lZWRzIGl0IG93biBiYWNraW5nIHN0b3JlLgotICAgIGJvb2wgcmVx
dWlyZXNPd25CYWNraW5nU3RvcmUoY29uc3QgUmVuZGVyTGF5ZXImLCBjb25zdCBSZW5kZXJMYXll
ciogY29tcG9zaXRpbmdBbmNlc3RvckxheWVyLCBjb25zdCBJbnRSZWN0JiBsYXllckNvbXBvc2l0
ZWRCb3VuZHNJbkFuY2VzdG9yLCBjb25zdCBJbnRSZWN0JiBhbmNlc3RvckNvbXBvc2l0ZWRCb3Vu
ZHMpIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNPd25CYWNraW5nU3RvcmUoY29uc3QgUmVuZGVy
TGF5ZXImLCBjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNlc3RvckxheWVyLCBjb25z
dCBMYXlvdXRSZWN0JiBsYXllckNvbXBvc2l0ZWRCb3VuZHNJbkFuY2VzdG9yLCBjb25zdCBMYXlv
dXRSZWN0JiBhbmNlc3RvckNvbXBvc2l0ZWRCb3VuZHMpIGNvbnN0OwogCiAgICAgUmVuZGVyTGF5
ZXImIHJvb3RSZW5kZXJMYXllcigpIGNvbnN0OwogICAgIEdyYXBoaWNzTGF5ZXIqIHJvb3RHcmFw
aGljc0xheWVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uU2V0LmNwcAppbmRleCBlZDMwOWRhLi4zMGRiMzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTY1NSw3
ICs2NTUsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0Ojpjb2xsZWN0TGF5ZXJGcmFnbWVu
dHMoTGF5ZXJGcmFnbWVudHMmIGZyYWdtZW50cywgY29ucwogICAgIH0KIH0KIAotdm9pZCBSZW5k
ZXJNdWx0aUNvbHVtblNldDo6YWRqdXN0UmVnaW9uQm91bmRzRnJvbUZsb3dUaHJlYWRQb3J0aW9u
UmVjdChjb25zdCBJbnRQb2ludCYgbGF5ZXJPZmZzZXQsIEludFJlY3QmIHJlZ2lvbkJvdW5kcykK
K3ZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmFkanVzdFJlZ2lvbkJvdW5kc0Zyb21GbG93VGhy
ZWFkUG9ydGlvblJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGxheWVyT2Zmc2V0LCBMYXlvdXRSZWN0
JiByZWdpb25Cb3VuZHMpCiB7CiAgICAgTGF5b3V0VW5pdCBsYXllckxvZ2ljYWxUb3AgPSBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gbGF5ZXJPZmZzZXQueSgpIDogbGF5ZXJPZmZzZXQueCgp
OwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gY29sdW1uSW5kZXhBdE9mZnNldChsYXllckxv
Z2ljYWxUb3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuaAppbmRleCAwYTk1YzQwLi40MDFiNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdExheWVyRnJhZ21lbnRzKExheWVyRnJhZ21l
bnRzJiwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZGluZ0JveCwgY29uc3QgTGF5b3V0UmVj
dCYgZGlydHlSZWN0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RSZWdpb25C
b3VuZHNGcm9tRmxvd1RocmVhZFBvcnRpb25SZWN0KGNvbnN0IEludFBvaW50JiBsYXllck9mZnNl
dCwgSW50UmVjdCYgcmVnaW9uQm91bmRzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0UmVnaW9uQm91bmRzRnJvbUZsb3dUaHJlYWRQb3J0aW9uUmVjdChjb25zdCBMYXlvdXRQb2lu
dCYgbGF5ZXJPZmZzZXQsIExheW91dFJlY3QmIHJlZ2lvbkJvdW5kcykgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggMzBjMDZlNi4uN2Y5MzczZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKQEAgLTQ1NSwxMSAr
NDU1LDExIEBAIHZvaWQgUmVuZGVyUmVnaW9uOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5n
ZT4+JiByYW5nZU9iamVjdHMpIGNvbnN0CiAgICAgbmFtZWRGbG93LmdldFJhbmdlcyhyYW5nZU9i
amVjdHMsIHRoaXMpOwogfQogCi12b2lkIFJlbmRlclJlZ2lvbjo6YWRqdXN0UmVnaW9uQm91bmRz
RnJvbUZsb3dUaHJlYWRQb3J0aW9uUmVjdChjb25zdCBJbnRQb2ludCYgbGF5ZXJPZmZzZXQsIElu
dFJlY3QmIHJlZ2lvbkJvdW5kcykKK3ZvaWQgUmVuZGVyUmVnaW9uOjphZGp1c3RSZWdpb25Cb3Vu
ZHNGcm9tRmxvd1RocmVhZFBvcnRpb25SZWN0KGNvbnN0IExheW91dFBvaW50JiBsYXllck9mZnNl
dCwgTGF5b3V0UmVjdCYgcmVnaW9uQm91bmRzKQogewogICAgIExheW91dFJlY3QgZmxpcHBlZEZs
b3dUaHJlYWRQb3J0aW9uUmVjdCA9IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpOwogICAgIGZsb3dU
aHJlYWQoKS0+ZmxpcEZvcldyaXRpbmdNb2RlKGZsaXBwZWRGbG93VGhyZWFkUG9ydGlvblJlY3Qp
OwotICAgIHJlZ2lvbkJvdW5kcy5tb3ZlQnkocm91bmRlZEludFBvaW50KGZsaXBwZWRGbG93VGhy
ZWFkUG9ydGlvblJlY3QubG9jYXRpb24oKSkpOworICAgIHJlZ2lvbkJvdW5kcy5tb3ZlQnkoZmxp
cHBlZEZsb3dUaHJlYWRQb3J0aW9uUmVjdC5sb2NhdGlvbigpKTsKIAogICAgIFVOVVNFRF9QQVJB
TShsYXllck9mZnNldCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgK
aW5kZXggODA5NDdhNC4uMzAxOTdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZWdpb24uaApAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBj
b2xsZWN0TGF5ZXJGcmFnbWVudHMoTGF5ZXJGcmFnbWVudHMmLCBjb25zdCBMYXlvdXRSZWN0Jiwg
Y29uc3QgTGF5b3V0UmVjdCYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFJlZ2lvbkJv
dW5kc0Zyb21GbG93VGhyZWFkUG9ydGlvblJlY3QoY29uc3QgSW50UG9pbnQmIGxheWVyT2Zmc2V0
LCBJbnRSZWN0JiByZWdpb25Cb3VuZHMpOyAvLyBsYXllck9mZnNldCBpcyBuZWVkZWQgZm9yIG11
bHRpLWNvbHVtbi4KKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UmVnaW9uQm91bmRzRnJvbUZsb3dU
aHJlYWRQb3J0aW9uUmVjdChjb25zdCBMYXlvdXRQb2ludCYgbGF5ZXJPZmZzZXQsIExheW91dFJl
Y3QmIHJlZ2lvbkJvdW5kcyk7IC8vIGxheWVyT2Zmc2V0IGlzIG5lZWRlZCBmb3IgbXVsdGktY29s
dW1uLgogCiAgICAgdm9pZCBhZGRMYXlvdXRPdmVyZmxvd0ZvckJveChjb25zdCBSZW5kZXJCb3gq
LCBjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgdm9pZCBhZGRWaXN1YWxPdmVyZmxvd0ZvckJveChj
b25zdCBSZW5kZXJCb3gqLCBjb25zdCBMYXlvdXRSZWN0Jik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224415</attachid>
            <date>2014-02-17 13:17:50 -0800</date>
            <delta_ts>2014-02-19 20:57:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>23175</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNzI3MDMxLi45NGM0MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzkg
QEAKIDIwMTQtMDItMTcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAorICAgICAg
ICBTdWJwaXhlbCByZW5kZXJpbmc6IE1ha2UgR3JhcGhpY3NMYXllcidzIG9mZnNldEZyb21SZW5k
ZXJlciBzdWJwaXhlbCBwb3NpdGlvbiBiYXNlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODY5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENoYW5naW5nIGxheWVycyBmcm9tIHVzaW5nIGludGVncmFs
IHR5cGVzIHRvIHVzaW5nIEZsb2F0L0xheW91dFVuaXRzIHNvIHRoYXQKKyAgICAgICAgd2UgY2Fu
IHBvc2l0aW9uIHRoZW0gb24gc3VicGl4ZWxzLiBUaGV5IGFyZSBzdGlsbCBpbnRlZ3JhbCBwb3Np
dGlvbmVkIHRob3VnaC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRPZmZzZXRGcm9tUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6Om9mZnNldEZyb21SZW5kZXJlcik6IHJlbW92ZWQgaW5jb3JyZWN0
IGNvbW1lbnQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJH
ZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmFkanVzdEFu
Y2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1dGVQZXJzcGVj
dGl2ZU9yaWdpbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc093bkJhY2tpbmdTdG9yZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNdWx0aUNvbHVtblNldDo6YWRqdXN0UmVnaW9uQm91bmRzRnJvbUZsb3dUaHJlYWRQb3J0
aW9uUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJSZWdpb246OmFkanVzdFJlZ2lvbkJvdW5kc0Zyb21GbG93VGhyZWFkUG9ydGlvblJlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKworMjAxNC0wMi0xNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCiAgICAgICAgIFN1YnBpeGVsIHJlbmRlcmlu
ZzogKFJlbmRlckxheWVyKVBhc3Mgbm9uLWNzcy1waXhlbC1zbmFwcGVkIGRpcnR5IHJlY3RzIHRv
IFBhaW50SW5mbyB3aGVuIHBhaW50aW5nIHJlbmRlcmVyKCkuCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg5MTMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCAzZjU5OGI2Li5k
MzQ2MzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0
UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgbV9yZXBsaWNhTGF5
ZXIgPSBsYXllcjsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyOjpzZXRPZmZzZXRGcm9tUmVuZGVy
ZXIoY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBTaG91bGRTZXROZWVkc0Rpc3BsYXkgc2hvdWxkU2V0
TmVlZHNEaXNwbGF5KQordm9pZCBHcmFwaGljc0xheWVyOjpzZXRPZmZzZXRGcm9tUmVuZGVyZXIo
Y29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIFNob3VsZFNldE5lZWRzRGlzcGxheSBzaG91bGRTZXRO
ZWVkc0Rpc3BsYXkpCiB7CiAgICAgaWYgKG9mZnNldCA9PSBtX29mZnNldEZyb21SZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6
c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHZvaWQgR3JhcGhpY3NMYXll
cjo6cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGNsaXApCiB7CiAgICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgIElu
dFNpemUgb2Zmc2V0ID0gb2Zmc2V0RnJvbVJlbmRlcmVyKCk7CisgICAgICAgIEZsb2F0U2l6ZSBv
ZmZzZXQgPSBvZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUo
LW9mZnNldCk7CiAKICAgICAgICAgRmxvYXRSZWN0IGNsaXBSZWN0KGNsaXApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGQzY2Nh
M2YuLmQwNmI1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTI3OSw5ICsyNzksOSBAQCBwdWJsaWM6CiAgICAgICAgIFNldE5l
ZWRzRGlzcGxheQogICAgIH07CiAKLSAgICAvLyBPZmZzZXQgaXMgb3JpZ2luIG9mIHRoZSByZW5k
ZXJlciBtaW51cyBvcmlnaW4gb2YgdGhlIGdyYXBoaWNzIGxheWVyIChzbyBlaXRoZXIgemVybyBv
ciBuZWdhdGl2ZSkuCi0gICAgSW50U2l6ZSBvZmZzZXRGcm9tUmVuZGVyZXIoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldEZyb21SZW5kZXJlcjsgfQotICAgIHZvaWQgc2V0T2Zmc2V0RnJvbVJlbmRl
cmVyKGNvbnN0IEludFNpemUmLCBTaG91bGRTZXROZWVkc0Rpc3BsYXkgPSBTZXROZWVkc0Rpc3Bs
YXkpOworICAgIC8vIE9mZnNldCBpcyBvcmlnaW4gb2YgdGhlIHJlbmRlcmVyIG1pbnVzIG9yaWdp
biBvZiB0aGUgZ3JhcGhpY3MgbGF5ZXIuCisgICAgRmxvYXRTaXplIG9mZnNldEZyb21SZW5kZXJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0RnJvbVJlbmRlcmVyOyB9CisgICAgdm9pZCBzZXRP
ZmZzZXRGcm9tUmVuZGVyZXIoY29uc3QgRmxvYXRTaXplJiwgU2hvdWxkU2V0TmVlZHNEaXNwbGF5
ID0gU2V0TmVlZHNEaXNwbGF5KTsKIAogICAgIC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgbGF5ZXIg
KHRoZSBsb2NhdGlvbiBvZiBpdHMgdG9wLWxlZnQgY29ybmVyIGluIGl0cyBwYXJlbnQpCiAgICAg
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9
CkBAIC01NTUsNyArNTU1LDcgQEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBtX25hbWU7CiAgICAg
CiAgICAgLy8gT2Zmc2V0IGZyb20gdGhlIG93bmluZyByZW5kZXJlcgotICAgIEludFNpemUgbV9v
ZmZzZXRGcm9tUmVuZGVyZXI7CisgICAgRmxvYXRTaXplIG1fb2Zmc2V0RnJvbVJlbmRlcmVyOwog
ICAgIAogICAgIC8vIFBvc2l0aW9uIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQgR3JhcGhpY3NM
YXllcgogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYmY1NDYyNS4uMDc5YTRmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTc0LDcgKzc0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogc3RhdGljIGJvb2wgaGFzQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmRJbWFnZShj
b25zdCBSZW5kZXJTdHlsZSopOwotc3RhdGljIEludFJlY3QgY2xpcEJveChSZW5kZXJCb3gmIHJl
bmRlcmVyKTsKK3N0YXRpYyBMYXlvdXRSZWN0IGNsaXBCb3goUmVuZGVyQm94JiByZW5kZXJlcik7
CiAKIENhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewpAQCAtNjMzLDcgKzYzMyw3IEBAIGJvb2wg
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbigpCiAg
ICAgcmV0dXJuIGxheWVyQ29uZmlnQ2hhbmdlZDsKIH0KIAotc3RhdGljIEludFJlY3QgY2xpcEJv
eChSZW5kZXJCb3gmIHJlbmRlcmVyKQorc3RhdGljIExheW91dFJlY3QgY2xpcEJveChSZW5kZXJC
b3gmIHJlbmRlcmVyKQogewogICAgIExheW91dFJlY3QgcmVzdWx0ID0gTGF5b3V0UmVjdDo6aW5m
aW5pdGVSZWN0KCk7CiAgICAgaWYgKHJlbmRlcmVyLmhhc092ZXJmbG93Q2xpcCgpKQpAQCAtNjg2
LDcgKzY4Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVy
R2VvbWV0cnkoKQogICAgIFJlbmRlckxheWVyKiBjb21wQW5jZXN0b3IgPSBtX293bmluZ0xheWVy
LmFuY2VzdG9yQ29tcG9zaXRpbmdMYXllcigpOwogICAgIAogICAgIC8vIFdlIGNvbXB1dGUgZXZl
cnl0aGluZyByZWxhdGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyLgotICAg
IEludFJlY3QgYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kczsKKyAgICBMYXlvdXRSZWN0IGFuY2Vz
dG9yQ29tcG9zaXRpbmdCb3VuZHM7CiAgICAgaWYgKGNvbXBBbmNlc3RvcikgewogICAgICAgICBB
U1NFUlQoY29tcEFuY2VzdG9yLT5iYWNraW5nKCkpOwogICAgICAgICBhbmNlc3RvckNvbXBvc2l0
aW5nQm91bmRzID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjb21wQW5jZXN0b3ItPmJhY2tpbmcoKS0+
Y29tcG9zaXRlZEJvdW5kcygpKTsKQEAgLTcwMCwxNyArNzAwLDE3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgIC8vIE1vdmUgdGhl
IGJvdW5kcyBieSB0aGUgc3VicGl4ZWwgYWNjdW11bGF0aW9uIHNvIHRoYXQgaXQgcGl4ZWwtc25h
cHMgcmVsYXRpdmUgdG8gYWJzb2x1dGUgcGl4ZWxzIGluc3RlYWQgb2YgbG9jYWwgY29vcmRpbmF0
ZXMuCiAgICAgbG9jYWxSYXdDb21wb3NpdGluZ0JvdW5kcy5tb3ZlKG1fc3VicGl4ZWxBY2N1bXVs
YXRpb24pOwogCi0gICAgSW50UmVjdCBsb2NhbENvbXBvc2l0aW5nQm91bmRzID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChsb2NhbFJhd0NvbXBvc2l0aW5nQm91bmRzKTsKLSAgICBJbnRSZWN0IHJlbGF0
aXZlQ29tcG9zaXRpbmdCb3VuZHMobG9jYWxDb21wb3NpdGluZ0JvdW5kcyk7CisgICAgTGF5b3V0
UmVjdCBsb2NhbENvbXBvc2l0aW5nQm91bmRzID0gcGl4ZWxTbmFwcGVkSW50UmVjdChsb2NhbFJh
d0NvbXBvc2l0aW5nQm91bmRzKTsKKyAgICBMYXlvdXRSZWN0IHJlbGF0aXZlQ29tcG9zaXRpbmdC
b3VuZHMobG9jYWxDb21wb3NpdGluZ0JvdW5kcyk7CiAgICAgcmVsYXRpdmVDb21wb3NpdGluZ0Jv
dW5kcy5tb3ZlQnkoZGVsdGEpOwogCiAgICAgYWRqdXN0QW5jZXN0b3JDb21wb3NpdGluZ0JvdW5k
c0ZvckZsb3dUaHJlYWQoYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kcywgY29tcEFuY2VzdG9yKTsK
IAotICAgIEludFBvaW50IGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbjsKKyAgICBMYXlvdXRQ
b2ludCBncmFwaGljc0xheWVyUGFyZW50TG9jYXRpb247CiAgICAgaWYgKGNvbXBBbmNlc3RvciAm
JiBjb21wQW5jZXN0b3ItPmJhY2tpbmcoKS0+aGFzQ2xpcHBpbmdMYXllcigpKSB7CiAgICAgICAg
IC8vIElmIHRoZSBjb21wb3NpdGluZyBhbmNlc3RvciBoYXMgYSBsYXllciB0byBjbGlwIGNoaWxk
cmVuLCB3ZSBwYXJlbnQgaW4gdGhhdCwgYW5kIHRoZXJlZm9yZQogICAgICAgICAvLyBwb3NpdGlv
biByZWxhdGl2ZSB0byBpdC4KLSAgICAgICAgSW50UmVjdCBjbGlwcGluZ0JveCA9IGNsaXBCb3go
dG9SZW5kZXJCb3goY29tcEFuY2VzdG9yLT5yZW5kZXJlcigpKSk7CisgICAgICAgIExheW91dFJl
Y3QgY2xpcHBpbmdCb3ggPSBjbGlwQm94KHRvUmVuZGVyQm94KGNvbXBBbmNlc3Rvci0+cmVuZGVy
ZXIoKSkpOwogICAgICAgICBncmFwaGljc0xheWVyUGFyZW50TG9jYXRpb24gPSBjbGlwcGluZ0Jv
eC5sb2NhdGlvbigpOwogICAgIH0gZWxzZSBpZiAoY29tcEFuY2VzdG9yKQogICAgICAgICBncmFw
aGljc0xheWVyUGFyZW50TG9jYXRpb24gPSBhbmNlc3RvckNvbXBvc2l0aW5nQm91bmRzLmxvY2F0
aW9uKCk7CkBAIC03MjAsMTkgKzcyMCwxOSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKGNv
bXBBbmNlc3RvciAmJiBjb21wQW5jZXN0b3ItPmhhc0FjY2VsZXJhdGVkVG91Y2hTY3JvbGxpbmco
KSkgewogICAgICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCA9IHRvUmVuZGVyQm94KCZjb21wQW5j
ZXN0b3ItPnJlbmRlcmVyKCkpOwotICAgICAgICBJbnRSZWN0IHBhZGRpbmdCb3gocmVuZGVyQm94
LT5ib3JkZXJMZWZ0KCksIHJlbmRlckJveC0+Ym9yZGVyVG9wKCksCisgICAgICAgIExheW91dFJl
Y3QgcGFkZGluZ0JveChyZW5kZXJCb3gtPmJvcmRlckxlZnQoKSwgcmVuZGVyQm94LT5ib3JkZXJU
b3AoKSwKICAgICAgICAgICAgIHJlbmRlckJveC0+d2lkdGgoKSAtIHJlbmRlckJveC0+Ym9yZGVy
TGVmdCgpIC0gcmVuZGVyQm94LT5ib3JkZXJSaWdodCgpLAogICAgICAgICAgICAgcmVuZGVyQm94
LT5oZWlnaHQoKSAtIHJlbmRlckJveC0+Ym9yZGVyVG9wKCkgLSByZW5kZXJCb3gtPmJvcmRlckJv
dHRvbSgpKTsKIAotICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNldCA9IGNvbXBBbmNlc3Rvci0+
c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CisgICAgICAgIExheW91dFNpemUgc2Nyb2xsT2Zmc2V0
ID0gY29tcEFuY2VzdG9yLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsKICAgICAgICAgZ3JhcGhp
Y3NMYXllclBhcmVudExvY2F0aW9uID0gcGFkZGluZ0JveC5sb2NhdGlvbigpIC0gc2Nyb2xsT2Zm
c2V0OwogICAgIH0KICNlbmRpZgogCiAgICAgaWYgKGNvbXBBbmNlc3RvciAmJiBjb21wQW5jZXN0
b3ItPm5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpKSB7CiAgICAgICAgIFJlbmRlckJveCYgcmVu
ZGVyQm94ID0gdG9SZW5kZXJCb3goY29tcEFuY2VzdG9yLT5yZW5kZXJlcigpKTsKLSAgICAgICAg
SW50U2l6ZSBzY3JvbGxPZmZzZXQgPSBjb21wQW5jZXN0b3ItPnNjcm9sbGVkQ29udGVudE9mZnNl
dCgpOwotICAgICAgICBJbnRQb2ludCBzY3JvbGxPcmlnaW4ocmVuZGVyQm94LmJvcmRlckxlZnQo
KSwgcmVuZGVyQm94LmJvcmRlclRvcCgpKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBzY3JvbGxPZmZz
ZXQgPSBjb21wQW5jZXN0b3ItPnNjcm9sbGVkQ29udGVudE9mZnNldCgpOworICAgICAgICBMYXlv
dXRQb2ludCBzY3JvbGxPcmlnaW4ocmVuZGVyQm94LmJvcmRlckxlZnQoKSwgcmVuZGVyQm94LmJv
cmRlclRvcCgpKTsKICAgICAgICAgZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uID0gc2Nyb2xs
T3JpZ2luIC0gc2Nyb2xsT2Zmc2V0OwogICAgIH0KICAgICAKQEAgLTc0MSw4ICs3NDEsOCBAQCB2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAg
ICAgICAgLy8gbGF5ZXIuIE5vdGUgdGhhdCB3ZSBjYWxsIGl0IHdpdGggdGVtcG9yYXJ5Q2xpcFJl
Y3RzID0gdHJ1ZSBiZWNhdXNlIG5vcm1hbGx5IHdoZW4gY29tcHV0aW5nIGNsaXAgcmVjdHMKICAg
ICAgICAgLy8gZm9yIGEgY29tcG9zaXRpbmcgbGF5ZXIsIHJvb3RMYXllciBpcyB0aGUgbGF5ZXIg
aXRzZWxmLgogICAgICAgICBSZW5kZXJMYXllcjo6Q2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHND
b250ZXh0KGNvbXBBbmNlc3RvciwgMCwgVGVtcG9yYXJ5Q2xpcFJlY3RzLCBJZ25vcmVPdmVybGF5
U2Nyb2xsYmFyU2l6ZSwgSWdub3JlT3ZlcmZsb3dDbGlwKTsKLSAgICAgICAgSW50UmVjdCBwYXJl
bnRDbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QobV9vd25pbmdMYXllci5iYWNrZ3JvdW5k
Q2xpcFJlY3QoY2xpcFJlY3RzQ29udGV4dCkucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBm
b3IgQ1NTIHJlZ2lvbnMuCi0gICAgICAgIEFTU0VSVChwYXJlbnRDbGlwUmVjdCAhPSBJbnRSZWN0
OjppbmZpbml0ZVJlY3QoKSk7CisgICAgICAgIExheW91dFJlY3QgcGFyZW50Q2xpcFJlY3QgPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KG1fb3duaW5nTGF5ZXIuYmFja2dyb3VuZENsaXBSZWN0KGNsaXBS
ZWN0c0NvbnRleHQpLnJlY3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25z
LgorICAgICAgICBBU1NFUlQocGFyZW50Q2xpcFJlY3QgIT0gTGF5b3V0UmVjdDo6aW5maW5pdGVS
ZWN0KCkpOwogICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllci0+c2V0UG9zaXRpb24oRmxv
YXRQb2ludChwYXJlbnRDbGlwUmVjdC5sb2NhdGlvbigpIC0gZ3JhcGhpY3NMYXllclBhcmVudExv
Y2F0aW9uKSk7CiAgICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLT5zZXRTaXplKHBhcmVu
dENsaXBSZWN0LnNpemUoKSk7CiAKQEAgLTc1Myw3ICs3NTMsNyBAQCB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICAgICAgZ3JhcGhpY3NM
YXllclBhcmVudExvY2F0aW9uID0gcGFyZW50Q2xpcFJlY3QubG9jYXRpb24oKTsKICAgICB9CiAK
LSAgICBGbG9hdFNpemUgY29udGVudHNTaXplID0gcmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcy5z
aXplKCk7CisgICAgTGF5b3V0U2l6ZSBjb250ZW50c1NpemUgPSByZWxhdGl2ZUNvbXBvc2l0aW5n
Qm91bmRzLnNpemUoKTsKICAgICAKICAgICBpZiAobV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIp
IHsKICAgICAgICAgbV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXItPnNldFByZXNlcnZlczNEKHBy
ZXNlcnZlczNEKTsKQEAgLTc2NSwyNiArNzY1LDI2IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogCiAgICAgbV9ncmFwaGljc0xheWVyLT5z
ZXRQb3NpdGlvbihGbG9hdFBvaW50KHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMubG9jYXRpb24o
KSAtIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbikpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+
c2V0U2l6ZShjb250ZW50c1NpemUpOwotICAgIEludFNpemUgb2Zmc2V0RnJvbVJlbmRlcmVyID0g
dG9JbnRTaXplKGxvY2FsQ29tcG9zaXRpbmdCb3VuZHMubG9jYXRpb24oKSk7CisgICAgRmxvYXRT
aXplIG9mZnNldEZyb21SZW5kZXJlciA9IHRvTGF5b3V0U2l6ZShsb2NhbENvbXBvc2l0aW5nQm91
bmRzLmxvY2F0aW9uKCkpOwogICAgIGlmIChvZmZzZXRGcm9tUmVuZGVyZXIgIT0gbV9ncmFwaGlj
c0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKSkgewotICAgICAgICBtX2dyYXBoaWNzTGF5ZXIt
PnNldE9mZnNldEZyb21SZW5kZXJlcih0b0ludFNpemUobG9jYWxDb21wb3NpdGluZ0JvdW5kcy5s
b2NhdGlvbigpKSk7CisgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRl
cmVyKG9mZnNldEZyb21SZW5kZXJlcik7CiAgICAgICAgIHBvc2l0aW9uT3ZlcmZsb3dDb250cm9s
c0xheWVycygpOwogICAgIH0KIAogICAgIGlmICghbV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXll
cikgewogICAgICAgICAvLyBGb3Igbm9uLXJvb3QgbGF5ZXJzLCBiYWNrZ3JvdW5kIGlzIGFsd2F5
cyBwYWludGVkIGJ5IHRoZSBwcmltYXJ5IGdyYXBoaWNzIGxheWVyLgogICAgICAgICBBU1NFUlQo
IW1fYmFja2dyb3VuZExheWVyKTsKLSAgICAgICAgYm9vbCBoYWRTdWJwaXhlbFJvdW5kaW5nID0g
TGF5b3V0U2l6ZShyZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLnNpemUoKSkgIT0gbG9jYWxSYXdD
b21wb3NpdGluZ0JvdW5kcy5zaXplKCk7CisgICAgICAgIGJvb2wgaGFkU3VicGl4ZWxSb3VuZGlu
ZyA9IHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMuc2l6ZSgpICE9IGxvY2FsUmF3Q29tcG9zaXRp
bmdCb3VuZHMuc2l6ZSgpOwogICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzT3Bh
cXVlKCFoYWRTdWJwaXhlbFJvdW5kaW5nICYmIG1fb3duaW5nTGF5ZXIuYmFja2dyb3VuZElzS25v
d25Ub0JlT3BhcXVlSW5SZWN0KGxvY2FsQ29tcG9zaXRpbmdCb3VuZHMpKTsKICAgICB9CiAKICAg
ICAvLyBJZiB3ZSBoYXZlIGEgbGF5ZXIgdGhhdCBjbGlwcyBjaGlsZHJlbiwgcG9zaXRpb24gaXQu
Ci0gICAgSW50UmVjdCBjbGlwcGluZ0JveDsKKyAgICBMYXlvdXRSZWN0IGNsaXBwaW5nQm94Owog
ICAgIGlmIChHcmFwaGljc0xheWVyKiBjbGlwTGF5ZXIgPSBjbGlwcGluZ0xheWVyKCkpIHsKICAg
ICAgICAgY2xpcHBpbmdCb3ggPSBjbGlwQm94KHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpKTsKICAg
ICAgICAgY2xpcExheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KGNsaXBwaW5nQm94LmxvY2F0
aW9uKCkgLSBsb2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkpKTsKICAgICAgICAgY2xp
cExheWVyLT5zZXRTaXplKGNsaXBwaW5nQm94LnNpemUoKSk7Ci0gICAgICAgIGNsaXBMYXllci0+
c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKHRvSW50U2l6ZShjbGlwcGluZ0JveC5sb2NhdGlvbigpKSk7
CisgICAgICAgIGNsaXBMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKHRvRmxvYXRTaXplKGNs
aXBwaW5nQm94LmxvY2F0aW9uKCkpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1fbWFza0xheWVy
KSB7CkBAIC03OTQsMTAgKzc5NCwxMCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
R3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICB9CiAgICAgCiAgICAgaWYgKG1fb3duaW5nTGF5
ZXIuaGFzVHJhbnNmb3JtKCkpIHsKLSAgICAgICAgY29uc3QgSW50UmVjdCBib3JkZXJCb3ggPSB0
b1JlbmRlckJveChyZW5kZXJlcigpKS5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCk7CisgICAg
ICAgIGNvbnN0IExheW91dFJlY3QgYm9yZGVyQm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSku
cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpOwogCiAgICAgICAgIC8vIEdldCBsYXlvdXQgYm91
bmRzIGluIHRoZSBjb29yZHMgb2YgY29tcEFuY2VzdG9yIHRvIG1hdGNoIHJlbGF0aXZlQ29tcG9z
aXRpbmdCb3VuZHMuCi0gICAgICAgIEludFJlY3QgbGF5ZXJCb3VuZHMoZGVsdGEsIGJvcmRlckJv
eC5zaXplKCkpOworICAgICAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzKGRlbHRhLCBib3JkZXJC
b3guc2l6ZSgpKTsKIAogICAgICAgICAvLyBVcGRhdGUgcHJvcGVydGllcyB0aGF0IGRlcGVuZCBv
biBsYXllciBkaW1lbnNpb25zCiAgICAgICAgIEZsb2F0UG9pbnQzRCB0cmFuc2Zvcm1PcmlnaW4g
PSBjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGJvcmRlckJveCk7CkBAIC04MzYsMTIgKzgzNiwxMiBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkK
ICAgICBpZiAobV9mb3JlZ3JvdW5kTGF5ZXIpIHsKICAgICAgICAgRmxvYXRQb2ludCBmb3JlZ3Jv
dW5kUG9zaXRpb247CiAgICAgICAgIEZsb2F0U2l6ZSBmb3JlZ3JvdW5kU2l6ZSA9IGNvbnRlbnRz
U2l6ZTsKLSAgICAgICAgSW50U2l6ZSBmb3JlZ3JvdW5kT2Zmc2V0ID0gbV9ncmFwaGljc0xheWVy
LT5vZmZzZXRGcm9tUmVuZGVyZXIoKTsKKyAgICAgICAgRmxvYXRTaXplIGZvcmVncm91bmRPZmZz
ZXQgPSBtX2dyYXBoaWNzTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpOwogICAgICAgICBpZiAo
aGFzQ2xpcHBpbmdMYXllcigpKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgY2xpcHBp
bmcgbGF5ZXIgKHdoaWNoIGNsaXBzIGRlc2NlbmRhbnRzKSwgdGhlbiB0aGUgZm9yZWdyb3VuZCBs
YXllciBpcyBhIGNoaWxkIG9mIGl0LAogICAgICAgICAgICAgLy8gc28gdGhhdCBpdCBnZXRzIGNv
cnJlY3RseSBzb3J0ZWQgd2l0aCBjaGlsZHJlbi4gSW4gdGhhdCBjYXNlLCBwb3NpdGlvbiByZWxh
dGl2ZSB0byB0aGUgY2xpcHBpbmcgbGF5ZXIuCiAgICAgICAgICAgICBmb3JlZ3JvdW5kU2l6ZSA9
IEZsb2F0U2l6ZShjbGlwcGluZ0JveC5zaXplKCkpOwotICAgICAgICAgICAgZm9yZWdyb3VuZE9m
ZnNldCA9IHRvSW50U2l6ZShjbGlwcGluZ0JveC5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGZv
cmVncm91bmRPZmZzZXQgPSB0b0Zsb2F0U2l6ZShjbGlwcGluZ0JveC5sb2NhdGlvbigpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIG1fZm9yZWdyb3VuZExheWVyLT5zZXRQb3NpdGlvbihmb3JlZ3Jv
dW5kUG9zaXRpb24pOwpAQCAtODgzLDcgKzg4Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogCiAgICAgICAgIG1fc2Nyb2xsaW5nTGF5
ZXItPnNldFNpemUocGFkZGluZ0JveC5zaXplKCkpOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICAg
ICAgSW50U2l6ZSBvbGRTY3JvbGxpbmdMYXllck9mZnNldCA9IG1fc2Nyb2xsaW5nTGF5ZXItPm9m
ZnNldEZyb21SZW5kZXJlcigpOworICAgICAgICBGbG9hdFNpemUgb2xkU2Nyb2xsaW5nTGF5ZXJP
ZmZzZXQgPSBtX3Njcm9sbGluZ0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICAgICAg
bV9zY3JvbGxpbmdMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKEludFBvaW50KCkgLSBwYWRk
aW5nQm94LmxvY2F0aW9uKCkpOwogICAgICAgICBib29sIHBhZGRpbmdCb3hPZmZzZXRDaGFuZ2Vk
ID0gb2xkU2Nyb2xsaW5nTGF5ZXJPZmZzZXQgIT0gbV9zY3JvbGxpbmdMYXllci0+b2Zmc2V0RnJv
bVJlbmRlcmVyKCk7CiAKQEAgLTkwNywxMyArOTA3LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgICAgICBtX3Njcm9sbGluZ0Nv
bnRlbnRzTGF5ZXItPnNldFNpemUoc2Nyb2xsU2l6ZSk7CiAgICAgICAgIC8vIFNjcm9sbGluZyB0
aGUgY29udGVudCBsYXllciBkb2VzIG5vdCBuZWVkIHRvIHRyaWdnZXIgYSByZXBhaW50LiBUaGUg
b2Zmc2V0IHdpbGwgYmUgY29tcGVuc2F0ZWQgYXdheSBkdXJpbmcgcGFpbnRpbmcuCiAgICAgICAg
IC8vIEZJWE1FOiBUaGUgcGFpbnQgb2Zmc2V0IGFuZCB0aGUgc2Nyb2xsIG9mZnNldCBzaG91bGQg
cmVhbGx5IGJlIHNlcGFyYXRlIGNvbmNlcHRzLgotICAgICAgICBtX3Njcm9sbGluZ0NvbnRlbnRz
TGF5ZXItPnNldE9mZnNldEZyb21SZW5kZXJlcihwYWRkaW5nQm94LmxvY2F0aW9uKCkgLSBJbnRQ
b2ludCgpIC0gc2Nyb2xsT2Zmc2V0LCBHcmFwaGljc0xheWVyOjpEb250U2V0TmVlZHNEaXNwbGF5
KTsKKyAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVy
ZXIocGFkZGluZ0JveC5sb2NhdGlvbigpIC0gRmxvYXRQb2ludCgpIC0gc2Nyb2xsT2Zmc2V0LCBH
cmFwaGljc0xheWVyOjpEb250U2V0TmVlZHNEaXNwbGF5KTsKICAgICAgICAgCiAgICAgICAgIGNv
bXBvc2l0b3IoKS5zY3JvbGxpbmdMYXllckFkZGVkT3JVcGRhdGVkKCZtX293bmluZ0xheWVyKTsK
ICNlbHNlCiAgICAgICAgIG1fc2Nyb2xsaW5nQ29udGVudHNMYXllci0+c2V0UG9zaXRpb24oRmxv
YXRQb2ludCgtc2Nyb2xsT2Zmc2V0LndpZHRoKCksIC1zY3JvbGxPZmZzZXQuaGVpZ2h0KCkpKTsK
IAotICAgICAgICBJbnRTaXplIG9sZFNjcm9sbGluZ0xheWVyT2Zmc2V0ID0gbV9zY3JvbGxpbmdM
YXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCk7CisgICAgICAgIEZsb2F0U2l6ZSBvbGRTY3JvbGxp
bmdMYXllck9mZnNldCA9IG1fc2Nyb2xsaW5nTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpOwog
ICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIoLXRvSW50U2l6
ZShwYWRkaW5nQm94LmxvY2F0aW9uKCkpKTsKIAogICAgICAgICBib29sIHBhZGRpbmdCb3hPZmZz
ZXRDaGFuZ2VkID0gb2xkU2Nyb2xsaW5nTGF5ZXJPZmZzZXQgIT0gbV9zY3JvbGxpbmdMYXllci0+
b2Zmc2V0RnJvbVJlbmRlcmVyKCk7CkBAIC05NTEsNyArOTUxLDcgQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgY29tcG9zaXRvcigp
LnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludFN0YXR1cyhtX293bmluZ0xheWVyKTsKIH0KIAotdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OmFkanVzdEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JG
bG93VGhyZWFkKEludFJlY3QmIGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMsIGNvbnN0IFJlbmRl
ckxheWVyKiBjb21wb3NpdGluZ0FuY2VzdG9yKSBjb25zdAordm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OmFkanVzdEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFkKExheW91dFJl
Y3QmIGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3Np
dGluZ0FuY2VzdG9yKSBjb25zdAogewogICAgIGlmICghbV9vd25pbmdMYXllci5pc0luc2lkZUZs
b3dUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm9sc0xheWVycygpCiAKICAg
ICBjb25zdCBJbnRSZWN0IGJvcmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLnBpeGVs
U25hcHBlZEJvcmRlckJveFJlY3QoKTsKIAotICAgIEludFNpemUgb2Zmc2V0RnJvbVJlbmRlcmVy
ID0gbV9ncmFwaGljc0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKTsKKyAgICBGbG9hdFNpemUg
b2Zmc2V0RnJvbVJlbmRlcmVyID0gbV9ncmFwaGljc0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIo
KTsKICAgICBpZiAoR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckZvckhvcml6b250YWxTY3Jv
bGxiYXIoKSkgewogICAgICAgICBJbnRSZWN0IGhCYXJSZWN0ID0gbV9vd25pbmdMYXllci5yZWN0
Rm9ySG9yaXpvbnRhbFNjcm9sbGJhcihib3JkZXJCb3gpOwogICAgICAgICBsYXllci0+c2V0UG9z
aXRpb24oaEJhclJlY3QubG9jYXRpb24oKSAtIG9mZnNldEZyb21SZW5kZXJlcik7CkBAIC0xOTA1
LDcgKzE5MDUsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250ZW50
cygpCiAgICAgaW1hZ2UtPnN0YXJ0QW5pbWF0aW9uKCk7CiB9CiAKLUZsb2F0UG9pbnQzRCBSZW5k
ZXJMYXllckJhY2tpbmc6OmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4oY29uc3QgSW50UmVjdCYgYm9y
ZGVyQm94KSBjb25zdAorRmxvYXRQb2ludDNEIFJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRy
YW5zZm9ybU9yaWdpbihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJCb3gpIGNvbnN0CiB7CiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZSgpOwogCkBAIC0xOTE3
LDcgKzE5MTcsNyBAQCBGbG9hdFBvaW50M0QgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlVHJh
bnNmb3JtT3JpZ2luKGNvbnN0IEludFJlY3QmIGJvcmRlckJveAogICAgIHJldHVybiBvcmlnaW47
CiB9CiAKLUZsb2F0UG9pbnQgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlUGVyc3BlY3RpdmVP
cmlnaW4oY29uc3QgSW50UmVjdCYgYm9yZGVyQm94KSBjb25zdAorRmxvYXRQb2ludCBSZW5kZXJM
YXllckJhY2tpbmc6OmNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdpbihjb25zdCBMYXlvdXRSZWN0JiBi
b3JkZXJCb3gpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVy
ZXIoKS5zdHlsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmgKaW5kZXggMmZjNjViMC4uNDFkMzNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMjQxLDkgKzI0MSw5IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50T2Zmc2V0SW5Db21wb3N0aW5nTGF5ZXIoKSBj
b25zdDsKICAgICAvLyBSZXN1bHQgaXMgdHJhbnNmb3JtIG9yaWdpbiBpbiBwaXhlbHMuCi0gICAg
RmxvYXRQb2ludDNEIGNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4oY29uc3QgSW50UmVjdCYgYm9yZGVy
Qm94KSBjb25zdDsKKyAgICBGbG9hdFBvaW50M0QgY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihjb25z
dCBMYXlvdXRSZWN0JiBib3JkZXJCb3gpIGNvbnN0OwogICAgIC8vIFJlc3VsdCBpcyBwZXJzcGVj
dGl2ZSBvcmlnaW4gaW4gcGl4ZWxzLgotICAgIEZsb2F0UG9pbnQgY29tcHV0ZVBlcnNwZWN0aXZl
T3JpZ2luKGNvbnN0IEludFJlY3QmIGJvcmRlckJveCkgY29uc3Q7CisgICAgRmxvYXRQb2ludCBj
b21wdXRlUGVyc3BlY3RpdmVPcmlnaW4oY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94KSBjb25z
dDsKIAogICAgIHZvaWQgdXBkYXRlT3BhY2l0eShjb25zdCBSZW5kZXJTdHlsZSopOwogICAgIHZv
aWQgdXBkYXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlKik7CkBAIC0yODYsNyArMjg2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFp
bnRCZWhhdmlvciwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UpOwogCiAgICAgLy8gSGVscGVy
IGZ1bmN0aW9uIGZvciB1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkuCi0gICAgdm9pZCBhZGp1
c3RBbmNlc3RvckNvbXBvc2l0aW5nQm91bmRzRm9yRmxvd1RocmVhZChJbnRSZWN0JiBhbmNlc3Rv
ckNvbXBvc2l0aW5nQm91bmRzLCBjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNlc3Rv
cikgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RBbmNlc3RvckNvbXBvc2l0aW5nQm91bmRzRm9yRmxv
d1RocmVhZChMYXlvdXRSZWN0JiBhbmNlc3RvckNvbXBvc2l0aW5nQm91bmRzLCBjb25zdCBSZW5k
ZXJMYXllciogY29tcG9zaXRpbmdBbmNlc3RvcikgY29uc3Q7CiAKICAgICBzdGF0aWMgQ1NTUHJv
cGVydHlJRCBncmFwaGljc0xheWVyVG9DU1NQcm9wZXJ0eShBbmltYXRlZFByb3BlcnR5SUQpOwog
ICAgIHN0YXRpYyBBbmltYXRlZFByb3BlcnR5SUQgY3NzVG9HcmFwaGljc0xheWVyUHJvcGVydHko
Q1NTUHJvcGVydHlJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDc5NGEwNDYuLmQ1Y2I4MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yMDA5
LDcgKzIwMDksNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2FuQmVDb21wb3NpdGVk
KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc093bkJhY2tpbmdTdG9yZShjb25z
dCBSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2Vz
dG9yTGF5ZXIsIGNvbnN0IEludFJlY3QmIGxheWVyQ29tcG9zaXRlZEJvdW5kc0luQW5jZXN0b3Is
IGNvbnN0IEludFJlY3QmIGFuY2VzdG9yQ29tcG9zaXRlZEJvdW5kcykgY29uc3QKK2Jvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc093bkJhY2tpbmdTdG9yZShjb25zdCBSZW5kZXJM
YXllciYgbGF5ZXIsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzdG9yTGF5ZXIs
IGNvbnN0IExheW91dFJlY3QmIGxheWVyQ29tcG9zaXRlZEJvdW5kc0luQW5jZXN0b3IsIGNvbnN0
IExheW91dFJlY3QmIGFuY2VzdG9yQ29tcG9zaXRlZEJvdW5kcykgY29uc3QKIHsKICAgICBhdXRv
JiByZW5kZXJlciA9IGxheWVyLnJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCBlZWM3NTc2Li5kOGQyYmUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVwYWludENvbXBvc2l0ZWRM
YXllcnMoY29uc3QgSW50UmVjdCogPSAwKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
Z2l2ZW4gbGF5ZXIgbmVlZHMgaXQgb3duIGJhY2tpbmcgc3RvcmUuCi0gICAgYm9vbCByZXF1aXJl
c093bkJhY2tpbmdTdG9yZShjb25zdCBSZW5kZXJMYXllciYsIGNvbnN0IFJlbmRlckxheWVyKiBj
b21wb3NpdGluZ0FuY2VzdG9yTGF5ZXIsIGNvbnN0IEludFJlY3QmIGxheWVyQ29tcG9zaXRlZEJv
dW5kc0luQW5jZXN0b3IsIGNvbnN0IEludFJlY3QmIGFuY2VzdG9yQ29tcG9zaXRlZEJvdW5kcykg
Y29uc3Q7CisgICAgYm9vbCByZXF1aXJlc093bkJhY2tpbmdTdG9yZShjb25zdCBSZW5kZXJMYXll
ciYsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzdG9yTGF5ZXIsIGNvbnN0IExh
eW91dFJlY3QmIGxheWVyQ29tcG9zaXRlZEJvdW5kc0luQW5jZXN0b3IsIGNvbnN0IExheW91dFJl
Y3QmIGFuY2VzdG9yQ29tcG9zaXRlZEJvdW5kcykgY29uc3Q7CiAKICAgICBSZW5kZXJMYXllciYg
cm9vdFJlbmRlckxheWVyKCkgY29uc3Q7CiAgICAgR3JhcGhpY3NMYXllciogcm9vdEdyYXBoaWNz
TGF5ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TZXQuY3BwCmluZGV4IGVkMzA5ZGEuLjMwZGIzMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcApAQCAtNjU1LDcgKzY1
NSw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNvbGxlY3RMYXllckZyYWdtZW50cyhM
YXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBjb25zCiAgICAgfQogfQogCi12b2lkIFJlbmRlck11
bHRpQ29sdW1uU2V0OjphZGp1c3RSZWdpb25Cb3VuZHNGcm9tRmxvd1RocmVhZFBvcnRpb25SZWN0
KGNvbnN0IEludFBvaW50JiBsYXllck9mZnNldCwgSW50UmVjdCYgcmVnaW9uQm91bmRzKQordm9p
ZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6YWRqdXN0UmVnaW9uQm91bmRzRnJvbUZsb3dUaHJlYWRQ
b3J0aW9uUmVjdChjb25zdCBMYXlvdXRQb2ludCYgbGF5ZXJPZmZzZXQsIExheW91dFJlY3QmIHJl
Z2lvbkJvdW5kcykKIHsKICAgICBMYXlvdXRVbml0IGxheWVyTG9naWNhbFRvcCA9IGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPyBsYXllck9mZnNldC55KCkgOiBsYXllck9mZnNldC54KCk7CiAg
ICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBjb2x1bW5JbmRleEF0T2Zmc2V0KGxheWVyTG9naWNh
bFRvcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5TZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNl
dC5oCmluZGV4IDBhOTVjNDAuLjQwMWI1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0TGF5ZXJGcmFnbWVudHMoTGF5ZXJGcmFnbWVudHMm
LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5kaW5nQm94LCBjb25zdCBMYXlvdXRSZWN0JiBk
aXJ0eVJlY3QpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFJlZ2lvbkJvdW5k
c0Zyb21GbG93VGhyZWFkUG9ydGlvblJlY3QoY29uc3QgSW50UG9pbnQmIGxheWVyT2Zmc2V0LCBJ
bnRSZWN0JiByZWdpb25Cb3VuZHMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RS
ZWdpb25Cb3VuZHNGcm9tRmxvd1RocmVhZFBvcnRpb25SZWN0KGNvbnN0IExheW91dFBvaW50JiBs
YXllck9mZnNldCwgTGF5b3V0UmVjdCYgcmVnaW9uQm91bmRzKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCAzMGMwNmU2Li43ZjkzNzNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtNDU1LDExICs0NTUs
MTEgQEAgdm9pZCBSZW5kZXJSZWdpb246OmdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4m
IHJhbmdlT2JqZWN0cykgY29uc3QKICAgICBuYW1lZEZsb3cuZ2V0UmFuZ2VzKHJhbmdlT2JqZWN0
cywgdGhpcyk7CiB9CiAKLXZvaWQgUmVuZGVyUmVnaW9uOjphZGp1c3RSZWdpb25Cb3VuZHNGcm9t
Rmxvd1RocmVhZFBvcnRpb25SZWN0KGNvbnN0IEludFBvaW50JiBsYXllck9mZnNldCwgSW50UmVj
dCYgcmVnaW9uQm91bmRzKQordm9pZCBSZW5kZXJSZWdpb246OmFkanVzdFJlZ2lvbkJvdW5kc0Zy
b21GbG93VGhyZWFkUG9ydGlvblJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGxheWVyT2Zmc2V0LCBM
YXlvdXRSZWN0JiByZWdpb25Cb3VuZHMpCiB7CiAgICAgTGF5b3V0UmVjdCBmbGlwcGVkRmxvd1Ro
cmVhZFBvcnRpb25SZWN0ID0gZmxvd1RocmVhZFBvcnRpb25SZWN0KCk7CiAgICAgZmxvd1RocmVh
ZCgpLT5mbGlwRm9yV3JpdGluZ01vZGUoZmxpcHBlZEZsb3dUaHJlYWRQb3J0aW9uUmVjdCk7Ci0g
ICAgcmVnaW9uQm91bmRzLm1vdmVCeShyb3VuZGVkSW50UG9pbnQoZmxpcHBlZEZsb3dUaHJlYWRQ
b3J0aW9uUmVjdC5sb2NhdGlvbigpKSk7CisgICAgcmVnaW9uQm91bmRzLm1vdmVCeShmbGlwcGVk
Rmxvd1RocmVhZFBvcnRpb25SZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgVU5VU0VEX1BBUkFNKGxh
eWVyT2Zmc2V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRl
eCA4MDk0N2E0Li4zMDE5N2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RMYXllckZyYWdtZW50cyhMYXllckZyYWdtZW50cyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25z
dCBMYXlvdXRSZWN0JikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UmVnaW9uQm91bmRz
RnJvbUZsb3dUaHJlYWRQb3J0aW9uUmVjdChjb25zdCBJbnRQb2ludCYgbGF5ZXJPZmZzZXQsIElu
dFJlY3QmIHJlZ2lvbkJvdW5kcyk7IC8vIGxheWVyT2Zmc2V0IGlzIG5lZWRlZCBmb3IgbXVsdGkt
Y29sdW1uLgorICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RSZWdpb25Cb3VuZHNGcm9tRmxvd1RocmVh
ZFBvcnRpb25SZWN0KGNvbnN0IExheW91dFBvaW50JiBsYXllck9mZnNldCwgTGF5b3V0UmVjdCYg
cmVnaW9uQm91bmRzKTsgLy8gbGF5ZXJPZmZzZXQgaXMgbmVlZGVkIGZvciBtdWx0aS1jb2x1bW4u
CiAKICAgICB2b2lkIGFkZExheW91dE92ZXJmbG93Rm9yQm94KGNvbnN0IFJlbmRlckJveCosIGNv
bnN0IExheW91dFJlY3QmKTsKICAgICB2b2lkIGFkZFZpc3VhbE92ZXJmbG93Rm9yQm94KGNvbnN0
IFJlbmRlckJveCosIGNvbnN0IExheW91dFJlY3QmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>