<?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>100210</bug_id>
          
          <creation_ts>2012-10-24 00:52:36 -0700</creation_ts>
          <short_desc>[BlackBerry] Support pixel tests for BlackBerry DRT</short_desc>
          <delta_ts>2022-03-01 03:01:42 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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>0</everconfirmed>
          <reporter name="Xiaobo Wang">xiaobwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>mifenton</cc>
    
    <cc>mxie</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>749442</commentid>
    <comment_count>0</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-10-24 00:52:36 -0700</bug_when>
    <thetext>Our DRTs do not support &quot;pixel tests&quot; (i.e. pixel-by-pixel comparison).
However, they should.

RIM PR #142681</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750646</commentid>
    <comment_count>1</comment_count>
      <attachid>170605</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-10-25 04:02:48 -0700</bug_when>
    <thetext>Created attachment 170605
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750837</commentid>
    <comment_count>2</comment_count>
      <attachid>170605</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-10-25 07:59:35 -0700</bug_when>
    <thetext>Comment on attachment 170605
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=170605&amp;action=review

Looks good, please fix before landing.

&gt; Source/WebKit/ChangeLog:8
&gt; +        Adds a step to build ImageDiff from Qt for DRT.

In general you probably want to credit Chris Wells, he did most of this patch AFAIK.

&gt; Tools/DumpRenderTree/blackberry/PNGImageEncoder.cpp:27
&gt; +#endif

Is this block really needed now that you got rid of Skia below?

&gt; Tools/DumpRenderTree/blackberry/build:4
&gt; +# the ~/dev/webplatform/tools/binding_generator folder.

These two lines are not relevant, please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751508</commentid>
    <comment_count>3</comment_count>
      <attachid>170605</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-10-25 21:08:48 -0700</bug_when>
    <thetext>Comment on attachment 170605
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=170605&amp;action=review

&gt;&gt; Source/WebKit/ChangeLog:8
&gt;&gt; +        Adds a step to build ImageDiff from Qt for DRT.
&gt; 
&gt; In general you probably want to credit Chris Wells, he did most of this patch AFAIK.

OK.

&gt;&gt; Tools/DumpRenderTree/blackberry/PNGImageEncoder.cpp:27
&gt;&gt; +#endif
&gt; 
&gt; Is this block really needed now that you got rid of Skia below?

I copied the PNGImageEncoder.cpp/h files from master_40 and added them to the patch. But yes, they can be removed.

&gt;&gt; Tools/DumpRenderTree/blackberry/build:4
&gt;&gt; +# the ~/dev/webplatform/tools/binding_generator folder.
&gt; 
&gt; These two lines are not relevant, please remove.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751542</commentid>
    <comment_count>4</comment_count>
      <attachid>170811</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-10-25 22:13:58 -0700</bug_when>
    <thetext>Created attachment 170811
patch - updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751548</commentid>
    <comment_count>5</comment_count>
      <attachid>170814</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-10-25 22:26:38 -0700</bug_when>
    <thetext>Created attachment 170814
patch - updated

Reviewed by Rob Buis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751591</commentid>
    <comment_count>6</comment_count>
      <attachid>170814</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-10-25 23:25:13 -0700</bug_when>
    <thetext>Comment on attachment 170814
patch - updated

commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751668</commentid>
    <comment_count>7</comment_count>
      <attachid>170814</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 01:11:52 -0700</bug_when>
    <thetext>Comment on attachment 170814
patch - updated

Clearing flags on attachment: 170814

Committed r132582: &lt;http://trac.webkit.org/changeset/132582&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751763</commentid>
    <comment_count>8</comment_count>
      <attachid>170864</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-10-26 03:09:30 -0700</bug_when>
    <thetext>Created attachment 170864
patch - updated 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751766</commentid>
    <comment_count>9</comment_count>
      <attachid>170864</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-10-26 03:16:44 -0700</bug_when>
    <thetext>Comment on attachment 170864
patch - updated 2

Please make a full patch with right commit log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751778</commentid>
    <comment_count>10</comment_count>
      <attachid>170868</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-10-26 03:23:39 -0700</bug_when>
    <thetext>Created attachment 170868
patch

Adding 2 missed files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751804</commentid>
    <comment_count>11</comment_count>
      <attachid>170868</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-10-26 03:43:08 -0700</bug_when>
    <thetext>Comment on attachment 170868
patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751830</commentid>
    <comment_count>12</comment_count>
      <attachid>170868</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 04:08:12 -0700</bug_when>
    <thetext>Comment on attachment 170868
patch

Clearing flags on attachment: 170868

Committed r132610: &lt;http://trac.webkit.org/changeset/132610&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800302</commentid>
    <comment_count>13</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-01-04 09:53:35 -0800</bug_when>
    <thetext>This was landed with two revisions, closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170605</attachid>
            <date>2012-10-25 04:02:48 -0700</date>
            <delta_ts>2022-03-01 03:01:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-BlackBerry-Support-pixel-tests-for-BlackBerry-DRT.patch</filename>
            <type>text/plain</type>
            <size>23313</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSBlYmYzMTkzYjY5OWE5MTI3ZDI2ZTUxMmE0MzdmMmQ4MGFhYzRmZTdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogVGh1LCAyNSBPY3QgMjAxMiAxODo1NjoyMyArMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFtCbGFja0JlcnJ5XSBTdXBwb3J0IHBpeGVsIHRlc3RzIGZvciBCbGFja0JlcnJ5IERSVAogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDIxMAoKUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgpTb3VyY2UvV2ViS2l0OgoKQWRkcyBhIHN0ZXAgdG8gYnVpbGQgSW1h
