<?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>33028</bug_id>
          
          <creation_ts>2009-12-29 12:52:10 -0800</creation_ts>
          <short_desc>Move the focus ring rect array, width and offset out of GraphicsContext</short_desc>
          <delta_ts>2009-12-29 13:06:29 -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>All</rep_platform>
          <op_sys>All</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>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>175684</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-12-29 12:52:10 -0800</bug_when>
    <thetext>Patch forthcoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175686</commentid>
    <comment_count>1</comment_count>
      <attachid>45619</attachid>
    <who name="">mitz</who>
    <bug_when>2009-12-29 12:53:01 -0800</bug_when>
    <thetext>Created attachment 45619
Move the focus ring rect array, width and offset out of GraphicsContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175687</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-29 12:59:20 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45619 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175689</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-12-29 13:06:29 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/projects/webkit/changeset/52632&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45619</attachid>
            <date>2009-12-29 12:53:01 -0800</date>
            <delta_ts>2009-12-29 13:02:48 -0800</delta_ts>
            <desc>Move the focus ring rect array, width and offset out of GraphicsContext</desc>
            <filename>focus-ring_r1.diff</filename>
            <type>text/plain</type>
            <size>40107</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjYyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzggQEAKKzIwMDktMTItMjkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IHRoZSBmb2N1cyByaW5nIHJlY3QgYXJyYXksIHdpZHRoIGFuZCBvZmZzZXQgb3V0IG9mIEdyYXBo
aWNzQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzMwMjgKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHA6IFJlbW92ZWQgaW5pdEZvY3VzUmluZygpLAorICAgICAgICBjbGVhckZvY3VzUmluZygpLCBm
b2N1c1JpbmdCb3VuZGluZ1JlY3QoKSwgYWRkRm9jdXNSaW5nUmVjdCgpLAorICAgICAgICBmb2N1
c1JpbmdXaWR0aCgpLCBmb2N1c1JpbmdPZmZzZXQoKSwgYW5kIGZvY3VzUmluZ1JlY3RzKCkuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6IERpdHRvLiBBZGRl
ZCB0aGUgZm9jdXMgcmluZyByZWN0CisgICAgICAgIHZlY3Rvciwgd2lkdGggYW5kIG9mZnNldCBh
cyBwYXJhbWV0ZXJzIHRvIGRyYXdGb2N1c1JpbmcoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOiBDbGVhbmVkIHVwIHN0eWxlLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0
UHJpdmF0ZSk6IFJlbW92ZWQKKyAgICAgICAgbV9mb2N1c1JpbmdSZWN0cywgbV9mb2N1c1JpbmdX
aWR0aCBhbmQgbV9mb2N1c1JpbmdPZmZzZXQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1bmlvblJlY3QpOiBBZGRlZCB0aGlzIGhl
bHBlciBmdW5jdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKTogCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvR3JhcGhpY3NDb250ZXh0SGFpa3UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6IERp
dHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6IERp
dHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tp
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1Jpbmcp
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNS
aW5nKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3ND
b250ZXh0V2luY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
Rm9jdXNSaW5nKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhp
Y3NDb250ZXh0V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
Rm9jdXNSaW5nKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyk6IFVwZGF0
ZWQgZm9yIG5ldyBwcm90b3R5cGUuCisgICAgICAgIEFkZGVkIGVtcHR5IHJlY3QgY2hlY2tzIHRo
YXQgd2VyZSBwcmV2aW91c2x5IGRvbmUgaW4KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjphZGRG
b2N1c1JpbmdSZWN0KCkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmFkZEZvY3VzUmluZ1JlY3RzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW5saW5lOjphZGRGb2N1c1JpbmdSZWN0cyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpwYWludE91dGxpbmUpOiBDb2xsZWN0IGZvY3VzIHJp
bmcgcmVjdHMgaW50byBhCisgICAgICAgIHZlY3RvciBhbmQgcGFzcyBpdCB0byBkcmF3Rm9jdXNS
aW5nKCkuIFVzZSB1bmlvblJlY3QoKSBpbnN0ZWFkIG9mCisgICAgICAgIGZvY3VzUmluZ0JvdW5k
aW5nUmVjdCgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6cGFpbnRPdXRsaW5lKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRGb2N1c1JpbmdSZWN0
cyk6IENoYW5nZWQgdG8gdGFrZSBhCisgICAgICAgIFZlY3RvcjxJbnRSZWN0PiB0byB3aGljaCB0
aGUgcmVjdHMgYXJlIGFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXRoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6OmFkZEZvY3VzUmluZ1JlY3RzKTogVXBkYXRl
ZCBmb3IgbmV3IHByb3RvdHlwZS4KKyAgICAgICAgQWRkZWQgZW1wdHkgcmVjdCBjaGVjayB0aGF0
IHdhcyBwcmV2aW91c2x5IGRvbmUgaW4KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjphZGRGb2N1
c1JpbmdSZWN0KCkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhdGguaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0NvbnRhaW5lcjo6YWRkRm9jdXNSaW5nUmVjdHMpOiBVcGRhdGVkIGZvciBuZXcgcHJv
dG90eXBlLgorICAgICAgICBBZGRlZCBlbXB0eSByZWN0IGNoZWNrIHRoYXQgd2FzIHByZXZpb3Vz
bHkgZG9uZSBpbgorICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmFkZEZvY3VzUmluZ1JlY3QoKS4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjphZGRGb2N1c1JpbmdSZWN0cyk6IFVwZGF0ZWQgZm9yIG5ldyBwcm90b3R5cGUuCisgICAg
ICAgIEFkZGVkIGVtcHR5IHJlY3QgY2hlY2sgdGhhdCB3YXMgcHJldmlvdXNseSBkb25lIGluCisg
ICAgICAgIEdyYXBoaWNzQ29udGV4dDo6YWRkRm9jdXNSaW5nUmVjdCgpLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6YWRkRm9j
dXNSaW5nUmVjdHMpOiBVcGRhdGVkIGZvciBuZXcgcHJvdG90eXBlLgorICAgICAgICBBZGRlZCBl
bXB0eSByZWN0IGNoZWNrIHRoYXQgd2FzIHByZXZpb3VzbHkgZG9uZSBpbgorICAgICAgICBHcmFw
aGljc0NvbnRleHQ6OmFkZEZvY3VzUmluZ1JlY3QoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuaDoKKwogMjAwOS0xMi0yOSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZs
b3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShy
ZXZpc2lvbiA1MjYwMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMCwxNyArMTAsMTcgQEAKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTM4Miw1NSArMzgyLDYgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdIaWdobGlnaHRGb3JUZQogICAgIGZpbGxSZWN0KGZvbnQuc2VsZWN0aW9uUmVj
dEZvclRleHQocnVuLCBwb2ludCwgaCwgZnJvbSwgdG8pLCBiYWNrZ3JvdW5kQ29sb3IsIGNvbG9y
U3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6aW5pdEZvY3VzUmluZyhpbnQgd2lk
dGgsIGludCBvZmZzZXQpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNsZWFyRm9jdXNSaW5nKCk7Ci0KLSAgICBtX2NvbW1vbi0+bV9mb2N1c1Jp
bmdXaWR0aCA9IHdpZHRoOwotICAgIG1fY29tbW9uLT5tX2ZvY3VzUmluZ09mZnNldCA9IG9mZnNl
dDsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyRm9jdXNSaW5nKCkKLXsKLSAgICBt
X2NvbW1vbi0+bV9mb2N1c1JpbmdSZWN0cy5jbGVhcigpOwotfQotCi1JbnRSZWN0IEdyYXBoaWNz
Q29udGV4dDo6Zm9jdXNSaW5nQm91bmRpbmdSZWN0KCkKLXsKLSAgICBJbnRSZWN0IHJlc3VsdCA9
IEludFJlY3QoMCwgMCwgMCwgMCk7Ci0KLSAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3Rz
ID0gZm9jdXNSaW5nUmVjdHMoKTsKLSAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0cy5zaXpl
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQotICAgICAg
ICByZXN1bHQudW5pdGUocmVjdHNbaV0pOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmFkZEZvY3VzUmluZ1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
LXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHJlY3QuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb21tb24tPm1fZm9jdXNSaW5nUmVjdHMuYXBwZW5kKHJlY3QpOwot
fQotCi1pbnQgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdXaWR0aCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fY29tbW9uLT5tX2ZvY3VzUmluZ1dpZHRoOwotfQotCi1pbnQgR3JhcGhpY3NDb250
ZXh0Ojpmb2N1c1JpbmdPZmZzZXQoKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbW1vbi0+bV9m
b2N1c1JpbmdPZmZzZXQ7Ci19Ci0KLWNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgR3JhcGhpY3NDb250
ZXh0Ojpmb2N1c1JpbmdSZWN0cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29tbW9uLT5tX2Zv
Y3VzUmluZ1JlY3RzOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdl
KiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxv
d1F1YWxpdHlTY2FsZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2
aXNpb24gNTI2MDEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsMTEgKzI2Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBnZXRTaGFkb3coSW50U2l6ZSYsIGludCYsIENvbG9yJikgY29uc3Q7
CiAgICAgICAgIHZvaWQgY2xlYXJTaGFkb3coKTsKIAotICAgICAgICB2b2lkIGluaXRGb2N1c1Jp
bmcoaW50IHdpZHRoLCBpbnQgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBhZGRGb2N1c1JpbmdSZWN0
KGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IENvbG9y
Jik7Ci0gICAgICAgIHZvaWQgY2xlYXJGb2N1c1JpbmcoKTsKLSAgICAgICAgSW50UmVjdCBmb2N1
c1JpbmdCb3VuZGluZ1JlY3QoKTsKKyAgICAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3QgQ29sb3ImKTsKIAog
ICAgICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCk7CiAgICAgICAgIHZvaWQgc2V0TGluZURh
c2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCk7CkBAIC00MTEsMTAgKzQwNyw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBhZGp1c3RMaW5l
VG9QaXhlbEJvdW5kYXJpZXMoRmxvYXRQb2ludCYgcDEsIEZsb2F0UG9pbnQmIHAyLCBmbG9hdCBz
dHJva2VXaWR0aCwgY29uc3QgU3Ryb2tlU3R5bGUmKTsKIAotICAgICAgICBpbnQgZm9jdXNSaW5n
V2lkdGgoKSBjb25zdDsKLSAgICAgICAgaW50IGZvY3VzUmluZ09mZnNldCgpIGNvbnN0OwotICAg
ICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIGZvY3VzUmluZ1JlY3RzKCkgY29uc3Q7Ci0KICAg
ICAgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dFByaXZhdGUqIGNyZWF0ZUdyYXBoaWNzQ29udGV4
dFByaXZhdGUoKTsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveUdyYXBoaWNzQ29udGV4dFBy
aXZhdGUoR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSopOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaAkocmV2aXNpb24gNTI2
MDEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICAsIHNoYWRvd0JsdXIoMCkKICAgICAgICAgICAgICwgc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoZmFsc2UpCiAjaWYgUExBVEZPUk0oQ0FJUk8pCi0gICAgICAgICAgICAsIGdsb2Jh
bEFscGhhKDEuMGYpCisgICAgICAgICAgICAsIGdsb2JhbEFscGhhKDEpCiAjZW5kaWYKICAgICAg
ICAgewogICAgICAgICB9CkBAIC04NywxNyArODcsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFByaXZhdGUgOiBwdWJsaWMgTm9uY29weWFibGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSgpCi0gICAgICAgICAg
ICA6IG1fZm9jdXNSaW5nV2lkdGgoMCkKLSAgICAgICAgICAgICwgbV9mb2N1c1JpbmdPZmZzZXQo
MCkKLSAgICAgICAgICAgICwgbV91cGRhdGluZ0NvbnRyb2xUaW50cyhmYWxzZSkKKyAgICAgICAg
ICAgIDogbV91cGRhdGluZ0NvbnRyb2xUaW50cyhmYWxzZSkKICAgICAgICAgewogICAgICAgICB9
CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgc3RhdGU7CiAgICAgICAgIFZlY3RvcjxH
cmFwaGljc0NvbnRleHRTdGF0ZT4gc3RhY2s7Ci0gICAgICAgIFZlY3RvcjxJbnRSZWN0PiBtX2Zv
Y3VzUmluZ1JlY3RzOwotICAgICAgICBpbnQgbV9mb2N1c1JpbmdXaWR0aDsKLSAgICAgICAgaW50
IG1fZm9jdXNSaW5nT2Zmc2V0OwogICAgICAgICBib29sIG1fdXBkYXRpbmdDb250cm9sVGludHM7
CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCShyZXZp
c2lvbiA1MjYwMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAsMTcgKzEwLDE3IEBACiAgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0xMDQsNCArMTA0
LDE1IEBAIHZvaWQgSW50UmVjdDo6c2NhbGUoZmxvYXQgcykKICAgICBtX3NpemUuc2V0SGVpZ2h0
KChpbnQpKGhlaWdodCgpICogcykpOwogfQogCitJbnRSZWN0IHVuaW9uUmVjdChjb25zdCBWZWN0
b3I8SW50UmVjdD4mIHJlY3RzKQoreworICAgIEludFJlY3QgcmVzdWx0OworCisgICAgc2l6ZV90
IGNvdW50ID0gcmVjdHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7
ICsraSkKKyAgICAgICAgcmVzdWx0LnVuaXRlKHJlY3RzW2ldKTsKKworICAgIHJldHVybiByZXN1
bHQ7CiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdC5oCShyZXZpc2lvbiA1MjYwMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwLDE3
ICsxMCwxNyBAQAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBJbnRSZWN0X2gK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oQ0cp
CiB0eXBlZGVmIHN0cnVjdCBDR1JlY3QgQ0dSZWN0OwpAQCAtMTg1LDYgKzE4Niw4IEBAIGlubGlu
ZSBJbnRSZWN0IHVuaW9uUmVjdChjb25zdCBJbnRSZWN0JiAKICAgICByZXR1cm4gYzsKIH0KIAor
SW50UmVjdCB1bmlvblJlY3QoY29uc3QgVmVjdG9yPEludFJlY3Q+Jik7CisKIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgSW50UmVjdCYgYSwgY29uc3QgSW50UmVjdCYgYikKIHsKICAgICBy
ZXR1cm4gYS5sb2NhdGlvbigpID09IGIubG9jYXRpb24oKSAmJiBhLnNpemUoKSA9PSBiLnNpemUo
KTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCShyZXZpc2lvbiA1MjYwMSkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MDYsMTIgKzYwNiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgo
V2luZFJ1bGUgCiAgICAgY2Fpcm9fY2xpcChjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwg
aW50IC8qIG9mZnNldCAqLywgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYgcmVjdHMgPSBmb2N1c1JpbmdSZWN0cygpOwogICAgIHVuc2lnbmVkIHJlY3RDb3VudCA9IHJl
Y3RzLnNpemUoKTsKIAogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKQEAgLTYzMiwxNCAr
NjMxLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnMKICAgICBj
YWlyb19zZXRfbGluZV93aWR0aChjciwgMi4wZik7CiAgICAgc2V0UGxhdGZvcm1TdHJva2VTdHls
ZShEb3R0ZWRTdHJva2UpOwogI2Vsc2UKLSAgICBpbnQgcmFkaXVzID0gKGZvY3VzUmluZ1dpZHRo
KCkgLSAxKSAvIDI7CisgICAgaW50IHJhZGl1cyA9ICh3aWR0aCAtIDEpIC8gMjsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjdENvdW50OyBpKyspCiAgICAgICAgIGFkZFBhdGgoUGF0
aDo6Y3JlYXRlUm91bmRlZFJlY3RhbmdsZShyZWN0c1tpXSwgRmxvYXRTaXplKHJhZGl1cywgcmFk
aXVzKSkpOwogCiAgICAgLy8gRm9yY2UgdGhlIGFscGhhIHRvIDUwJS4gIFRoaXMgbWF0Y2hlcyB3
aGF0IHRoZSBNYWMgZG9lcyB3aXRoIG91dGxpbmUgcmluZ3MuCiAgICAgQ29sb3IgcmluZ0NvbG9y
KGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCksIDEyNyk7CiAgICAgc2V0
Q29sb3IoY3IsIHJpbmdDb2xvcik7Ci0gICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY3IsIGZvY3Vz
UmluZ1dpZHRoKCkpOworICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCB3aWR0aCk7CiAgICAg
c2V0UGxhdGZvcm1TdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAjZW5kaWYKIApJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9HcmFwaGljc0NvbnRleHRIYWlrdS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9HcmFwaGljc0NvbnRl
eHRIYWlrdS5jcHAJKHJldmlzaW9uIDUyNjAxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYWlrdS9HcmFwaGljc0NvbnRleHRIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNCwx
MiArMjA0LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmUKICAg
ICBtX2RhdGEtPm1fdmlldy0+Q29uc3RyYWluQ2xpcHBpbmdSZWdpb24oJnJlZ2lvbik7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IENvbG9yJiBjb2xvcikK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYgcmVjdHMsIGludCAvKiB3aWR0aCAqLywgaW50IC8qIG9mZnNldCAqLywgY29uc3QgQ29sb3Im
IGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMgPSBmb2N1c1JpbmdSZWN0cygpOwog
ICAgIHVuc2lnbmVkIHJlY3RDb3VudCA9IHJlY3RzLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBt
YXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgd2l0aCBCU2hhcGU/CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCShy
ZXZpc2lvbiA1MjYwMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNz
Q29udGV4dE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKIAotI2ltcG9ydCAiLi4vY2cv
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgiCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjaW1w
b3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTQzLDE5ICs0MywxOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBjYWxscyBpbiB0aGlzIGZpbGUgYXJlIGFsbCBleGNlcHRpb24tc2FmZSwg
c28gd2UgZG9uJ3QgYmxvY2sKIC8vIGV4Y2VwdGlvbnMgZm9yIHRob3NlLgogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBp
bnQgd2lkdGgsIGludCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgcmFkaXVzID0gKGZv
Y3VzUmluZ1dpZHRoKCkgLSAxKSAvIDI7Ci0gICAgaW50IG9mZnNldCA9IHJhZGl1cyArIGZvY3Vz
UmluZ09mZnNldCgpOworICAgIGludCByYWRpdXMgPSAod2lkdGggLSAxKSAvIDI7CisgICAgb2Zm
c2V0ICs9IHJhZGl1czsKICAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3JSZWY7CiAgICAg
aWYgKGNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgY29sb3JSZWYuYWRvcHRDRihjcmVhdGVDR0Nv
bG9yKGNvbG9yKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gZm9jdXNSaW5n
UGF0aChBZG9wdENGLCBDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOwotICAgIGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYgcmVjdHMgPSBmb2N1c1JpbmdSZWN0cygpOwogICAgIHVuc2lnbmVkIHJlY3RDb3Vu
dCA9IHJlY3RzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjdENvdW50
OyBpKyspCiAgICAgICAgIENHUGF0aEFkZFJlY3QoZm9jdXNSaW5nUGF0aC5nZXQoKSwgMCwgQ0dS
ZWN0SW5zZXQocmVjdHNbaV0sIC1vZmZzZXQsIC1vZmZzZXQpKTsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCShyZXZpc2lv
biA1MjYwMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDAsMTIgKzgwMCwxMSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcFBhdGgoV2luZFJ1bGUgCiAgKiBSZW5kZXJUaGVtZSBoYW5kbGVzIGRyYXdp
bmcgZm9jdXMgb24gd2lkZ2V0cyB3aGljaCAKICAqIG5lZWQgaXQuCiAgKi8KLXZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGlu
dCAvKiB3aWR0aCAqLywgaW50IC8qIG9mZnNldCAqLywgY29uc3QgQ29sb3ImIGNvbG9yKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0
IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMgPSBmb2N1c1JpbmdSZWN0cygpOwogICAgIHVuc2lnbmVk
IHJlY3RDb3VudCA9IHJlY3RzLnNpemUoKTsKIAogICAgIGlmICghcmVjdHMuc2l6ZSgpKQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0Nv
bnRleHRTa2lhLmNwcAkocmV2aXNpb24gNTI2MDEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OCwx
MiArNDk4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RWxsaXBzZShjb25zdCAKICAg
ICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IENvbG9y
JiBjb2xvcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3Rv
cjxJbnRSZWN0PiYgcmVjdHMsIGludCAvKiB3aWR0aCAqLywgaW50IC8qIG9mZnNldCAqLywgY29u
c3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMgPSBmb2N1c1JpbmdS
ZWN0cygpOwogICAgIHVuc2lnbmVkIHJlY3RDb3VudCA9IHJlY3RzLnNpemUoKTsKICAgICBpZiAo
IXJlY3RDb3VudCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkocmV2aXNpb24g
NTI2MDEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRD
R1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCwxNyArMTI0LDE2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3V2luZG93c0JpdG1hcCgKICAgICBDR0NvbnRleHREcmF3SW1hZ2UobV9k
YXRhLT5tX2NnQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZShwb2ludC54KCksIHBvaW50LnkoKSwg
aW1hZ2UtPnNpemUoKS53aWR0aCgpLCBpbWFnZS0+c2l6ZSgpLmhlaWdodCgpKSwgY2dJbWFnZS5n
ZXQoKSk7ICAgCiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0
IENvbG9yJiBjb2xvcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0
IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3QgQ29s
b3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGZsb2F0IHJhZGl1cyA9IChmb2N1c1JpbmdXaWR0aCgpIC0gMSkgLyAyLjBmOwot
ICAgIGludCBvZmZzZXQgPSByYWRpdXMgKyBmb2N1c1JpbmdPZmZzZXQoKTsKKyAgICBmbG9hdCBy
YWRpdXMgPSAod2lkdGggLSAxKSAvIDIuMGY7CisgICAgb2Zmc2V0ICs9IHJhZGl1czsKICAgICBD
R0NvbG9yUmVmIGNvbG9yUmVmID0gY29sb3IuaXNWYWxpZCgpID8gY3JlYXRlQ0dDb2xvcihjb2xv
cikgOiAwOwogCiAgICAgQ0dNdXRhYmxlUGF0aFJlZiBmb2N1c1JpbmdQYXRoID0gQ0dQYXRoQ3Jl
YXRlTXV0YWJsZSgpOwotICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMgPSBmb2N1c1Jp
bmdSZWN0cygpOwogICAgIHVuc2lnbmVkIHJlY3RDb3VudCA9IHJlY3RzLnNpemUoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjdENvdW50OyBpKyspCiAgICAgICAgIENHUGF0aEFk
ZFJlY3QoZm9jdXNSaW5nUGF0aCwgMCwgQ0dSZWN0SW5zZXQocmVjdHNbaV0sIC1vZmZzZXQsIC1v
ZmZzZXQpKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3ND
b250ZXh0V2luY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvR3JhcGhpY3NDb250ZXh0V2luY2UuY3BwCShyZXZpc2lvbiA1MjYwMSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cE91dChjb25zdCBJbnRSCiAgICAgRXhjbHVkZUNsaXBSZWN0KG1fZGF0YS0+bV9kYywgdHJSZWN0
LngoKSwgdHJSZWN0LnkoKSwgdHJSZWN0LnJpZ2h0KCksIHRyUmVjdC5ib3R0b20oKSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IENvbG9yJiBjb2xvcikK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYgcmVjdHMsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewog
ICAgIGlmICghbV9kYXRhLT5tX29wYWNpdHkgfHwgcGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMDExLDEwICsxMDExLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdGb2N1c1JpbmcoY29ucwogICAgIGlmICghbV9kYXRhLT5tX2RjKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpbnQgcmFkaXVzID0gKGZvY3VzUmluZ1dpZHRoKCkgLSAxKSAvIDI7Ci0gICAgaW50
IG9mZnNldCA9IHJhZGl1cyArIGZvY3VzUmluZ09mZnNldCgpOworICAgIGludCByYWRpdXMgPSAo
d2lkdGggLSAxKSAvIDI7CisgICAgb2Zmc2V0ICs9IHJhZGl1czsKIAotICAgIGNvbnN0IFZlY3Rv
cjxJbnRSZWN0PiYgcmVjdHMgPSBmb2N1c1JpbmdSZWN0cygpOwogICAgIHVuc2lnbmVkIHJlY3RD
b3VudCA9IHJlY3RzLnNpemUoKTsKICAgICBJbnRSZWN0IGZpbmFsRm9jdXNSZWN0OwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWN0Q291bnQ7IGkrKykgewpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHAJKHJldmlz
aW9uIDUyNjAxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRl
eHRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgQ29sb3ImIGNvbG9yKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+
JiByZWN0cywgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gNTI2MDEpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMDgsNyArNTAwOCw3IEBAIElu
dFJlY3QgUmVuZGVyQmxvY2s6OmxvY2FsQ2FyZXRSZWN0KElubGkKICAgICByZXR1cm4gSW50UmVj
dCh4LCB5LCBjYXJldFdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIFJlbmRlckJsb2NrOjphZGRG
b2N1c1JpbmdSZWN0cyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBp
bnQgdHkpCit2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVj
dD4mIHJlY3RzLCBpbnQgdHgsIGludCB0eSkKIHsKICAgICAvLyBGb3IgYmxvY2tzIGluc2lkZSBp
bmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVuIHJp
Z2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVsb3cgdXMgKHRo
dXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1bGFyCkBA
IC01MDIwLDE2ICs1MDIwLDE5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3Rz
KEdyYXAKICAgICAgICAgYm9vbCBwcmV2SW5saW5lSGFzTGluZUJveCA9IHRvUmVuZGVySW5saW5l
KGlubGluZUNvbnRpbnVhdGlvbigpLT5ub2RlKCktPnJlbmRlcmVyKCkpLT5maXJzdExpbmVCb3go
KTsgCiAgICAgICAgIGludCB0b3BNYXJnaW4gPSBwcmV2SW5saW5lSGFzTGluZUJveCA/IGNvbGxh
cHNlZE1hcmdpblRvcCgpIDogMDsKICAgICAgICAgaW50IGJvdHRvbU1hcmdpbiA9IG5leHRJbmxp
bmVIYXNMaW5lQm94ID8gY29sbGFwc2VkTWFyZ2luQm90dG9tKCkgOiAwOwotICAgICAgICBncmFw
aGljc0NvbnRleHQtPmFkZEZvY3VzUmluZ1JlY3QoSW50UmVjdCh0eCwgdHkgLSB0b3BNYXJnaW4s
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0
aCgpLCBoZWlnaHQoKSArIHRvcE1hcmdpbiArIGJvdHRvbU1hcmdpbikpOwotICAgIH0gZWxzZQot
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZEZvY3VzUmluZ1JlY3QoSW50UmVjdCh0eCwgdHks
IHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgICAgIEludFJlY3QgcmVjdCh0eCwgdHkgLSB0b3BN
YXJnaW4sIHdpZHRoKCksIGhlaWdodCgpICsgdG9wTWFyZ2luICsgYm90dG9tTWFyZ2luKTsKKyAg
ICAgICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlY3RzLmFwcGVuZChyZWN0
KTsKKyAgICB9IGVsc2UgaWYgKHdpZHRoKCkgJiYgaGVpZ2h0KCkpCisgICAgICAgIHJlY3RzLmFw
cGVuZChJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKIAogICAgIGlmICghaGFz
T3ZlcmZsb3dDbGlwKCkgJiYgIWhhc0NvbnRyb2xDbGlwKCkpIHsKICAgICAgICAgZm9yIChSb290
SW5saW5lQm94KiBjdXJyID0gZmlyc3RSb290Qm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0
Um9vdEJveCgpKSB7CiAgICAgICAgICAgICBpbnQgdG9wID0gbWF4KGN1cnItPmxpbmVUb3AoKSwg
Y3Vyci0+eSgpKTsKICAgICAgICAgICAgIGludCBib3R0b20gPSBtaW4oY3Vyci0+bGluZUJvdHRv
bSgpLCBjdXJyLT55KCkgKyBjdXJyLT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPmFkZEZvY3VzUmluZ1JlY3QoSW50UmVjdCh0eCArIGN1cnItPngoKSwgdHkgKyB0b3As
IGN1cnItPndpZHRoKCksIGJvdHRvbSAtIHRvcCkpOworICAgICAgICAgICAgSW50UmVjdCByZWN0
KHR4ICsgY3Vyci0+eCgpLCB0eSArIHRvcCwgY3Vyci0+d2lkdGgoKSwgYm90dG9tIC0gdG9wKTsK
KyAgICAgICAgICAgIGlmICghcmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVjdHMu
YXBwZW5kKHJlY3QpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1
cnIgPSBmaXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2libGluZygpKSB7CkBA
IC01MDQxLDEzICs1MDQ0LDEzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3Rz
KEdyYXAKICAgICAgICAgICAgICAgICAgICAgcG9zID0gY3Vyci0+bG9jYWxUb0Fic29sdXRlKCk7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwb3MgPSBGbG9hdFBv
aW50KHR4ICsgYm94LT54KCksIHR5ICsgYm94LT55KCkpOwotICAgICAgICAgICAgICAgIGJveC0+
YWRkRm9jdXNSaW5nUmVjdHMoZ3JhcGhpY3NDb250ZXh0LCBwb3MueCgpLCBwb3MueSgpKTsKKyAg
ICAgICAgICAgICAgICBib3gtPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBwb3MueCgpLCBwb3Mu
eSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChpbmxpbmVD
b250aW51YXRpb24oKSkKLSAgICAgICAgaW5saW5lQ29udGludWF0aW9uKCktPmFkZEZvY3VzUmlu
Z1JlY3RzKGdyYXBoaWNzQ29udGV4dCwgCisgICAgICAgIGlubGluZUNvbnRpbnVhdGlvbigpLT5h
ZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eCAtIHgoKSArIGlubGluZUNvbnRpbnVhdGlvbigpLT5jb250YWlu
aW5nQmxvY2soKS0+eCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHkgLSB5KCkgKyBpbmxpbmVDb250aW51YXRpb24oKS0+Y29udGFpbmluZ0Jsb2Nr
KCktPnkoKSk7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9uIDUyNjAx
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MzUxLDcgKzM1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIEludFJlY3QgbG9jYWxDYXJl
dFJlY3QoSW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBpbnQqIGV4dHJhV2lkdGhUb0VuZE9m
TGluZSA9IDApOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKEdyYXBoaWNz
Q29udGV4dCosIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgdm9pZCBhZGp1
c3RQb2ludFRvQ29sdW1uQ29udGVudHMoSW50UG9pbnQmKSBjb25zdDsKICAgICB2b2lkIGFkanVz
dEZvckJvcmRlckZpdChpbnQgeCwgaW50JiBsZWZ0LCBpbnQmIHJpZ2h0KSBjb25zdDsgLy8gSGVs
cGVyIGZ1bmN0aW9uIGZvciBib3JkZXJGaXRBZGp1c3QKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAkocmV2aXNpb24gNTI2MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsMTIgKzMzMCwxMiBAQCBJbnRSZWN0IFJlbmRlckJveDo6
b3V0bGluZUJvdW5kc0ZvclJlcGFpCiAgICAgcmV0dXJuIGJveDsKIH0KIAotdm9pZCBSZW5kZXJC
b3g6OmFkZEZvY3VzUmluZ1JlY3RzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBp
bnQgdHgsIGludCB0eSkKK3ZvaWQgUmVuZGVyQm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8
SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgsIGludCB0eSkKIHsKLSAgICBncmFwaGljc0NvbnRleHQt
PmFkZEZvY3VzUmluZ1JlY3QoSW50UmVjdCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKSk7Cisg
ICAgaWYgKHdpZHRoKCkgJiYgaGVpZ2h0KCkpCisgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0
KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKIH0KIAotCiBJbnRSZWN0IFJlbmRlckJveDo6
cmVmbGVjdGlvbkJveCgpIGNvbnN0CiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAkocmV2aXNpb24gNTI2MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBCb3VuZHMgb2YgdGhlIG91dGxpbmUgYm94IGluIGFic29sdXRlIGNvb3Jkcy4gUmVzcGVjdHMg
dHJhbnNmb3JtcwogICAgIHZpcnR1YWwgSW50UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8pIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGlu
dCB0eSk7CisgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0
PiYsIGludCB0eCwgaW50IHR5KTsKIAogICAgIC8vIFVzZSB0aGlzIHdpdGggY2F1dGlvbiEgTm8g
dHlwZSBjaGVja2luZyBpcyBkb25lIQogICAgIFJlbmRlckJveCogcHJldmlvdXNTaWJsaW5nQm94
KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDUy
NjAxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTMyLDEzICs5MzIsMTUgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmltYWdlQ2hhbmdlZChX
cmFwcGVkSQogICAgIHJlcGFpbnQoKTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmFkZEZvY3Vz
UmluZ1JlY3RzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsIGludCB0
eSkKK3ZvaWQgUmVuZGVySW5saW5lOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4m
IHJlY3RzLCBpbnQgdHgsIGludCB0eSkKIHsKICAgICBmb3IgKElubGluZVJ1bkJveCogY3VyciA9
IGZpcnN0TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkgewogICAg
ICAgICBSb290SW5saW5lQm94KiByb290ID0gY3Vyci0+cm9vdCgpOwogICAgICAgICBpbnQgdG9w
ID0gbWF4KHJvb3QtPmxpbmVUb3AoKSwgY3Vyci0+eSgpKTsKICAgICAgICAgaW50IGJvdHRvbSA9
IG1pbihyb290LT5saW5lQm90dG9tKCksIGN1cnItPnkoKSArIGN1cnItPmhlaWdodCgpKTsKLSAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRGb2N1c1JpbmdSZWN0KEludFJlY3QodHggKyBjdXJy
LT54KCksIHR5ICsgdG9wLCBjdXJyLT53aWR0aCgpLCBib3R0b20gLSB0b3ApKTsKKyAgICAgICAg
SW50UmVjdCByZWN0KHR4ICsgY3Vyci0+eCgpLCB0eSArIHRvcCwgY3Vyci0+d2lkdGgoKSwgYm90
dG9tIC0gdG9wKTsKKyAgICAgICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
Y3RzLmFwcGVuZChyZWN0KTsKICAgICB9CiAKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9
IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nKCkpIHsKQEAgLTk0
OSwxNyArOTUxLDE3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphZGRGb2N1c1JpbmdSZWN0cyhHcmEK
ICAgICAgICAgICAgICAgICBwb3MgPSBjdXJyLT5sb2NhbFRvQWJzb2x1dGUoKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKGN1cnItPmlzQm94KCkpCiAgICAgICAgICAgICAgICAgcG9zLm1vdmUodG9S
ZW5kZXJCb3goY3VyciktPngoKSwgdG9SZW5kZXJCb3goY3VyciktPnkoKSk7Ci0gICAgICAgICAg
IGN1cnItPmFkZEZvY3VzUmluZ1JlY3RzKGdyYXBoaWNzQ29udGV4dCwgcG9zLngoKSwgcG9zLnko
KSk7CisgICAgICAgICAgIGN1cnItPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBwb3MueCgpLCBw
b3MueSgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChjb250aW51YXRpb24oKSkgewog
ICAgICAgICBpZiAoY29udGludWF0aW9uKCktPmlzSW5saW5lKCkpCi0gICAgICAgICAgICBjb250
aW51YXRpb24oKS0+YWRkRm9jdXNSaW5nUmVjdHMoZ3JhcGhpY3NDb250ZXh0LCAKKyAgICAgICAg
ICAgIGNvbnRpbnVhdGlvbigpLT5hZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHggLSBjb250YWluaW5nQmxvY2so
KS0+eCgpICsgY29udGludWF0aW9uKCktPmNvbnRhaW5pbmdCbG9jaygpLT54KCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkgLSBjb250YWluaW5nQmxv
Y2soKS0+eSgpICsgY29udGludWF0aW9uKCktPmNvbnRhaW5pbmdCbG9jaygpLT55KCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51YXRpb24oKS0+YWRkRm9jdXNSaW5nUmVjdHMo
Z3JhcGhpY3NDb250ZXh0LCAKKyAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hZGRGb2N1c1Jp
bmdSZWN0cyhyZWN0cywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHggLSBjb250YWluaW5nQmxvY2soKS0+eCgpICsgdG9SZW5kZXJCb3goY29udGludWF0
aW9uKCkpLT54KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHkgLSBjb250YWluaW5nQmxvY2soKS0+eSgpICsgdG9SZW5kZXJCb3goY29udGludWF0aW9u
KCkpLT55KCkpOwogICAgIH0KQEAgLTk3NiwxMyArOTc4LDEyIEBAIHZvaWQgUmVuZGVySW5saW5l
OjpwYWludE91dGxpbmUoR3JhcGhpY3MKICAgICAgICAgaWYgKCFvYy5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICBvYyA9IHN0eWxlKCktPmNvbG9yKCk7CiAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5pbml0Rm9jdXNSaW5nKG93LCBzdHlsZSgpLT5vdXRsaW5lT2Zmc2V0KCkpOwotICAgICAgICBh
ZGRGb2N1c1JpbmdSZWN0cyhncmFwaGljc0NvbnRleHQsIHR4LCB0eSk7CisgICAgICAgIFZlY3Rv
cjxJbnRSZWN0PiBmb2N1c1JpbmdSZWN0czsKKyAgICAgICAgYWRkRm9jdXNSaW5nUmVjdHMoZm9j
dXNSaW5nUmVjdHMsIHR4LCB0eSk7CiAgICAgICAgIGlmIChzdHlsZSgpLT5vdXRsaW5lU3R5bGVJ
c0F1dG8oKSkKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ZvY3VzUmluZyhvYyk7
CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVj
dHMsIG93LCBzdHlsZSgpLT5vdXRsaW5lT2Zmc2V0KCksIG9jKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgYWRkUERGVVJMUmVjdChncmFwaGljc0NvbnRleHQsIGdyYXBoaWNzQ29udGV4dC0+
Zm9jdXNSaW5nQm91bmRpbmdSZWN0KCkpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFy
Rm9jdXNSaW5nKCk7CisgICAgICAgICAgICBhZGRQREZVUkxSZWN0KGdyYXBoaWNzQ29udGV4dCwg
dW5pb25SZWN0KGZvY3VzUmluZ1JlY3RzKSk7CiAgICAgfQogCiAgICAgaWYgKHN0eWxlKCktPm91
dGxpbmVTdHlsZUlzQXV0bygpIHx8IHN0eWxlKCktPm91dGxpbmVTdHlsZSgpID09IEJOT05FKQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgJKHJldmlzaW9uIDUyNjAxKQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIAogICAgIEludFNpemUgcmVsYXRpdmVQb3NpdGlvbmVkSW5saW5lT2Zm
c2V0KGNvbnN0IFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFk
ZEZvY3VzUmluZ1JlY3RzKEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5KTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBp
bnQgdHkpOwogICAgIHZvaWQgcGFpbnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwg
aW50IHR5KTsKIAogICAgIGludCB2ZXJ0aWNhbFBvc2l0aW9uRnJvbUNhY2hlKGJvb2wgZmlyc3RM
aW5lKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
NTI2MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDA5LDEzICsxMDA5LDEyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxp
bmUoR3JhcGhpY3MKICAgICBpZiAoc3R5bGUtPm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IGhhc091
dGxpbmVBbm5vdGF0aW9uKCkpIHsKICAgICAgICAgaWYgKCF0aGVtZSgpLT5zdXBwb3J0c0ZvY3Vz
UmluZyhzdHlsZSkpIHsKICAgICAgICAgICAgIC8vIE9ubHkgcGFpbnQgdGhlIGZvY3VzIHJpbmcg
YnkgaGFuZCBpZiB0aGUgdGhlbWUgaXNuJ3QgYWJsZSB0byBkcmF3IHRoZSBmb2N1cyByaW5nLgot
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5pbml0Rm9jdXNSaW5nKG93LCBvZmZzZXQpOwot
ICAgICAgICAgICAgYWRkRm9jdXNSaW5nUmVjdHMoZ3JhcGhpY3NDb250ZXh0LCB0eCwgdHkpOwor
ICAgICAgICAgICAgVmVjdG9yPEludFJlY3Q+IGZvY3VzUmluZ1JlY3RzOworICAgICAgICAgICAg
YWRkRm9jdXNSaW5nUmVjdHMoZm9jdXNSaW5nUmVjdHMsIHR4LCB0eSk7CiAgICAgICAgICAgICBp
ZiAoc3R5bGUtPm91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+ZHJhd0ZvY3VzUmluZyhvYyk7CisgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCBvdywgb2Zmc2V0LCBvYyk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYWRkUERGVVJMUmVjdChncmFwaGljc0NvbnRl
eHQsIGdyYXBoaWNzQ29udGV4dC0+Zm9jdXNSaW5nQm91bmRpbmdSZWN0KCkpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhckZvY3VzUmluZygpOworICAgICAgICAgICAgICAgIGFk
ZFBERlVSTFJlY3QoZ3JhcGhpY3NDb250ZXh0LCB1bmlvblJlY3QoZm9jdXNSaW5nUmVjdHMpKTsK
ICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlz
aW9uIDUyNjAxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc1MCw3ICs3NTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRVc2VUcmFu
c2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyKSBjb25zdDsK
ICAgICB2b2lkIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBj
b250YWluZXIsIGNvbnN0IEludFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0
cyhHcmFwaGljc0NvbnRleHQqLCBpbnQgLyp0eCovLCBpbnQgLyp0eSovKSB7IH07CisgICAgdmly
dHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCAvKnR4Ki8s
IGludCAvKnR5Ki8pIHsgfTsKIAogICAgIEludFJlY3QgYWJzb2x1dGVPdXRsaW5lQm91bmRzKCkg
Y29uc3QKICAgICB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAkocmV2aXNpb24gNTI2
MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjEwLDkgKzIxMCwxMSBAQCB2b2lkIFJlbmRlclBhdGg6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJCiAKIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBmcm9tIGluc2lkZSBwYWludE91dGxpbmUo
KSBzaW5jZSB3ZSBjYWxsIHBhaW50T3V0bGluZSgpCiAvLyB3aGlsZSB0cmFuc2Zvcm1lZCB0byBv
dXIgY29vcmQgc3lzdGVtLCByZXR1cm4gbG9jYWwgY29vcmRzCi12b2lkIFJlbmRlclBhdGg6OmFk
ZEZvY3VzUmluZ1JlY3RzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQsIGlu
dCkgCit2b2lkIFJlbmRlclBhdGg6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYg
cmVjdHMsIGludCwgaW50KSAKIHsKLSAgICBncmFwaGljc0NvbnRleHQtPmFkZEZvY3VzUmluZ1Jl
Y3QoZW5jbG9zaW5nSW50UmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKSk7Cisg
ICAgSW50UmVjdCByZWN0ID0gZW5jbG9zaW5nSW50UmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29y
ZGluYXRlcygpKTsKKyAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZWN0cy5hcHBl
bmQocmVjdCk7CiB9CiAKIGJvb2wgUmVuZGVyUGF0aDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclBhdGguaAkocmV2aXNpb24gNTI2MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZv
JiwgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNS
aW5nUmVjdHMoR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1YWwg
dm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQgdHgsIGludCB0eSk7
CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRU
ZXN0QWN0aW9uKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIu
Y3BwCShyZXZpc2lvbiA1MjYwMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRh
aW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiwxMCArMTM2LDExIEBAIHZvaWQgUmVuZGVy
U1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8KIH0KIAogLy8gYWRkRm9jdXNSaW5nUmVjdHMg
aXMgY2FsbGVkIGZyb20gcGFpbnRPdXRsaW5lIGFuZCBuZWVkcyB0byBiZSBpbiB0aGUgc2FtZSBj
b29yZGluYXRlcyBhcyB0aGUgcGFpbnRPdWxpbmUgY2FsbAotdm9pZCBSZW5kZXJTVkdDb250YWlu
ZXI6OmFkZEZvY3VzUmluZ1JlY3RzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBp
bnQsIGludCkKK3ZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCkKIHsKICAgICBJbnRSZWN0IHBhaW50UmVjdElu
UGFyZW50ID0gZW5jbG9zaW5nSW50UmVjdChsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkubWFwUmVj
dChyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5hZGRGb2N1c1JpbmdSZWN0KHBhaW50UmVjdEluUGFyZW50KTsKKyAgICBpZiAoIXBhaW50UmVj
dEluUGFyZW50LmlzRW1wdHkoKSkKKyAgICAgICAgcmVjdHMuYXBwZW5kKHBhaW50UmVjdEluUGFy
ZW50KTsKIH0KIAogRmxvYXRSZWN0IFJlbmRlclNWR0NvbnRhaW5lcjo6b2JqZWN0Qm91bmRpbmdC
b3goKSBjb25zdApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgJKHJl
dmlzaW9uIDUyNjAxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhHcmFw
aGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIGFkZEZvY3Vz
UmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5KTsKIAogICAgIHZpcnR1
YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgdmlydHVhbCBGbG9h
dFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdDsKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDUyNjAxKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsMTEgKzI0
MSwxMiBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjptYXBMb2NhbFRvQ29udGFpbmVyCiAgICAgU1ZH
UmVuZGVyQmFzZTo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCBm
aXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUpOwogfQogCi12b2lkIFJlbmRlclNW
R0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgaW50LCBpbnQpCit2b2lkIFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCkKIHsKICAgICAvLyB0aGlzIGlzIGNhbGxlZCBm
cm9tIHBhaW50KCkgYWZ0ZXIgdGhlIGxvY2FsVHJhbnNmb3JtIGhhcyBhbHJlYWR5IGJlZW4gYXBw
bGllZAogICAgIEludFJlY3QgY29udGVudFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHJlcGFpbnRS
ZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkRm9jdXNS
aW5nUmVjdChjb250ZW50UmVjdCk7CisgICAgaWYgKCFjb250ZW50UmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgIHJlY3RzLmFwcGVuZChjb250ZW50UmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHSW1h
Z2U6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQpCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgJKHJldmlzaW9uIDUyNjAxKQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHkpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHkp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+
JiwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQo
V3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwogICAgICAgICB2b2lkIGFkanVz
dFJlY3RzRm9yQXNwZWN0UmF0aW8oRmxvYXRSZWN0JiBkZXN0UmVjdCwgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lvbiA1MjYwMSkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA1LDkgKzUw
NSwxMCBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpzZWxlY3Rpb25DaGFuZ2VkCiAgICAgfQog
fQogCi12b2lkIFJlbmRlclRleHRDb250cm9sOjphZGRGb2N1c1JpbmdSZWN0cyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHkpCit2b2lkIFJlbmRlclRleHRD
b250cm9sOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgs
IGludCB0eSkKIHsKLSAgICBncmFwaGljc0NvbnRleHQtPmFkZEZvY3VzUmluZ1JlY3QoSW50UmVj
dCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgaWYgKHdpZHRoKCkgJiYgaGVpZ2h0
KCkpCisgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0
KCkpKTsKIH0KIAogSFRNTEVsZW1lbnQqIFJlbmRlclRleHRDb250cm9sOjppbm5lclRleHRFbGVt
ZW50KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkocmV2
aXNpb24gNTI2MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IGF2b2lkc0Zsb2F0cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHNldElubmVy
VGV4dFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkRm9jdXNSaW5nUmVjdHMoR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHkpOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQg
dHgsIGludCB0eSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3Jv
bGxlZChib29sKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
</data>
<flag name="review"
          id="27699"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>