<?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>177705</bug_id>
          
          <creation_ts>2017-09-30 00:07:06 -0700</creation_ts>
          <short_desc>WSL ^ should be *</short_desc>
          <delta_ts>2018-10-13 19:22:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>keith_miller</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1354873</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-30 00:07:06 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355543</commentid>
    <comment_count>1</comment_count>
      <attachid>322449</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-02 15:07:49 -0700</bug_when>
    <thetext>Created attachment 322449
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355544</commentid>
    <comment_count>2</comment_count>
      <attachid>322449</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-10-02 15:09:01 -0700</bug_when>
    <thetext>Comment on attachment 322449
the patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355547</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-02 15:11:02 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/222750/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355549</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-02 15:11:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/34777879&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468972</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 19:22:56 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/168</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322449</attachid>
            <date>2017-10-02 15:07:49 -0700</date>
            <delta_ts>2017-10-02 15:09:01 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>38093</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMjc1MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDg5IEBACisyMDE3LTEwLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV1NMIF4gc2hvdWxkIGJlICoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NzcwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgV2hlbiBJIGZpcnN0IHdyb3RlIHRoZSBwcm90b3R5
cGUsIEkgdGhvdWdodCBpdCB3b3VsZCBiZSBjb29sIHRvIHVzZSBeIGZvciBwb2ludGVycy4gTm9i
b2R5IGFncmVlcy4gSSd2ZQorICAgICAgICBnb3R0ZW4gc28gbXVjaCBmZWVkYmFjayBpcyB0byB1
c2UgKi4gVGhpcyBjaGFuZ2VzIHBvaW50ZXJzIHRvIHVzZSAqLgorCisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRGVyZWZlcmVuY2VFeHByZXNzaW9uLmpzOgorICAgICAgICAoRGVy
ZWZlcmVuY2VFeHByZXNzaW9uLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChEZXJlZmVy
ZW5jZUV4cHJlc3Npb24pOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJp
bnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9QYXJzZS5qczoKKyAgICAgICAgKHBhcnNlVHlwZSk6CisgICAgICAgIChwYXJz
ZVBvc3NpYmxlUHJlZml4KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QdHJU
eXBlLmpzOgorICAgICAgICAoUHRyVHlwZS5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAo
UHRyVHlwZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJy
YXJ5LmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanM6CisgICAg
ICAgICh0ZXN0cy5zaW1wbGVEZXJlZmVyZW5jZSk6CisgICAgICAgICh0ZXN0cy5kZXJlZmVyZW5j
ZVN0b3JlKToKKyAgICAgICAgKHRlc3RzLnNpbXBsZU1ha2VQdHIpOgorICAgICAgICAodGVzdHMu
bG9hZE51bGwpOgorICAgICAgICAodGVzdHMuc3RvcmVOdWxsKToKKyAgICAgICAgKHRlc3RzLnJl
dHVybk51bGwpOgorICAgICAgICAodGVzdHMuZGVyZWZlcmVuY2VEZWZhdWx0TnVsbCk6CisgICAg
ICAgICh0ZXN0cy5kZWZhdWx0SW5pdGlhbGl6ZWROdWxsKToKKyAgICAgICAgKHRlc3RzLnBhc3NO
dWxsVG9QdHJNb25vbW9ycGhpYyk6CisgICAgICAgICh0ZXN0cy5wYXNzTnVsbFRvUHRyUG9seW1v
cnBoaWMpOgorICAgICAgICAodGVzdHMucGFzc051bGxBbmROb3ROdWxsKToKKyAgICAgICAgKHRl
c3RzLnBhc3NOdWxsQW5kTm90TnVsbEZ1bGxQb2x5KToKKyAgICAgICAgKHRlc3RzLnBhc3NOdWxs
QW5kTm90TnVsbEZ1bGxQb2x5UmV2ZXJzZSk6CisgICAgICAgICh0ZXN0cy5jaGFpbkdlbmVyaWMp
OgorICAgICAgICAodGVzdHMuY2hhaW5TdHJ1Y3QpOgorICAgICAgICAodGVzdHMuY2hhaW5TdHJ1
Y3ROZXdseVZhbGlkKToKKyAgICAgICAgKHRlc3RzLmNoYWluU3RydWN0RGV2aWNlKToKKyAgICAg
ICAgKHRlc3RzLnBhcmFtQ2hhaW5TdHJ1Y3REZXZpY2UpOgorICAgICAgICAodGVzdHMuc2ltcGxl
UHJvdG9jb2xFeHRlbmRzKToKKyAgICAgICAgKHRlc3RzLnByb3RvY29sRXh0ZW5kc1R3byk6Cisg
ICAgICAgICh0ZXN0cy5vdmVycmlkZVN1YnNjcmlwdFN0cnVjdCk6CisgICAgICAgICh0ZXN0cy5v
dmVycmlkZVN1YnNjcmlwdFN0cnVjdEFuZERvU3RvcmVzKToKKyAgICAgICAgKHRlc3RzLm92ZXJy
aWRlU3Vic2NyaXB0U3RydWN0QW5kVXNlUG9pbnRlcnMpOgorICAgICAgICAodGVzdHMub3ZlcnJp
ZGVTdWJzY3JpcHRTdHJ1Y3RBbmRVc2VQb2ludGVyc0luY29ycmVjdGx5KToKKyAgICAgICAgKHRl
c3RzLm1ha2VBcnJheVJlZkZyb21Qb2ludGVyKToKKyAgICAgICAgKHRlc3RzLm5vbkFycmF5UmVm
QXJyYXlMZW5ndGhGYWlsKToKKyAgICAgICAgKHRlc3RzLmNvbnN0ZXhwcklzTm90TFZhbHVlUHRy
KToKKyAgICAgICAgKHRlc3RzLmdlbmVyaWNBY2Nlc3NvcnMpOgorICAgICAgICAodGVzdHMubmVz
dGVkU3Vic2NyaXB0TFZhbHVlRW11bGF0aW9uU2ltcGxlKToKKyAgICAgICAgKHRlc3RzLm5lc3Rl
ZFN1YnNjcmlwdExWYWx1ZUVtdWxhdGlvbkdlbmVyaWMpOgorICAgICAgICAodGVzdHMuc2hhZGVy
VHlwZXMpOgorICAgICAgICAodGVzdHMuZW51bVB0ckJhc2UpOgorICAgICAgICAodGVzdHMubXV0
dWFsbHlSZWN1cnNpdmVTdHJ1Y3RXaXRoUG9pbnRlcnNCcm9rZW4pOgorICAgICAgICAodGVzdHMu
bXV0dWFsbHlSZWN1cnNpdmVTdHJ1Y3RXaXRoUG9pbnRlcnMpOgorICAgICAgICAodGVzdHMubGlu
a2VkTGlzdCk6CisgICAgICAgICh0ZXN0cy5wb2ludGVyVG9Qb2ludGVyKToKKyAgICAgICAgKHRl
c3RzLnBvaW50ZXJHZXR0ZXIpOgorICAgICAgICAodGVzdHMub3BlcmF0b3JDYXN0V2l0aFR5cGVW
YXJpYWJsZUluZmVycmVkRnJvbVJldHVyblR5cGUpOgorICAgICAgICAodGVzdHMubG9uZVNldHRl
clBvaW50ZXIpOgorICAgICAgICAodGVzdHMuYW5kZXJXaXRoTm90aGluZ1dyb25nKToKKyAgICAg
ICAgKHRlc3RzLmFuZGVyV2l0aFdyb25nTnVtYmVyT2ZBcmd1bWVudHMpOgorICAgICAgICAodGVz
dHMuYW5kZXJEb2VzbnRSZXR1cm5Qb2ludGVyKToKKyAgICAgICAgKHRlc3RzLmFuZGVyRG9lc250
VGFrZVJlZmVyZW5jZSk6CisgICAgICAgICh0ZXN0cy5hbmRlcldpdGhBcnJheVJlZik6CisgICAg
ICAgICh0ZXN0cy5wb2ludGVySW5kZXhHZXR0ZXIpOgorICAgICAgICAodGVzdHMubG9uZUluZGV4
U2V0dGVyUG9pbnRlcik6CisgICAgICAgICh0ZXN0cy5pbmRleEFuZGVyV2l0aE5vdGhpbmdXcm9u
Zyk6CisgICAgICAgICh0ZXN0cy5pbmRleEFuZGVyV2l0aFdyb25nTnVtYmVyT2ZBcmd1bWVudHMp
OgorICAgICAgICAodGVzdHMuaW5kZXhBbmRlckRvZXNudFJldHVyblBvaW50ZXIpOgorICAgICAg
ICAodGVzdHMuaW5kZXhBbmRlckRvZXNudFRha2VSZWZlcmVuY2UpOgorICAgICAgICAodGVzdHMu
aW5kZXhBbmRlcldpdGhBcnJheVJlZik6CisgICAgICAgICh0ZXN0cy5kZXZpY2VQdHJQdHIpOgor
ICAgICAgICAodGVzdHMudGhyZWFkZ3JvdXBQdHJQdHIpOgorICAgICAgICAodGVzdHMuY29uc3Rh
bnRQdHJQdHIpOgorICAgICAgICAodGVzdHMucG9pbnRlckluZGV4R2V0dGVySW5Qcm90b2NvbCk6
CisgICAgICAgICh0ZXN0cy5sb25lSW5kZXhTZXR0ZXJQb2ludGVySW5Qcm90b2NvbCk6CisgICAg
ICAgICh0ZXN0cy5pbmRleEFuZGVyV2l0aE5vdGhpbmdXcm9uZ0luUHJvdG9jb2wpOgorICAgICAg
ICAodGVzdHMuaW5kZXhBbmRlcldpdGhXcm9uZ051bWJlck9mQXJndW1lbnRzSW5Qcm90b2NvbCk6
CisgICAgICAgICh0ZXN0cy5pbmRleEFuZGVyRG9lc250UmV0dXJuUG9pbnRlckluUHJvdG9jb2wp
OgorICAgICAgICAodGVzdHMuaW5kZXhBbmRlckRvZXNudFRha2VSZWZlcmVuY2VJblByb3RvY29s
KToKKyAgICAgICAgKHRlc3RzLmluZGV4QW5kZXJXaXRoQXJyYXlSZWZJblByb3RvY29sKToKKyAg
ICAgICAgKHRlc3RzLmFuZFJldHVybmVkQXJyYXlSZWYpOgorCiAyMDE3LTEwLTAyICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgV1NMIHNob3VsZCBiZSBmaW5lIHdp
dGggJmZvbygpW2ldIGlmIGZvbygpIHJldHVybnMgYSBbXQpJbmRleDogVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvRGVyZWZlcmVuY2VFeHByZXNzaW9uLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0RlcmVmZXJlbmNlRXhwcmVzc2lvbi5qcwkocmV2
aXNpb24gMjIyNzQ3KQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRGVyZWZlcmVu
Y2VFeHByZXNzaW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw2IEBAIGNsYXNzIERl
cmVmZXJlbmNlRXhwcmVzc2lvbiBleHRlbmRzIEV4cHIKICAgICAKICAgICB0b1N0cmluZygpCiAg
ICAgewotICAgICAgICByZXR1cm4gIl4oIiArIHRoaXMucHRyICsgIikiOworICAgICAgICByZXR1
cm4gIiooIiArIHRoaXMucHRyICsgIikiOwogICAgIH0KIH0KSW5kZXg6IFRvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwkocmV2aXNpb24gMjIyNzQ3KQorKysgVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwkod29ya2luZyBjb3B5KQpA
QCAtNjMwLDcgKzYzMCw3IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAKICAgICAgICAg
Zm9yIChsZXQgYWRkcmVzc1NwYWNlIG9mIGFkZHJlc3NTcGFjZXMpIHsKICAgICAgICAgICAgIHRo
aXMuX21hcC5zZXQoCi0gICAgICAgICAgICAgICAgYG5hdGl2ZSBUXiAke2FkZHJlc3NTcGFjZX0g
b3BlcmF0b3ImW108VD4oVFtdICR7YWRkcmVzc1NwYWNlfSx1aW50KWAsCisgICAgICAgICAgICAg
ICAgYG5hdGl2ZSBUKiAke2FkZHJlc3NTcGFjZX0gb3BlcmF0b3ImW108VD4oVFtdICR7YWRkcmVz
c1NwYWNlfSx1aW50KWAsCiAgICAgICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3JlZiwgaW5kZXhdLCBub2RlKSA9PiB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZWYgPSByZWYubG9hZFZhbHVlKCk7CkluZGV4OiBUb29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwkocmV2aXNpb24gMjIyNzQ3KQorKysgVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTMw
MCw4ICszMDAsOCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpCiAg
ICAgICAgICAgICByZXR1cm4gY29uc3VtZSguLi5hZGRyZXNzU3BhY2VzKS50ZXh0OwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICB3aGlsZSAodG9rZW4gPSB0cnlDb25zdW1lKCJeIiwgIlsi
KSkgewotICAgICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0gIl4iKSB7CisgICAgICAgIHdoaWxl
ICh0b2tlbiA9IHRyeUNvbnN1bWUoIioiLCAiWyIpKSB7CisgICAgICAgICAgICBpZiAodG9rZW4u
dGV4dCA9PSAiKiIpIHsKICAgICAgICAgICAgICAgICB0eXBlID0gbmV3IFB0clR5cGUodG9rZW4s
IGdldEFkZHJlc3NTcGFjZSgpLCB0eXBlKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KQEAgLTQ2Miw3ICs0NjIsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBv
cmlnaW4sIG9yaWdpbktpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VQcmVJbmNyZW1lbnQoKTsK
ICAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiKyIsICItIiwgIn4iKSkKICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50
ZXh0LCBbXSwgW3BhcnNlUG9zc2libGVQcmVmaXgoKV0pOwotICAgICAgICBpZiAodG9rZW4gPSB0
cnlDb25zdW1lKCJeIikpCisgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIioiKSkKICAg
ICAgICAgICAgIHJldHVybiBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBv
c3NpYmxlUHJlZml4KCkpOwogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCImIikpCiAg
ICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3Np
YmxlUHJlZml4KCkpOwpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHRyVHlw
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QdHJUeXBl
LmpzCShyZXZpc2lvbiAyMjI3NDcpCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Q
dHJUeXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFB0clR5cGUg
ZXh0ZW5kcyBSZWZlcmVuY2VUeXBlIHsKIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlICsgIl4gIiArIHRoaXMuYWRkcmVzc1NwYWNlOworICAg
ICAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSArICIqICIgKyB0aGlzLmFkZHJlc3NTcGFjZTsK
ICAgICB9CiB9CiAKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJk
TGlicmFyeS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
dGFuZGFyZExpYnJhcnkuanMJKHJldmlzaW9uIDIyMjc0NykKKysrIFRvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjExLDcg
KzIxMSw3IEBAIGJvb2wgb3BlcmF0b3I9PTxUOkVxdWF0YWJsZT4odmVjMjxUPiBhLCAKICAgICBy
ZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55OwogfQogCi10aHJlYWQgVF4gb3BlcmF0b3Im
W108VD4odGhyZWFkIHZlYzI8VD5eIGZvbywgdWludCBpbmRleCkKK3RocmVhZCBUKiBvcGVyYXRv
ciZbXTxUPih0aHJlYWQgdmVjMjxUPiogZm9vLCB1aW50IGluZGV4KQogewogICAgIGlmIChpbmRl
eCA9PSAwKQogICAgICAgICByZXR1cm4gJmZvby0+eDsKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29s
IG9wZXJhdG9yPT08VDpFcXVhdGFibGU+KHZlYzM8VD4gYSwgCiAgICAgcmV0dXJuIGEueCA9PSBi
LnggJiYgYS55ID09IGIueSAmJiBhLnogPT0gYi56OwogfQogCi10aHJlYWQgVF4gb3BlcmF0b3Im
W108VD4odGhyZWFkIHZlYzM8VD5eIGZvbywgdWludCBpbmRleCkKK3RocmVhZCBUKiBvcGVyYXRv
ciZbXTxUPih0aHJlYWQgdmVjMzxUPiogZm9vLCB1aW50IGluZGV4KQogewogICAgIGlmIChpbmRl
eCA9PSAwKQogICAgICAgICByZXR1cm4gJmZvby0+eDsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29s
IG9wZXJhdG9yPT08VDpFcXVhdGFibGU+KHZlYzQ8VD4gYSwgCiAgICAgcmV0dXJuIGEueCA9PSBi
LnggJiYgYS55ID09IGIueSAmJiBhLnogPT0gYi56ICYmIGEudyA9PSBiLnc7CiB9CiAKLXRocmVh
ZCBUXiBvcGVyYXRvciZbXTxUPih0aHJlYWQgdmVjNDxUPl4gZm9vLCB1aW50IGluZGV4KQordGhy
ZWFkIFQqIG9wZXJhdG9yJltdPFQ+KHRocmVhZCB2ZWM0PFQ+KiBmb28sIHVpbnQgaW5kZXgpCiB7
CiAgICAgaWYgKGluZGV4ID09IDApCiAgICAgICAgIHJldHVybiAmZm9vLT54OwpAQCAtMzc0LDEw
ICszNzQsMTAgQEAgdGhyZWFkIFReIG9wZXJhdG9yJltdPFQ+KHRocmVhZCB2ZWM0PFQ+XgogICAg
IHRyYXA7CiB9CiAKLW5hdGl2ZSB0aHJlYWQgVF4gb3BlcmF0b3ImW108VD4odGhyZWFkIFRbXSwg
dWludCk7Ci1uYXRpdmUgdGhyZWFkZ3JvdXAgVF4gb3BlcmF0b3ImW108VD4odGhyZWFkZ3JvdXAg
VFtdLCB1aW50KTsKLW5hdGl2ZSBkZXZpY2UgVF4gb3BlcmF0b3ImW108VD4oZGV2aWNlIFRbXSwg
dWludCk7Ci1uYXRpdmUgY29uc3RhbnQgVF4gb3BlcmF0b3ImW108VD4oY29uc3RhbnQgVFtdLCB1
aW50KTsKK25hdGl2ZSB0aHJlYWQgVCogb3BlcmF0b3ImW108VD4odGhyZWFkIFRbXSwgdWludCk7
CituYXRpdmUgdGhyZWFkZ3JvdXAgVCogb3BlcmF0b3ImW108VD4odGhyZWFkZ3JvdXAgVFtdLCB1
aW50KTsKK25hdGl2ZSBkZXZpY2UgVCogb3BlcmF0b3ImW108VD4oZGV2aWNlIFRbXSwgdWludCk7
CituYXRpdmUgY29uc3RhbnQgVCogb3BlcmF0b3ImW108VD4oY29uc3RhbnQgVFtdLCB1aW50KTsK
IAogbmF0aXZlIHVpbnQgb3BlcmF0b3IubGVuZ3RoPFQ+KHRocmVhZCBUW10pOwogbmF0aXZlIHVp
bnQgb3BlcmF0b3IubGVuZ3RoPFQ+KHRocmVhZGdyb3VwIFRbXSk7CkluZGV4OiBUb29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMJKHJldmlzaW9uIDIyMjc1MCkKKysrIFRvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw5ICszNTgs
OSBAQCB0ZXN0cy5zaW1wbGVEZWZhdWx0ID0gZnVuY3Rpb24oKQogdGVzdHMuc2ltcGxlRGVyZWZl
cmVuY2UgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAg
ICBpbnQgZm9vKGRldmljZSBpbnReIHApCisgICAgICAgIGludCBmb28oZGV2aWNlIGludCogcCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF5wOworICAgICAgICAgICAgcmV0dXJuICpw
OwogICAgICAgICB9CiAgICAgYCk7CiAgICAgbGV0IGJ1ZmZlciA9IG5ldyBFQnVmZmVyKDEpOwpA
QCAtMzcxLDkgKzM3MSw5IEBAIHRlc3RzLnNpbXBsZURlcmVmZXJlbmNlID0gZnVuY3Rpb24oKQog
dGVzdHMuZGVyZWZlcmVuY2VTdG9yZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9
IGRvUHJlcChgCi0gICAgICAgIHZvaWQgZm9vKGRldmljZSBpbnReIHApCisgICAgICAgIHZvaWQg
Zm9vKGRldmljZSBpbnQqIHApCiAgICAgICAgIHsKLSAgICAgICAgICAgIF5wID0gNTI7CisgICAg
ICAgICAgICAqcCA9IDUyOwogICAgICAgICB9CiAgICAgYCk7CiAgICAgbGV0IGJ1ZmZlciA9IG5l
dyBFQnVmZmVyKDEpOwpAQCAtMzg2LDcgKzM4Niw3IEBAIHRlc3RzLmRlcmVmZXJlbmNlU3RvcmUg
PSBmdW5jdGlvbigpCiB0ZXN0cy5zaW1wbGVNYWtlUHRyID0gZnVuY3Rpb24oKQogewogICAgIGxl
dCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgdGhyZWFkIGludF4gZm9vKCkKKyAgICAgICAg
dGhyZWFkIGludCogZm9vKCkKICAgICAgICAgewogICAgICAgICAgICAgaW50IHggPSA0MjsKICAg
ICAgICAgICAgIHJldHVybiAmeDsKQEAgLTcyNCw3ICs3MjQsNyBAQCB0ZXN0cy5sb2FkTnVsbCA9
IGZ1bmN0aW9uKCkKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCiAgICAg
ICAgICAgICB2b2lkIHNpbms8VD4oVCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGZvbygpIHsgc2lu
ayhebnVsbCk7IH0KKyAgICAgICAgICAgIHZvaWQgZm9vKCkgeyBzaW5rKCpudWxsKTsgfQogICAg
ICAgICBgKSwKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yICYmIGUubWVz
c2FnZS5pbmRleE9mKCJUeXBlIHBhc3NlZCB0byBkZXJlZmVyZW5jZSBpcyBub3QgYSBwb2ludGVy
OiBudWxsIikgIT0gLTEpOwogfQpAQCAtNzMzLDcgKzczMyw3IEBAIHRlc3RzLnN0b3JlTnVsbCA9
IGZ1bmN0aW9uKCkKIHsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0g
ICAgICAgICAgICB2b2lkIGZvbygpIHsgXm51bGwgPSA0MjsgfQorICAgICAgICAgICAgdm9pZCBm
b28oKSB7ICpudWxsID0gNDI7IH0KICAgICAgICAgYCksCiAgICAgICAgIChlKSA9PiBlIGluc3Rh
bmNlb2YgV1R5cGVFcnJvciAmJiBlLm1lc3NhZ2UuaW5kZXhPZigiVHlwZSBwYXNzZWQgdG8gZGVy
ZWZlcmVuY2UgaXMgbm90IGEgcG9pbnRlcjogbnVsbCIpICE9IC0xKTsKIH0KQEAgLTc0MSw3ICs3
NDEsNyBAQCB0ZXN0cy5zdG9yZU51bGwgPSBmdW5jdGlvbigpCiB0ZXN0cy5yZXR1cm5OdWxsID0g
ZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgdGhyZWFk
IGludF4gZm9vKCkgeyByZXR1cm4gbnVsbDsgfQorICAgICAgICB0aHJlYWQgaW50KiBmb28oKSB7
IHJldHVybiBudWxsOyB9CiAgICAgYCk7CiAgICAgbGV0IHJlc3VsdCA9IGNhbGxGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10sIFtdKTsKICAgICBpZiAoIXJlc3VsdC50eXBlLmlzUHRyKQpAQCAt
NzU3LDggKzc1Nyw4IEBAIHRlc3RzLmRlcmVmZXJlbmNlRGVmYXVsdE51bGwgPSBmdW5jdGlvbigK
ICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAgICAgIGludCBmb28oKQogICAgICAgICB7
Ci0gICAgICAgICAgICB0aHJlYWQgaW50XiBwOwotICAgICAgICAgICAgcmV0dXJuIF5wOworICAg
ICAgICAgICAgdGhyZWFkIGludCogcDsKKyAgICAgICAgICAgIHJldHVybiAqcDsKICAgICAgICAg
fQogICAgIGApOwogICAgIGNoZWNrRmFpbCgKQEAgLTc3MSw4ICs3NzEsOCBAQCB0ZXN0cy5kZWZh
dWx0SW5pdGlhbGl6ZWROdWxsID0gZnVuY3Rpb24oCiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAo
YAogICAgICAgICBpbnQgZm9vKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhyZWFkIGludF4g
cCA9IG51bGw7OwotICAgICAgICAgICAgcmV0dXJuIF5wOworICAgICAgICAgICAgdGhyZWFkIGlu
dCogcCA9IG51bGw7OworICAgICAgICAgICAgcmV0dXJuICpwOwogICAgICAgICB9CiAgICAgYCk7
CiAgICAgY2hlY2tGYWlsKApAQCAtNzgzLDkgKzc4Myw5IEBAIHRlc3RzLmRlZmF1bHRJbml0aWFs
aXplZE51bGwgPSBmdW5jdGlvbigKIHRlc3RzLnBhc3NOdWxsVG9QdHJNb25vbW9ycGhpYyA9IGZ1
bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGludCBmb28o
dGhyZWFkIGludF4gcHRyKQorICAgICAgICBpbnQgZm9vKHRocmVhZCBpbnQqIHB0cikKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIF5wdHI7CisgICAgICAgICAgICByZXR1cm4gKnB0cjsK
ICAgICAgICAgfQogICAgICAgICBpbnQgYmFyKCkKICAgICAgICAgewpAQCAtODAxLDkgKzgwMSw5
IEBAIHRlc3RzLnBhc3NOdWxsVG9QdHJQb2x5bW9ycGhpYyA9IGZ1bmN0aW8KIHsKICAgICBjaGVj
a0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICBUIGZvbzxUPih0aHJl
YWQgVF4gcHRyKQorICAgICAgICAgICAgVCBmb288VD4odGhyZWFkIFQqIHB0cikKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gXnB0cjsKKyAgICAgICAgICAgICAgICByZXR1
cm4gKnB0cjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGludCBiYXIoKQogICAgICAgICAg
ICAgewpAQCAtOTczLDExICs5NzMsMTEgQEAgdGVzdHMuYmFkSW50TGl0ZXJhbEZvckRvdWJsZSA9
IGZ1bmN0aW9uKAogdGVzdHMucGFzc051bGxBbmROb3ROdWxsID0gZnVuY3Rpb24oKQogewogICAg
IGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgVCBiYXI8VD4oZGV2aWNlIFReIHAsIGRl
dmljZSBUXikKKyAgICAgICAgVCBiYXI8VD4oZGV2aWNlIFQqIHAsIGRldmljZSBUKikKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIF5wOworICAgICAgICAgICAgcmV0dXJuICpwOwogICAg
ICAgICB9Ci0gICAgICAgIGludCBmb28oZGV2aWNlIGludF4gcCkKKyAgICAgICAgaW50IGZvbyhk
ZXZpY2UgaW50KiBwKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYmFyKHAsIG51bGwp
OwogICAgICAgICB9CkBAIC05OTQsOSArOTk0LDkgQEAgdGVzdHMucGFzc051bGxBbmROb3ROdWxs
RnVsbFBvbHkgPSBmdW5jdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcDsKICAgICAg
ICAgfQotICAgICAgICBpbnQgZm9vKGRldmljZSBpbnReIHApCisgICAgICAgIGludCBmb28oZGV2
aWNlIGludCogcCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF5iYXIocCwgbnVsbCk7
CisgICAgICAgICAgICByZXR1cm4gKmJhcihwLCBudWxsKTsKICAgICAgICAgfQogICAgIGApOwog
ICAgIGxldCBidWZmZXIgPSBuZXcgRUJ1ZmZlcigxKTsKQEAgLTEwMTEsOSArMTAxMSw5IEBAIHRl
c3RzLnBhc3NOdWxsQW5kTm90TnVsbEZ1bGxQb2x5UmV2ZXJzZSAKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIHA7CiAgICAgICAgIH0KLSAgICAgICAgaW50IGZvbyhkZXZpY2UgaW50XiBw
KQorICAgICAgICBpbnQgZm9vKGRldmljZSBpbnQqIHApCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBeYmFyKG51bGwsIHApOworICAgICAgICAgICAgcmV0dXJuICpiYXIobnVsbCwgcCk7
CiAgICAgICAgIH0KICAgICBgKTsKICAgICBsZXQgYnVmZmVyID0gbmV3IEVCdWZmZXIoMSk7CkBA
IC0yMDAyLDkgKzIwMDIsOSBAQCB0ZXN0cy5jaGFpbkdlbmVyaWMgPSBmdW5jdGlvbigpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiB4OwogICAgICAgICB9Ci0gICAgICAgIFQgYmFyPFQ+
KHRocmVhZCBUXiBwdHIpCisgICAgICAgIFQgYmFyPFQ+KHRocmVhZCBUKiBwdHIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBeZm9vKHB0cik7CisgICAgICAgICAgICByZXR1cm4gKmZv
byhwdHIpOwogICAgICAgICB9CiAgICAgICAgIGludCBiYXooaW50IHgpCiAgICAgICAgIHsKQEAg
LTIwMjEsMTEgKzIwMjEsMTEgQEAgdGVzdHMuY2hhaW5TdHJ1Y3QgPSBmdW5jdGlvbigpCiAgICAg
ICAgICAgICBUIGY7CiAgICAgICAgIH0KICAgICAgICAgc3RydWN0IEJhcjxUPiB7Ci0gICAgICAg
ICAgICBGb288dGhyZWFkIFRePiBmOworICAgICAgICAgICAgRm9vPHRocmVhZCBUKj4gZjsKICAg
ICAgICAgfQotICAgICAgICBpbnQgZm9vKHRocmVhZCBCYXI8aW50Pl4geCkKKyAgICAgICAgaW50
IGZvbyh0aHJlYWQgQmFyPGludD4qIHgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBe
eC0+Zi5mOworICAgICAgICAgICAgcmV0dXJuICp4LT5mLmY7CiAgICAgICAgIH0KICAgICAgICAg
aW50IGJhcihpbnQgYSkKICAgICAgICAgewpAQCAtMjA0NCwxMyArMjA0NCwxMyBAQCB0ZXN0cy5j
aGFpblN0cnVjdE5ld2x5VmFsaWQgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBUIGY7CiAgICAg
ICAgIH0KICAgICAgICAgc3RydWN0IEJhcjxUPiB7Ci0gICAgICAgICAgICBGb288ZGV2aWNlIFRe
PiBmOworICAgICAgICAgICAgRm9vPGRldmljZSBUKj4gZjsKICAgICAgICAgfQotICAgICAgICBp
bnQgZm9vKHRocmVhZCBCYXI8aW50Pl4geCkKKyAgICAgICAgaW50IGZvbyh0aHJlYWQgQmFyPGlu
dD4qIHgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBeeC0+Zi5mOworICAgICAgICAg
ICAgcmV0dXJuICp4LT5mLmY7CiAgICAgICAgIH0KLSAgICAgICAgaW50IGJhcihkZXZpY2UgaW50
XiBhKQorICAgICAgICBpbnQgYmFyKGRldmljZSBpbnQqIGEpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEJhcjxpbnQ+IHg7CiAgICAgICAgICAgICB4LmYuZiA9IGE7CkBAIC0yMDY5LDEzICsyMDY5
LDEzIEBAIHRlc3RzLmNoYWluU3RydWN0RGV2aWNlID0gZnVuY3Rpb24oKQogICAgICAgICAgICAg
VCBmOwogICAgICAgICB9CiAgICAgICAgIHN0cnVjdCBCYXI8VD4gewotICAgICAgICAgICAgRm9v
PGRldmljZSBUXj4gZjsKKyAgICAgICAgICAgIEZvbzxkZXZpY2UgVCo+IGY7CiAgICAgICAgIH0K
LSAgICAgICAgaW50IGZvbyh0aHJlYWQgQmFyPGludD5eIHgpCisgICAgICAgIGludCBmb28odGhy
ZWFkIEJhcjxpbnQ+KiB4KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gXngtPmYuZjsK
KyAgICAgICAgICAgIHJldHVybiAqeC0+Zi5mOwogICAgICAgICB9Ci0gICAgICAgIGludCBiYXIo
ZGV2aWNlIGludF4gYSkKKyAgICAgICAgaW50IGJhcihkZXZpY2UgaW50KiBhKQogICAgICAgICB7
CiAgICAgICAgICAgICBCYXI8aW50PiB4OwogICAgICAgICAgICAgeC5mLmYgPSBhOwpAQCAtMjA5
NiwxMyArMjA5NiwxMyBAQCB0ZXN0cy5wYXJhbUNoYWluU3RydWN0RGV2aWNlID0gZnVuY3Rpb24o
CiAgICAgICAgIHN0cnVjdCBCYXI8VD4gewogICAgICAgICAgICAgRm9vPFQ+IGY7CiAgICAgICAg
IH0KLSAgICAgICAgaW50IGZvbyh0aHJlYWQgQmFyPGRldmljZSBpbnRePl4geCkKKyAgICAgICAg
aW50IGZvbyh0aHJlYWQgQmFyPGRldmljZSBpbnQqPiogeCkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIF54LT5mLmY7CisgICAgICAgICAgICByZXR1cm4gKngtPmYuZjsKICAgICAgICAg
fQotICAgICAgICBpbnQgYmFyKGRldmljZSBpbnReIGEpCisgICAgICAgIGludCBiYXIoZGV2aWNl
IGludCogYSkKICAgICAgICAgewotICAgICAgICAgICAgQmFyPGRldmljZSBpbnRePiB4OworICAg
ICAgICAgICAgQmFyPGRldmljZSBpbnQqPiB4OwogICAgICAgICAgICAgeC5mLmYgPSBhOwogICAg
ICAgICAgICAgcmV0dXJuIGZvbygmeCk7CiAgICAgICAgIH0KQEAgLTIxMTYsMjcgKzIxMTYsMjcg
QEAgdGVzdHMuc2ltcGxlUHJvdG9jb2xFeHRlbmRzID0gZnVuY3Rpb24oKQogewogICAgIGxldCBw
cm9ncmFtID0gZG9QcmVwKGAKICAgICAgICAgcHJvdG9jb2wgRm9vIHsKLSAgICAgICAgICAgIHZv
aWQgZm9vKHRocmVhZCBGb29eKTsKKyAgICAgICAgICAgIHZvaWQgZm9vKHRocmVhZCBGb28qKTsK
ICAgICAgICAgfQogICAgICAgICBwcm90b2NvbCBCYXIgOiBGb28gewotICAgICAgICAgICAgdm9p
ZCBiYXIodGhyZWFkIEJhcl4pOworICAgICAgICAgICAgdm9pZCBiYXIodGhyZWFkIEJhciopOwog
ICAgICAgICB9Ci0gICAgICAgIHZvaWQgZnV6ejxUOkZvbz4odGhyZWFkIFReIHApCisgICAgICAg
IHZvaWQgZnV6ejxUOkZvbz4odGhyZWFkIFQqIHApCiAgICAgICAgIHsKICAgICAgICAgICAgIGZv
byhwKTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGJ1eno8VDpCYXI+KHRocmVhZCBUXiBwKQor
ICAgICAgICB2b2lkIGJ1eno8VDpCYXI+KHRocmVhZCBUKiBwKQogICAgICAgICB7CiAgICAgICAg
ICAgICBmdXp6KHApOwogICAgICAgICAgICAgYmFyKHApOwogICAgICAgICB9Ci0gICAgICAgIHZv
aWQgZm9vKHRocmVhZCBpbnReIHApCisgICAgICAgIHZvaWQgZm9vKHRocmVhZCBpbnQqIHApCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIF5wID0gXnAgKyA3NDM7CisgICAgICAgICAgICAqcCA9ICpw
ICsgNzQzOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgYmFyKHRocmVhZCBpbnReIHApCisgICAg
ICAgIHZvaWQgYmFyKHRocmVhZCBpbnQqIHApCiAgICAgICAgIHsKLSAgICAgICAgICAgIF5wID0g
XnAgKyA5MTsKKyAgICAgICAgICAgICpwID0gKnAgKyA5MTsKICAgICAgICAgfQogICAgICAgICBp
bnQgdGhpbmd5KGludCBhKQogICAgICAgICB7CkBAIC0yMTUxLDM5ICsyMTUxLDM5IEBAIHRlc3Rz
LnByb3RvY29sRXh0ZW5kc1R3byA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRv
UHJlcChgCiAgICAgICAgIHByb3RvY29sIEZvbyB7Ci0gICAgICAgICAgICB2b2lkIGZvbyh0aHJl
YWQgRm9vXik7CisgICAgICAgICAgICB2b2lkIGZvbyh0aHJlYWQgRm9vKik7CiAgICAgICAgIH0K
ICAgICAgICAgcHJvdG9jb2wgQmFyIHsKLSAgICAgICAgICAgIHZvaWQgYmFyKHRocmVhZCBCYXJe
KTsKKyAgICAgICAgICAgIHZvaWQgYmFyKHRocmVhZCBCYXIqKTsKICAgICAgICAgfQogICAgICAg
ICBwcm90b2NvbCBCYXogOiBGb28sIEJhciB7Ci0gICAgICAgICAgICB2b2lkIGJheih0aHJlYWQg
QmF6Xik7CisgICAgICAgICAgICB2b2lkIGJheih0aHJlYWQgQmF6Kik7CiAgICAgICAgIH0KLSAg
ICAgICAgdm9pZCBmdXp6PFQ6Rm9vPih0aHJlYWQgVF4gcCkKKyAgICAgICAgdm9pZCBmdXp6PFQ6
Rm9vPih0aHJlYWQgVCogcCkKICAgICAgICAgewogICAgICAgICAgICAgZm9vKHApOwogICAgICAg
ICB9Ci0gICAgICAgIHZvaWQgYnV6ejxUOkJhcj4odGhyZWFkIFReIHApCisgICAgICAgIHZvaWQg
YnV6ejxUOkJhcj4odGhyZWFkIFQqIHApCiAgICAgICAgIHsKICAgICAgICAgICAgIGJhcihwKTsK
ICAgICAgICAgfQotICAgICAgICB2b2lkIHh1eno8VDpCYXo+KHRocmVhZCBUXiBwKQorICAgICAg
ICB2b2lkIHh1eno8VDpCYXo+KHRocmVhZCBUKiBwKQogICAgICAgICB7CiAgICAgICAgICAgICBm
dXp6KHApOwogICAgICAgICAgICAgYnV6eihwKTsKICAgICAgICAgICAgIGJheihwKTsKICAgICAg
ICAgfQotICAgICAgICB2b2lkIGZvbyh0aHJlYWQgaW50XiBwKQorICAgICAgICB2b2lkIGZvbyh0
aHJlYWQgaW50KiBwKQogICAgICAgICB7Ci0gICAgICAgICAgICBecCA9IF5wICsgNzQzOworICAg
ICAgICAgICAgKnAgPSAqcCArIDc0MzsKICAgICAgICAgfQotICAgICAgICB2b2lkIGJhcih0aHJl
YWQgaW50XiBwKQorICAgICAgICB2b2lkIGJhcih0aHJlYWQgaW50KiBwKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBecCA9IF5wICsgOTE7CisgICAgICAgICAgICAqcCA9ICpwICsgOTE7CiAgICAg
ICAgIH0KLSAgICAgICAgdm9pZCBiYXoodGhyZWFkIGludF4gcCkKKyAgICAgICAgdm9pZCBiYXoo
dGhyZWFkIGludCogcCkKICAgICAgICAgewotICAgICAgICAgICAgXnAgPSBecCArIDM5OworICAg
ICAgICAgICAgKnAgPSAqcCArIDM5OwogICAgICAgICB9CiAgICAgICAgIGludCB0aGluZ3koaW50
IGEpCiAgICAgICAgIHsKQEAgLTI1MDYsNyArMjUwNiw3IEBAIHRlc3RzLm92ZXJyaWRlU3Vic2Ny
aXB0U3RydWN0ID0gZnVuY3Rpb24KICAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICAgaW50
IHk7CiAgICAgICAgIH0KLSAgICAgICAgdGhyZWFkIGludF4gb3BlcmF0b3ImW10odGhyZWFkIEZv
b14gZm9vLCB1aW50IGluZGV4KQorICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXSh0aHJl
YWQgRm9vKiBmb28sIHVpbnQgaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpbmRl
eCA9PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiAmZm9vLT54OwpAQCAtMjUzMiw3ICsyNTMy
LDcgQEAgdGVzdHMub3ZlcnJpZGVTdWJzY3JpcHRTdHJ1Y3RBbmREb1N0b3JlcwogICAgICAgICAg
ICAgaW50IHg7CiAgICAgICAgICAgICBpbnQgeTsKICAgICAgICAgfQotICAgICAgICB0aHJlYWQg
aW50XiBvcGVyYXRvciZbXSh0aHJlYWQgRm9vXiBmb28sIHVpbnQgaW5kZXgpCisgICAgICAgIHRo
cmVhZCBpbnQqIG9wZXJhdG9yJltdKHRocmVhZCBGb28qIGZvbywgdWludCBpbmRleCkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKGluZGV4ID09IDApCiAgICAgICAgICAgICAgICAgcmV0dXJu
ICZmb28tPng7CkBAIC0yNTU4LDcgKzI1NTgsNyBAQCB0ZXN0cy5vdmVycmlkZVN1YnNjcmlwdFN0
cnVjdEFuZFVzZVBvaW50CiAgICAgICAgICAgICBpbnQgeDsKICAgICAgICAgICAgIGludCB5Owog
ICAgICAgICB9Ci0gICAgICAgIHRocmVhZCBpbnReIG9wZXJhdG9yJltdKHRocmVhZCBGb29eIGZv
bywgdWludCBpbmRleCkKKyAgICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImW10odGhyZWFkIEZv
byogZm9vLCB1aW50IGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaW5kZXggPT0g
MCkKICAgICAgICAgICAgICAgICByZXR1cm4gJmZvby0+eDsKQEAgLTI1NjYsOSArMjU2Niw5IEBA
IHRlc3RzLm92ZXJyaWRlU3Vic2NyaXB0U3RydWN0QW5kVXNlUG9pbnQKICAgICAgICAgICAgICAg
ICByZXR1cm4gJmZvby0+eTsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9Ci0g
ICAgICAgIGludCBiYXIodGhyZWFkIEZvb14gZm9vKQorICAgICAgICBpbnQgYmFyKHRocmVhZCBG
b28qIGZvbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICheZm9vKVswXSArICheZm9v
KVsxXTsKKyAgICAgICAgICAgIHJldHVybiAoKmZvbylbMF0gKyAoKmZvbylbMV07CiAgICAgICAg
IH0KICAgICAgICAgaW50IGZvbygpCiAgICAgICAgIHsKQEAgLTI1ODksNyArMjU4OSw3IEBAIHRl
c3RzLm92ZXJyaWRlU3Vic2NyaXB0U3RydWN0QW5kVXNlUG9pbnQKICAgICAgICAgICAgICAgICBp
bnQgeDsKICAgICAgICAgICAgICAgICBpbnQgeTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHRocmVhZCBpbnReIG9wZXJhdG9yJltdKHRocmVhZCBGb29eIGZvbywgdWludCBpbmRleCkKKyAg
ICAgICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJltdKHRocmVhZCBGb28qIGZvbywgdWludCBp
bmRleCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gMCkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICZmb28tPng7CkBAIC0yNTk3LDcgKzI1OTcsNyBAQCB0
ZXN0cy5vdmVycmlkZVN1YnNjcmlwdFN0cnVjdEFuZFVzZVBvaW50CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAmZm9vLT55OwogICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaW50IGJhcih0aHJlYWQgRm9vXiBmb28pCisgICAgICAgICAg
ICBpbnQgYmFyKHRocmVhZCBGb28qIGZvbykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZm9vWzBdICsgZm9vWzFdOwogICAgICAgICAgICAgfQpAQCAtMjYzNSw3ICsyNjM1
LDcgQEAgdGVzdHMubWFrZUFycmF5UmVmRnJvbVBvaW50ZXIgPSBmdW5jdGlvbgogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gcmVmWzBdOwogICAgICAgICB9Ci0gICAgICAgIGludCBiYXoo
dGhyZWFkIGludF4gcHRyKQorICAgICAgICBpbnQgYmF6KHRocmVhZCBpbnQqIHB0cikKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGJhcihAcHRyKTsKICAgICAgICAgfQpAQCAtMjY5Nyw3
ICsyNjk3LDcgQEAgdGVzdHMubm9uQXJyYXlSZWZBcnJheUxlbmd0aEZhaWwgPSBmdW5jdAogewog
ICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHRocmVh
ZCB1aW50XiBsZW5ndGhQdHIoKQorICAgICAgICAgICAgdGhyZWFkIHVpbnQqIGxlbmd0aFB0cigp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaW50WzQyXSBhcnJheTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gJihhcnJheS5sZW5ndGgpOwpAQCAtMjcxMCw3ICsyNzEwLDcgQEAgdGVz
dHMuY29uc3RleHBySXNOb3RMVmFsdWVQdHIgPSBmdW5jdGlvbgogewogICAgIGNoZWNrRmFpbCgK
ICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHRocmVhZCBpbnReIGZvbzxpbnQg
eD4oKQorICAgICAgICAgICAgdGhyZWFkIGludCogZm9vPGludCB4PigpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuICZ4OwogICAgICAgICAgICAgfQpAQCAtMjg1Niw3ICsy
ODU2LDcgQEAgdGVzdHMuZ2VuZXJpY0FjY2Vzc29ycyA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAg
IHJlc3VsdC55ID0geTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KLSAg
ICAgICAgdm9pZCBzZXR1cCh0aHJlYWQgRm9vPGludD5eIGZvbykKKyAgICAgICAgdm9pZCBzZXR1
cCh0aHJlYWQgRm9vPGludD4qIGZvbykKICAgICAgICAgewogICAgICAgICAgICAgZm9vLT54ID0g
MTsKICAgICAgICAgICAgIGZvby0+eVswXSA9IDI7CkBAIC0zMTE4LDEyICszMTE4LDEyIEBAIHRl
c3RzLm5lc3RlZFN1YnNjcmlwdExWYWx1ZUVtdWxhdGlvblNpbXAKICAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gc3VtKGJheltpXSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9Ci0gICAgICAgIHZvaWQgc2V0VmFsdWVzKHRocmVhZCBCYXpeIGJheikKKyAgICAgICAgdm9p
ZCBzZXRWYWx1ZXModGhyZWFkIEJheiogYmF6KQogICAgICAgICB7CiAgICAgICAgICAgICBmb3Ig
KHVpbnQgaSA9IGJhei0+bGVuZ3RoOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1aW50
IGogPSAoXmJheilbaV0ubGVuZ3RoOyBqLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAo
dWludCBrID0gKF5iYXopW2ldW2pdLmxlbmd0aDsgay0tOykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICheYmF6KVtpXVtqXVtrXSA9IGludChpICsgaiArIGspOworICAgICAgICAgICAgICAgIGZv
ciAodWludCBqID0gKCpiYXopW2ldLmxlbmd0aDsgai0tOykgeworICAgICAgICAgICAgICAgICAg
ICBmb3IgKHVpbnQgayA9ICgqYmF6KVtpXVtqXS5sZW5ndGg7IGstLTspCisgICAgICAgICAgICAg
ICAgICAgICAgICAoKmJheilbaV1bal1ba10gPSBpbnQoaSArIGogKyBrKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMyMjksMTIgKzMyMjksMTIgQEAg
dGVzdHMubmVzdGVkU3Vic2NyaXB0TFZhbHVlRW11bGF0aW9uR2VuZQogICAgICAgICAgICAgb3Bl
cmF0b3IgTXlDb252ZXJ0aWJsZUZyb21VaW50KHVpbnQpOwogICAgICAgICB9CiAgICAgICAgIHBy
b3RvY29sIFNldFZhbHVhYmxlIDogTXlBZGRhYmxlLCBNeUNvbnZlcnRpYmxlRnJvbVVpbnQgeyB9
Ci0gICAgICAgIHZvaWQgc2V0VmFsdWVzPFQ6U2V0VmFsdWFibGU+KHRocmVhZCBCYXo8VD5eIGJh
eikKKyAgICAgICAgdm9pZCBzZXRWYWx1ZXM8VDpTZXRWYWx1YWJsZT4odGhyZWFkIEJhejxUPiog
YmF6KQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVpbnQgaSA9IGJhei0+bGVuZ3RoOyBp
LS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1aW50IGogPSAoXmJheilbaV0ubGVuZ3RoOyBq
LS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodWludCBrID0gKF5iYXopW2ldW2pdLmxl
bmd0aDsgay0tOykKLSAgICAgICAgICAgICAgICAgICAgICAgICheYmF6KVtpXVtqXVtrXSA9IFQo
aSArIGogKyBrKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVpbnQgaiA9ICgqYmF6KVtpXS5sZW5n
dGg7IGotLTspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1aW50IGsgPSAoKmJheilbaV1b
al0ubGVuZ3RoOyBrLS07KQorICAgICAgICAgICAgICAgICAgICAgICAgKCpiYXopW2ldW2pdW2td
ID0gVChpICsgaiArIGspOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMzg2OCw3ICszODY4LDcgQEAgdGVzdHMuc2hhZGVyVHlwZXMgPSBmdW5jdGlvbigp
CiAgICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKICAgICAgICAgICAgICAgICBmbG9hdDQgeDsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHZlcnRleCBGb28gYmFyKGRldmljZSBGb29eIHgpCisg
ICAgICAgICAgICB2ZXJ0ZXggRm9vIGJhcihkZXZpY2UgRm9vKiB4KQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsKICAgICAgICAgICAgIH0KQEAgLTM4ODEsNyAr
Mzg4MSw3IEBAIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgc3RydWN0IEZvbyB7CiAgICAgICAgICAgICAgICAgZmxvYXQ0IHg7Ci0gICAg
ICAgICAgICAgICAgZGV2aWNlIEJvb14geTsKKyAgICAgICAgICAgICAgICBkZXZpY2UgQm9vKiB5
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdmVydGV4IEZvbyBiYXIoKQogICAgICAgICAg
ICAgewpAQCAtMzg5NSw3ICszODk1LDcgQEAgdGVzdHMuc2hhZGVyVHlwZXMgPSBmdW5jdGlvbigp
CiAgICAgICAgICAgICAgICAgZmxvYXQ0IHg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBz
dHJ1Y3QgQm9vIHsKLSAgICAgICAgICAgICAgICBkZXZpY2UgRm9vXiB5OworICAgICAgICAgICAg
ICAgIGRldmljZSBGb28qIHk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB2ZXJ0ZXggRm9v
IGJhcihCb28gYikKICAgICAgICAgICAgIHsKQEAgLTM5MDgsNyArMzkwOCw3IEBAIHRlc3RzLnNo
YWRlclR5cGVzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgc3RydWN0IEZvbyB7CiAgICAgICAg
ICAgICAgICAgZmxvYXQ0IHg7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2ZXJ0ZXggRm9v
IGJhcihkZXZpY2UgRm9vXiB4KQorICAgICAgICAgICAgdmVydGV4IEZvbyBiYXIoZGV2aWNlIEZv
byogeCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CiAgICAg
ICAgICAgICB9CkBAIC0zOTMwLDcgKzM5MzAsNyBAQCB0ZXN0cy5zaGFkZXJUeXBlcyA9IGZ1bmN0
aW9uKCkKICAgICAgICAgICAgIHN0cnVjdCBGb28gewogICAgICAgICAgICAgICAgIGZsb2F0NCB4
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZnJhZ21lbnQgRm9vIGJhcihkZXZpY2UgRm9v
XiBzdGFnZUluKQorICAgICAgICAgICAgZnJhZ21lbnQgRm9vIGJhcihkZXZpY2UgRm9vKiBzdGFn
ZUluKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsKICAgICAg
ICAgICAgIH0KQEAgLTM5NDMsNyArMzk0Myw3IEBAIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rp
b24oKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3RydWN0IEZvbyB7CiAgICAgICAgICAg
ICAgICAgZmxvYXQ0IHg7Ci0gICAgICAgICAgICAgICAgZGV2aWNlIEJvb14geTsKKyAgICAgICAg
ICAgICAgICBkZXZpY2UgQm9vKiB5OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhZ21l
bnQgQm9vIGJhcihGb28gc3RhZ2VJbikKICAgICAgICAgICAgIHsKQEAgLTM5NTgsNyArMzk1OCw3
IEBAIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgc3RydWN0IEZvbyB7CiAgICAgICAgICAgICAgICAgZmxvYXQ0IHg7Ci0gICAgICAgICAg
ICAgICAgZGV2aWNlIEJvb14geTsKKyAgICAgICAgICAgICAgICBkZXZpY2UgQm9vKiB5OwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZnJhZ21lbnQgRm9vIGJhcihCb28gc3RhZ2VJbikKICAg
ICAgICAgICAgIHsKQEAgLTQ4MzYsNyArNDgzNiw3IEBAIHRlc3RzLmVudW1QdHJCYXNlID0gZnVu
Y3Rpb24oKQogewogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAg
ICAgICAgIGVudW0gRm9vIDogdGhyZWFkIGludF4geworICAgICAgICAgICAgZW51bSBGb28gOiB0
aHJlYWQgaW50KiB7CiAgICAgICAgICAgICAgICAgQmFyCiAgICAgICAgICAgICB9CiAgICAgICAg
IGApLApAQCAtNTEwMSwxMSArNTEwMSwxMSBAQCB0ZXN0cy5tdXR1YWxseVJlY3Vyc2l2ZVN0cnVj
dFdpdGhQb2ludGVyCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAogICAgICAgICBzdHJ1
Y3QgRm9vIHsKLSAgICAgICAgICAgIHRocmVhZCBCYXJeIGJhcjsKKyAgICAgICAgICAgIHRocmVh
ZCBCYXIqIGJhcjsKICAgICAgICAgICAgIGludCBmb287CiAgICAgICAgIH0KICAgICAgICAgc3Ry
dWN0IEJhciB7Ci0gICAgICAgICAgICB0aHJlYWQgRm9vXiBmb287CisgICAgICAgICAgICB0aHJl
YWQgRm9vKiBmb287CiAgICAgICAgICAgICBpbnQgYmFyOwogICAgICAgICB9CiAgICAgICAgIGlu
dCBmb28oKQpAQCAtNTEyNiwxMSArNTEyNiwxMSBAQCB0ZXN0cy5tdXR1YWxseVJlY3Vyc2l2ZVN0
cnVjdFdpdGhQb2ludGVyCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAogICAgICAgICBz
dHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgIHRocmVhZCBCYXJeIGJhcjsKKyAgICAgICAgICAgIHRo
cmVhZCBCYXIqIGJhcjsKICAgICAgICAgICAgIGludCBmb287CiAgICAgICAgIH0KICAgICAgICAg
c3RydWN0IEJhciB7Ci0gICAgICAgICAgICB0aHJlYWQgRm9vXiBmb287CisgICAgICAgICAgICB0
aHJlYWQgRm9vKiBmb287CiAgICAgICAgICAgICBpbnQgYmFyOwogICAgICAgICB9CiAgICAgICAg
IGludCBmb28oKQpAQCAtNTE1MSw3ICs1MTUxLDcgQEAgdGVzdHMubGlua2VkTGlzdCA9IGZ1bmN0
aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAgICAgIHN0cnVjdCBOb2Rl
IHsKLSAgICAgICAgICAgIHRocmVhZCBOb2RlXiBuZXh0OworICAgICAgICAgICAgdGhyZWFkIE5v
ZGUqIG5leHQ7CiAgICAgICAgICAgICBpbnQgdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgaW50
IGZvbygpCkBAIC01MTc0LDE2ICs1MTc0LDE2IEBAIHRlc3RzLnBvaW50ZXJUb1BvaW50ZXIgPSBm
dW5jdGlvbigpCiAgICAgICAgIGludCBmb28oKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQg
eDsKLSAgICAgICAgICAgIHRocmVhZCBpbnReIHAgPSAmeDsKLSAgICAgICAgICAgIHRocmVhZCBp
bnReXiBwcCA9ICZwOwotICAgICAgICAgICAgaW50XnRocmVhZF50aHJlYWQgcXEgPSBwcDsKKyAg
ICAgICAgICAgIHRocmVhZCBpbnQqIHAgPSAmeDsKKyAgICAgICAgICAgIHRocmVhZCBpbnQqKiBw
cCA9ICZwOworICAgICAgICAgICAgaW50KnRocmVhZCp0aHJlYWQgcXEgPSBwcDsKICAgICAgICAg
ICAgIGludCByZXN1bHQgPSAwOwogICAgICAgICAgICAgeCA9IDQyOwotICAgICAgICAgICAgXnAg
PSA3NjsKKyAgICAgICAgICAgICpwID0gNzY7CiAgICAgICAgICAgICByZXN1bHQgKz0geDsKLSAg
ICAgICAgICAgIF5ecHAgPSAzOTsKKyAgICAgICAgICAgICoqcHAgPSAzOTsKICAgICAgICAgICAg
IHJlc3VsdCArPSB4OwotICAgICAgICAgICAgXl5xcSA9IDgzOworICAgICAgICAgICAgKipxcSA9
IDgzOwogICAgICAgICAgICAgcmVzdWx0ICs9IHg7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICB9CkBAIC01MjE4LDcgKzUyMTgsNyBAQCB0ZXN0cy5wb2ludGVyR2V0dGVyID0g
ZnVuY3Rpb24oKQogewogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAg
ICAgICAgICAgIGludCBvcGVyYXRvci5mb28oZGV2aWNlIGludF4pCisgICAgICAgICAgICBpbnQg
b3BlcmF0b3IuZm9vKGRldmljZSBpbnQqKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IHJldHVybiA1NDM7CiAgICAgICAgICAgICB9CkBAIC01MjI2LDcgKzUyMjYsNyBAQCB0ZXN0cy5w
b2ludGVyR2V0dGVyID0gZnVuY3Rpb24oKQogICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlw
ZUVycm9yKTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAg
ICAgICBpbnQgb3BlcmF0b3IuZm9vKHRocmVhZCBpbnReKQorICAgICAgICAgICAgaW50IG9wZXJh
dG9yLmZvbyh0aHJlYWQgaW50KikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1
cm4gNTQzOwogICAgICAgICAgICAgfQpAQCAtNTIzNCw3ICs1MjM0LDcgQEAgdGVzdHMucG9pbnRl
ckdldHRlciA9IGZ1bmN0aW9uKCkKICAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJv
cik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAgICAg
aW50IG9wZXJhdG9yLmZvbyh0aHJlYWRncm91cCBpbnReKQorICAgICAgICAgICAgaW50IG9wZXJh
dG9yLmZvbyh0aHJlYWRncm91cCBpbnQqKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IHJldHVybiA1NDM7CiAgICAgICAgICAgICB9CkBAIC01MjQyLDcgKzUyNDIsNyBAQCB0ZXN0cy5w
b2ludGVyR2V0dGVyID0gZnVuY3Rpb24oKQogICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlw
ZUVycm9yKTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAg
ICAgICBpbnQgb3BlcmF0b3IuZm9vKGNvbnN0YW50IGludF4pCisgICAgICAgICAgICBpbnQgb3Bl
cmF0b3IuZm9vKGNvbnN0YW50IGludCopCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIDU0MzsKICAgICAgICAgICAgIH0KQEAgLTUzNTcsMTEgKzUzNTcsMTEgQEAgdGVzdHMu
b3BlcmF0b3JDYXN0V2l0aFR5cGVWYXJpYWJsZUluZmVycgogICAgICAgICAgICAgaW50IHg7CiAg
ICAgICAgIH0KICAgICAgICAgcHJvdG9jb2wgQmFyYWJsZSB7Ci0gICAgICAgICAgICB2b2lkIGJh
cih0aHJlYWQgQmFyYWJsZV4sIGludCk7CisgICAgICAgICAgICB2b2lkIGJhcih0aHJlYWQgQmFy
YWJsZSosIGludCk7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCBiYXIodGhyZWFkIGRvdWJsZV4g
cmVzdWx0LCBpbnQgdmFsdWUpCisgICAgICAgIHZvaWQgYmFyKHRocmVhZCBkb3VibGUqIHJlc3Vs
dCwgaW50IHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBecmVzdWx0ID0gZG91YmxlKHZh
bHVlKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkb3VibGUodmFsdWUpOwogICAgICAgICB9CiAg
ICAgICAgIG9wZXJhdG9yPFQ6QmFyYWJsZT4gVChGb28gZm9vKQogICAgICAgICB7CkBAIC01ODEx
LDcgKzU4MTEsNyBAQCB0ZXN0cy5sb25lU2V0dGVyUG9pbnRlciA9IGZ1bmN0aW9uKCkKIHsKICAg
ICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICB0aHJlYWQg
aW50XiBvcGVyYXRvci5mb289KHRocmVhZCBpbnReIHB0ciwgaW50KQorICAgICAgICAgICAgdGhy
ZWFkIGludCogb3BlcmF0b3IuZm9vPSh0aHJlYWQgaW50KiBwdHIsIGludCkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gcHRyOwogICAgICAgICAgICAgfQpAQCAtNTg1OCw3
ICs1ODU4LDcgQEAgdGVzdHMuYW5kZXJXaXRoTm90aGluZ1dyb25nID0gZnVuY3Rpb24oKQogICAg
ICAgICBzdHJ1Y3QgRm9vIHsKICAgICAgICAgICAgIGludCB4OwogICAgICAgICB9Ci0gICAgICAg
IHRocmVhZCBpbnReIG9wZXJhdG9yJi5mb28odGhyZWFkIEZvb14gZm9vKQorICAgICAgICB0aHJl
YWQgaW50KiBvcGVyYXRvciYuZm9vKHRocmVhZCBGb28qIGZvbykKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuICZmb28tPng7CiAgICAgICAgIH0KQEAgLTU4NzYsNyArNTg3Niw3IEBAIHRl
c3RzLmFuZGVyV2l0aFdyb25nTnVtYmVyT2ZBcmd1bWVudHMgPSAKIHsKICAgICBjaGVja0ZhaWwo
CiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICB0aHJlYWQgaW50XiBvcGVyYXRv
ciYuZm9vKCkKKyAgICAgICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJi5mb28oKQogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICAgICAgIHJldHVybiAm
eDsKQEAgLTU4ODgsNyArNTg4OCw3IEBAIHRlc3RzLmFuZGVyV2l0aFdyb25nTnVtYmVyT2ZBcmd1
bWVudHMgPSAKICAgICAgICAgICAgIHN0cnVjdCBGb28gewogICAgICAgICAgICAgICAgIGludCB4
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyZWFkIGludF4gb3BlcmF0b3ImLmZvbyh0
aHJlYWQgRm9vXiBmb28sIGludCBibGFoKQorICAgICAgICAgICAgdGhyZWFkIGludCogb3BlcmF0
b3ImLmZvbyh0aHJlYWQgRm9vKiBmb28sIGludCBibGFoKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIHJldHVybiAmZm9vLT54OwogICAgICAgICAgICAgfQpAQCAtNTkwMyw3ICs1OTAz
LDcgQEAgdGVzdHMuYW5kZXJEb2VzbnRSZXR1cm5Qb2ludGVyID0gZnVuY3RpbwogICAgICAgICAg
ICAgc3RydWN0IEZvbyB7CiAgICAgICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpbnQgb3BlcmF0b3ImLmZvbyh0aHJlYWQgRm9vXiBmb28pCisgICAgICAgICAg
ICBpbnQgb3BlcmF0b3ImLmZvbyh0aHJlYWQgRm9vKiBmb28pCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZvby0+eDsKICAgICAgICAgICAgIH0KQEAgLTU5MTgsNyArNTkx
OCw3IEBAIHRlc3RzLmFuZGVyRG9lc250VGFrZVJlZmVyZW5jZSA9IGZ1bmN0aW8KICAgICAgICAg
ICAgIHN0cnVjdCBGb28gewogICAgICAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdGhyZWFkIGludF4gb3BlcmF0b3ImLmZvbyhGb28gZm9vKQorICAgICAgICAg
ICAgdGhyZWFkIGludCogb3BlcmF0b3ImLmZvbyhGb28gZm9vKQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIHJldHVybiAmZm9vLng7CiAgICAgICAgICAgICB9CkBAIC01OTMyLDcgKzU5
MzIsNyBAQCB0ZXN0cy5hbmRlcldpdGhBcnJheVJlZiA9IGZ1bmN0aW9uKCkKICAgICAgICAgc3Ry
dWN0IEZvbyB7CiAgICAgICAgICAgICBpbnQgeDsKICAgICAgICAgfQotICAgICAgICB0aHJlYWQg
aW50XiBvcGVyYXRvciYuZm9vKHRocmVhZCBGb29bXSBmb28pCisgICAgICAgIHRocmVhZCBpbnQq
IG9wZXJhdG9yJi5mb28odGhyZWFkIEZvb1tdIGZvbykKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuICZmb29bMF0ueDsKICAgICAgICAgfQpAQCAtNTk1MCw3ICs1OTUwLDcgQEAgdGVzdHMu
cG9pbnRlckluZGV4R2V0dGVyID0gZnVuY3Rpb24oKQogewogICAgIGNoZWNrRmFpbCgKICAgICAg
ICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcltdKGRldmljZSBpbnRe
LCB1aW50KQorICAgICAgICAgICAgaW50IG9wZXJhdG9yW10oZGV2aWNlIGludCosIHVpbnQpCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDU0MzsKICAgICAgICAgICAgIH0K
QEAgLTU5NTgsNyArNTk1OCw3IEBAIHRlc3RzLnBvaW50ZXJJbmRleEdldHRlciA9IGZ1bmN0aW9u
KCkKICAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWls
KAogICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yW10odGhy
ZWFkIGludF4sIHVpbnQpCisgICAgICAgICAgICBpbnQgb3BlcmF0b3JbXSh0aHJlYWQgaW50Kiwg
dWludCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gNTQzOwogICAgICAg
ICAgICAgfQpAQCAtNTk2Niw3ICs1OTY2LDcgQEAgdGVzdHMucG9pbnRlckluZGV4R2V0dGVyID0g
ZnVuY3Rpb24oKQogICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKICAgICBj
aGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICBpbnQgb3BlcmF0
b3JbXSh0aHJlYWRncm91cCBpbnReLCB1aW50KQorICAgICAgICAgICAgaW50IG9wZXJhdG9yW10o
dGhyZWFkZ3JvdXAgaW50KiwgdWludCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gNTQzOwogICAgICAgICAgICAgfQpAQCAtNTk3NCw3ICs1OTc0LDcgQEAgdGVzdHMucG9p
bnRlckluZGV4R2V0dGVyID0gZnVuY3Rpb24oKQogICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBX
VHlwZUVycm9yKTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAg
ICAgICAgICBpbnQgb3BlcmF0b3JbXShjb25zdGFudCBpbnReLCB1aW50KQorICAgICAgICAgICAg
aW50IG9wZXJhdG9yW10oY29uc3RhbnQgaW50KiwgdWludCkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICByZXR1cm4gNTQzOwogICAgICAgICAgICAgfQpAQCAtNjA3MSw3ICs2MDcxLDcg
QEAgdGVzdHMubG9uZUluZGV4U2V0dGVyUG9pbnRlciA9IGZ1bmN0aW9uKAogewogICAgIGNoZWNr
RmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHRocmVhZCBpbnReIG9w
ZXJhdG9yW109KHRocmVhZCBpbnReIHB0ciwgdWludCwgaW50KQorICAgICAgICAgICAgdGhyZWFk
IGludCogb3BlcmF0b3JbXT0odGhyZWFkIGludCogcHRyLCB1aW50LCBpbnQpCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHB0cjsKICAgICAgICAgICAgIH0KQEAgLTYxMTgs
NyArNjExOCw3IEBAIHRlc3RzLmluZGV4QW5kZXJXaXRoTm90aGluZ1dyb25nID0gZnVuY3QKICAg
ICAgICAgc3RydWN0IEZvbyB7CiAgICAgICAgICAgICBpbnQgeDsKICAgICAgICAgfQotICAgICAg
ICB0aHJlYWQgaW50XiBvcGVyYXRvciZbXSh0aHJlYWQgRm9vXiBmb28sIHVpbnQpCisgICAgICAg
IHRocmVhZCBpbnQqIG9wZXJhdG9yJltdKHRocmVhZCBGb28qIGZvbywgdWludCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuICZmb28tPng7CiAgICAgICAgIH0KQEAgLTYxMzYsNyArNjEz
Niw3IEBAIHRlc3RzLmluZGV4QW5kZXJXaXRoV3JvbmdOdW1iZXJPZkFyZ3VtZW4KIHsKICAgICBj
aGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICB0aHJlYWQgaW50
XiBvcGVyYXRvciZbXSgpCisgICAgICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXSgpCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgICAgICAgcmV0
dXJuICZ4OwpAQCAtNjE0OCw3ICs2MTQ4LDcgQEAgdGVzdHMuaW5kZXhBbmRlcldpdGhXcm9uZ051
bWJlck9mQXJndW1lbgogICAgICAgICAgICAgc3RydWN0IEZvbyB7CiAgICAgICAgICAgICAgICAg
aW50IHg7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aHJlYWQgaW50XiBvcGVyYXRvciZb
XSh0aHJlYWQgRm9vXiBmb28pCisgICAgICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXSh0
aHJlYWQgRm9vKiBmb28pCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuICZm
b28tPng7CiAgICAgICAgICAgICB9CkBAIC02MTU5LDcgKzYxNTksNyBAQCB0ZXN0cy5pbmRleEFu
ZGVyV2l0aFdyb25nTnVtYmVyT2ZBcmd1bWVuCiAgICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKICAg
ICAgICAgICAgICAgICBpbnQgeDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRocmVhZCBp
bnReIG9wZXJhdG9yJltdKHRocmVhZCBGb29eIGZvbywgdWludCwgdWludCkKKyAgICAgICAgICAg
IHRocmVhZCBpbnQqIG9wZXJhdG9yJltdKHRocmVhZCBGb28qIGZvbywgdWludCwgdWludCkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gJmZvby0+eDsKICAgICAgICAgICAg
IH0KQEAgLTYxNzQsNyArNjE3NCw3IEBAIHRlc3RzLmluZGV4QW5kZXJEb2VzbnRSZXR1cm5Qb2lu
dGVyID0gZnUKICAgICAgICAgICAgIHN0cnVjdCBGb28gewogICAgICAgICAgICAgICAgIGludCB4
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaW50IG9wZXJhdG9yJltdKHRocmVhZCBGb29e
IGZvbywgdWludCkKKyAgICAgICAgICAgIGludCBvcGVyYXRvciZbXSh0aHJlYWQgRm9vKiBmb28s
IHVpbnQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZvby0+eDsKICAg
ICAgICAgICAgIH0KQEAgLTYxODksNyArNjE4OSw3IEBAIHRlc3RzLmluZGV4QW5kZXJEb2VzbnRU
YWtlUmVmZXJlbmNlID0gZnUKICAgICAgICAgICAgIHN0cnVjdCBGb28gewogICAgICAgICAgICAg
ICAgIGludCB4OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyZWFkIGludF4gb3BlcmF0
b3ImW10oRm9vIGZvbywgdWludCkKKyAgICAgICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJltd
KEZvbyBmb28sIHVpbnQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuICZm
b28ueDsKICAgICAgICAgICAgIH0KQEAgLTYyMDMsNyArNjIwMyw3IEBAIHRlc3RzLmluZGV4QW5k
ZXJXaXRoQXJyYXlSZWYgPSBmdW5jdGlvbigKICAgICAgICAgc3RydWN0IEZvbyB7CiAgICAgICAg
ICAgICBpbnQgeDsKICAgICAgICAgfQotICAgICAgICB0aHJlYWQgaW50XiBvcGVyYXRvciZbXSh0
aHJlYWQgRm9vW10gYXJyYXksIGRvdWJsZSBpbmRleCkKKyAgICAgICAgdGhyZWFkIGludCogb3Bl
cmF0b3ImW10odGhyZWFkIEZvb1tdIGFycmF5LCBkb3VibGUgaW5kZXgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiAmYXJyYXlbdWludChpbmRleCArIDEpXS54OwogICAgICAgICB9CkBA
IC02MjIzLDEwICs2MjIzLDEwIEBAIHRlc3RzLmRldmljZVB0clB0ciA9IGZ1bmN0aW9uKCkKICAg
ICAgICAgKCkgPT4gZG9QcmVwKGAKICAgICAgICAgICAgIHZvaWQgZm9vKCkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBkZXZpY2UgaW50Xl4gcDsKKyAgICAgICAgICAgICAgICBkZXZp
Y2UgaW50KiogcDsKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCi0gICAgICAgIGUgPT4gZSBp
bnN0YW5jZW9mIFdUeXBlRXJyb3IgJiYgZS5tZXNzYWdlLmluZGV4T2YoIklsbGVnYWwgcG9pbnRl
ciB0byBub24tcHJpbWl0aXZlIHR5cGU6IGludDMyXiBkZXZpY2VeIGRldmljZSIpICE9IC0xKTsK
KyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvciAmJiBlLm1lc3NhZ2UuaW5kZXhP
ZigiSWxsZWdhbCBwb2ludGVyIHRvIG5vbi1wcmltaXRpdmUgdHlwZTogaW50MzIqIGRldmljZSog
ZGV2aWNlIikgIT0gLTEpOwogfQogCiB0ZXN0cy50aHJlYWRncm91cFB0clB0ciA9IGZ1bmN0aW9u
KCkKQEAgLTYyMzUsMTAgKzYyMzUsMTAgQEAgdGVzdHMudGhyZWFkZ3JvdXBQdHJQdHIgPSBmdW5j
dGlvbigpCiAgICAgICAgICgpID0+IGRvUHJlcChgCiAgICAgICAgICAgICB2b2lkIGZvbygpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhyZWFkZ3JvdXAgaW50Xl4gcDsKKyAgICAg
ICAgICAgICAgICB0aHJlYWRncm91cCBpbnQqKiBwOwogICAgICAgICAgICAgfQogICAgICAgICBg
KSwKLSAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvciAmJiBlLm1lc3NhZ2UuaW5k
ZXhPZigiSWxsZWdhbCBwb2ludGVyIHRvIG5vbi1wcmltaXRpdmUgdHlwZTogaW50MzJeIHRocmVh
ZGdyb3VwXiB0aHJlYWRncm91cCIpICE9IC0xKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2Yg
V1R5cGVFcnJvciAmJiBlLm1lc3NhZ2UuaW5kZXhPZigiSWxsZWdhbCBwb2ludGVyIHRvIG5vbi1w
cmltaXRpdmUgdHlwZTogaW50MzIqIHRocmVhZGdyb3VwKiB0aHJlYWRncm91cCIpICE9IC0xKTsK
IH0KIAogdGVzdHMuY29uc3RhbnRQdHJQdHIgPSBmdW5jdGlvbigpCkBAIC02MjQ3LDEwICs2MjQ3
LDEwIEBAIHRlc3RzLmNvbnN0YW50UHRyUHRyID0gZnVuY3Rpb24oKQogICAgICAgICAoKSA9PiBk
b1ByZXAoYAogICAgICAgICAgICAgdm9pZCBmb28oKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbnN0YW50IGludF5eIHA7CisgICAgICAgICAgICAgICAgY29uc3RhbnQgaW50Kiog
cDsKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCi0gICAgICAgIGUgPT4gZSBpbnN0YW5jZW9m
IFdUeXBlRXJyb3IgJiYgZS5tZXNzYWdlLmluZGV4T2YoIklsbGVnYWwgcG9pbnRlciB0byBub24t
cHJpbWl0aXZlIHR5cGU6IGludDMyXiBjb25zdGFudF4gY29uc3RhbnQiKSAhPSAtMSk7CisgICAg
ICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IgJiYgZS5tZXNzYWdlLmluZGV4T2YoIkls
bGVnYWwgcG9pbnRlciB0byBub24tcHJpbWl0aXZlIHR5cGU6IGludDMyKiBjb25zdGFudCogY29u
c3RhbnQiKSAhPSAtMSk7CiB9CiAKIHRlc3RzLnBvaW50ZXJJbmRleEdldHRlckluUHJvdG9jb2wg
PSBmdW5jdGlvbigpCkBAIC02MjU5LDcgKzYyNTksNyBAQCB0ZXN0cy5wb2ludGVySW5kZXhHZXR0
ZXJJblByb3RvY29sID0gZnVuCiAgICAgICAgIGNoZWNrRmFpbCgKICAgICAgICAgICAgICgpID0+
IGRvUHJlcChgCiAgICAgICAgICAgICAgICAgcHJvdG9jb2wgRm9vIHsKLSAgICAgICAgICAgICAg
ICAgICAgaW50IG9wZXJhdG9yW10oJHthZGRyZXNzU3BhY2V9IEZvb14sIHVpbnQpOworICAgICAg
ICAgICAgICAgICAgICBpbnQgb3BlcmF0b3JbXSgke2FkZHJlc3NTcGFjZX0gRm9vKiwgdWludCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHN0cnVjdCBCYXIgeyB9CiAgICAg
ICAgICAgICAgICAgaW50IG9wZXJhdG9yW10oQmFyLCB1aW50KSB7IHJldHVybiA0MjsgfQpAQCAt
NjM5MCw3ICs2MzkwLDcgQEAgdGVzdHMubG9uZUluZGV4U2V0dGVyUG9pbnRlckluUHJvdG9jb2wg
PQogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKICAgICAgICAgICAgIHBy
b3RvY29sIEZvbyB7Ci0gICAgICAgICAgICAgICAgdGhyZWFkIGludF4gb3BlcmF0b3JbXT0odGhy
ZWFkIEZvb14gcHRyLCB1aW50LCBpbnQpOworICAgICAgICAgICAgICAgIHRocmVhZCBpbnQqIG9w
ZXJhdG9yW109KHRocmVhZCBGb28qIHB0ciwgdWludCwgaW50KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHN0cnVjdCBCYXIgeyB9CiAgICAgICAgICAgICBpbnQgb3BlcmF0b3JbXShCYXIs
IHVpbnQpIHsgcmV0dXJuIDQyOyB9CkBAIC02NDMxLDE0ICs2NDMxLDE0IEBAIHRlc3RzLmluZGV4
QW5kZXJXaXRoTm90aGluZ1dyb25nSW5Qcm90b2MKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJl
cChgCiAgICAgICAgIHByb3RvY29sIEZvbyB7Ci0gICAgICAgICAgICB0aHJlYWQgaW50XiBvcGVy
YXRvciZbXSh0aHJlYWQgRm9vXiBmb28sIHVpbnQpOworICAgICAgICAgICAgdGhyZWFkIGludCog
b3BlcmF0b3ImW10odGhyZWFkIEZvbyogZm9vLCB1aW50KTsKICAgICAgICAgfQogICAgICAgICBp
bnQgYmFyPFQ6Rm9vPihUIHgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB4WzQyXTsK
ICAgICAgICAgfQogICAgICAgICBzdHJ1Y3QgQmFyIHsgfQotICAgICAgICB0aHJlYWQgaW50XiBv
cGVyYXRvciZbXSh0aHJlYWQgQmFyXiwgdWludCkKKyAgICAgICAgdGhyZWFkIGludCogb3BlcmF0
b3ImW10odGhyZWFkIEJhciosIHVpbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGludCByZXN1
bHQgPSAxMjM0OwogICAgICAgICAgICAgcmV0dXJuICZyZXN1bHQ7CkBAIC02NDU2LDEwICs2NDU2
LDEwIEBAIHRlc3RzLmluZGV4QW5kZXJXaXRoV3JvbmdOdW1iZXJPZkFyZ3VtZW4KICAgICBjaGVj
a0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCiAgICAgICAgICAgICBwcm90b2NvbCBGb28g
ewotICAgICAgICAgICAgICAgIHRocmVhZCBpbnReIG9wZXJhdG9yJltdKCk7CisgICAgICAgICAg
ICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImW10oKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHN0cnVjdCBCYXIgeyB9Ci0gICAgICAgICAgICB0aHJlYWQgaW50XiBvcGVyYXRvciZbXSh0
aHJlYWQgQmFyXiwgdWludCkKKyAgICAgICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJltdKHRo
cmVhZCBCYXIqLCB1aW50KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGludCByZXN1
bHQgPSAxMjM0OwogICAgICAgICAgICAgICAgIHJldHVybiAmcmVzdWx0OwpAQCAtNjQ2OSwxMCAr
NjQ2OSwxMCBAQCB0ZXN0cy5pbmRleEFuZGVyV2l0aFdyb25nTnVtYmVyT2ZBcmd1bWVuCiAgICAg
Y2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAogICAgICAgICAgICAgcHJvdG9jb2wg
Rm9vIHsKLSAgICAgICAgICAgICAgICB0aHJlYWQgaW50XiBvcGVyYXRvciZbXSh0aHJlYWQgRm9v
XiBmb28pOworICAgICAgICAgICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJltdKHRocmVhZCBG
b28qIGZvbyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdHJ1Y3QgQmFyIHsgfQotICAg
ICAgICAgICAgdGhyZWFkIGludF4gb3BlcmF0b3ImW10odGhyZWFkIEJhcl4sIHVpbnQpCisgICAg
ICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXSh0aHJlYWQgQmFyKiwgdWludCkKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gMTIzNDsKICAgICAgICAgICAg
ICAgICByZXR1cm4gJnJlc3VsdDsKQEAgLTY0ODIsMTAgKzY0ODIsMTAgQEAgdGVzdHMuaW5kZXhB
bmRlcldpdGhXcm9uZ051bWJlck9mQXJndW1lbgogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkg
PT4gZG9QcmVwKGAKICAgICAgICAgICAgIHByb3RvY29sIEZvbyB7Ci0gICAgICAgICAgICAgICAg
dGhyZWFkIGludF4gb3BlcmF0b3ImW10odGhyZWFkIEZvb14gZm9vLCB1aW50LCB1aW50KTsKKyAg
ICAgICAgICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXSh0aHJlYWQgRm9vKiBmb28sIHVp
bnQsIHVpbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3RydWN0IEJhciB7IH0KLSAg
ICAgICAgICAgIHRocmVhZCBpbnReIG9wZXJhdG9yJltdKHRocmVhZCBCYXJeLCB1aW50KQorICAg
ICAgICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImW10odGhyZWFkIEJhciosIHVpbnQpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IDEyMzQ7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuICZyZXN1bHQ7CkBAIC02NDk5LDEwICs2NDk5LDEwIEBAIHRlc3RzLmluZGV4
QW5kZXJEb2VzbnRSZXR1cm5Qb2ludGVySW5Qcm8KICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgp
ID0+IGRvUHJlcChgCiAgICAgICAgICAgICBwcm90b2NvbCBGb28gewotICAgICAgICAgICAgICAg
IGludCBvcGVyYXRvciZbXSh0aHJlYWQgRm9vXiBmb28sIHVpbnQpOworICAgICAgICAgICAgICAg
IGludCBvcGVyYXRvciZbXSh0aHJlYWQgRm9vKiBmb28sIHVpbnQpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgc3RydWN0IEJhciB7IH0KLSAgICAgICAgICAgIHRocmVhZCBpbnReIG9wZXJh
dG9yJltdKHRocmVhZCBCYXJeLCB1aW50KQorICAgICAgICAgICAgdGhyZWFkIGludCogb3BlcmF0
b3ImW10odGhyZWFkIEJhciosIHVpbnQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
aW50IHJlc3VsdCA9IDEyMzQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuICZyZXN1bHQ7CkBAIC02
NTE2LDEwICs2NTE2LDEwIEBAIHRlc3RzLmluZGV4QW5kZXJEb2VzbnRUYWtlUmVmZXJlbmNlSW5Q
cm8KICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCiAgICAgICAgICAgICBw
cm90b2NvbCBGb28gewotICAgICAgICAgICAgICAgIHRocmVhZCBpbnReIG9wZXJhdG9yJltdKEZv
byBmb28sIHVpbnQpOworICAgICAgICAgICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJltdKEZv
byBmb28sIHVpbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3RydWN0IEJhciB7IH0K
LSAgICAgICAgICAgIHRocmVhZCBpbnReIG9wZXJhdG9yJltdKHRocmVhZCBCYXJeLCB1aW50KQor
ICAgICAgICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImW10odGhyZWFkIEJhciosIHVpbnQpCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IDEyMzQ7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuICZyZXN1bHQ7CkBAIC02NTMyLDE0ICs2NTMyLDE0IEBAIHRlc3RzLmlu
ZGV4QW5kZXJXaXRoQXJyYXlSZWZJblByb3RvY29sID0KIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRv
UHJlcChgCiAgICAgICAgIHByb3RvY29sIEZvbyB7Ci0gICAgICAgICAgICB0aHJlYWQgaW50XiBv
cGVyYXRvciZbXSh0aHJlYWQgRm9vW10gYXJyYXksIGRvdWJsZSBpbmRleCk7CisgICAgICAgICAg
ICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXSh0aHJlYWQgRm9vW10gYXJyYXksIGRvdWJsZSBpbmRl
eCk7CiAgICAgICAgIH0KICAgICAgICAgaW50IGJhcjxUOkZvbz4odGhyZWFkIFRbXSB4KQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4geFsxLjVdOwogICAgICAgICB9CiAgICAgICAgIHN0
cnVjdCBCYXIgeyB9Ci0gICAgICAgIHRocmVhZCBpbnReIG9wZXJhdG9yJltdKHRocmVhZCBCYXJb
XSwgZG91YmxlKQorICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXSh0aHJlYWQgQmFyW10s
IGRvdWJsZSkKICAgICAgICAgewogICAgICAgICAgICAgaW50IHJlc3VsdCA9IDEyMzQ7CiAgICAg
ICAgICAgICByZXR1cm4gJnJlc3VsdDsKQEAgLTY1NjQsOCArNjU2NCw4IEBAIHRlc3RzLmFuZFJl
dHVybmVkQXJyYXlSZWYgPSBmdW5jdGlvbigpCiAgICAgICAgIH0KICAgICAgICAgaW50IGZvbygp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHRocmVhZCBpbnReIHB0ciA9ICZnZXRBcnJheSgpWzVd
OwotICAgICAgICAgICAgcmV0dXJuIF5wdHI7CisgICAgICAgICAgICB0aHJlYWQgaW50KiBwdHIg
PSAmZ2V0QXJyYXkoKVs1XTsKKyAgICAgICAgICAgIHJldHVybiAqcHRyOwogICAgICAgICB9CiAg
ICAgYCk7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSwgW10pLCAzNTQpOwo=
</data>
<flag name="review"
          id="342325"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>