Z2VEaWZmIGZyb20gUXQgZm9yIERSVC4KCiogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgoKVG9v
bHM6CgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwOgooQmxh
Y2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUpOgooQmxhY2tC
ZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cnVuVGVzdCk6CihCbGFja0JlcnJ5OjpXZWJL
aXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5DdXJyZW50VGVzdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6
OkR1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CihC
bGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5UZXN0cyk6CihCbGFja0JlcnJ5
OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpkdW1wKToKKiBEdW1wUmVuZGVyVHJlZS9ibGFja2Jl
cnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oOgooRHVtcFJlbmRlclRyZWUpOgoqIER1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmNwcDoKKEJHUkF0b1JHQkEpOgoo
ZW5jb2RlQml0bWFwVG9QTkcpOgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VF
bmNvZGVyLmg6CiogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0Qmxh
Y2tCZXJyeS5jcHA6CihjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcpOgooY29tcHV0ZU1E
NUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KToKKHByaW50UE5HKToKKGR1bXBCaXRtYXApOgoq
IER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnkuaDoK
KEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdEYXRhKToKKEJpdG1hcENvbnRleHQ6On5C
aXRtYXBDb250ZXh0KToKKEJpdG1hcENvbnRleHQpOgooQml0bWFwQ29udGV4dDo6Qml0bWFwQ29u
dGV4dCk6CgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvYnVpbGQ6IEFkZGVkLgoqIER1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvc3JjLnBybzogQWRkZWQuCkFkZHMgMiBmaWxlcyBmb3IgYnVp
bGRpbmcgSW1hZ2VEaWZmLgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMSArKysKIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0Jl
cnJ5LmNtYWtlICAgICAgICAgICAgIHwgICAxMiArKysrCiBUb29scy9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzUgKysrKysrKysrKysKIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwIHwgICA0MiArKysrKysr
KystLS0tCiAuLi4vYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaCAgICAgICAg
ICB8ICAgIDYgKy0KIC4uLi9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BOR0ltYWdlRW5jb2Rl
ci5jcHAgIHwgICAzNCArKysrLS0tLS0tCiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L1BOR0ltYWdlRW5jb2Rlci5oICB8ICAgIDYgKy0KIC4uLi9ibGFja2JlcnJ5L1BpeGVsRHVtcFN1
cHBvcnRCbGFja0JlcnJ5LmNwcCAgICAgIHwgICA2NSArKysrKysrKysrKysrLS0tLS0tLQogLi4u
L2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnkuaCAgICAgICAgfCAgIDI2ICsr
Ky0tLS0tCiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L2J1aWxkICAgICAgICAgICAg
ICB8ICAgMTQgKysrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9zcmMucHJvICAg
ICAgICAgICAgfCAgIDE2ICsrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygr
KSwgNzggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA3NTUgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvc3JjLnBybwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2VkMmIwZC4uYTYyODVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMC0yNSAgWGlhb2JvIFdhbmcgIDx4YndhbmdA
dG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBTdXBwb3J0IHBpeGVs
IHRlc3RzIGZvciBCbGFja0JlcnJ5IERSVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkcyBhIHN0ZXAgdG8gYnVpbGQgSW1hZ2VEaWZmIGZyb20gUXQg
Zm9yIERSVC4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKwogMjAxMi0x
MC0yNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YSBzdHJhdGVneSBmb3Igc2hhcmVkIHdvcmtlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2UKaW5kZXggZDcxNjhiMC4uMmE1YWY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJs
YWNrQmVycnkuY21ha2UKQEAgLTI3MCw2ICsyNzAsMTggQEAgSU5TVEFMTChGSUxFUyAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vaW5zcGVjdG9yQkIuaHRtbAogICAgICAgICAgICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpz
CiAgICAgICAgIERFU1RJTkFUSU9OIC4uLy4uL3Vzci9zaGFyZS93ZWJraXQvaW5zcGVjdG9yLykK
IAorSUYgKE5PVCBQVUJMSUNfQlVJTEQpCisgICAgIyBBZGQgdGhlIGN1c3RvbSB0YXJnZXQgdG8g
YnVpbGQgdGhlIGhvc3Qtc2lkZSBJbWFnZURpZmYgYmluYXJ5LgorICAgICMgUmV1c2UgdGhlIFF0
IHZlcnNpb24uCisgICAgQUREX0NVU1RPTV9UQVJHRVQoCisgICAgICAgIEltYWdlRGlmZiBBTEwK
KyAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2Js
YWNrYmVycnkvCisgICAgICAgIENPTU1BTkQgLi9idWlsZAorICAgICAgICBERVBFTkRTICR7VE9P
TFNfRElSfS9EdW1wUmVuZGVyVHJlZS9xdC9JbWFnZURpZmYuY3BwCisgICAgICAgIENPTU1FTlQg
IkltYWdlRGlmZiBidWlsZGluZy4uLiIKKyAgICApCitFTkRJRiAoKQorCiBBRERfQ1VTVE9NX1RB
UkdFVCAoCiAgICAgaW5zcGVjdG9yIEFMTAogICAgIGNvbW1hbmQgY3AgJHtXRUJDT1JFX0RJUn0v
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vaW5zcGVjdG9yQkIuaHRtbCAmJiBlY2hvICc8c2NyaXB0IHNyYz0iaW5zcGVjdG9y
QkIuanMiPjwvc2NyaXB0PicgID4+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9pbnNw
ZWN0b3JCQi5odG1sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggNjYxNjliNi4uMGFiYmFhOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTEwLTI1ICBYaWFvYm8g
V2FuZyAgPHhid2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgW0JsYWNrQmVycnld
IFN1cHBvcnQgcGl4ZWwgdGVzdHMgZm9yIEJsYWNrQmVycnkgRFJUCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAyMTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVy
cnkvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpEdW1wUmVuZGVyVHJlZTo6cnVuVGVzdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OkR1bXBSZW5kZXJUcmVlOjpydW5DdXJyZW50VGVzdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGlu
Zyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5UZXN0
cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpkdW1wKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tC
ZXJyeS5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWUpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKEJHUkF0b1JHQkEp
OgorICAgICAgICAoZW5jb2RlQml0bWFwVG9QTkcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
YmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChjcmVh
dGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcpOgorICAgICAgICAoY29tcHV0ZU1ENUhhc2hTdHJp
bmdGb3JCaXRtYXBDb250ZXh0KToKKyAgICAgICAgKHByaW50UE5HKToKKyAgICAgICAgKGR1bXBC
aXRtYXApOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3Vw
cG9ydEJsYWNrQmVycnkuaDoKKyAgICAgICAgKEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRp
bmdEYXRhKToKKyAgICAgICAgKEJpdG1hcENvbnRleHQ6On5CaXRtYXBDb250ZXh0KToKKyAgICAg
ICAgKEJpdG1hcENvbnRleHQpOgorICAgICAgICAoQml0bWFwQ29udGV4dDo6Qml0bWFwQ29udGV4
dCk6CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L2J1aWxkOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L3NyYy5wcm86IEFkZGVkLgorICAg
ICAgICBBZGRzIDIgZmlsZXMgZm9yIGJ1aWxkaW5nIEltYWdlRGlmZi4KKwogMjAxMi0xMC0yNSAg
RXVnZW5lIEtseXVjaG5pa292ICA8ZXVzdGFzLmJ1Z0BnbWFpbC5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogRml4ICJjaGVjay1pbnNwZWN0b3Itc3RyaW5ncyIgc2NyaXB0IGFuZCBmaXgg
bG9jYWxpemVkIHN0cmluZ3MuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVy
cnkvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGViYzVjMzkuLjQ2NzQzNDUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwCkBAIC02
Niw3ICs2Niw2IEBACiAjaW5jbHVkZSA8d3RmL05vbkNvcHlpbmdTb3J0Lmg+CiAjaW5jbHVkZSA8
d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2RlZmluZSBTRENBUkRfUEFUSCAiL2RldmVsb3BlciIKIApA
QCAtMTU0LDcgKzE1Myw3IEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZShCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2UqIHBhZ2UpCiAgICAgOiBtX2djQ29udHJvbGxlcigwKQogICAg
ICwgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigwKQogICAgICwgbV9wYWdlKHBhZ2UpCi0gICAg
LCBtX2R1bXBQaXhlbHMoZmFsc2UpCisgICAgLCBtX2VuYWJsZVBpeGVsVGVzdHMoZ2V0ZW52KCJw
aXhlbFRlc3RzIikpCiAgICAgLCBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKHRoaXMsICZEdW1w
UmVuZGVyVHJlZTo6d2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCkKICAgICAsIG1fd29ya1Rp
bWVyKHRoaXMsICZEdW1wUmVuZGVyVHJlZTo6cHJvY2Vzc1dvcmspCiAgICAgLCBtX2FjY2VwdHNF
ZGl0aW5nKHRydWUpCkBAIC0xNzUsMTAgKzE3NCwxMCBAQCBEdW1wUmVuZGVyVHJlZTo6fkR1bXBS
ZW5kZXJUcmVlKCkKICAgICBkZWxldGUgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKIH0KIAot
dm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuVGVzdChjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgRHVt
cFJlbmRlclRyZWU6OnJ1blRlc3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgaW1h
Z2VIYXNoKQogewogICAgIG1haW5GcmFtZS0+bG9hZGVyKCktPnN0b3BGb3JVc2VyQ2FuY2VsKCk7
Ci0gICAgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKKyAgICByZXNldFRv
Q29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyh1cmwsIGltYWdlSGFzaCk7CiAgICAgaWYgKHNo
b3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyh1cmwpKQogICAgICAgICBnVGVzdFJ1bm5lci0+c2V0
RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKICAgICBpZiAoIXJ1bkZyb21Db21tYW5kTGlu
ZSkgewpAQCAtMjExLDEyICsyMTAsMTggQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZG9uZURydCgp
CiAKIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1bkN1cnJlbnRUZXN0KCkKIHsKKyAgICBTdHJpbmcg
aW1hZ2VIYXNoID0gIiI7CisgICAgaW50IHBvc1NwbGl0dGVyID0gbV9jdXJyZW50VGVzdC0+Zmlu
ZCgnPycpOworICAgIGlmIChwb3NTcGxpdHRlciA+IDEgJiYgKHVuc2lnbmVkKXBvc1NwbGl0dGVy
IDwgbV9jdXJyZW50VGVzdC0+bGVuZ3RoKCkgLSAxKSB7CisgICAgICAgIGltYWdlSGFzaCA9IG1f
Y3VycmVudFRlc3QtPnN1YnN0cmluZyhwb3NTcGxpdHRlciArIDEpOworICAgICAgICBtX2N1cnJl
bnRUZXN0LT50cnVuY2F0ZShwb3NTcGxpdHRlcik7CisgICAgfQogICAgIGlmIChpc0hUVFBUZXN0
KG1fY3VycmVudFRlc3QtPnV0ZjgoKS5kYXRhKCkpKSB7CiAgICAgICAgIG1fY3VycmVudEh0dHBU
ZXN0ID0gbV9jdXJyZW50VGVzdC0+dXRmOCgpLmRhdGEoKTsKICAgICAgICAgbV9jdXJyZW50SHR0
cFRlc3QucmVtb3ZlKDAsIHN0cmxlbihodHRwVGVzdFN5bnRheCkpOwotICAgICAgICBydW5UZXN0
KGh0dHBQcmVmaXhVUkwgKyBtX2N1cnJlbnRIdHRwVGVzdCk7CisgICAgICAgIHJ1blRlc3QoaHR0
cFByZWZpeFVSTCArIG1fY3VycmVudEh0dHBUZXN0LCBpbWFnZUhhc2gpOwogICAgIH0gZWxzZQot
ICAgICAgICBydW5UZXN0KGtTRENMYXlvdXRUZXN0c1VSSSArICptX2N1cnJlbnRUZXN0KTsKKyAg
ICAgICAgcnVuVGVzdChrU0RDTGF5b3V0VGVzdHNVUkkgKyAqbV9jdXJyZW50VGVzdCwgaW1hZ2VI
YXNoKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQpAQCAt
MjQ1LDEyICsyNTAsOSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpydW5SZW1haW5pbmdUZXN0cygp
CiAgICAgcnVuQ3VycmVudFRlc3QoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZTo6cmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQordm9pZCBEdW1wUmVuZGVyVHJlZTo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgaW1hZ2VIYXNoKQogewotICAgIGlmIChpc0hUVFBUZXN0KG1fY3VycmVudFRlc3Qt
PnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICBnVGVzdFJ1bm5lciA9IFRlc3RSdW5uZXI6OmNyZWF0
ZShTdHJpbmcoaHR0cFByZWZpeFVSTCArICptX2N1cnJlbnRUZXN0KS51dGY4KCkuZGF0YSgpLCAi
Iik7Ci0gICAgZWxzZQotICAgICAgICBnVGVzdFJ1bm5lciA9IFRlc3RSdW5uZXI6OmNyZWF0ZShT
dHJpbmcoa1NEQ0xheW91dFRlc3RzVVJJICsgKm1fY3VycmVudFRlc3QpLnV0ZjgoKS5kYXRhKCks
ICIiKTsKKyAgICBnVGVzdFJ1bm5lciA9IFRlc3RSdW5uZXI6OmNyZWF0ZSh1cmwudXRmOCgpLmRh
dGEoKSwgaW1hZ2VIYXNoLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZ1Rlc3RSdW5uZXItPnNldElj
b25EYXRhYmFzZUVuYWJsZWQoZmFsc2UpOwogCkBAIC0zMzUsNyArMzM3LDcgQEAgdm9pZCBEdW1w
UmVuZGVyVHJlZTo6cnVuVGVzdHMoKQogCiAgICAgbWFpbkZyYW1lID0gRHVtcFJlbmRlclRyZWVT
dXBwb3J0Ojpjb3JlUGFnZShtX3BhZ2UpLT5tYWluRnJhbWUoKTsKIAotICAgIGlmIChnZXRlbnYo
ImRydFRlc3RGaWxlIikpIHsKKyAgICBpZiAoY29uc3QgY2hhciogdGVzdEZpbGUgPSBnZXRlbnYo
ImRydFRlc3RGaWxlIikpIHsKICAgICAgICAgcnVuRnJvbUNvbW1hbmRMaW5lID0gdHJ1ZTsKICAg
ICAgICAgYWRkVGVzdCh0ZXN0RmlsZSk7CiAgICAgfSBlbHNlIHsKQEAgLTUwOSwxMCArNTExLDIy
IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OmR1bXAoKQogICAgIFN0cmluZyByZXN1bHQgPSAiQ29u
dGVudC1UeXBlOiAiICsgcmVzdWx0TWltZVR5cGUgKyAiXG4iICsgZGF0YTsKIAogICAgIGR1bXBU
b0ZpbGUocmVzdWx0KTsKLSAgICBpZiAobV9kdW1wUGl4ZWxzICYmICFkdW1wQXNUZXh0ICYmIGdU
ZXN0UnVubmVyLT5nZW5lcmF0ZVBpeGVsUmVzdWx0cygpKQotICAgICAgICBkdW1wV2ViVmlld0Fz
UGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChnVGVzdFJ1bm5lci0+ZXhwZWN0ZWRQaXhlbEhh
c2goKSk7CiAKICAgICBpZiAoIXJ1bkZyb21Db21tYW5kTGluZSkgeworICAgICAgICAvLyBzaWdu
YWwgZW5kIG9mIHRleHQgYmxvY2sKKyAgICAgICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZG91dCk7CisK
KyAgICAgICAgLy8gVGhlcmUgYXJlIHR3byBzY2VuYXJpb3MgZm9yIGR1bXBpbmcgcGl4ZWxzOgor
ICAgICAgICAvLyAxLiBXaGVuIHRoZSB0ZXN0IGNhc2UgZXhwbGljaXRseSBhc2tzIGZvciBpdCBi
eSBjYWxsaW5nIGR1bXBBc1RleHQodHJ1ZSkgd2l0aCB0aGF0IGV4dHJhIHRydWUgcGFzc2VkIGFz
IGEgcGFyYW1ldGVyIHZhbHVlLCBmcm9tIEphdmFTY3JpcHQKKyAgICAgICAgYm9vbCBleHBsaWNp
dFBpeGVsUmVzdWx0cyA9IGdUZXN0UnVubmVyLT5kdW1wQXNUZXh0KCkgJiYgZ1Rlc3RSdW5uZXIt
PmdlbmVyYXRlUGl4ZWxSZXN1bHRzKCk7CisgICAgICAgIC8vIDIuIFdoZW4gdGhlIHRlc3QgY2Fz
ZSBpbXBsaWNpdGx5IGFsbG93cyBpdCBieSBub3QgY2FsbGluZyBkdW1wQXNUZXh0KCkgYXQgYWxs
ICh3aXRoIG5vIHBhcmFtZXRlcnMpLgorICAgICAgICBib29sIGltcGxpY2l0UGl4ZWxSZXN1bHRz
ID0gIWdUZXN0UnVubmVyLT5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgLy8gQnV0IG9ubHkgaWYg
bV9lbmFibGVQaXhlbFRlc3RzIGlzIHNldCwgdG8gc2F5IHRoYXQgdGhlIHVzZXIgd2FudHMgdG8g
cnVuIHBpeGVsIHRlc3RzIGF0IGFsbC4KKyAgICAgICAgYm9vbCBnZW5lcmF0ZVBpeGVsUmVzdWx0
cyA9IG1fZW5hYmxlUGl4ZWxUZXN0cyAmJiAoZXhwbGljaXRQaXhlbFJlc3VsdHMgfHwgaW1wbGlj
aXRQaXhlbFJlc3VsdHMpOworICAgICAgICBpZiAoZ2VuZXJhdGVQaXhlbFJlc3VsdHMpCisgICAg
ICAgICAgICBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChnVGVzdFJ1
bm5lci0+ZXhwZWN0ZWRQaXhlbEhhc2goKSk7CisKICAgICAgICAgU3RyaW5nIGNyYXNoRmlsZSA9
IGR1bXBGaWxlICsgIi5jcmFzaCI7CiAgICAgICAgIHVubGluayhjcmFzaEZpbGUudXRmOCgpLmRh
dGEoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVt
cFJlbmRlclRyZWVCbGFja0JlcnJ5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oCmluZGV4IGRmY2Y3YzguLmRmN2IyMzAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFj
a0JlcnJ5LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVy
VHJlZUJsYWNrQmVycnkuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICAvLyBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6QmxhY2tCZXJyeVBsYXRmb3JtTGF5b3V0VGVzdENsaWVudCBtZXRo
b2QKICAgICB2aXJ0dWFsIHZvaWQgYWRkVGVzdChjb25zdCBjaGFyKiB0ZXN0RmlsZSk7CiBwcml2
YXRlOgotICAgIHZvaWQgcnVuVGVzdChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBydW5U
ZXN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGltYWdlSGFzaCk7CiAgICAgdm9p
ZCBydW5UZXN0cygpOwogICAgIHZvaWQgcnVuQ3VycmVudFRlc3QoKTsKIApAQCAtMTI0LDcgKzEy
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb25lRHJ0KCk7CiAgICAgYm9vbCBpc0hUVFBUZXN0
KGNvbnN0IFN0cmluZyYgdGVzdCk7CiAgICAgU3RyaW5nIHJlbmRlclRyZWVEdW1wKCkgY29uc3Q7
Ci0gICAgdm9pZCByZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOworICAgIHZv
aWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgaW1hZ2VIYXNoKTsKICAgICB2b2lkIHJ1blJlbWFpbmluZ1Rlc3RzKCk7
CiAgICAgdm9pZCBpbnZhbGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1wV2F0Y2hkb2coKTsKICAg
ICB2b2lkIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8RHVtcFJl
bmRlclRyZWU+Kik7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICBHQ0NvbnRyb2xs
ZXIqIG1fZ2NDb250cm9sbGVyOwogICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBtX2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyOwogICAgIFdlYlBhZ2UqIG1fcGFnZTsKLSAgICBib29sIG1fZHVt
cFBpeGVsczsKKyAgICBib29sIG1fZW5hYmxlUGl4ZWxUZXN0czsKICAgICBXZWJDb3JlOjpUaW1l
cjxEdW1wUmVuZGVyVHJlZT4gbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcjsKICAgICBXZWJDb3Jl
OjpUaW1lcjxEdW1wUmVuZGVyVHJlZT4gbV93b3JrVGltZXI7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmNwcAppbmRleCAyMmYyMDJj
Li5hZGNiNWQ1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BO
R0ltYWdlRW5jb2Rlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9Q
TkdJbWFnZUVuY29kZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMSw4ICsyMSwxMSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBOR0ltYWdlRW5jb2Rlci5oIgogCisjaWYg
VVNFKFNLSUEpCiAjaW5jbHVkZSAiU2tCaXRtYXAuaCIKICNpbmNsdWRlICJTa1VuUHJlTXVsdGlw
bHkuaCIKKyNlbmRpZgorCiAKIGV4dGVybiAiQyIgewogI2luY2x1ZGUgInBuZy5oIgpAQCAtMzMs
MjAgKzM2LDE2IEBAIGV4dGVybiAiQyIgewogLy8gVGhpcyBjb2RlIGlzIGFsbW9zdCBhIG1pcnJv
ciBvZiB0aGUgY29kZSBpbiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3NraWEvUE5H
SW1hZ2VFbmNvZGVyLmNwcAogLy8gc2luY2Ugd2UgY2FuJ3QgaW5jbHVkZSB0aGlzIHByaXZhdGUg
V2ViQ29yZSBmaWxlIGluIGEgV2ViS2l0LWNsaWVudCBhcHBsaWNhdGlvbi4KIAotLy8gQ29udmVy
dHMgQkdSQS0+UkdCQSBhbmQgUkdCQS0+QkdSQSBhbmQgdW5kb2VzIGFscGhhIHByZW11bHRpcGxp
Y2F0aW9uLgotc3RhdGljIHZvaWQgcHJlTXVsdGlwbGllZEJHUkF0b1JHQkEoY29uc3QgdW5zaWdu
ZWQgY2hhciogaW5wdXQsIGludCBudW1iZXJPZlBpeGVscywgdW5zaWduZWQgY2hhciogb3V0cHV0
KQorLy8gS2VlcCB0aGUgcHJlbXVsdGlwaWVkIGZvciBhcyBpdCBpcyB0aGUgbW9zdCBmYWl0aGZ1
bCBpbmZvcm1hdGlvbgorc3RhdGljIHZvaWQgQkdSQXRvUkdCQShjb25zdCB1bnNpZ25lZCBjaGFy
KiBpbnB1dCwgaW50IG51bWJlck9mUGl4ZWxzLCB1bnNpZ25lZCBjaGFyKiBvdXRwdXQpCiB7Ci0g
ICAgU2tCaXRtYXAgaW5wdXRCaXRtYXA7Ci0gICAgaW5wdXRCaXRtYXAuc2V0Q29uZmlnKFNrQml0
bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbnVtYmVyT2ZQaXhlbHMsIDEpOwotICAgIGlucHV0Qml0
bWFwLnNldFBpeGVscyhjb25zdF9jYXN0PHVuc2lnbmVkIGNoYXIqPihpbnB1dCkpOwogICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgbnVtYmVyT2ZQaXhlbHM7IHgrKykgewotICAgICAgICB1aW50MzJf
dCBzcmNQaXhlbCA9ICppbnB1dEJpdG1hcC5nZXRBZGRyMzIoeCwgMCk7Ci0gICAgICAgIFNrQ29s
b3IgdW5tdWx0aXBsaWVkID0gU2tVblByZU11bHRpcGx5OjpQTUNvbG9yVG9Db2xvcihzcmNQaXhl
bCk7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsT3V0ID0gJm91dHB1dFt4ICogNF07Ci0g
ICAgICAgIHBpeGVsT3V0WzBdID0gU2tDb2xvckdldFIodW5tdWx0aXBsaWVkKTsKLSAgICAgICAg
cGl4ZWxPdXRbMV0gPSBTa0NvbG9yR2V0Ryh1bm11bHRpcGxpZWQpOwotICAgICAgICBwaXhlbE91
dFsyXSA9IFNrQ29sb3JHZXRCKHVubXVsdGlwbGllZCk7Ci0gICAgICAgIHBpeGVsT3V0WzNdID0g
U2tDb2xvckdldEEodW5tdWx0aXBsaWVkKTsKKyAgICAgICAgb3V0cHV0WzBdID0gaW5wdXRbMl07
CisgICAgICAgIG91dHB1dFsxXSA9IGlucHV0WzFdOworICAgICAgICBvdXRwdXRbMl0gPSBpbnB1
dFswXTsKKyAgICAgICAgb3V0cHV0WzNdID0gaW5wdXRbM107CisgICAgICAgIGlucHV0ICs9IDQ7
CisgICAgICAgIG91dHB1dCArPSA0OwogICAgIH0KIH0KIApAQCAtMTQ0LDEzICsxNDMsOCBAQCBz
dGF0aWMgYm9vbCBlbmNvZGVJbXBsKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlucHV0LCBpbnQgaW1h
Z2VXaWR0aCwgaW50IGltYWdlSGVpZwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGVuY29k
ZVNrQml0bWFwVG9QTkcoY29uc3QgU2tCaXRtYXAmIGltYWdlLCBWZWN0b3I8dW5zaWduZWQgY2hh
cj4qIG91dHB1dCkKK2Jvb2wgZW5jb2RlQml0bWFwVG9QTkcodW5zaWduZWQgY2hhciogZGF0YSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBWZWN0b3I8dW5zaWduZWQgY2hhcj4qIG91dHB1dCkKIHsK
LSAgICBpZiAoaW1hZ2UuY29uZmlnKCkgIT0gU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnKQot
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE9ubHkgc3VwcG9ydCBBUkdCIGF0IDggYnBwIG5vdy4K
LQotICAgIGltYWdlLmxvY2tQaXhlbHMoKTsKLSAgICBib29sIHJlc3VsdCA9IGVuY29kZUltcGwo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGltYWdlLmdldFBpeGVscygpKSwgaW1hZ2Uud2lk
dGgoKSwgaW1hZ2UuaGVpZ2h0KCksIGltYWdlLnJvd0J5dGVzKCksIG91dHB1dCwgcHJlTXVsdGlw
bGllZEJHUkF0b1JHQkEpOwotICAgIGltYWdlLnVubG9ja1BpeGVscygpOworICAgIGJvb2wgcmVz
dWx0ID0gZW5jb2RlSW1wbChkYXRhLCB3aWR0aCwgaGVpZ2h0LCB3aWR0aCAqIDQsIG91dHB1dCwg
QkdSQXRvUkdCQSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmggYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ibGFja2JlcnJ5L1BOR0ltYWdlRW5jb2Rlci5oCmluZGV4IDc3OWY3YTAuLjdhMzIw
YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VF
bmNvZGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9QTkdJbWFnZUVu
Y29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsOCArMjEsNiBAQAogCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCi1jbGFzcyBTa0JpdG1hcDsKLQotYm9vbCBlbmNvZGVTa0JpdG1hcFRv
UE5HKGNvbnN0IFNrQml0bWFwJiwgV1RGOjpWZWN0b3I8dW5zaWduZWQgY2hhcj4qIG91dHB1dCk7
Citib29sIGVuY29kZUJpdG1hcFRvUE5HKHVuc2lnbmVkIGNoYXIqIGRhdGEsIGludCB3aWR0aCwg
aW50IGhlaWdodCwgV1RGOjpWZWN0b3I8dW5zaWduZWQgY2hhcj4qIG91dHB1dCk7CiAKICNlbmRp
ZiAvLyBQTkdJbWFnZUVuY29kZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
YmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ibGFja2JlcnJ5L1BpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5LmNwcAppbmRleCAw
YmI0YTBjLi40MjBjZGZiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2Jl
cnJ5L1BpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9ibGFja2JlcnJ5L1BpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5LmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlBpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5LmgiCiAKKyNpbmNsdWRlICJCYWNraW5nU3RvcmUu
aCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJQTkdJ
bWFnZUVuY29kZXIuaCIKICNpbmNsdWRlICJQaXhlbER1bXBTdXBwb3J0LmgiCkBAIC0yNiw3ICsy
Nyw5IEBACiAjaW5jbHVkZSAiV2ViUGFnZUNsaWVudC5oIgogCiAjaW5jbHVkZSA8QmxhY2tCZXJy
eVBsYXRmb3JtV2luZG93Lmg+Ci0jaW5jbHVkZSA8c2tpYS9Ta0RldmljZS5oPgorI2lmIFVTRShT
S0lBKQorI2luY2x1ZGUgPFNrRGV2aWNlLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvTUQ1Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zOSwzNCArNDIsNTIgQEAgUGFzc1JlZlB0
cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCAvKm9u
c2NyZWVuKi8sIGJvb2wKICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OldpbmRvdyogd2luZG93ID0g
RHVtcFJlbmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCktPmNsaWVudCgpLT53aW5k
b3coKTsKICAgICBBU1NFUlQod2luZG93KTsKIAotICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0
JiB3aW5kb3dSZWN0ID0gd2luZG93LT52aWV3cG9ydFJlY3QoKTsKLQotICAgIFNrQml0bWFwKiBi
aXRtYXAgPSBuZXcgU2tCaXRtYXA7Ci0gICAgYml0bWFwLT5zZXRDb25maWcoU2tCaXRtYXA6OmtB
UkdCXzg4ODhfQ29uZmlnLCB3aW5kb3dSZWN0LndpZHRoKCksIHdpbmRvd1JlY3QuaGVpZ2h0KCkp
OyAvLyBXZSB1c2UgMzItYml0IFJHQkEgc2luY2UgdGhhdCBpcyB0aGUgcGl4ZWwgZm9ybWF0IHRo
YXQgSW1hZ2VEaWZmIGV4cGVjdHMuCi0gICAgYml0bWFwLT5hbGxvY1BpeGVscygpOworICAgIC8v
IFRoZSBCYWNraW5nU3RvcmUgaGFzIGEgcXVldWUgb2YgcGVuZGluZyBqb2JzLCB3aGljaCBhcmUg
cnVuIG9uIGlkbGUKKyAgICAvLyBhbmQgd2hpY2ggbWF5IG5vdCBoYXZlIGJlZW4gcnVuIHlldC4K
KyAgICBCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IER1bXBSZW5kZXJUcmVlOjpjdXJyZW50
SW5zdGFuY2UoKS0+cGFnZSgpLT5iYWNraW5nU3RvcmUoKTsKKyAgICB3aGlsZSAoYmFja2luZ1N0
b3JlLT5oYXNCbGl0Sm9icygpKQorICAgICAgICBiYWNraW5nU3RvcmUtPmJsaXRPbklkbGUoKTsK
IAotICAgIFNrQ2FudmFzKiBjYW52YXMgPSBuZXcgU2tDYW52YXM7Ci0gICAgY2FudmFzLT5zZXRC
aXRtYXBEZXZpY2UoKmJpdG1hcCk7CisgICAgY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHdpbmRv
d1JlY3QgPSB3aW5kb3ctPnZpZXdwb3J0UmVjdCgpOworICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRT
aXplJiB3aW5kb3dTaXplID0gd2luZG93LT52aWV3cG9ydFNpemUoKTsKKyAgICB1bnNpZ25lZCBj
aGFyKiBkYXRhID0gbmV3IHVuc2lnbmVkIGNoYXJbd2luZG93U2l6ZS53aWR0aCgpICogd2luZG93
U2l6ZS5oZWlnaHQoKSAqIDRdOwogCiAgICAgLy8gV2UgbmVlZCB0byBmb3JjZSBhIHN5bmNocm9u
b3VzIHVwZGF0ZSB0byB0aGUgd2luZG93IG9yIHdlIG1heSBnZXQgYW4gZW1wdHkgYml0bWFwLgog
ICAgIC8vIEZvciBleGFtcGxlLCBydW5uaW5nIERSVCB3aXRoIG9uZSB0ZXN0IGNhc2UgdGhhdCBm
aW5pc2hlcyBiZWZvcmUgdGhlIHNjcmVlbiBpcyB1cGRhdGVkLgogICAgIHdpbmRvdy0+cG9zdCh3
aW5kb3dSZWN0KTsKIAotICAgIGNvbnN0IFNrQml0bWFwKiB3aW5kb3dCaXRtYXAgPSBzdGF0aWNf
Y2FzdDxjb25zdCBTa0JpdG1hcCo+KGxvY2tCdWZmZXJCYWNraW5nSW1hZ2Uod2luZG93LT5idWZm
ZXIoKSwgUGxhdGZvcm06OkdyYXBoaWNzOjpSZWFkQWNjZXNzKSk7Ci0gICAgY2FudmFzLT5kcmF3
Qml0bWFwKCp3aW5kb3dCaXRtYXAsIDAsIDApOyAvLyBEcmF3IHRoZSBiaXRtYXAgYXQgKDAsIDAp
LgorI2lmIFVTRShTS0lBKQorICAgIFNrQml0bWFwIGJpdG1hcDsKKyAgICBiaXRtYXAuc2V0Q29u
ZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgd2luZG93U2l6ZS53aWR0aCgpLCB3aW5k
b3dTaXplLmhlaWdodCgpKTsKKyAgICBiaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBiaXRtYXAu
ZXJhc2VBUkdCKDAsIDAsIDAsIDApOworCisgICAgU2tDYW52YXMgY2FudmFzKGJpdG1hcCk7Cisg
ICAgYmFja2luZ1N0b3JlLT5kcmF3Q29udGVudHMoJmNhbnZhcywgd2luZG93UmVjdCwgd2luZG93
U2l6ZSk7CisKKyAgICAvLyBSZWFkIHRoYXQgU2tCaXRtYXAgcmF0aGVyIHRoYW4gY2hhbmdlIGl0
LiBTbyB1c2UgZmFsc2Ugb24gYWNjZXNzQml0bWFwLgorICAgIGNvbnN0IFNrQml0bWFwJiBjb250
ZW50c0JpdG1hcCA9IGNhbnZhcy5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlLypjaGFu
Z2VQaXhlbHMqLyk7CisgICAgY29udGVudHNCaXRtYXAubG9ja1BpeGVscygpOworCisgICAgY29u
c3QgdW5zaWduZWQgY2hhciogd2luZG93UGl4ZWxzID0gMDsKKyAgICBpZiAoIWNvbnRlbnRzQml0
bWFwLmVtcHR5KCkpIHsKKyAgICAgICAgU2tBdXRvTG9ja1BpeGVscyBsb2NrKGNvbnRlbnRzQml0
bWFwKTsKKyAgICAgICAgd2luZG93UGl4ZWxzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KGNvbnRlbnRzQml0bWFwLmdldFBpeGVscygpKTsKKyAgICB9CisjZWxzZQorICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIHdpbmRvd1BpeGVscyA9IGxvY2tCdWZmZXJCYWNraW5nSW1hZ2Uo
d2luZG93LT5idWZmZXIoKSwgUGxhdGZvcm06OkdyYXBoaWNzOjpSZWFkQWNjZXNzKTsKKyNlbmRp
ZgorICAgIG1lbWNweShkYXRhLCB3aW5kb3dQaXhlbHMsIHdpbmRvd1NpemUud2lkdGgoKSAqIHdp
bmRvd1NpemUuaGVpZ2h0KCkgKiA0KTsKICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OnJlbGVhc2VC
dWZmZXJCYWNraW5nSW1hZ2Uod2luZG93LT5idWZmZXIoKSk7Ci0gICAgcmV0dXJuIEJpdG1hcENv
bnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KGJpdG1hcCwgY2FudmFzKTsK
KyAgICByZXR1cm4gQml0bWFwQ29udGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0RhdGEoZGF0YSwgd2lu
ZG93U2l6ZS53aWR0aCgpLCB3aW5kb3dTaXplLmhlaWdodCgpKTsKIH0KIAogdm9pZCBjb21wdXRl
TUQ1SGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQoQml0bWFwQ29udGV4dCogY29udGV4dCwgY2hh
ciBoYXNoU3RyaW5nWzMzXSkKIHsKLSAgICBjb25zdCBTa0JpdG1hcCYgYml0bWFwID0gY29udGV4
dC0+Y2FudmFzKCktPmdldERldmljZSgpLT5hY2Nlc3NCaXRtYXAoZmFsc2UpOwotICAgIEFTU0VS
VChiaXRtYXAuYnl0ZXNQZXJQaXhlbCgpID09IDQpOyAvLyAzMi1iaXQgUkdCQQotCi0gICAgaW50
IHBpeGVsc1dpZGUgPSBiaXRtYXAud2lkdGgoKTsKLSAgICBpbnQgcGl4ZWxzSGlnaCA9IGJpdG1h
cC5oZWlnaHQoKTsKLSAgICBpbnQgYnl0ZXNQZXJSb3cgPSBiaXRtYXAucm93Qnl0ZXMoKTsKLSAg
ICB1bnNpZ25lZCBjaGFyKiBwaXhlbERhdGEgPSAodW5zaWduZWQgY2hhciopYml0bWFwLmdldFBp
eGVscygpOworICAgIGludCBwaXhlbHNXaWRlID0gY29udGV4dC0+bV93aWR0aDsKKyAgICBpbnQg
cGl4ZWxzSGlnaCA9IGNvbnRleHQtPm1faGVpZ2h0OworICAgIGludCBieXRlc1BlclJvdyA9IGNv
bnRleHQtPm1fd2lkdGggKiA0OworICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsRGF0YSA9IGNvbnRl
eHQtPm1fZGF0YTsKIAogICAgIE1ENSBtZDU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwaXhl
bHNIaWdoOyArK2kpIHsKQEAgLTgyLDE0ICsxMDMsMTQgQEAgdm9pZCBjb21wdXRlTUQ1SGFzaFN0
cmluZ0ZvckJpdG1hcENvbnRleHQoQml0bWFwQ29udGV4dCogY29udGV4dCwgY2hhciBoYXNoU3Ry
aW4KICAgICAgICAgc25wcmludGYoaGFzaFN0cmluZywgMzMsICIlcyUwMngiLCBoYXNoU3RyaW5n
LCBoYXNoW2ldKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRQTkcoU2tDYW52YXMqIGNhbnZhcywg
Y29uc3QgY2hhciogY2hlY2tzdW0pCitzdGF0aWMgdm9pZCBwcmludFBORyhCaXRtYXBDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBjaGFyKiBjaGVja3N1bSkKIHsKICAgICBWZWN0b3I8dW5zaWduZWQg
Y2hhcj4gcG5nRGF0YTsKLSAgICBlbmNvZGVTa0JpdG1hcFRvUE5HKGNhbnZhcy0+Z2V0RGV2aWNl
KCktPmFjY2Vzc0JpdG1hcChmYWxzZSksICZwbmdEYXRhKTsKKyAgICBlbmNvZGVCaXRtYXBUb1BO
Ryhjb250ZXh0LT5tX2RhdGEsIGNvbnRleHQtPm1fd2lkdGgsIGNvbnRleHQtPm1faGVpZ2h0LCAm
cG5nRGF0YSk7CiAgICAgcHJpbnRQTkcocG5nRGF0YS5kYXRhKCksIHBuZ0RhdGEuc2l6ZSgpLCBj
aGVja3N1bSk7CiB9CiAKIHZvaWQgZHVtcEJpdG1hcChCaXRtYXBDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBjaGFyKiBjaGVja3N1bSkKIHsKLSAgICBwcmludFBORyhjb250ZXh0LT5jYW52YXMoKSwg
Y2hlY2tzdW0pOworICAgIHByaW50UE5HKGNvbnRleHQsIGNoZWNrc3VtKTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9ydEJsYWNr
QmVycnkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9y
dEJsYWNrQmVycnkuaAppbmRleCBlOGFlNzg2Li44N2M2YmYwIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5LmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tC
ZXJyeS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xOSwzOCArMTksMzQgQEAKICNpZm5kZWYgUGl4
ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnlfaAogI2RlZmluZSBQaXhlbER1bXBTdXBwb3J0QmxhY2tC
ZXJyeV9oCiAKLSNpbmNsdWRlIDxza2lhL1NrQml0bWFwLmg+Ci0jaW5jbHVkZSA8c2tpYS9Ta0Nh
bnZhcy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBjbGFzcyBCaXRtYXBDb250ZXh0IDogcHVi
bGljIFJlZkNvdW50ZWQ8Qml0bWFwQ29udGV4dD4gewogcHVibGljOgogCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQo
U2tCaXRtYXAqIGJpdG1hcCwgU2tDYW52YXMqIGNhbnZhcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCeUFkb3B0aW5nRGF0YSh1bnNpZ25lZCBjaGFyKiBkYXRh
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEJpdG1hcENvbnRleHQoYml0bWFwLCBjYW52YXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBCaXRtYXBDb250ZXh0KGRhdGEsIHdpZHRoLCBoZWlnaHQpKTsKICAgICB9CiAKICAg
ICB+Qml0bWFwQ29udGV4dCgpCiAgICAgewotICAgICAgICBkZWxldGUgbV9iaXRtYXA7Ci0gICAg
ICAgIGRlbGV0ZSBtX2NhbnZhczsKKyAgICAgICAgZGVsZXRlIG1fZGF0YTsKICAgICB9CiAKLSAg
ICBTa0NhbnZhcyogY2FudmFzKCkgeyByZXR1cm4gbV9jYW52YXM7IH0KKyAgICB1bnNpZ25lZCBj
aGFyKiBtX2RhdGE7CisgICAgaW50IG1fd2lkdGgsIG1faGVpZ2h0OwogCiBwcml2YXRlOgogCi0g
ICAgQml0bWFwQ29udGV4dChTa0JpdG1hcCogYml0bWFwLCBTa0NhbnZhcyogY2FudmFzKQotICAg
ICAgICA6IG1fYml0bWFwKGJpdG1hcCkKLSAgICAgICAgLCBtX2NhbnZhcyhjYW52YXMpCisgICAg
Qml0bWFwQ29udGV4dCh1bnNpZ25lZCBjaGFyKiBkYXRhLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
CisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgICAgICwgbV93aWR0aCh3aWR0aCkKKyAgICAg
ICAgLCBtX2hlaWdodChoZWlnaHQpCiAgICAgewogICAgIH0KLQotICAgIFNrQml0bWFwKiBtX2Jp
dG1hcDsKLSAgICBTa0NhbnZhcyogbV9jYW52YXM7Ci0KIH07CiAKICNlbmRpZiAvLyBQaXhlbER1
bXBTdXBwb3J0QmxhY2tCZXJyeV9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9i
bGFja2JlcnJ5L2J1aWxkIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9idWlsZApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNGIzNzk1Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9idWlsZApAQCAtMCwwICsxLDE0
IEBACisjIS9iaW4vc2gKKworIyBJIGNvcGllZCB0aGlzIGZpbGUgYW5kIHNpbWlsYXIvcmVsYXRl
ZCBmaWxlcywgZnJvbQorIyB0aGUgfi9kZXYvd2VicGxhdGZvcm0vdG9vbHMvYmluZGluZ19nZW5l
cmF0b3IgZm9sZGVyLgorIyBUaGlzIGZpbGUgYnVpbGRzIHRoZSBJbWFnZURpZmYgZXhlY3V0YWJs
ZSwgdG8gcnVuCisjIG9uIHRoZSBob3N0IG1hY2hpbmUuCisKK3doaWNoIHFtYWtlLXF0NCA+IC9k
ZXYvbnVsbAoraWYgWyAkPyAtZXEgMCBdIDsgdGhlbgorICAgIHFtYWtlLXF0NAorZWxzZQorICAg
IHFtYWtlCitmaQorbWFrZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2ti
ZXJyeS9zcmMucHJvIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9zcmMucHJvCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwOTY3OTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L3NyYy5wcm8KQEAgLTAsMCArMSwx
NiBAQAorbGVzc1RoYW4oUVRfVkVSU0lPTiwgNC41KSB7CisgICAgZXJyb3IoIlF0IDQuNSBvciBn
cmVhdGVyIGlzIHJlcXVpcmVkLiIpCit9CisKK1RFTVBMQVRFID0gYXBwCitUQVJHRVQgPSBJbWFn
ZURpZmYKKworU09VUkNFUyArPSAuLi9xdC9JbWFnZURpZmYuY3BwCitERVNURElSID0gLgorCit1
bml4OkNPTkZJRyArPSBkZWJ1Z19hbmRfcmVsZWFzZQorbWFjOkNPTkZJRyAtPSBhcHBfYnVuZGxl
Cit3aW4zMjogQ09ORklHICs9IGNvbnNvbGUKKworUVQgPSBjb3JlIGd1aQorCi0tIAoxLjcuNgoK
</data>
<flag name="review"
          id="184266"
          type_id="1"
          status="+"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170811</attachid>
            <date>2012-10-25 22:13:58 -0700</date>
            <delta_ts>2012-10-25 22:26:38 -0700</delta_ts>
            <desc>patch - updated</desc>
            <filename>0001-BlackBerry-Support-pixel-tests-for-BlackBerry-DRT.patch</filename>
            <type>text/plain</type>
            <size>23182</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSAzZGUzZmRmOTI4YTZhYWNkOGEwYjkwZGViMDlkNTRhMmVlYTg1Njc1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogRnJpLCAyNiBPY3QgMjAxMiAxMzoxMDoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFtCbGFja0JlcnJ5XSBTdXBwb3J0IHBpeGVsIHRlc3RzIGZvciBCbGFja0JlcnJ5IERSVAogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDIxMAoKUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgpTb3VyY2UvV2ViS2l0OgoKQWRkcyBhIHN0ZXAgdG8gYnVpbGQgSW1h
Z2VEaWZmIGZyb20gUXQgZm9yIERSVC4gTW9zdCBvZiB0aGUgd29ya3MgYXJlCmFjY29tcGxpc2hl
ZCBieSBDaHJpc3RvcGhlciBXZWxscy4KCiogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgoKVG9v
bHM6CgpUaGUgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIHBhdGNoIGZyb20gQ2hyaXN0
b3BoZXIgV2VsbHMuCgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUu
Y3BwOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUp
OgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cnVuVGVzdCk6CihCbGFja0Jl
cnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5DdXJyZW50VGVzdCk6CihCbGFja0JlcnJ5
OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVz
dGluZyk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5UZXN0cyk6CihC
bGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpkdW1wKToKKiBEdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oOgooRHVtcFJlbmRlclRyZWUp
OgoKKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BOR0ltYWdlRW5jb2Rlci5jcHA6CihCR1JB
dG9SR0JBKToKKGVuY29kZUJpdG1hcFRvUE5HKToKKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L1BOR0ltYWdlRW5jb2Rlci5oOgpUaGUgY2hhbmdlcyB0byBQTkdJbWFnZUVuY29kZXIgZmlsZXMg
YXJlIGZyb20gbWFzdGVyXzQwLCBwYXRjaGVkIGJ5IFR5bGVyCkFiYm90dCBhbmQgUm9iIEJ1aXMu
CgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnku
Y3BwOgooY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToKKGNvbXB1dGVNRDVIYXNoU3Ry
aW5nRm9yQml0bWFwQ29udGV4dCk6CihwcmludFBORyk6CihkdW1wQml0bWFwKToKKiBEdW1wUmVu
ZGVyVHJlZS9ibGFja2JlcnJ5L1BpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5Lmg6CihCaXRtYXBD
b250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nRGF0YSk6CihCaXRtYXBDb250ZXh0Ojp+Qml0bWFwQ29u
dGV4dCk6CihCaXRtYXBDb250ZXh0KToKKEJpdG1hcENvbnRleHQ6OkJpdG1hcENvbnRleHQpOgoK
KiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L2J1aWxkOiBBZGRlZC4KKiBEdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L3NyYy5wcm86IEFkZGVkLgpBZGRzIDIgZmlsZXMgZm9yIGJ1aWxkaW5nIElt
YWdlRGlmZiwgYnkgQ2hyaXN0b3BoZXIgV2VsbHMuCi0tLQogU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrKysKIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlICAgICAgICAgICAgIHwgICAxMiArKysrCiBUb29scy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDEgKysrKysr
KysrKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNw
cCB8ICAgNDIgKysrKysrKysrLS0tLQogLi4uL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFj
a0JlcnJ5LmggICAgICAgICAgfCAgICA2ICstCiAuLi4vRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9QTkdJbWFnZUVuY29kZXIuY3BwICB8ICAgMzcgKysrKy0tLS0tLS0KIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmggIHwgICAgNiArLQogLi4uL2JsYWNr
YmVycnkvUGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnkuY3BwICAgICAgfCAgIDY1ICsrKysrKysr
KysrKystLS0tLS0tCiAuLi4vYmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5o
ICAgICAgICB8ICAgMjYgKysrLS0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMo
KyksIDgyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2VkMmIwZC4uYzIyOTM4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0yNSAgWGlhb2JvIFdhbmcgIDx4YndhbmdAdG9y
Y2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBTdXBwb3J0IHBpeGVsIHRl
c3RzIGZvciBCbGFja0JlcnJ5IERSVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAwMjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkcyBhIHN0ZXAgdG8gYnVpbGQgSW1hZ2VEaWZmIGZyb20gUXQgZm9y
IERSVC4gTW9zdCBvZiB0aGUgd29ya3MgYXJlCisgICAgICAgIGFjY29tcGxpc2hlZCBieSBDaHJp
c3RvcGhlciBXZWxscy4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKwog
MjAxMi0xMC0yNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYSBzdHJhdGVneSBmb3Igc2hhcmVkIHdvcmtlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJs
YWNrQmVycnkuY21ha2UKaW5kZXggZDcxNjhiMC4uMmE1YWY3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTI3MCw2ICsyNzAsMTggQEAgSU5TVEFMTChGSUxFUyAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vaW5zcGVjdG9yQkIuaHRtbAogICAgICAgICAg
ICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZENvbW1h
bmRzLmpzCiAgICAgICAgIERFU1RJTkFUSU9OIC4uLy4uL3Vzci9zaGFyZS93ZWJraXQvaW5zcGVj
dG9yLykKIAorSUYgKE5PVCBQVUJMSUNfQlVJTEQpCisgICAgIyBBZGQgdGhlIGN1c3RvbSB0YXJn
ZXQgdG8gYnVpbGQgdGhlIGhvc3Qtc2lkZSBJbWFnZURpZmYgYmluYXJ5LgorICAgICMgUmV1c2Ug
dGhlIFF0IHZlcnNpb24uCisgICAgQUREX0NVU1RPTV9UQVJHRVQoCisgICAgICAgIEltYWdlRGlm
ZiBBTEwKKyAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvCisgICAgICAgIENPTU1BTkQgLi9idWlsZAorICAgICAgICBERVBFTkRT
ICR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9xdC9JbWFnZURpZmYuY3BwCisgICAgICAgIENP
TU1FTlQgIkltYWdlRGlmZiBidWlsZGluZy4uLiIKKyAgICApCitFTkRJRiAoKQorCiBBRERfQ1VT
VE9NX1RBUkdFVCAoCiAgICAgaW5zcGVjdG9yIEFMTAogICAgIGNvbW1hbmQgY3AgJHtXRUJDT1JF
X0RJUn0vaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vaW5zcGVjdG9yQkIuaHRtbCAmJiBlY2hvICc8c2NyaXB0IHNyYz0iaW5z
cGVjdG9yQkIuanMiPjwvc2NyaXB0PicgID4+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9pbnNwZWN0b3JCQi5odG1sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNjYxNjliNi4uMWE2MGM0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEwLTI1ICBY
aWFvYm8gV2FuZyAgPHhid2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgW0JsYWNr
QmVycnldIFN1cHBvcnQgcGl4ZWwgdGVzdHMgZm9yIEJsYWNrQmVycnkgRFJUCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAyMTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
aXMgYmFzZWQgb24gdGhlIHBhdGNoIGZyb20gQ2hyaXN0b3BoZXIgV2VsbHMuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OnJ1blRlc3QpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cnVuQ3VycmVudFRlc3Qp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpEdW1wUmVuZGVyVHJlZTo6cnVuVGVzdHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpEdW1wUmVuZGVyVHJlZTo6ZHVtcCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2ti
ZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
KToKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVy
LmNwcDoKKyAgICAgICAgKEJHUkF0b1JHQkEpOgorICAgICAgICAoZW5jb2RlQml0bWFwVG9QTkcp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmg6
CisgICAgICAgIFRoZSBjaGFuZ2VzIHRvIFBOR0ltYWdlRW5jb2RlciBmaWxlcyBhcmUgZnJvbSBt
YXN0ZXJfNDAsIHBhdGNoZWQgYnkgVHlsZXIKKyAgICAgICAgQWJib3R0IGFuZCBSb2IgQnVpcy4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9ydEJs
YWNrQmVycnkuY3BwOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToK
KyAgICAgICAgKGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9yQml0bWFwQ29udGV4dCk6CisgICAgICAg
IChwcmludFBORyk6CisgICAgICAgIChkdW1wQml0bWFwKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9ibGFja2JlcnJ5L1BpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5Lmg6CisgICAgICAgIChC
aXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nRGF0YSk6CisgICAgICAgIChCaXRtYXBDb250
ZXh0Ojp+Qml0bWFwQ29udGV4dCk6CisgICAgICAgIChCaXRtYXBDb250ZXh0KToKKyAgICAgICAg
KEJpdG1hcENvbnRleHQ6OkJpdG1hcENvbnRleHQpOgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9idWlsZDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9zcmMucHJvOiBBZGRlZC4KKyAgICAgICAgQWRkcyAyIGZpbGVzIGZvciBidWlsZGlu
ZyBJbWFnZURpZmYsIGJ5IENocmlzdG9waGVyIFdlbGxzLgorCiAyMDEyLTEwLTI1ICBFdWdlbmUg
S2x5dWNobmlrb3YgIDxldXN0YXMuYnVnQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBGaXggImNoZWNrLWluc3BlY3Rvci1zdHJpbmdzIiBzY3JpcHQgYW5kIGZpeCBsb2NhbGl6
ZWQgc3RyaW5ncy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkv
RHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1w
UmVuZGVyVHJlZS5jcHAKaW5kZXggZWJjNWMzOS4uNDY3NDM0NSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTY2LDcgKzY2
LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9uQ29weWluZ1NvcnQuaD4KICNpbmNsdWRlIDx3dGYvT3du
QXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiAjZGVmaW5lIFNEQ0FSRF9QQVRIICIvZGV2ZWxvcGVyIgogCkBAIC0xNTQs
NyArMTUzLDcgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKEJsYWNrQmVycnk6Oldl
YktpdDo6V2ViUGFnZSogcGFnZSkKICAgICA6IG1fZ2NDb250cm9sbGVyKDApCiAgICAgLCBtX2Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKDApCiAgICAgLCBtX3BhZ2UocGFnZSkKLSAgICAsIG1fZHVt
cFBpeGVscyhmYWxzZSkKKyAgICAsIG1fZW5hYmxlUGl4ZWxUZXN0cyhnZXRlbnYoInBpeGVsVGVz
dHMiKSkKICAgICAsIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIodGhpcywgJkR1bXBSZW5kZXJU
cmVlOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKQogICAgICwgbV93b3JrVGltZXIodGhp
cywgJkR1bXBSZW5kZXJUcmVlOjpwcm9jZXNzV29yaykKICAgICAsIG1fYWNjZXB0c0VkaXRpbmco
dHJ1ZSkKQEAgLTE3NSwxMCArMTc0LDEwIEBAIER1bXBSZW5kZXJUcmVlOjp+RHVtcFJlbmRlclRy
ZWUoKQogICAgIGRlbGV0ZSBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOwogfQogCi12b2lkIER1
bXBSZW5kZXJUcmVlOjpydW5UZXN0KGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBEdW1wUmVuZGVy
VHJlZTo6cnVuVGVzdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBpbWFnZUhhc2gp
CiB7CiAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS0+c3RvcEZvclVzZXJDYW5jZWwoKTsKLSAgICBy
ZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOworICAgIHJlc2V0VG9Db25zaXN0
ZW50U3RhdGVCZWZvcmVUZXN0aW5nKHVybCwgaW1hZ2VIYXNoKTsKICAgICBpZiAoc2hvdWxkTG9n
RnJhbWVMb2FkRGVsZWdhdGVzKHVybCkpCiAgICAgICAgIGdUZXN0UnVubmVyLT5zZXREdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKHRydWUpOwogICAgIGlmICghcnVuRnJvbUNvbW1hbmRMaW5lKSB7CkBA
IC0yMTEsMTIgKzIxMCwxOCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkb25lRHJ0KCkKIAogdm9p
ZCBEdW1wUmVuZGVyVHJlZTo6cnVuQ3VycmVudFRlc3QoKQogeworICAgIFN0cmluZyBpbWFnZUhh
c2ggPSAiIjsKKyAgICBpbnQgcG9zU3BsaXR0ZXIgPSBtX2N1cnJlbnRUZXN0LT5maW5kKCc/Jyk7
CisgICAgaWYgKHBvc1NwbGl0dGVyID4gMSAmJiAodW5zaWduZWQpcG9zU3BsaXR0ZXIgPCBtX2N1
cnJlbnRUZXN0LT5sZW5ndGgoKSAtIDEpIHsKKyAgICAgICAgaW1hZ2VIYXNoID0gbV9jdXJyZW50
VGVzdC0+c3Vic3RyaW5nKHBvc1NwbGl0dGVyICsgMSk7CisgICAgICAgIG1fY3VycmVudFRlc3Qt
PnRydW5jYXRlKHBvc1NwbGl0dGVyKTsKKyAgICB9CiAgICAgaWYgKGlzSFRUUFRlc3QobV9jdXJy
ZW50VGVzdC0+dXRmOCgpLmRhdGEoKSkpIHsKICAgICAgICAgbV9jdXJyZW50SHR0cFRlc3QgPSBt
X2N1cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpOwogICAgICAgICBtX2N1cnJlbnRIdHRwVGVzdC5y
ZW1vdmUoMCwgc3RybGVuKGh0dHBUZXN0U3ludGF4KSk7Ci0gICAgICAgIHJ1blRlc3QoaHR0cFBy
ZWZpeFVSTCArIG1fY3VycmVudEh0dHBUZXN0KTsKKyAgICAgICAgcnVuVGVzdChodHRwUHJlZml4
VVJMICsgbV9jdXJyZW50SHR0cFRlc3QsIGltYWdlSGFzaCk7CiAgICAgfSBlbHNlCi0gICAgICAg
IHJ1blRlc3Qoa1NEQ0xheW91dFRlc3RzVVJJICsgKm1fY3VycmVudFRlc3QpOworICAgICAgICBy
dW5UZXN0KGtTRENMYXlvdXRUZXN0c1VSSSArICptX2N1cnJlbnRUZXN0LCBpbWFnZUhhc2gpOwog
fQogCiB2b2lkIER1bXBSZW5kZXJUcmVlOjpydW5SZW1haW5pbmdUZXN0cygpCkBAIC0yNDUsMTIg
KzI1MCw5IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blJlbWFpbmluZ1Rlc3RzKCkKICAgICBy
dW5DdXJyZW50VGVzdCgpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lz
dGVudFN0YXRlQmVmb3JlVGVzdGluZygpCit2b2lkIER1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29u
c2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBpbWFnZUhhc2gpCiB7Ci0gICAgaWYgKGlzSFRUUFRlc3QobV9jdXJyZW50VGVzdC0+dXRmOCgp
LmRhdGEoKSkpCi0gICAgICAgIGdUZXN0UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRlKFN0cmlu
ZyhodHRwUHJlZml4VVJMICsgKm1fY3VycmVudFRlc3QpLnV0ZjgoKS5kYXRhKCksICIiKTsKLSAg
ICBlbHNlCi0gICAgICAgIGdUZXN0UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRlKFN0cmluZyhr
U0RDTGF5b3V0VGVzdHNVUkkgKyAqbV9jdXJyZW50VGVzdCkudXRmOCgpLmRhdGEoKSwgIiIpOwor
ICAgIGdUZXN0UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRlKHVybC51dGY4KCkuZGF0YSgpLCBp
bWFnZUhhc2gudXRmOCgpLmRhdGEoKSk7CiAKICAgICBnVGVzdFJ1bm5lci0+c2V0SWNvbkRhdGFi
YXNlRW5hYmxlZChmYWxzZSk7CiAKQEAgLTMzNSw3ICszMzcsNyBAQCB2b2lkIER1bXBSZW5kZXJU
cmVlOjpydW5UZXN0cygpCiAKICAgICBtYWluRnJhbWUgPSBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6
OmNvcmVQYWdlKG1fcGFnZSktPm1haW5GcmFtZSgpOwogCi0gICAgaWYgKGdldGVudigiZHJ0VGVz
dEZpbGUiKSkgeworICAgIGlmIChjb25zdCBjaGFyKiB0ZXN0RmlsZSA9IGdldGVudigiZHJ0VGVz
dEZpbGUiKSkgewogICAgICAgICBydW5Gcm9tQ29tbWFuZExpbmUgPSB0cnVlOwogICAgICAgICBh
ZGRUZXN0KHRlc3RGaWxlKTsKICAgICB9IGVsc2UgewpAQCAtNTA5LDEwICs1MTEsMjIgQEAgdm9p
ZCBEdW1wUmVuZGVyVHJlZTo6ZHVtcCgpCiAgICAgU3RyaW5nIHJlc3VsdCA9ICJDb250ZW50LVR5
cGU6ICIgKyByZXN1bHRNaW1lVHlwZSArICJcbiIgKyBkYXRhOwogCiAgICAgZHVtcFRvRmlsZShy
ZXN1bHQpOwotICAgIGlmIChtX2R1bXBQaXhlbHMgJiYgIWR1bXBBc1RleHQgJiYgZ1Rlc3RSdW5u
ZXItPmdlbmVyYXRlUGl4ZWxSZXN1bHRzKCkpCi0gICAgICAgIGR1bXBXZWJWaWV3QXNQaXhlbHNB
bmRDb21wYXJlV2l0aEV4cGVjdGVkKGdUZXN0UnVubmVyLT5leHBlY3RlZFBpeGVsSGFzaCgpKTsK
IAogICAgIGlmICghcnVuRnJvbUNvbW1hbmRMaW5lKSB7CisgICAgICAgIC8vIHNpZ25hbCBlbmQg
b2YgdGV4dCBibG9jaworICAgICAgICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0KTsKKworICAgICAg
ICAvLyBUaGVyZSBhcmUgdHdvIHNjZW5hcmlvcyBmb3IgZHVtcGluZyBwaXhlbHM6CisgICAgICAg
IC8vIDEuIFdoZW4gdGhlIHRlc3QgY2FzZSBleHBsaWNpdGx5IGFza3MgZm9yIGl0IGJ5IGNhbGxp
bmcgZHVtcEFzVGV4dCh0cnVlKSB3aXRoIHRoYXQgZXh0cmEgdHJ1ZSBwYXNzZWQgYXMgYSBwYXJh
bWV0ZXIgdmFsdWUsIGZyb20gSmF2YVNjcmlwdAorICAgICAgICBib29sIGV4cGxpY2l0UGl4ZWxS
ZXN1bHRzID0gZ1Rlc3RSdW5uZXItPmR1bXBBc1RleHQoKSAmJiBnVGVzdFJ1bm5lci0+Z2VuZXJh
dGVQaXhlbFJlc3VsdHMoKTsKKyAgICAgICAgLy8gMi4gV2hlbiB0aGUgdGVzdCBjYXNlIGltcGxp
Y2l0bHkgYWxsb3dzIGl0IGJ5IG5vdCBjYWxsaW5nIGR1bXBBc1RleHQoKSBhdCBhbGwgKHdpdGgg
bm8gcGFyYW1ldGVycykuCisgICAgICAgIGJvb2wgaW1wbGljaXRQaXhlbFJlc3VsdHMgPSAhZ1Rl
c3RSdW5uZXItPmR1bXBBc1RleHQoKTsKKworICAgICAgICAvLyBCdXQgb25seSBpZiBtX2VuYWJs
ZVBpeGVsVGVzdHMgaXMgc2V0LCB0byBzYXkgdGhhdCB0aGUgdXNlciB3YW50cyB0byBydW4gcGl4
ZWwgdGVzdHMgYXQgYWxsLgorICAgICAgICBib29sIGdlbmVyYXRlUGl4ZWxSZXN1bHRzID0gbV9l
bmFibGVQaXhlbFRlc3RzICYmIChleHBsaWNpdFBpeGVsUmVzdWx0cyB8fCBpbXBsaWNpdFBpeGVs
UmVzdWx0cyk7CisgICAgICAgIGlmIChnZW5lcmF0ZVBpeGVsUmVzdWx0cykKKyAgICAgICAgICAg
IGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGdUZXN0UnVubmVyLT5l
eHBlY3RlZFBpeGVsSGFzaCgpKTsKKwogICAgICAgICBTdHJpbmcgY3Jhc2hGaWxlID0gZHVtcEZp
bGUgKyAiLmNyYXNoIjsKICAgICAgICAgdW5saW5rKGNyYXNoRmlsZS51dGY4KCkuZGF0YSgpKTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVy
VHJlZUJsYWNrQmVycnkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJl
bmRlclRyZWVCbGFja0JlcnJ5LmgKaW5kZXggZGZjZjdjOC4uZGY3YjIzMCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnku
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxh
Y2tCZXJyeS5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIC8vIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpCbGFja0JlcnJ5UGxhdGZvcm1MYXlvdXRUZXN0Q2xpZW50IG1ldGhvZAogICAg
IHZpcnR1YWwgdm9pZCBhZGRUZXN0KGNvbnN0IGNoYXIqIHRlc3RGaWxlKTsKIHByaXZhdGU6Ci0g
ICAgdm9pZCBydW5UZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHJ1blRlc3QoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgaW1hZ2VIYXNoKTsKICAgICB2b2lkIHJ1blRl
c3RzKCk7CiAgICAgdm9pZCBydW5DdXJyZW50VGVzdCgpOwogCkBAIC0xMjQsNyArMTI0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRvbmVEcnQoKTsKICAgICBib29sIGlzSFRUUFRlc3QoY29uc3Qg
U3RyaW5nJiB0ZXN0KTsKICAgICBTdHJpbmcgcmVuZGVyVHJlZUR1bXAoKSBjb25zdDsKLSAgICB2
b2lkIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CisgICAgdm9pZCByZXNl
dFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBpbWFnZUhhc2gpOwogICAgIHZvaWQgcnVuUmVtYWluaW5nVGVzdHMoKTsKICAgICB2
b2lkIGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpOwogICAgIHZvaWQg
d2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxEdW1wUmVuZGVyVHJl
ZT4qKTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIEdDQ29udHJvbGxlciogbV9n
Y0NvbnRyb2xsZXI7CiAgICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIG1fYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI7CiAgICAgV2ViUGFnZSogbV9wYWdlOwotICAgIGJvb2wgbV9kdW1wUGl4ZWxz
OworICAgIGJvb2wgbV9lbmFibGVQaXhlbFRlc3RzOwogICAgIFdlYkNvcmU6OlRpbWVyPER1bXBS
ZW5kZXJUcmVlPiBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyOwogICAgIFdlYkNvcmU6OlRpbWVy
PER1bXBSZW5kZXJUcmVlPiBtX3dvcmtUaW1lcjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvYmxhY2tiZXJyeS9QTkdJbWFnZUVuY29kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvYmxhY2tiZXJyeS9QTkdJbWFnZUVuY29kZXIuY3BwCmluZGV4IDIyZjIwMmMuLmJjNGU3
YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VF
bmNvZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BOR0ltYWdl
RW5jb2Rlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDggKzIxLDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJQTkdJbWFnZUVuY29kZXIuaCIKIAotI2luY2x1ZGUgIlNr
Qml0bWFwLmgiCi0jaW5jbHVkZSAiU2tVblByZU11bHRpcGx5LmgiCiAKIGV4dGVybiAiQyIgewog
I2luY2x1ZGUgInBuZy5oIgpAQCAtMzMsMjAgKzMxLDE2IEBAIGV4dGVybiAiQyIgewogLy8gVGhp
cyBjb2RlIGlzIGFsbW9zdCBhIG1pcnJvciBvZiB0aGUgY29kZSBpbiBXZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWVuY29kZXJzL3NraWEvUE5HSW1hZ2VFbmNvZGVyLmNwcAogLy8gc2luY2Ugd2UgY2Fu
J3QgaW5jbHVkZSB0aGlzIHByaXZhdGUgV2ViQ29yZSBmaWxlIGluIGEgV2ViS2l0LWNsaWVudCBh
cHBsaWNhdGlvbi4KIAotLy8gQ29udmVydHMgQkdSQS0+UkdCQSBhbmQgUkdCQS0+QkdSQSBhbmQg
dW5kb2VzIGFscGhhIHByZW11bHRpcGxpY2F0aW9uLgotc3RhdGljIHZvaWQgcHJlTXVsdGlwbGll
ZEJHUkF0b1JHQkEoY29uc3QgdW5zaWduZWQgY2hhciogaW5wdXQsIGludCBudW1iZXJPZlBpeGVs
cywgdW5zaWduZWQgY2hhciogb3V0cHV0KQorLy8gS2VlcCB0aGUgcHJlbXVsdGlwaWVkIGZvciBh
cyBpdCBpcyB0aGUgbW9zdCBmYWl0aGZ1bCBpbmZvcm1hdGlvbgorc3RhdGljIHZvaWQgQkdSQXRv
UkdCQShjb25zdCB1bnNpZ25lZCBjaGFyKiBpbnB1dCwgaW50IG51bWJlck9mUGl4ZWxzLCB1bnNp
Z25lZCBjaGFyKiBvdXRwdXQpCiB7Ci0gICAgU2tCaXRtYXAgaW5wdXRCaXRtYXA7Ci0gICAgaW5w
dXRCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbnVtYmVyT2ZQ
aXhlbHMsIDEpOwotICAgIGlucHV0Qml0bWFwLnNldFBpeGVscyhjb25zdF9jYXN0PHVuc2lnbmVk
IGNoYXIqPihpbnB1dCkpOwogICAgIGZvciAoaW50IHggPSAwOyB4IDwgbnVtYmVyT2ZQaXhlbHM7
IHgrKykgewotICAgICAgICB1aW50MzJfdCBzcmNQaXhlbCA9ICppbnB1dEJpdG1hcC5nZXRBZGRy
MzIoeCwgMCk7Ci0gICAgICAgIFNrQ29sb3IgdW5tdWx0aXBsaWVkID0gU2tVblByZU11bHRpcGx5
OjpQTUNvbG9yVG9Db2xvcihzcmNQaXhlbCk7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVs
T3V0ID0gJm91dHB1dFt4ICogNF07Ci0gICAgICAgIHBpeGVsT3V0WzBdID0gU2tDb2xvckdldFIo
dW5tdWx0aXBsaWVkKTsKLSAgICAgICAgcGl4ZWxPdXRbMV0gPSBTa0NvbG9yR2V0Ryh1bm11bHRp
cGxpZWQpOwotICAgICAgICBwaXhlbE91dFsyXSA9IFNrQ29sb3JHZXRCKHVubXVsdGlwbGllZCk7
Ci0gICAgICAgIHBpeGVsT3V0WzNdID0gU2tDb2xvckdldEEodW5tdWx0aXBsaWVkKTsKKyAgICAg
ICAgb3V0cHV0WzBdID0gaW5wdXRbMl07CisgICAgICAgIG91dHB1dFsxXSA9IGlucHV0WzFdOwor
ICAgICAgICBvdXRwdXRbMl0gPSBpbnB1dFswXTsKKyAgICAgICAgb3V0cHV0WzNdID0gaW5wdXRb
M107CisgICAgICAgIGlucHV0ICs9IDQ7CisgICAgICAgIG91dHB1dCArPSA0OwogICAgIH0KIH0K
IApAQCAtMTMwLDggKzEyNCw4IEBAIHN0YXRpYyBib29sIGVuY29kZUltcGwoY29uc3QgdW5zaWdu
ZWQgY2hhciogaW5wdXQsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnCiAgICAgcG5nX3Nl
dF93cml0ZV9mbihwbmdQdHIsICZzdGF0ZSwgZW5jb2RlcldyaXRlQ2FsbGJhY2ssIDApOwogCiAg
ICAgcG5nX3NldF9JSERSKHBuZ1B0ciwgaW5mb1B0ciwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQs
IDgsIHBuZ091dHB1dENvbG9yVHlwZSwKLSAgICAgICAgICAgICAgICAgUE5HX0lOVEVSTEFDRV9O
T05FLCBQTkdfQ09NUFJFU1NJT05fVFlQRV9ERUZBVUxULAotICAgICAgICAgICAgICAgICBQTkdf
RklMVEVSX1RZUEVfREVGQVVMVCk7CisgICAgICAgIFBOR19JTlRFUkxBQ0VfTk9ORSwgUE5HX0NP
TVBSRVNTSU9OX1RZUEVfREVGQVVMVCwKKyAgICAgICAgUE5HX0ZJTFRFUl9UWVBFX0RFRkFVTFQp
OwogICAgIHBuZ193cml0ZV9pbmZvKHBuZ1B0ciwgaW5mb1B0cik7CiAKICAgICBPd25BcnJheVB0
cjx1bnNpZ25lZCBjaGFyPiByb3dQaXhlbHMgPSBhZG9wdEFycmF5UHRyKG5ldyB1bnNpZ25lZCBj
aGFyW2ltYWdlV2lkdGggKiBvdXRwdXRDb2xvckNvbXBvbmVudHNdKTsKQEAgLTE0NCwxMyArMTM4
LDggQEAgc3RhdGljIGJvb2wgZW5jb2RlSW1wbChjb25zdCB1bnNpZ25lZCBjaGFyKiBpbnB1dCwg
aW50IGltYWdlV2lkdGgsIGludCBpbWFnZUhlaWcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBlbmNvZGVTa0JpdG1hcFRvUE5HKGNvbnN0IFNrQml0bWFwJiBpbWFnZSwgVmVjdG9yPHVuc2ln
bmVkIGNoYXI+KiBvdXRwdXQpCitib29sIGVuY29kZUJpdG1hcFRvUE5HKHVuc2lnbmVkIGNoYXIq
IGRhdGEsIGludCB3aWR0aCwgaW50IGhlaWdodCwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBvdXRw
dXQpCiB7Ci0gICAgaWYgKGltYWdlLmNvbmZpZygpICE9IFNrQml0bWFwOjprQVJHQl84ODg4X0Nv
bmZpZykKLSAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBPbmx5IHN1cHBvcnQgQVJHQiBhdCA4IGJw
cCBub3cuCi0KLSAgICBpbWFnZS5sb2NrUGl4ZWxzKCk7Ci0gICAgYm9vbCByZXN1bHQgPSBlbmNv
ZGVJbXBsKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihpbWFnZS5nZXRQaXhlbHMoKSksIGlt
YWdlLndpZHRoKCksIGltYWdlLmhlaWdodCgpLCBpbWFnZS5yb3dCeXRlcygpLCBvdXRwdXQsIHBy
ZU11bHRpcGxpZWRCR1JBdG9SR0JBKTsKLSAgICBpbWFnZS51bmxvY2tQaXhlbHMoKTsKKyAgICBi
b29sIHJlc3VsdCA9IGVuY29kZUltcGwoZGF0YSwgd2lkdGgsIGhlaWdodCwgd2lkdGggKiA0LCBv
dXRwdXQsIEJHUkF0b1JHQkEpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BOR0ltYWdlRW5jb2Rlci5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9QTkdJbWFnZUVuY29kZXIuaAppbmRleCA3NzlmN2Ew
Li43YTMyMGE3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BO
R0ltYWdlRW5jb2Rlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5H
SW1hZ2VFbmNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDggKzIxLDYgQEAKIAogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotY2xhc3MgU2tCaXRtYXA7Ci0KLWJvb2wgZW5jb2RlU2tC
aXRtYXBUb1BORyhjb25zdCBTa0JpdG1hcCYsIFdURjo6VmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBv
dXRwdXQpOworYm9vbCBlbmNvZGVCaXRtYXBUb1BORyh1bnNpZ25lZCBjaGFyKiBkYXRhLCBpbnQg
d2lkdGgsIGludCBoZWlnaHQsIFdURjo6VmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBvdXRwdXQpOwog
CiAjZW5kaWYgLy8gUE5HSW1hZ2VFbmNvZGVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnkuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5jcHAK
aW5kZXggMGJiNGEwYy4uNDIwY2RmYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
YmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvYmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJQaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5oIgogCisjaW5jbHVkZSAiQmFja2lu
Z1N0b3JlLmgiCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5LmgiCiAjaW5jbHVk
ZSAiUE5HSW1hZ2VFbmNvZGVyLmgiCiAjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgpAQCAt
MjYsNyArMjcsOSBAQAogI2luY2x1ZGUgIldlYlBhZ2VDbGllbnQuaCIKIAogI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybVdpbmRvdy5oPgotI2luY2x1ZGUgPHNraWEvU2tEZXZpY2UuaD4KKyNp
ZiBVU0UoU0tJQSkKKyNpbmNsdWRlIDxTa0RldmljZS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3Rm
L01ENS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMzksMzQgKzQyLDUyIEBAIFBh
c3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJv
b2wgLypvbnNjcmVlbiovLCBib29sCiAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3cqIHdp
bmRvdyA9IER1bXBSZW5kZXJUcmVlOjpjdXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLT5jbGllbnQo
KS0+d2luZG93KCk7CiAgICAgQVNTRVJUKHdpbmRvdyk7CiAKLSAgICBjb25zdCBQbGF0Zm9ybTo6
SW50UmVjdCYgd2luZG93UmVjdCA9IHdpbmRvdy0+dmlld3BvcnRSZWN0KCk7Ci0KLSAgICBTa0Jp
dG1hcCogYml0bWFwID0gbmV3IFNrQml0bWFwOwotICAgIGJpdG1hcC0+c2V0Q29uZmlnKFNrQml0
bWFwOjprQVJHQl84ODg4X0NvbmZpZywgd2luZG93UmVjdC53aWR0aCgpLCB3aW5kb3dSZWN0Lmhl
aWdodCgpKTsgLy8gV2UgdXNlIDMyLWJpdCBSR0JBIHNpbmNlIHRoYXQgaXMgdGhlIHBpeGVsIGZv
cm1hdCB0aGF0IEltYWdlRGlmZiBleHBlY3RzLgotICAgIGJpdG1hcC0+YWxsb2NQaXhlbHMoKTsK
KyAgICAvLyBUaGUgQmFja2luZ1N0b3JlIGhhcyBhIHF1ZXVlIG9mIHBlbmRpbmcgam9icywgd2hp
Y2ggYXJlIHJ1biBvbiBpZGxlCisgICAgLy8gYW5kIHdoaWNoIG1heSBub3QgaGF2ZSBiZWVuIHJ1
biB5ZXQuCisgICAgQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBEdW1wUmVuZGVyVHJlZTo6
Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKS0+YmFja2luZ1N0b3JlKCk7CisgICAgd2hpbGUgKGJh
Y2tpbmdTdG9yZS0+aGFzQmxpdEpvYnMoKSkKKyAgICAgICAgYmFja2luZ1N0b3JlLT5ibGl0T25J
ZGxlKCk7CiAKLSAgICBTa0NhbnZhcyogY2FudmFzID0gbmV3IFNrQ2FudmFzOwotICAgIGNhbnZh
cy0+c2V0Qml0bWFwRGV2aWNlKCpiaXRtYXApOworICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0
JiB3aW5kb3dSZWN0ID0gd2luZG93LT52aWV3cG9ydFJlY3QoKTsKKyAgICBjb25zdCBQbGF0Zm9y
bTo6SW50U2l6ZSYgd2luZG93U2l6ZSA9IHdpbmRvdy0+dmlld3BvcnRTaXplKCk7CisgICAgdW5z
aWduZWQgY2hhciogZGF0YSA9IG5ldyB1bnNpZ25lZCBjaGFyW3dpbmRvd1NpemUud2lkdGgoKSAq
IHdpbmRvd1NpemUuaGVpZ2h0KCkgKiA0XTsKIAogICAgIC8vIFdlIG5lZWQgdG8gZm9yY2UgYSBz
eW5jaHJvbm91cyB1cGRhdGUgdG8gdGhlIHdpbmRvdyBvciB3ZSBtYXkgZ2V0IGFuIGVtcHR5IGJp
dG1hcC4KICAgICAvLyBGb3IgZXhhbXBsZSwgcnVubmluZyBEUlQgd2l0aCBvbmUgdGVzdCBjYXNl
IHRoYXQgZmluaXNoZXMgYmVmb3JlIHRoZSBzY3JlZW4gaXMgdXBkYXRlZC4KICAgICB3aW5kb3ct
PnBvc3Qod2luZG93UmVjdCk7CiAKLSAgICBjb25zdCBTa0JpdG1hcCogd2luZG93Qml0bWFwID0g
c3RhdGljX2Nhc3Q8Y29uc3QgU2tCaXRtYXAqPihsb2NrQnVmZmVyQmFja2luZ0ltYWdlKHdpbmRv
dy0+YnVmZmVyKCksIFBsYXRmb3JtOjpHcmFwaGljczo6UmVhZEFjY2VzcykpOwotICAgIGNhbnZh
cy0+ZHJhd0JpdG1hcCgqd2luZG93Qml0bWFwLCAwLCAwKTsgLy8gRHJhdyB0aGUgYml0bWFwIGF0
ICgwLCAwKS4KKyNpZiBVU0UoU0tJQSkKKyAgICBTa0JpdG1hcCBiaXRtYXA7CisgICAgYml0bWFw
LnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIHdpbmRvd1NpemUud2lkdGgo
KSwgd2luZG93U2l6ZS5oZWlnaHQoKSk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAg
Yml0bWFwLmVyYXNlQVJHQigwLCAwLCAwLCAwKTsKKworICAgIFNrQ2FudmFzIGNhbnZhcyhiaXRt
YXApOworICAgIGJhY2tpbmdTdG9yZS0+ZHJhd0NvbnRlbnRzKCZjYW52YXMsIHdpbmRvd1JlY3Qs
IHdpbmRvd1NpemUpOworCisgICAgLy8gUmVhZCB0aGF0IFNrQml0bWFwIHJhdGhlciB0aGFuIGNo
YW5nZSBpdC4gU28gdXNlIGZhbHNlIG9uIGFjY2Vzc0JpdG1hcC4KKyAgICBjb25zdCBTa0JpdG1h
cCYgY29udGVudHNCaXRtYXAgPSBjYW52YXMuZ2V0RGV2aWNlKCktPmFjY2Vzc0JpdG1hcChmYWxz
ZS8qY2hhbmdlUGl4ZWxzKi8pOworICAgIGNvbnRlbnRzQml0bWFwLmxvY2tQaXhlbHMoKTsKKwor
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHdpbmRvd1BpeGVscyA9IDA7CisgICAgaWYgKCFjb250
ZW50c0JpdG1hcC5lbXB0eSgpKSB7CisgICAgICAgIFNrQXV0b0xvY2tQaXhlbHMgbG9jayhjb250
ZW50c0JpdG1hcCk7CisgICAgICAgIHdpbmRvd1BpeGVscyA9IHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihjb250ZW50c0JpdG1hcC5nZXRQaXhlbHMoKSk7CisgICAgfQorI2Vsc2UK
KyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiB3aW5kb3dQaXhlbHMgPSBsb2NrQnVmZmVyQmFja2lu
Z0ltYWdlKHdpbmRvdy0+YnVmZmVyKCksIFBsYXRmb3JtOjpHcmFwaGljczo6UmVhZEFjY2Vzcyk7
CisjZW5kaWYKKyAgICBtZW1jcHkoZGF0YSwgd2luZG93UGl4ZWxzLCB3aW5kb3dTaXplLndpZHRo
KCkgKiB3aW5kb3dTaXplLmhlaWdodCgpICogNCk7CiAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpy
ZWxlYXNlQnVmZmVyQmFja2luZ0ltYWdlKHdpbmRvdy0+YnVmZmVyKCkpOwotICAgIHJldHVybiBC
aXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChiaXRtYXAsIGNh
bnZhcyk7CisgICAgcmV0dXJuIEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdEYXRhKGRh
dGEsIHdpbmRvd1NpemUud2lkdGgoKSwgd2luZG93U2l6ZS5oZWlnaHQoKSk7CiB9CiAKIHZvaWQg
Y29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1hcENvbnRleHQqIGNvbnRl
eHQsIGNoYXIgaGFzaFN0cmluZ1szM10pCiB7Ci0gICAgY29uc3QgU2tCaXRtYXAmIGJpdG1hcCA9
IGNvbnRleHQtPmNhbnZhcygpLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlKTsKLSAg
ICBBU1NFUlQoYml0bWFwLmJ5dGVzUGVyUGl4ZWwoKSA9PSA0KTsgLy8gMzItYml0IFJHQkEKLQot
ICAgIGludCBwaXhlbHNXaWRlID0gYml0bWFwLndpZHRoKCk7Ci0gICAgaW50IHBpeGVsc0hpZ2gg
PSBiaXRtYXAuaGVpZ2h0KCk7Ci0gICAgaW50IGJ5dGVzUGVyUm93ID0gYml0bWFwLnJvd0J5dGVz
KCk7Ci0gICAgdW5zaWduZWQgY2hhciogcGl4ZWxEYXRhID0gKHVuc2lnbmVkIGNoYXIqKWJpdG1h
cC5nZXRQaXhlbHMoKTsKKyAgICBpbnQgcGl4ZWxzV2lkZSA9IGNvbnRleHQtPm1fd2lkdGg7Cisg
ICAgaW50IHBpeGVsc0hpZ2ggPSBjb250ZXh0LT5tX2hlaWdodDsKKyAgICBpbnQgYnl0ZXNQZXJS
b3cgPSBjb250ZXh0LT5tX3dpZHRoICogNDsKKyAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbERhdGEg
PSBjb250ZXh0LT5tX2RhdGE7CiAKICAgICBNRDUgbWQ1OwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcGl4ZWxzSGlnaDsgKytpKSB7CkBAIC04MiwxNCArMTAzLDE0IEBAIHZvaWQgY29tcHV0ZU1E
NUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1hcENvbnRleHQqIGNvbnRleHQsIGNoYXIg
aGFzaFN0cmluCiAgICAgICAgIHNucHJpbnRmKGhhc2hTdHJpbmcsIDMzLCAiJXMlMDJ4IiwgaGFz
aFN0cmluZywgaGFzaFtpXSk7CiB9CiAKLXN0YXRpYyB2b2lkIHByaW50UE5HKFNrQ2FudmFzKiBj
YW52YXMsIGNvbnN0IGNoYXIqIGNoZWNrc3VtKQorc3RhdGljIHZvaWQgcHJpbnRQTkcoQml0bWFw
Q29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogY2hlY2tzdW0pCiB7CiAgICAgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+IHBuZ0RhdGE7Ci0gICAgZW5jb2RlU2tCaXRtYXBUb1BORyhjYW52YXMtPmdl
dERldmljZSgpLT5hY2Nlc3NCaXRtYXAoZmFsc2UpLCAmcG5nRGF0YSk7CisgICAgZW5jb2RlQml0
bWFwVG9QTkcoY29udGV4dC0+bV9kYXRhLCBjb250ZXh0LT5tX3dpZHRoLCBjb250ZXh0LT5tX2hl
aWdodCwgJnBuZ0RhdGEpOwogICAgIHByaW50UE5HKHBuZ0RhdGEuZGF0YSgpLCBwbmdEYXRhLnNp
emUoKSwgY2hlY2tzdW0pOwogfQogCiB2b2lkIGR1bXBCaXRtYXAoQml0bWFwQ29udGV4dCogY29u
dGV4dCwgY29uc3QgY2hhciogY2hlY2tzdW0pCiB7Ci0gICAgcHJpbnRQTkcoY29udGV4dC0+Y2Fu
dmFzKCksIGNoZWNrc3VtKTsKKyAgICBwcmludFBORyhjb250ZXh0LCBjaGVja3N1bSk7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BpeGVsRHVtcFN1cHBv
cnRCbGFja0JlcnJ5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BpeGVsRHVt
cFN1cHBvcnRCbGFja0JlcnJ5LmgKaW5kZXggZThhZTc4Ni4uODdjNmJmMCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJy
eS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9y
dEJsYWNrQmVycnkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTksMzggKzE5LDM0IEBACiAjaWZu
ZGVmIFBpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5X2gKICNkZWZpbmUgUGl4ZWxEdW1wU3VwcG9y
dEJsYWNrQmVycnlfaAogCi0jaW5jbHVkZSA8c2tpYS9Ta0JpdG1hcC5oPgotI2luY2x1ZGUgPHNr
aWEvU2tDYW52YXMuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogY2xhc3MgQml0bWFwQ29udGV4
dCA6IHB1YmxpYyBSZWZDb3VudGVkPEJpdG1hcENvbnRleHQ+IHsKIHB1YmxpYzoKIAotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRD
b250ZXh0KFNrQml0bWFwKiBiaXRtYXAsIFNrQ2FudmFzKiBjYW52YXMpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQnlBZG9wdGluZ0RhdGEodW5zaWduZWQgY2hh
ciogZGF0YSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBCaXRtYXBDb250ZXh0KGJpdG1hcCwgY2FudmFzKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQml0bWFwQ29udGV4dChkYXRhLCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAg
fQogCiAgICAgfkJpdG1hcENvbnRleHQoKQogICAgIHsKLSAgICAgICAgZGVsZXRlIG1fYml0bWFw
OwotICAgICAgICBkZWxldGUgbV9jYW52YXM7CisgICAgICAgIGRlbGV0ZSBtX2RhdGE7CiAgICAg
fQogCi0gICAgU2tDYW52YXMqIGNhbnZhcygpIHsgcmV0dXJuIG1fY2FudmFzOyB9CisgICAgdW5z
aWduZWQgY2hhciogbV9kYXRhOworICAgIGludCBtX3dpZHRoLCBtX2hlaWdodDsKIAogcHJpdmF0
ZToKIAotICAgIEJpdG1hcENvbnRleHQoU2tCaXRtYXAqIGJpdG1hcCwgU2tDYW52YXMqIGNhbnZh
cykKLSAgICAgICAgOiBtX2JpdG1hcChiaXRtYXApCi0gICAgICAgICwgbV9jYW52YXMoY2FudmFz
KQorICAgIEJpdG1hcENvbnRleHQodW5zaWduZWQgY2hhciogZGF0YSwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQorICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgICAgICAsIG1fd2lkdGgod2lkdGgp
CisgICAgICAgICwgbV9oZWlnaHQoaGVpZ2h0KQogICAgIHsKICAgICB9Ci0KLSAgICBTa0JpdG1h
cCogbV9iaXRtYXA7Ci0gICAgU2tDYW52YXMqIG1fY2FudmFzOwotCiB9OwogCiAjZW5kaWYgLy8g
UGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnlfaAotLSAKMS43LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170814</attachid>
            <date>2012-10-25 22:26:38 -0700</date>
            <delta_ts>2012-10-26 01:11:52 -0700</delta_ts>
            <desc>patch - updated</desc>
            <filename>0001-BlackBerry-Support-pixel-tests-for-BlackBerry-DRT.patch</filename>
            <type>text/plain</type>
            <size>23164</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSA3OWMwOWZhZTA5ZTU5M2FiMTliZDYyMGNjYmE2MmFlNDE1YmJjNjJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogRnJpLCAyNiBPY3QgMjAxMiAxMzoxMDoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFtCbGFja0JlcnJ5XSBTdXBwb3J0IHBpeGVsIHRlc3RzIGZvciBCbGFja0JlcnJ5IERSVAogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDIxMAoKUmV2aWV3ZWQgYnkg
Um9iIEJ1aXMuCgpTb3VyY2UvV2ViS2l0OgoKQWRkcyBhIHN0ZXAgdG8gYnVpbGQgSW1hZ2VEaWZm
IGZyb20gUXQgZm9yIERSVC4gTW9zdCBvZiB0aGUgd29ya3MgYXJlCmFjY29tcGxpc2hlZCBieSBD
aHJpc3RvcGhlciBXZWxscy4KCiogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgoKVG9vbHM6CgpU
aGUgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIHBhdGNoIGZyb20gQ2hyaXN0b3BoZXIg
V2VsbHMuCgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwOgoo
QmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUpOgooQmxh
Y2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cnVuVGVzdCk6CihCbGFja0JlcnJ5OjpX
ZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5DdXJyZW50VGVzdCk6CihCbGFja0JlcnJ5OjpXZWJL
aXQ6OkR1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6
CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5UZXN0cyk6CihCbGFja0Jl
cnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpkdW1wKToKKiBEdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oOgooRHVtcFJlbmRlclRyZWUpOgoKKiBE
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BOR0ltYWdlRW5jb2Rlci5jcHA6CihCR1JBdG9SR0JB
KToKKGVuY29kZUJpdG1hcFRvUE5HKToKKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BOR0lt
YWdlRW5jb2Rlci5oOgpUaGUgY2hhbmdlcyB0byBQTkdJbWFnZUVuY29kZXIgZmlsZXMgYXJlIGZy
b20gbWFzdGVyXzQwLCBwYXRjaGVkIGJ5IFR5bGVyCkFiYm90dCBhbmQgUm9iIEJ1aXMuCgoqIER1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnkuY3BwOgoo
Y3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToKKGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9y
Qml0bWFwQ29udGV4dCk6CihwcmludFBORyk6CihkdW1wQml0bWFwKToKKiBEdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L1BpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5Lmg6CihCaXRtYXBDb250ZXh0
OjpjcmVhdGVCeUFkb3B0aW5nRGF0YSk6CihCaXRtYXBDb250ZXh0Ojp+Qml0bWFwQ29udGV4dCk6
CihCaXRtYXBDb250ZXh0KToKKEJpdG1hcENvbnRleHQ6OkJpdG1hcENvbnRleHQpOgoKKiBEdW1w
UmVuZGVyVHJlZS9ibGFja2JlcnJ5L2J1aWxkOiBBZGRlZC4KKiBEdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L3NyYy5wcm86IEFkZGVkLgpBZGRzIDIgZmlsZXMgZm9yIGJ1aWxkaW5nIEltYWdlRGlm
ZiwgYnkgQ2hyaXN0b3BoZXIgV2VsbHMuCi0tLQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrKysKIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm1CbGFja0JlcnJ5LmNtYWtlICAgICAgICAgICAgIHwgICAxMiArKysrCiBUb29scy9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDEgKysrKysrKysrKysr
CiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCB8ICAg
NDIgKysrKysrKysrLS0tLQogLi4uL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5
LmggICAgICAgICAgfCAgICA2ICstCiAuLi4vRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9QTkdJ
bWFnZUVuY29kZXIuY3BwICB8ICAgMzcgKysrKy0tLS0tLS0KIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmggIHwgICAgNiArLQogLi4uL2JsYWNrYmVycnkv
UGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnkuY3BwICAgICAgfCAgIDY1ICsrKysrKysrKysrKyst
LS0tLS0tCiAuLi4vYmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5oICAgICAg
ICB8ICAgMjYgKysrLS0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMoKyksIDgy
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2VkMmIwZC4uNzZlY2NiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMi0xMC0yNSAgWGlhb2JvIFdhbmcgIDx4YndhbmdAdG9yY2htb2Jp
bGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBTdXBwb3J0IHBpeGVsIHRlc3RzIGZv
ciBCbGFja0JlcnJ5IERSVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwMjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9iIEJ1aXMuCisKKyAgICAg
ICAgQWRkcyBhIHN0ZXAgdG8gYnVpbGQgSW1hZ2VEaWZmIGZyb20gUXQgZm9yIERSVC4gTW9zdCBv
ZiB0aGUgd29ya3MgYXJlCisgICAgICAgIGFjY29tcGxpc2hlZCBieSBDaHJpc3RvcGhlciBXZWxs
cy4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKwogMjAxMi0xMC0yNCAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzdHJh
dGVneSBmb3Igc2hhcmVkIHdvcmtlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21h
a2UKaW5kZXggZDcxNjhiMC4uMmE1YWY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2UKQEAgLTI3MCw2ICsyNzAsMTggQEAgSU5TVEFMTChGSUxFUyAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vaW5zcGVjdG9yQkIuaHRtbAogICAgICAgICAgICAgICAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAgICAg
ICAgIERFU1RJTkFUSU9OIC4uLy4uL3Vzci9zaGFyZS93ZWJraXQvaW5zcGVjdG9yLykKIAorSUYg
KE5PVCBQVUJMSUNfQlVJTEQpCisgICAgIyBBZGQgdGhlIGN1c3RvbSB0YXJnZXQgdG8gYnVpbGQg
dGhlIGhvc3Qtc2lkZSBJbWFnZURpZmYgYmluYXJ5LgorICAgICMgUmV1c2UgdGhlIFF0IHZlcnNp
b24uCisgICAgQUREX0NVU1RPTV9UQVJHRVQoCisgICAgICAgIEltYWdlRGlmZiBBTEwKKyAgICAg
ICAgV09SS0lOR19ESVJFQ1RPUlkgJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVy
cnkvCisgICAgICAgIENPTU1BTkQgLi9idWlsZAorICAgICAgICBERVBFTkRTICR7VE9PTFNfRElS
fS9EdW1wUmVuZGVyVHJlZS9xdC9JbWFnZURpZmYuY3BwCisgICAgICAgIENPTU1FTlQgIkltYWdl
RGlmZiBidWlsZGluZy4uLiIKKyAgICApCitFTkRJRiAoKQorCiBBRERfQ1VTVE9NX1RBUkdFVCAo
CiAgICAgaW5zcGVjdG9yIEFMTAogICAgIGNvbW1hbmQgY3AgJHtXRUJDT1JFX0RJUn0vaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vaW5zcGVjdG9yQkIuaHRtbCAmJiBlY2hvICc8c2NyaXB0IHNyYz0iaW5zcGVjdG9yQkIuanMi
Pjwvc2NyaXB0PicgID4+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9pbnNwZWN0b3JC
Qi5odG1sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNjYxNjliNi4uZjZkYjUwNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEwLTI1ICBYaWFvYm8gV2FuZyAg
PHhid2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFN1cHBv
cnQgcGl4ZWwgdGVzdHMgZm9yIEJsYWNrQmVycnkgRFJUCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAyMTAKKworICAgICAgICBSZXZpZXdlZCBieSBS
b2IgQnVpcy4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIHBh
dGNoIGZyb20gQ2hyaXN0b3BoZXIgV2VsbHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9i
bGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OnJ1blRlc3QpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cnVuQ3VycmVudFRlc3QpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9y
ZVRlc3RpbmcpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6
cnVuVGVzdHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6
ZHVtcCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJl
ZUJsYWNrQmVycnkuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlKToKKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKEJH
UkF0b1JHQkEpOgorICAgICAgICAoZW5jb2RlQml0bWFwVG9QTkcpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmg6CisgICAgICAgIFRoZSBjaGFu
Z2VzIHRvIFBOR0ltYWdlRW5jb2RlciBmaWxlcyBhcmUgZnJvbSBtYXN0ZXJfNDAsIHBhdGNoZWQg
YnkgVHlsZXIKKyAgICAgICAgQWJib3R0IGFuZCBSb2IgQnVpcy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnkuY3BwOgorICAg
ICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToKKyAgICAgICAgKGNvbXB1dGVN
RDVIYXNoU3RyaW5nRm9yQml0bWFwQ29udGV4dCk6CisgICAgICAgIChwcmludFBORyk6CisgICAg
ICAgIChkdW1wQml0bWFwKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Bp
eGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5Lmg6CisgICAgICAgIChCaXRtYXBDb250ZXh0OjpjcmVh
dGVCeUFkb3B0aW5nRGF0YSk6CisgICAgICAgIChCaXRtYXBDb250ZXh0Ojp+Qml0bWFwQ29udGV4
dCk6CisgICAgICAgIChCaXRtYXBDb250ZXh0KToKKyAgICAgICAgKEJpdG1hcENvbnRleHQ6OkJp
dG1hcENvbnRleHQpOgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9idWls
ZDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9zcmMucHJvOiBB
ZGRlZC4KKyAgICAgICAgQWRkcyAyIGZpbGVzIGZvciBidWlsZGluZyBJbWFnZURpZmYsIGJ5IENo
cmlzdG9waGVyIFdlbGxzLgorCiAyMDEyLTEwLTI1ICBFdWdlbmUgS2x5dWNobmlrb3YgIDxldXN0
YXMuYnVnQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBGaXggImNoZWNrLWlu
c3BlY3Rvci1zdHJpbmdzIiBzY3JpcHQgYW5kIGZpeCBsb2NhbGl6ZWQgc3RyaW5ncy4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAKaW5k
ZXggZWJjNWMzOS4uNDY3NDM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTY2LDcgKzY2LDYgQEAKICNpbmNsdWRlIDx3
dGYvTm9uQ29weWluZ1NvcnQuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjZGVm
aW5lIFNEQ0FSRF9QQVRIICIvZGV2ZWxvcGVyIgogCkBAIC0xNTQsNyArMTUzLDcgQEAgRHVtcFJl
bmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSogcGFn
ZSkKICAgICA6IG1fZ2NDb250cm9sbGVyKDApCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlDb250cm9s
bGVyKDApCiAgICAgLCBtX3BhZ2UocGFnZSkKLSAgICAsIG1fZHVtcFBpeGVscyhmYWxzZSkKKyAg
ICAsIG1fZW5hYmxlUGl4ZWxUZXN0cyhnZXRlbnYoInBpeGVsVGVzdHMiKSkKICAgICAsIG1fd2Fp
dFRvRHVtcFdhdGNoZG9nVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjp3YWl0VG9EdW1wV2F0
Y2hkb2dUaW1lckZpcmVkKQogICAgICwgbV93b3JrVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVl
Ojpwcm9jZXNzV29yaykKICAgICAsIG1fYWNjZXB0c0VkaXRpbmcodHJ1ZSkKQEAgLTE3NSwxMCAr
MTc0LDEwIEBAIER1bXBSZW5kZXJUcmVlOjp+RHVtcFJlbmRlclRyZWUoKQogICAgIGRlbGV0ZSBt
X2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlOjpydW5U
ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuVGVzdChjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBpbWFnZUhhc2gpCiB7CiAgICAgbWFpbkZyYW1l
LT5sb2FkZXIoKS0+c3RvcEZvclVzZXJDYW5jZWwoKTsKLSAgICByZXNldFRvQ29uc2lzdGVudFN0
YXRlQmVmb3JlVGVzdGluZygpOworICAgIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0
aW5nKHVybCwgaW1hZ2VIYXNoKTsKICAgICBpZiAoc2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdhdGVz
KHVybCkpCiAgICAgICAgIGdUZXN0UnVubmVyLT5zZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRy
dWUpOwogICAgIGlmICghcnVuRnJvbUNvbW1hbmRMaW5lKSB7CkBAIC0yMTEsMTIgKzIxMCwxOCBA
QCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkb25lRHJ0KCkKIAogdm9pZCBEdW1wUmVuZGVyVHJlZTo6
cnVuQ3VycmVudFRlc3QoKQogeworICAgIFN0cmluZyBpbWFnZUhhc2ggPSAiIjsKKyAgICBpbnQg
cG9zU3BsaXR0ZXIgPSBtX2N1cnJlbnRUZXN0LT5maW5kKCc/Jyk7CisgICAgaWYgKHBvc1NwbGl0
dGVyID4gMSAmJiAodW5zaWduZWQpcG9zU3BsaXR0ZXIgPCBtX2N1cnJlbnRUZXN0LT5sZW5ndGgo
KSAtIDEpIHsKKyAgICAgICAgaW1hZ2VIYXNoID0gbV9jdXJyZW50VGVzdC0+c3Vic3RyaW5nKHBv
c1NwbGl0dGVyICsgMSk7CisgICAgICAgIG1fY3VycmVudFRlc3QtPnRydW5jYXRlKHBvc1NwbGl0
dGVyKTsKKyAgICB9CiAgICAgaWYgKGlzSFRUUFRlc3QobV9jdXJyZW50VGVzdC0+dXRmOCgpLmRh
dGEoKSkpIHsKICAgICAgICAgbV9jdXJyZW50SHR0cFRlc3QgPSBtX2N1cnJlbnRUZXN0LT51dGY4
KCkuZGF0YSgpOwogICAgICAgICBtX2N1cnJlbnRIdHRwVGVzdC5yZW1vdmUoMCwgc3RybGVuKGh0
dHBUZXN0U3ludGF4KSk7Ci0gICAgICAgIHJ1blRlc3QoaHR0cFByZWZpeFVSTCArIG1fY3VycmVu
dEh0dHBUZXN0KTsKKyAgICAgICAgcnVuVGVzdChodHRwUHJlZml4VVJMICsgbV9jdXJyZW50SHR0
cFRlc3QsIGltYWdlSGFzaCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJ1blRlc3Qoa1NEQ0xheW91
dFRlc3RzVVJJICsgKm1fY3VycmVudFRlc3QpOworICAgICAgICBydW5UZXN0KGtTRENMYXlvdXRU
ZXN0c1VSSSArICptX2N1cnJlbnRUZXN0LCBpbWFnZUhhc2gpOwogfQogCiB2b2lkIER1bXBSZW5k
ZXJUcmVlOjpydW5SZW1haW5pbmdUZXN0cygpCkBAIC0yNDUsMTIgKzI1MCw5IEBAIHZvaWQgRHVt
cFJlbmRlclRyZWU6OnJ1blJlbWFpbmluZ1Rlc3RzKCkKICAgICBydW5DdXJyZW50VGVzdCgpOwog
fQogCi12b2lkIER1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVz
dGluZygpCit2b2lkIER1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3Jl
VGVzdGluZyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBpbWFnZUhhc2gpCiB7Ci0g
ICAgaWYgKGlzSFRUUFRlc3QobV9jdXJyZW50VGVzdC0+dXRmOCgpLmRhdGEoKSkpCi0gICAgICAg
IGdUZXN0UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRlKFN0cmluZyhodHRwUHJlZml4VVJMICsg
Km1fY3VycmVudFRlc3QpLnV0ZjgoKS5kYXRhKCksICIiKTsKLSAgICBlbHNlCi0gICAgICAgIGdU
ZXN0UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRlKFN0cmluZyhrU0RDTGF5b3V0VGVzdHNVUkkg
KyAqbV9jdXJyZW50VGVzdCkudXRmOCgpLmRhdGEoKSwgIiIpOworICAgIGdUZXN0UnVubmVyID0g
VGVzdFJ1bm5lcjo6Y3JlYXRlKHVybC51dGY4KCkuZGF0YSgpLCBpbWFnZUhhc2gudXRmOCgpLmRh
dGEoKSk7CiAKICAgICBnVGVzdFJ1bm5lci0+c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChmYWxzZSk7
CiAKQEAgLTMzNSw3ICszMzcsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpydW5UZXN0cygpCiAK
ICAgICBtYWluRnJhbWUgPSBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OmNvcmVQYWdlKG1fcGFnZSkt
Pm1haW5GcmFtZSgpOwogCi0gICAgaWYgKGdldGVudigiZHJ0VGVzdEZpbGUiKSkgeworICAgIGlm
IChjb25zdCBjaGFyKiB0ZXN0RmlsZSA9IGdldGVudigiZHJ0VGVzdEZpbGUiKSkgewogICAgICAg
ICBydW5Gcm9tQ29tbWFuZExpbmUgPSB0cnVlOwogICAgICAgICBhZGRUZXN0KHRlc3RGaWxlKTsK
ICAgICB9IGVsc2UgewpAQCAtNTA5LDEwICs1MTEsMjIgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6
ZHVtcCgpCiAgICAgU3RyaW5nIHJlc3VsdCA9ICJDb250ZW50LVR5cGU6ICIgKyByZXN1bHRNaW1l
VHlwZSArICJcbiIgKyBkYXRhOwogCiAgICAgZHVtcFRvRmlsZShyZXN1bHQpOwotICAgIGlmICht
X2R1bXBQaXhlbHMgJiYgIWR1bXBBc1RleHQgJiYgZ1Rlc3RSdW5uZXItPmdlbmVyYXRlUGl4ZWxS
ZXN1bHRzKCkpCi0gICAgICAgIGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVj
dGVkKGdUZXN0UnVubmVyLT5leHBlY3RlZFBpeGVsSGFzaCgpKTsKIAogICAgIGlmICghcnVuRnJv
bUNvbW1hbmRMaW5lKSB7CisgICAgICAgIC8vIHNpZ25hbCBlbmQgb2YgdGV4dCBibG9jaworICAg
ICAgICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0KTsKKworICAgICAgICAvLyBUaGVyZSBhcmUgdHdv
IHNjZW5hcmlvcyBmb3IgZHVtcGluZyBwaXhlbHM6CisgICAgICAgIC8vIDEuIFdoZW4gdGhlIHRl
c3QgY2FzZSBleHBsaWNpdGx5IGFza3MgZm9yIGl0IGJ5IGNhbGxpbmcgZHVtcEFzVGV4dCh0cnVl
KSB3aXRoIHRoYXQgZXh0cmEgdHJ1ZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIgdmFsdWUsIGZyb20g
SmF2YVNjcmlwdAorICAgICAgICBib29sIGV4cGxpY2l0UGl4ZWxSZXN1bHRzID0gZ1Rlc3RSdW5u
ZXItPmR1bXBBc1RleHQoKSAmJiBnVGVzdFJ1bm5lci0+Z2VuZXJhdGVQaXhlbFJlc3VsdHMoKTsK
KyAgICAgICAgLy8gMi4gV2hlbiB0aGUgdGVzdCBjYXNlIGltcGxpY2l0bHkgYWxsb3dzIGl0IGJ5
IG5vdCBjYWxsaW5nIGR1bXBBc1RleHQoKSBhdCBhbGwgKHdpdGggbm8gcGFyYW1ldGVycykuCisg
ICAgICAgIGJvb2wgaW1wbGljaXRQaXhlbFJlc3VsdHMgPSAhZ1Rlc3RSdW5uZXItPmR1bXBBc1Rl
eHQoKTsKKworICAgICAgICAvLyBCdXQgb25seSBpZiBtX2VuYWJsZVBpeGVsVGVzdHMgaXMgc2V0
LCB0byBzYXkgdGhhdCB0aGUgdXNlciB3YW50cyB0byBydW4gcGl4ZWwgdGVzdHMgYXQgYWxsLgor
ICAgICAgICBib29sIGdlbmVyYXRlUGl4ZWxSZXN1bHRzID0gbV9lbmFibGVQaXhlbFRlc3RzICYm
IChleHBsaWNpdFBpeGVsUmVzdWx0cyB8fCBpbXBsaWNpdFBpeGVsUmVzdWx0cyk7CisgICAgICAg
IGlmIChnZW5lcmF0ZVBpeGVsUmVzdWx0cykKKyAgICAgICAgICAgIGR1bXBXZWJWaWV3QXNQaXhl
bHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGdUZXN0UnVubmVyLT5leHBlY3RlZFBpeGVsSGFzaCgp
KTsKKwogICAgICAgICBTdHJpbmcgY3Jhc2hGaWxlID0gZHVtcEZpbGUgKyAiLmNyYXNoIjsKICAg
ICAgICAgdW5saW5rKGNyYXNoRmlsZS51dGY4KCkuZGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5
LmgKaW5kZXggZGZjZjdjOC4uZGY3YjIzMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oCkBAIC0xMDks
NyArMTA5LDcgQEAgcHVibGljOgogICAgIC8vIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCbGFja0Jl
cnJ5UGxhdGZvcm1MYXlvdXRUZXN0Q2xpZW50IG1ldGhvZAogICAgIHZpcnR1YWwgdm9pZCBhZGRU
ZXN0KGNvbnN0IGNoYXIqIHRlc3RGaWxlKTsKIHByaXZhdGU6Ci0gICAgdm9pZCBydW5UZXN0KGNv
bnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHJ1blRlc3QoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgaW1hZ2VIYXNoKTsKICAgICB2b2lkIHJ1blRlc3RzKCk7CiAgICAgdm9pZCBy
dW5DdXJyZW50VGVzdCgpOwogCkBAIC0xMjQsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRvbmVEcnQoKTsKICAgICBib29sIGlzSFRUUFRlc3QoY29uc3QgU3RyaW5nJiB0ZXN0KTsKICAg
ICBTdHJpbmcgcmVuZGVyVHJlZUR1bXAoKSBjb25zdDsKLSAgICB2b2lkIHJlc2V0VG9Db25zaXN0
ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CisgICAgdm9pZCByZXNldFRvQ29uc2lzdGVudFN0YXRl
QmVmb3JlVGVzdGluZyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBpbWFnZUhhc2gp
OwogICAgIHZvaWQgcnVuUmVtYWluaW5nVGVzdHMoKTsKICAgICB2b2lkIGludmFsaWRhdGVBbnlQ
cmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpOwogICAgIHZvaWQgd2FpdFRvRHVtcFdhdGNoZG9n
VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxEdW1wUmVuZGVyVHJlZT4qKTsKQEAgLTE0MSw3ICsx
NDEsNyBAQCBwcml2YXRlOgogICAgIEdDQ29udHJvbGxlciogbV9nY0NvbnRyb2xsZXI7CiAgICAg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CiAgICAg
V2ViUGFnZSogbV9wYWdlOwotICAgIGJvb2wgbV9kdW1wUGl4ZWxzOworICAgIGJvb2wgbV9lbmFi
bGVQaXhlbFRlc3RzOwogICAgIFdlYkNvcmU6OlRpbWVyPER1bXBSZW5kZXJUcmVlPiBtX3dhaXRU
b0R1bXBXYXRjaGRvZ1RpbWVyOwogICAgIFdlYkNvcmU6OlRpbWVyPER1bXBSZW5kZXJUcmVlPiBt
X3dvcmtUaW1lcjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9QTkdJbWFnZUVuY29kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9Q
TkdJbWFnZUVuY29kZXIuY3BwCmluZGV4IDIyZjIwMmMuLmJjNGU3YWIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BOR0ltYWdlRW5jb2Rlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIxLDggKzIxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQTkdJbWFnZUVuY29kZXIuaCIKIAotI2luY2x1ZGUgIlNrQml0bWFwLmgiCi0jaW5jbHVk
ZSAiU2tVblByZU11bHRpcGx5LmgiCiAKIGV4dGVybiAiQyIgewogI2luY2x1ZGUgInBuZy5oIgpA
QCAtMzMsMjAgKzMxLDE2IEBAIGV4dGVybiAiQyIgewogLy8gVGhpcyBjb2RlIGlzIGFsbW9zdCBh
IG1pcnJvciBvZiB0aGUgY29kZSBpbiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3Nr
aWEvUE5HSW1hZ2VFbmNvZGVyLmNwcAogLy8gc2luY2Ugd2UgY2FuJ3QgaW5jbHVkZSB0aGlzIHBy
aXZhdGUgV2ViQ29yZSBmaWxlIGluIGEgV2ViS2l0LWNsaWVudCBhcHBsaWNhdGlvbi4KIAotLy8g
Q29udmVydHMgQkdSQS0+UkdCQSBhbmQgUkdCQS0+QkdSQSBhbmQgdW5kb2VzIGFscGhhIHByZW11
bHRpcGxpY2F0aW9uLgotc3RhdGljIHZvaWQgcHJlTXVsdGlwbGllZEJHUkF0b1JHQkEoY29uc3Qg
dW5zaWduZWQgY2hhciogaW5wdXQsIGludCBudW1iZXJPZlBpeGVscywgdW5zaWduZWQgY2hhciog
b3V0cHV0KQorLy8gS2VlcCB0aGUgcHJlbXVsdGlwaWVkIGZvciBhcyBpdCBpcyB0aGUgbW9zdCBm
YWl0aGZ1bCBpbmZvcm1hdGlvbgorc3RhdGljIHZvaWQgQkdSQXRvUkdCQShjb25zdCB1bnNpZ25l
ZCBjaGFyKiBpbnB1dCwgaW50IG51bWJlck9mUGl4ZWxzLCB1bnNpZ25lZCBjaGFyKiBvdXRwdXQp
CiB7Ci0gICAgU2tCaXRtYXAgaW5wdXRCaXRtYXA7Ci0gICAgaW5wdXRCaXRtYXAuc2V0Q29uZmln
KFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbnVtYmVyT2ZQaXhlbHMsIDEpOwotICAgIGlu
cHV0Qml0bWFwLnNldFBpeGVscyhjb25zdF9jYXN0PHVuc2lnbmVkIGNoYXIqPihpbnB1dCkpOwog
ICAgIGZvciAoaW50IHggPSAwOyB4IDwgbnVtYmVyT2ZQaXhlbHM7IHgrKykgewotICAgICAgICB1
aW50MzJfdCBzcmNQaXhlbCA9ICppbnB1dEJpdG1hcC5nZXRBZGRyMzIoeCwgMCk7Ci0gICAgICAg
IFNrQ29sb3IgdW5tdWx0aXBsaWVkID0gU2tVblByZU11bHRpcGx5OjpQTUNvbG9yVG9Db2xvcihz
cmNQaXhlbCk7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsT3V0ID0gJm91dHB1dFt4ICog
NF07Ci0gICAgICAgIHBpeGVsT3V0WzBdID0gU2tDb2xvckdldFIodW5tdWx0aXBsaWVkKTsKLSAg
ICAgICAgcGl4ZWxPdXRbMV0gPSBTa0NvbG9yR2V0Ryh1bm11bHRpcGxpZWQpOwotICAgICAgICBw
aXhlbE91dFsyXSA9IFNrQ29sb3JHZXRCKHVubXVsdGlwbGllZCk7Ci0gICAgICAgIHBpeGVsT3V0
WzNdID0gU2tDb2xvckdldEEodW5tdWx0aXBsaWVkKTsKKyAgICAgICAgb3V0cHV0WzBdID0gaW5w
dXRbMl07CisgICAgICAgIG91dHB1dFsxXSA9IGlucHV0WzFdOworICAgICAgICBvdXRwdXRbMl0g
PSBpbnB1dFswXTsKKyAgICAgICAgb3V0cHV0WzNdID0gaW5wdXRbM107CisgICAgICAgIGlucHV0
ICs9IDQ7CisgICAgICAgIG91dHB1dCArPSA0OwogICAgIH0KIH0KIApAQCAtMTMwLDggKzEyNCw4
IEBAIHN0YXRpYyBib29sIGVuY29kZUltcGwoY29uc3QgdW5zaWduZWQgY2hhciogaW5wdXQsIGlu
dCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnCiAgICAgcG5nX3NldF93cml0ZV9mbihwbmdQdHIs
ICZzdGF0ZSwgZW5jb2RlcldyaXRlQ2FsbGJhY2ssIDApOwogCiAgICAgcG5nX3NldF9JSERSKHBu
Z1B0ciwgaW5mb1B0ciwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIDgsIHBuZ091dHB1dENvbG9y
VHlwZSwKLSAgICAgICAgICAgICAgICAgUE5HX0lOVEVSTEFDRV9OT05FLCBQTkdfQ09NUFJFU1NJ
T05fVFlQRV9ERUZBVUxULAotICAgICAgICAgICAgICAgICBQTkdfRklMVEVSX1RZUEVfREVGQVVM
VCk7CisgICAgICAgIFBOR19JTlRFUkxBQ0VfTk9ORSwgUE5HX0NPTVBSRVNTSU9OX1RZUEVfREVG
QVVMVCwKKyAgICAgICAgUE5HX0ZJTFRFUl9UWVBFX0RFRkFVTFQpOwogICAgIHBuZ193cml0ZV9p
bmZvKHBuZ1B0ciwgaW5mb1B0cik7CiAKICAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBjaGFyPiBy
b3dQaXhlbHMgPSBhZG9wdEFycmF5UHRyKG5ldyB1bnNpZ25lZCBjaGFyW2ltYWdlV2lkdGggKiBv
dXRwdXRDb2xvckNvbXBvbmVudHNdKTsKQEAgLTE0NCwxMyArMTM4LDggQEAgc3RhdGljIGJvb2wg
ZW5jb2RlSW1wbChjb25zdCB1bnNpZ25lZCBjaGFyKiBpbnB1dCwgaW50IGltYWdlV2lkdGgsIGlu
dCBpbWFnZUhlaWcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBlbmNvZGVTa0JpdG1hcFRv
UE5HKGNvbnN0IFNrQml0bWFwJiBpbWFnZSwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBvdXRwdXQp
Citib29sIGVuY29kZUJpdG1hcFRvUE5HKHVuc2lnbmVkIGNoYXIqIGRhdGEsIGludCB3aWR0aCwg
aW50IGhlaWdodCwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBvdXRwdXQpCiB7Ci0gICAgaWYgKGlt
YWdlLmNvbmZpZygpICE9IFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZykKLSAgICAgICAgcmV0
dXJuIGZhbHNlOyAvLyBPbmx5IHN1cHBvcnQgQVJHQiBhdCA4IGJwcCBub3cuCi0KLSAgICBpbWFn
ZS5sb2NrUGl4ZWxzKCk7Ci0gICAgYm9vbCByZXN1bHQgPSBlbmNvZGVJbXBsKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihpbWFnZS5nZXRQaXhlbHMoKSksIGltYWdlLndpZHRoKCksIGltYWdl
LmhlaWdodCgpLCBpbWFnZS5yb3dCeXRlcygpLCBvdXRwdXQsIHByZU11bHRpcGxpZWRCR1JBdG9S
R0JBKTsKLSAgICBpbWFnZS51bmxvY2tQaXhlbHMoKTsKKyAgICBib29sIHJlc3VsdCA9IGVuY29k
ZUltcGwoZGF0YSwgd2lkdGgsIGhlaWdodCwgd2lkdGggKiA0LCBvdXRwdXQsIEJHUkF0b1JHQkEp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L1BOR0ltYWdlRW5jb2Rlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9QTkdJbWFnZUVuY29kZXIuaAppbmRleCA3NzlmN2EwLi43YTMyMGE3IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BOR0ltYWdlRW5jb2Rlci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUE5HSW1hZ2VFbmNvZGVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTIxLDggKzIxLDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAotY2xhc3MgU2tCaXRtYXA7Ci0KLWJvb2wgZW5jb2RlU2tCaXRtYXBUb1BORyhjb25zdCBT
a0JpdG1hcCYsIFdURjo6VmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBvdXRwdXQpOworYm9vbCBlbmNv
ZGVCaXRtYXBUb1BORyh1bnNpZ25lZCBjaGFyKiBkYXRhLCBpbnQgd2lkdGgsIGludCBoZWlnaHQs
IFdURjo6VmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBvdXRwdXQpOwogCiAjZW5kaWYgLy8gUE5HSW1h
Z2VFbmNvZGVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkv
UGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5jcHAKaW5kZXggMGJiNGEwYy4uNDIw
Y2RmYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9QaXhlbER1
bXBTdXBwb3J0QmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2ti
ZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQaXhlbER1bXBT
dXBwb3J0QmxhY2tCZXJyeS5oIgogCisjaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVk
ZSAiRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiUE5HSW1hZ2VFbmNvZGVy
LmgiCiAjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgpAQCAtMjYsNyArMjcsOSBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2VDbGllbnQuaCIKIAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdp
bmRvdy5oPgotI2luY2x1ZGUgPHNraWEvU2tEZXZpY2UuaD4KKyNpZiBVU0UoU0tJQSkKKyNpbmNs
dWRlIDxTa0RldmljZS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtMzksMzQgKzQyLDUyIEBAIFBhc3NSZWZQdHI8Qml0bWFwQ29u
dGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgLypvbnNjcmVlbiovLCBi
b29sCiAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3cqIHdpbmRvdyA9IER1bXBSZW5kZXJU
cmVlOjpjdXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLT5jbGllbnQoKS0+d2luZG93KCk7CiAgICAg
QVNTRVJUKHdpbmRvdyk7CiAKLSAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgd2luZG93UmVj
dCA9IHdpbmRvdy0+dmlld3BvcnRSZWN0KCk7Ci0KLSAgICBTa0JpdG1hcCogYml0bWFwID0gbmV3
IFNrQml0bWFwOwotICAgIGJpdG1hcC0+c2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0Nv
bmZpZywgd2luZG93UmVjdC53aWR0aCgpLCB3aW5kb3dSZWN0LmhlaWdodCgpKTsgLy8gV2UgdXNl
IDMyLWJpdCBSR0JBIHNpbmNlIHRoYXQgaXMgdGhlIHBpeGVsIGZvcm1hdCB0aGF0IEltYWdlRGlm
ZiBleHBlY3RzLgotICAgIGJpdG1hcC0+YWxsb2NQaXhlbHMoKTsKKyAgICAvLyBUaGUgQmFja2lu
Z1N0b3JlIGhhcyBhIHF1ZXVlIG9mIHBlbmRpbmcgam9icywgd2hpY2ggYXJlIHJ1biBvbiBpZGxl
CisgICAgLy8gYW5kIHdoaWNoIG1heSBub3QgaGF2ZSBiZWVuIHJ1biB5ZXQuCisgICAgQmFja2lu
Z1N0b3JlKiBiYWNraW5nU3RvcmUgPSBEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCkt
PnBhZ2UoKS0+YmFja2luZ1N0b3JlKCk7CisgICAgd2hpbGUgKGJhY2tpbmdTdG9yZS0+aGFzQmxp
dEpvYnMoKSkKKyAgICAgICAgYmFja2luZ1N0b3JlLT5ibGl0T25JZGxlKCk7CiAKLSAgICBTa0Nh
bnZhcyogY2FudmFzID0gbmV3IFNrQ2FudmFzOwotICAgIGNhbnZhcy0+c2V0Qml0bWFwRGV2aWNl
KCpiaXRtYXApOworICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiB3aW5kb3dSZWN0ID0gd2lu
ZG93LT52aWV3cG9ydFJlY3QoKTsKKyAgICBjb25zdCBQbGF0Zm9ybTo6SW50U2l6ZSYgd2luZG93
U2l6ZSA9IHdpbmRvdy0+dmlld3BvcnRTaXplKCk7CisgICAgdW5zaWduZWQgY2hhciogZGF0YSA9
IG5ldyB1bnNpZ25lZCBjaGFyW3dpbmRvd1NpemUud2lkdGgoKSAqIHdpbmRvd1NpemUuaGVpZ2h0
KCkgKiA0XTsKIAogICAgIC8vIFdlIG5lZWQgdG8gZm9yY2UgYSBzeW5jaHJvbm91cyB1cGRhdGUg
dG8gdGhlIHdpbmRvdyBvciB3ZSBtYXkgZ2V0IGFuIGVtcHR5IGJpdG1hcC4KICAgICAvLyBGb3Ig
ZXhhbXBsZSwgcnVubmluZyBEUlQgd2l0aCBvbmUgdGVzdCBjYXNlIHRoYXQgZmluaXNoZXMgYmVm
b3JlIHRoZSBzY3JlZW4gaXMgdXBkYXRlZC4KICAgICB3aW5kb3ctPnBvc3Qod2luZG93UmVjdCk7
CiAKLSAgICBjb25zdCBTa0JpdG1hcCogd2luZG93Qml0bWFwID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
U2tCaXRtYXAqPihsb2NrQnVmZmVyQmFja2luZ0ltYWdlKHdpbmRvdy0+YnVmZmVyKCksIFBsYXRm
b3JtOjpHcmFwaGljczo6UmVhZEFjY2VzcykpOwotICAgIGNhbnZhcy0+ZHJhd0JpdG1hcCgqd2lu
ZG93Qml0bWFwLCAwLCAwKTsgLy8gRHJhdyB0aGUgYml0bWFwIGF0ICgwLCAwKS4KKyNpZiBVU0Uo
U0tJQSkKKyAgICBTa0JpdG1hcCBiaXRtYXA7CisgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1h
cDo6a0FSR0JfODg4OF9Db25maWcsIHdpbmRvd1NpemUud2lkdGgoKSwgd2luZG93U2l6ZS5oZWln
aHQoKSk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAgYml0bWFwLmVyYXNlQVJHQigw
LCAwLCAwLCAwKTsKKworICAgIFNrQ2FudmFzIGNhbnZhcyhiaXRtYXApOworICAgIGJhY2tpbmdT
dG9yZS0+ZHJhd0NvbnRlbnRzKCZjYW52YXMsIHdpbmRvd1JlY3QsIHdpbmRvd1NpemUpOworCisg
ICAgLy8gUmVhZCB0aGF0IFNrQml0bWFwIHJhdGhlciB0aGFuIGNoYW5nZSBpdC4gU28gdXNlIGZh
bHNlIG9uIGFjY2Vzc0JpdG1hcC4KKyAgICBjb25zdCBTa0JpdG1hcCYgY29udGVudHNCaXRtYXAg
PSBjYW52YXMuZ2V0RGV2aWNlKCktPmFjY2Vzc0JpdG1hcChmYWxzZS8qY2hhbmdlUGl4ZWxzKi8p
OworICAgIGNvbnRlbnRzQml0bWFwLmxvY2tQaXhlbHMoKTsKKworICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIHdpbmRvd1BpeGVscyA9IDA7CisgICAgaWYgKCFjb250ZW50c0JpdG1hcC5lbXB0eSgp
KSB7CisgICAgICAgIFNrQXV0b0xvY2tQaXhlbHMgbG9jayhjb250ZW50c0JpdG1hcCk7CisgICAg
ICAgIHdpbmRvd1BpeGVscyA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihjb250
ZW50c0JpdG1hcC5nZXRQaXhlbHMoKSk7CisgICAgfQorI2Vsc2UKKyAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyKiB3aW5kb3dQaXhlbHMgPSBsb2NrQnVmZmVyQmFja2luZ0ltYWdlKHdpbmRvdy0+YnVm
ZmVyKCksIFBsYXRmb3JtOjpHcmFwaGljczo6UmVhZEFjY2Vzcyk7CisjZW5kaWYKKyAgICBtZW1j
cHkoZGF0YSwgd2luZG93UGl4ZWxzLCB3aW5kb3dTaXplLndpZHRoKCkgKiB3aW5kb3dTaXplLmhl
aWdodCgpICogNCk7CiAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpyZWxlYXNlQnVmZmVyQmFja2lu
Z0ltYWdlKHdpbmRvdy0+YnVmZmVyKCkpOwotICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVh
dGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChiaXRtYXAsIGNhbnZhcyk7CisgICAgcmV0dXJu
IEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdEYXRhKGRhdGEsIHdpbmRvd1NpemUud2lk
dGgoKSwgd2luZG93U2l6ZS5oZWlnaHQoKSk7CiB9CiAKIHZvaWQgY29tcHV0ZU1ENUhhc2hTdHJp
bmdGb3JCaXRtYXBDb250ZXh0KEJpdG1hcENvbnRleHQqIGNvbnRleHQsIGNoYXIgaGFzaFN0cmlu
Z1szM10pCiB7Ci0gICAgY29uc3QgU2tCaXRtYXAmIGJpdG1hcCA9IGNvbnRleHQtPmNhbnZhcygp
LT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlKTsKLSAgICBBU1NFUlQoYml0bWFwLmJ5
dGVzUGVyUGl4ZWwoKSA9PSA0KTsgLy8gMzItYml0IFJHQkEKLQotICAgIGludCBwaXhlbHNXaWRl
ID0gYml0bWFwLndpZHRoKCk7Ci0gICAgaW50IHBpeGVsc0hpZ2ggPSBiaXRtYXAuaGVpZ2h0KCk7
Ci0gICAgaW50IGJ5dGVzUGVyUm93ID0gYml0bWFwLnJvd0J5dGVzKCk7Ci0gICAgdW5zaWduZWQg
Y2hhciogcGl4ZWxEYXRhID0gKHVuc2lnbmVkIGNoYXIqKWJpdG1hcC5nZXRQaXhlbHMoKTsKKyAg
ICBpbnQgcGl4ZWxzV2lkZSA9IGNvbnRleHQtPm1fd2lkdGg7CisgICAgaW50IHBpeGVsc0hpZ2gg
PSBjb250ZXh0LT5tX2hlaWdodDsKKyAgICBpbnQgYnl0ZXNQZXJSb3cgPSBjb250ZXh0LT5tX3dp
ZHRoICogNDsKKyAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbERhdGEgPSBjb250ZXh0LT5tX2RhdGE7
CiAKICAgICBNRDUgbWQ1OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGl4ZWxzSGlnaDsgKytp
KSB7CkBAIC04MiwxNCArMTAzLDE0IEBAIHZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JCaXRt
YXBDb250ZXh0KEJpdG1hcENvbnRleHQqIGNvbnRleHQsIGNoYXIgaGFzaFN0cmluCiAgICAgICAg
IHNucHJpbnRmKGhhc2hTdHJpbmcsIDMzLCAiJXMlMDJ4IiwgaGFzaFN0cmluZywgaGFzaFtpXSk7
CiB9CiAKLXN0YXRpYyB2b2lkIHByaW50UE5HKFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IGNoYXIq
IGNoZWNrc3VtKQorc3RhdGljIHZvaWQgcHJpbnRQTkcoQml0bWFwQ29udGV4dCogY29udGV4dCwg
Y29uc3QgY2hhciogY2hlY2tzdW0pCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHBuZ0Rh
dGE7Ci0gICAgZW5jb2RlU2tCaXRtYXBUb1BORyhjYW52YXMtPmdldERldmljZSgpLT5hY2Nlc3NC
aXRtYXAoZmFsc2UpLCAmcG5nRGF0YSk7CisgICAgZW5jb2RlQml0bWFwVG9QTkcoY29udGV4dC0+
bV9kYXRhLCBjb250ZXh0LT5tX3dpZHRoLCBjb250ZXh0LT5tX2hlaWdodCwgJnBuZ0RhdGEpOwog
ICAgIHByaW50UE5HKHBuZ0RhdGEuZGF0YSgpLCBwbmdEYXRhLnNpemUoKSwgY2hlY2tzdW0pOwog
fQogCiB2b2lkIGR1bXBCaXRtYXAoQml0bWFwQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
Y2hlY2tzdW0pCiB7Ci0gICAgcHJpbnRQTkcoY29udGV4dC0+Y2FudmFzKCksIGNoZWNrc3VtKTsK
KyAgICBwcmludFBORyhjb250ZXh0LCBjaGVja3N1bSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5LmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1BpeGVsRHVtcFN1cHBvcnRCbGFja0JlcnJ5
LmgKaW5kZXggZThhZTc4Ni4uODdjNmJmMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9QaXhlbER1bXBTdXBwb3J0QmxhY2tCZXJyeS5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvUGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnkuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtMTksMzggKzE5LDM0IEBACiAjaWZuZGVmIFBpeGVsRHVtcFN1cHBv
cnRCbGFja0JlcnJ5X2gKICNkZWZpbmUgUGl4ZWxEdW1wU3VwcG9ydEJsYWNrQmVycnlfaAogCi0j
aW5jbHVkZSA8c2tpYS9Ta0JpdG1hcC5oPgotI2luY2x1ZGUgPHNraWEvU2tDYW52YXMuaD4KKyNp
bmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAogY2xhc3MgQml0bWFwQ29udGV4dCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEJpdG1hcENvbnRleHQ+IHsKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJp
dG1hcENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KFNrQml0bWFwKiBi
aXRtYXAsIFNrQ2FudmFzKiBjYW52YXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwQ29u
dGV4dD4gY3JlYXRlQnlBZG9wdGluZ0RhdGEodW5zaWduZWQgY2hhciogZGF0YSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBD
b250ZXh0KGJpdG1hcCwgY2FudmFzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0
bWFwQ29udGV4dChkYXRhLCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgfQogCiAgICAgfkJpdG1hcENv
bnRleHQoKQogICAgIHsKLSAgICAgICAgZGVsZXRlIG1fYml0bWFwOwotICAgICAgICBkZWxldGUg
bV9jYW52YXM7CisgICAgICAgIGRlbGV0ZSBtX2RhdGE7CiAgICAgfQogCi0gICAgU2tDYW52YXMq
IGNhbnZhcygpIHsgcmV0dXJuIG1fY2FudmFzOyB9CisgICAgdW5zaWduZWQgY2hhciogbV9kYXRh
OworICAgIGludCBtX3dpZHRoLCBtX2hlaWdodDsKIAogcHJpdmF0ZToKIAotICAgIEJpdG1hcENv
bnRleHQoU2tCaXRtYXAqIGJpdG1hcCwgU2tDYW52YXMqIGNhbnZhcykKLSAgICAgICAgOiBtX2Jp
dG1hcChiaXRtYXApCi0gICAgICAgICwgbV9jYW52YXMoY2FudmFzKQorICAgIEJpdG1hcENvbnRl
eHQodW5zaWduZWQgY2hhciogZGF0YSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorICAgICAgICA6
IG1fZGF0YShkYXRhKQorICAgICAgICAsIG1fd2lkdGgod2lkdGgpCisgICAgICAgICwgbV9oZWln
aHQoaGVpZ2h0KQogICAgIHsKICAgICB9Ci0KLSAgICBTa0JpdG1hcCogbV9iaXRtYXA7Ci0gICAg
U2tDYW52YXMqIG1fY2FudmFzOwotCiB9OwogCiAjZW5kaWYgLy8gUGl4ZWxEdW1wU3VwcG9ydEJs
YWNrQmVycnlfaAotLSAKMS43LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170864</attachid>
            <date>2012-10-26 03:09:30 -0700</date>
            <delta_ts>2012-10-26 03:23:39 -0700</delta_ts>
            <desc>patch - updated 2</desc>
            <filename>0001-2012-10-26-Xiaobo-Wang-xbwang-torchmobile.com.cn.patch</filename>
            <type>text/plain</type>
            <size>1690</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSBiMTAxOWIxZmI2ZDAzZWFlYmEyNGRlNzVjOWEyZDJjNGMzMGU5MTgyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogRnJpLCAyNiBPY3QgMjAxMiAxODowMTo0OCArMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IDIwMTItMTAtMjYgIFhpYW9ibyBXYW5nICA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KCiAg
ICBbQmxhY2tCZXJyeV0gU3VwcG9ydCBwaXhlbCB0ZXN0cyBmb3IgQmxhY2tCZXJyeSBEUlQKICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAyMTAKCiAgICBSZXZp
ZXdlZCBieSBSb2IgQnVpcy4KCiAgICBUaGVzZSAyIGZpbGVzIGFyZSBtaXNzZWQgaW4gcjEzMjU4
Mi4KCiAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvYnVpbGQ6IEFkZGVkLgogICAgKiBE
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L3NyYy5wcm86IEFkZGVkLgotLS0KIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvYnVpbGQgICB8ICAgMTIgKysrKysrKysrKysrCiBUb29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L3NyYy5wcm8gfCAgIDE2ICsrKysrKysrKysrKysrKysK
IDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDc1NSBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L2J1aWxkCiBjcmVh
dGUgbW9kZSAxMDA2NDQgVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9zcmMucHJvCgpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9idWlsZCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMDAwMDAwMC4uZmI4ZGNlNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvYnVpbGQKQEAgLTAsMCArMSwxMiBAQAorIyEvYmluL3NoCisKKyMgVGhp
cyBmaWxlIGJ1aWxkcyB0aGUgSW1hZ2VEaWZmIGV4ZWN1dGFibGUsIHRvIHJ1bgorIyBvbiB0aGUg
aG9zdCBtYWNoaW5lLgorCit3aGljaCBxbWFrZS1xdDQgPiAvZGV2L251bGwKK2lmIFsgJD8gLWVx
IDAgXSA7IHRoZW4KKyAgICBxbWFrZS1xdDQKK2Vsc2UKKyAgICBxbWFrZQorZmkKK21ha2UKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvc3JjLnBybyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvc3JjLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xMDk2Nzk1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvYmxhY2tiZXJyeS9zcmMucHJvCkBAIC0wLDAgKzEsMTYgQEAKK2xlc3NUaGFuKFFUX1ZF
UlNJT04sIDQuNSkgeworICAgIGVycm9yKCJRdCA0LjUgb3IgZ3JlYXRlciBpcyByZXF1aXJlZC4i
KQorfQorCitURU1QTEFURSA9IGFwcAorVEFSR0VUID0gSW1hZ2VEaWZmCisKK1NPVVJDRVMgKz0g
Li4vcXQvSW1hZ2VEaWZmLmNwcAorREVTVERJUiA9IC4KKwordW5peDpDT05GSUcgKz0gZGVidWdf
YW5kX3JlbGVhc2UKK21hYzpDT05GSUcgLT0gYXBwX2J1bmRsZQord2luMzI6IENPTkZJRyArPSBj
b25zb2xlCisKK1FUID0gY29yZSBndWkKKwotLSAKMS43LjYKCg==
</data>
<flag name="commit-queue"
          id="184618"
          type_id="3"
          status="-"
          setter="charles.wei"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170868</attachid>
            <date>2012-10-26 03:23:39 -0700</date>
            <delta_ts>2012-10-26 04:08:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-BlackBerry-Support-pixel-tests-for-BlackBerry-DRT.patch</filename>
            <type>text/plain</type>
            <size>2570</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSAzOTg4ODcwZTAzNDdkNDI3NGI3YWM5MmViZmE0YWYyYWNjOTYzZDU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogRnJpLCAyNiBPY3QgMjAxMiAxODoxOTo1MyArMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFtCbGFja0JlcnJ5XSBTdXBwb3J0IHBpeGVsIHRlc3RzIGZvciBCbGFja0JlcnJ5IERSVAogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDIxMAoKUmV2aWV3ZWQgYnkg
Um9iIEJ1aXMuCgooVGhlIGZvbGxvd2luZyAyIGZpbGVzIGFyZSBtaXNzZWQgaW4gcHJldmlvdXMg
cGF0Y2gocjEzMjU4MiksIGFkZGluZyB0aGVtCmFnYWluLikKCiogRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9idWlsZDogQWRkZWQuCiogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9zcmMucHJv
OiBBZGRlZC4KQWRkcyAyIGZpbGVzIGZvciBidWlsZGluZyBJbWFnZURpZmYsIGJ5IENocmlzdG9w
aGVyIFdlbGxzLgotLS0KIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTQgKysrKysrKysrKysrKysKIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvYnVp
bGQgICB8ICAgMTIgKysrKysrKysrKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L3NyYy5wcm8gfCAgIDE2ICsrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNDIgaW5z
ZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDc1NSBUb29scy9EdW1w
UmVuZGVyVHJlZS9ibGFja2JlcnJ5L2J1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvRHVt
cFJlbmRlclRyZWUvYmxhY2tiZXJyeS9zcmMucHJvCgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY5YTkyY2UuLjBjMGE0ZDMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTUsNiArNSwyMCBAQAog
CiAgICAgICAgIFJldmlld2VkIGJ5IFJvYiBCdWlzLgogCisgICAgICAgIChUaGUgZm9sbG93aW5n
IDIgZmlsZXMgYXJlIG1pc3NlZCBpbiBwcmV2aW91cyBwYXRjaChyMTMyNTgyKSwgYWRkaW5nIHRo
ZW0KKyAgICAgICAgYWdhaW4uKQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9idWlsZDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9zcmMu
cHJvOiBBZGRlZC4KKyAgICAgICAgQWRkcyAyIGZpbGVzIGZvciBidWlsZGluZyBJbWFnZURpZmYs
IGJ5IENocmlzdG9waGVyIFdlbGxzLgorCisyMDEyLTEwLTI2ICBYaWFvYm8gV2FuZyAgPHhid2Fu
Z0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFN1cHBvcnQgcGl4
ZWwgdGVzdHMgZm9yIEJsYWNrQmVycnkgRFJUCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAyMTAKKworICAgICAgICBSZXZpZXdlZCBieSBSb2IgQnVp
cy4KKwogICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIHBhdGNoIGZy
b20gQ2hyaXN0b3BoZXIgV2VsbHMuCiAKICAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2Jl
cnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2JsYWNrYmVycnkvYnVpbGQgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L2J1aWxk
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZiOGRjZTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L2J1aWxkCkBAIC0wLDAgKzEs
MTIgQEAKKyMhL2Jpbi9zaAorCisjIFRoaXMgZmlsZSBidWlsZHMgdGhlIEltYWdlRGlmZiBleGVj
dXRhYmxlLCB0byBydW4KKyMgb24gdGhlIGhvc3QgbWFjaGluZS4KKword2hpY2ggcW1ha2UtcXQ0
ID4gL2Rldi9udWxsCitpZiBbICQ/IC1lcSAwIF0gOyB0aGVuCisgICAgcW1ha2UtcXQ0CitlbHNl
CisgICAgcW1ha2UKK2ZpCittYWtlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9i
bGFja2JlcnJ5L3NyYy5wcm8gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L3NyYy5w
cm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA5Njc5NQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvc3JjLnBybwpAQCAtMCww
ICsxLDE2IEBACitsZXNzVGhhbihRVF9WRVJTSU9OLCA0LjUpIHsKKyAgICBlcnJvcigiUXQgNC41
IG9yIGdyZWF0ZXIgaXMgcmVxdWlyZWQuIikKK30KKworVEVNUExBVEUgPSBhcHAKK1RBUkdFVCA9
IEltYWdlRGlmZgorCitTT1VSQ0VTICs9IC4uL3F0L0ltYWdlRGlmZi5jcHAKK0RFU1RESVIgPSAu
CisKK3VuaXg6Q09ORklHICs9IGRlYnVnX2FuZF9yZWxlYXNlCittYWM6Q09ORklHIC09IGFwcF9i
dW5kbGUKK3dpbjMyOiBDT05GSUcgKz0gY29uc29sZQorCitRVCA9IGNvcmUgZ3VpCisKLS0gCjEu
Ny42Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>